[Glide64] Change AspectMode to be an enum
This commit is contained in:
parent
23e46f85da
commit
8f6107e0bf
|
@ -510,11 +510,11 @@ public:
|
||||||
TTSetTxt(IDC_CMB_ASPECT_RATIO, tooltip.c_str());
|
TTSetTxt(IDC_CMB_ASPECT_RATIO, tooltip.c_str());
|
||||||
|
|
||||||
m_cmbAspect.Attach(GetDlgItem(IDC_CMB_ASPECT_RATIO));
|
m_cmbAspect.Attach(GetDlgItem(IDC_CMB_ASPECT_RATIO));
|
||||||
m_cmbAspect.SetItemData(m_cmbAspect.AddString("4:3 (default)"), 0);
|
m_cmbAspect.SetItemData(m_cmbAspect.AddString("4:3 (default)"), CSettings::Aspect_4x3);
|
||||||
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Force 16:9"), 1);
|
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Force 16:9"), CSettings::Aspect_16x9);
|
||||||
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Stretch"), 2);
|
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Stretch"), CSettings::Aspect_Stretch);
|
||||||
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Original"), 3);
|
m_cmbAspect.SetItemData(m_cmbAspect.AddString("Original"), CSettings::Aspect_Original);
|
||||||
SetComboBoxIndex(m_cmbAspect, g_settings->aspectmode);
|
SetComboBoxIndex(m_cmbAspect, (uint32_t)g_settings->aspectmode());
|
||||||
|
|
||||||
tooltip = "Fog enabled:\n\nSets fog emulation on//off.\n\n[Recommended: on]";
|
tooltip = "Fog enabled:\n\nSets fog emulation on//off.\n\n[Recommended: on]";
|
||||||
TTSetTxt(IDC_CHK_FOG, tooltip.c_str());
|
TTSetTxt(IDC_CHK_FOG, tooltip.c_str());
|
||||||
|
@ -561,7 +561,7 @@ public:
|
||||||
CSettings oldsettings = *g_settings;
|
CSettings oldsettings = *g_settings;
|
||||||
|
|
||||||
g_settings->filtering = m_cmbFiltering.GetItemData(m_cmbFiltering.GetCurSel());
|
g_settings->filtering = m_cmbFiltering.GetItemData(m_cmbFiltering.GetCurSel());
|
||||||
g_settings->aspectmode = m_cmbAspect.GetItemData(m_cmbAspect.GetCurSel());
|
g_settings->SetAspectmode((CSettings::AspectMode_t)m_cmbAspect.GetItemData(m_cmbAspect.GetCurSel()));
|
||||||
g_settings->swapmode = m_cmbBufferSwap.GetItemData(m_cmbBufferSwap.GetCurSel());
|
g_settings->swapmode = m_cmbBufferSwap.GetItemData(m_cmbBufferSwap.GetCurSel());
|
||||||
g_settings->fog = m_cbxFog.GetCheck() == BST_CHECKED;
|
g_settings->fog = m_cbxFog.GetCheck() == BST_CHECKED;
|
||||||
g_settings->buff_clear = m_cbxBuffer.GetCheck() == BST_CHECKED;
|
g_settings->buff_clear = m_cbxBuffer.GetCheck() == BST_CHECKED;
|
||||||
|
|
|
@ -190,7 +190,7 @@ void ChangeSize()
|
||||||
g_settings->res_x += (uint32_t)rdp.offset_x;
|
g_settings->res_x += (uint32_t)rdp.offset_x;
|
||||||
g_settings->res_y += (uint32_t)offset_y;
|
g_settings->res_y += (uint32_t)offset_y;
|
||||||
rdp.offset_y += offset_y;
|
rdp.offset_y += offset_y;
|
||||||
if (g_settings->aspectmode == 3) // original
|
if (g_settings->aspectmode() == CSettings::Aspect_Original)
|
||||||
{
|
{
|
||||||
rdp.scale_x = rdp.scale_y = 1.0f;
|
rdp.scale_x = rdp.scale_y = 1.0f;
|
||||||
rdp.offset_x = (g_settings->scr_res_x - rdp.vi_width) / 2.0f;
|
rdp.offset_x = (g_settings->scr_res_x - rdp.vi_width) / 2.0f;
|
||||||
|
|
|
@ -27,7 +27,7 @@ fog(0),
|
||||||
buff_clear(0),
|
buff_clear(0),
|
||||||
swapmode(0),
|
swapmode(0),
|
||||||
lodmode(0),
|
lodmode(0),
|
||||||
aspectmode(0),
|
m_aspectmode(Aspect_4x3),
|
||||||
m_frame_buffer(0),
|
m_frame_buffer(0),
|
||||||
//Texture filtering options
|
//Texture filtering options
|
||||||
texture_dir(""),
|
texture_dir(""),
|
||||||
|
@ -153,7 +153,7 @@ void CSettings::RegisterSettings(void)
|
||||||
general_setting(Set_fog_default, "fog", 1);
|
general_setting(Set_fog_default, "fog", 1);
|
||||||
general_setting(Set_buff_clear_default, "buff_clear", 1);
|
general_setting(Set_buff_clear_default, "buff_clear", 1);
|
||||||
general_setting(Set_swapmode_default, "swapmode", 1);
|
general_setting(Set_swapmode_default, "swapmode", 1);
|
||||||
general_setting(Set_aspect_default, "aspect", 0);
|
general_setting(Set_aspect_default, "aspect", Aspect_4x3);
|
||||||
|
|
||||||
general_setting(Set_fb_smart_default, "fb_smart", true);
|
general_setting(Set_fb_smart_default, "fb_smart", true);
|
||||||
general_setting(Set_fb_hires_default, "fb_hires", true);
|
general_setting(Set_fb_hires_default, "fb_hires", true);
|
||||||
|
@ -205,6 +205,16 @@ void CSettings::RegisterSettings(void)
|
||||||
game_setting_default(Set_fb_render, "fb_render", Set_fb_render_default);
|
game_setting_default(Set_fb_render, "fb_render", Set_fb_render_default);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSettings::SetAspectmode(AspectMode_t value)
|
||||||
|
{
|
||||||
|
if (value != m_aspectmode)
|
||||||
|
{
|
||||||
|
m_aspectmode = value;
|
||||||
|
UpdateAspectRatio();
|
||||||
|
m_dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSettings::UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove)
|
void CSettings::UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove)
|
||||||
{
|
{
|
||||||
uint32_t frame_buffer_original = m_frame_buffer;
|
uint32_t frame_buffer_original = m_frame_buffer;
|
||||||
|
@ -218,9 +228,9 @@ void CSettings::UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove)
|
||||||
|
|
||||||
void CSettings::UpdateAspectRatio(void)
|
void CSettings::UpdateAspectRatio(void)
|
||||||
{
|
{
|
||||||
switch (aspectmode)
|
switch (m_aspectmode)
|
||||||
{
|
{
|
||||||
case 0: //4:3
|
case Aspect_4x3:
|
||||||
if (scr_res_x >= scr_res_y * 4.0f / 3.0f) {
|
if (scr_res_x >= scr_res_y * 4.0f / 3.0f) {
|
||||||
res_y = scr_res_y;
|
res_y = scr_res_y;
|
||||||
res_x = (uint32_t)(res_y * 4.0f / 3.0f);
|
res_x = (uint32_t)(res_y * 4.0f / 3.0f);
|
||||||
|
@ -231,7 +241,7 @@ void CSettings::UpdateAspectRatio(void)
|
||||||
res_y = (uint32_t)(res_x / 4.0f * 3.0f);
|
res_y = (uint32_t)(res_x / 4.0f * 3.0f);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1: //16:9
|
case Aspect_16x9:
|
||||||
if (scr_res_x >= scr_res_y * 16.0f / 9.0f)
|
if (scr_res_x >= scr_res_y * 16.0f / 9.0f)
|
||||||
{
|
{
|
||||||
res_y = scr_res_y;
|
res_y = scr_res_y;
|
||||||
|
@ -477,7 +487,6 @@ void CSettings::ReadGameSettings(const char * name)
|
||||||
g_settings->fog = GetSetting(g_romopen ? Set_fog : Set_fog_default);
|
g_settings->fog = GetSetting(g_romopen ? Set_fog : Set_fog_default);
|
||||||
g_settings->buff_clear = GetSetting(g_romopen ? Set_buff_clear : Set_buff_clear_default);
|
g_settings->buff_clear = GetSetting(g_romopen ? Set_buff_clear : Set_buff_clear_default);
|
||||||
g_settings->swapmode = GetSetting(g_romopen ? Set_swapmode : Set_swapmode_default);
|
g_settings->swapmode = GetSetting(g_romopen ? Set_swapmode : Set_swapmode_default);
|
||||||
g_settings->aspectmode = GetSetting(g_romopen ? Set_aspect : Set_aspect_default);
|
|
||||||
g_settings->lodmode = GetSetting(g_romopen ? Set_lodmode : Set_lodmode_default);
|
g_settings->lodmode = GetSetting(g_romopen ? Set_lodmode : Set_lodmode_default);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
g_settings->res_data = GetSetting(Set_Resolution);
|
g_settings->res_data = GetSetting(Set_Resolution);
|
||||||
|
@ -535,6 +544,7 @@ void CSettings::ReadGameSettings(const char * name)
|
||||||
else if (read_back_to_screen == 0) { fb_remove_bits |= fb_read_back_to_screen | fb_read_back_to_screen2; }
|
else if (read_back_to_screen == 0) { fb_remove_bits |= fb_read_back_to_screen | fb_read_back_to_screen2; }
|
||||||
|
|
||||||
g_settings->UpdateFrameBufferBits(fb_add_bits, fb_remove_bits);
|
g_settings->UpdateFrameBufferBits(fb_add_bits, fb_remove_bits);
|
||||||
|
SetAspectmode((AspectMode_t)GetSetting(g_romopen ? Set_aspect : Set_aspect_default));
|
||||||
g_settings->flame_corona = g_settings->hacks(hack_Zelda) && !fb_depth_render_enabled();
|
g_settings->flame_corona = g_settings->hacks(hack_Zelda) && !fb_depth_render_enabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +596,7 @@ void CSettings::WriteSettings(void)
|
||||||
SetSetting(g_romopen ? Set_buff_clear : Set_buff_clear_default, g_settings->buff_clear);
|
SetSetting(g_romopen ? Set_buff_clear : Set_buff_clear_default, g_settings->buff_clear);
|
||||||
SetSetting(g_romopen ? Set_swapmode : Set_swapmode_default, g_settings->swapmode);
|
SetSetting(g_romopen ? Set_swapmode : Set_swapmode_default, g_settings->swapmode);
|
||||||
SetSetting(g_romopen ? Set_lodmode : Set_lodmode_default, g_settings->lodmode);
|
SetSetting(g_romopen ? Set_lodmode : Set_lodmode_default, g_settings->lodmode);
|
||||||
SetSetting(g_romopen ? Set_aspect : Set_aspect_default, g_settings->aspectmode);
|
SetSetting(g_romopen ? Set_aspect : Set_aspect_default, m_aspectmode);
|
||||||
|
|
||||||
SetSetting(g_romopen ? Set_fb_read_always : Set_fb_read_always_default, g_settings->fb_ref_enabled() ? true : false);
|
SetSetting(g_romopen ? Set_fb_read_always : Set_fb_read_always_default, g_settings->fb_ref_enabled() ? true : false);
|
||||||
SetSetting(g_romopen ? Set_fb_smart : Set_fb_smart_default, g_settings->fb_emulation_enabled() ? true : false);
|
SetSetting(g_romopen ? Set_fb_smart : Set_fb_smart_default, g_settings->fb_emulation_enabled() ? true : false);
|
||||||
|
|
|
@ -60,6 +60,14 @@ public:
|
||||||
hack_OoT = (1<<30), //zelda OoT hacks
|
hack_OoT = (1<<30), //zelda OoT hacks
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum AspectMode_t
|
||||||
|
{
|
||||||
|
Aspect_4x3 = 0,
|
||||||
|
Aspect_16x9 = 1,
|
||||||
|
Aspect_Stretch = 2,
|
||||||
|
Aspect_Original = 3,
|
||||||
|
};
|
||||||
|
|
||||||
uint32_t res_x, scr_res_x;
|
uint32_t res_x, scr_res_x;
|
||||||
uint32_t res_y, scr_res_y;
|
uint32_t res_y, scr_res_y;
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
|
@ -77,7 +85,6 @@ public:
|
||||||
int buff_clear;
|
int buff_clear;
|
||||||
int swapmode;
|
int swapmode;
|
||||||
int lodmode;
|
int lodmode;
|
||||||
int aspectmode;
|
|
||||||
|
|
||||||
|
|
||||||
enum FBCRCMODE
|
enum FBCRCMODE
|
||||||
|
@ -106,6 +113,7 @@ public:
|
||||||
inline const char * log_dir(void) const { return m_log_dir; }
|
inline const char * log_dir(void) const { return m_log_dir; }
|
||||||
inline bool FlushLogs(void) const { return m_FlushLogs; }
|
inline bool FlushLogs(void) const { return m_FlushLogs; }
|
||||||
|
|
||||||
|
inline AspectMode_t aspectmode(void) const { return m_aspectmode; }
|
||||||
//Texture filtering options
|
//Texture filtering options
|
||||||
std::string texture_dir;
|
std::string texture_dir;
|
||||||
int ghq_fltr;
|
int ghq_fltr;
|
||||||
|
@ -169,6 +177,7 @@ public:
|
||||||
int wrpVRAM;
|
int wrpVRAM;
|
||||||
int wrpFBO;
|
int wrpFBO;
|
||||||
int wrpAnisotropic;
|
int wrpAnisotropic;
|
||||||
|
void SetAspectmode(AspectMode_t value);
|
||||||
void UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove);
|
void UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove);
|
||||||
|
|
||||||
void ReadGameSettings(const char * name);
|
void ReadGameSettings(const char * name);
|
||||||
|
@ -182,6 +191,7 @@ private:
|
||||||
bool m_dirty;
|
bool m_dirty;
|
||||||
bool m_FlushLogs;
|
bool m_FlushLogs;
|
||||||
char m_log_dir[260];
|
char m_log_dir[260];
|
||||||
|
AspectMode_t m_aspectmode;
|
||||||
uint32_t m_frame_buffer;
|
uint32_t m_frame_buffer;
|
||||||
hacks_t m_hacks;
|
hacks_t m_hacks;
|
||||||
};
|
};
|
||||||
|
|
|
@ -803,10 +803,14 @@ void do_triangle_stuff(uint16_t linew, int old_interpolate) // what else?? do th
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!g_settings->clip_zmin)
|
if (!g_settings->clip_zmin)
|
||||||
|
{
|
||||||
rdp.clip &= ~CLIP_ZMIN;
|
rdp.clip &= ~CLIP_ZMIN;
|
||||||
|
}
|
||||||
if (!g_settings->clip_zmax)
|
if (!g_settings->clip_zmax)
|
||||||
|
{
|
||||||
rdp.clip &= ~CLIP_ZMAX;
|
rdp.clip &= ~CLIP_ZMAX;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
render_tri(linew, old_interpolate);
|
render_tri(linew, old_interpolate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ static void fb_bg_copy()
|
||||||
if (rdp.main_ci == 0)
|
if (rdp.main_ci == 0)
|
||||||
return;
|
return;
|
||||||
CI_STATUS status = rdp.frame_buffers[rdp.ci_count - 1].status;
|
CI_STATUS status = rdp.frame_buffers[rdp.ci_count - 1].status;
|
||||||
if ((status == ci_copy))
|
if (status == ci_copy)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint32_t addr = segoffset(rdp.cmd1) >> 1;
|
uint32_t addr = segoffset(rdp.cmd1) >> 1;
|
||||||
|
@ -238,7 +238,6 @@ static void fb_settextureimage()
|
||||||
}
|
}
|
||||||
WriteTrace(TraceRDP, TraceDebug, "Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx ", addr, rdp.main_ci);
|
WriteTrace(TraceRDP, TraceDebug, "Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx ", addr, rdp.main_ci);
|
||||||
}
|
}
|
||||||
///*
|
|
||||||
else if ((cur_fb.status != ci_main) && (addr >= rdp.zimg && addr < rdp.zimg_end))
|
else if ((cur_fb.status != ci_main) && (addr >= rdp.zimg && addr < rdp.zimg_end))
|
||||||
{
|
{
|
||||||
cur_fb.status = ci_zcopy;
|
cur_fb.status = ci_zcopy;
|
||||||
|
@ -246,7 +245,6 @@ static void fb_settextureimage()
|
||||||
rdp.copy_zi_index = rdp.ci_count - 1;
|
rdp.copy_zi_index = rdp.ci_count - 1;
|
||||||
WriteTrace(TraceRDP, TraceDebug, "fb_settextureimage. rdp.frame_buffers[%d].status = ci_zcopy", rdp.ci_count - 1);
|
WriteTrace(TraceRDP, TraceDebug, "fb_settextureimage. rdp.frame_buffers[%d].status = ci_zcopy", rdp.ci_count - 1);
|
||||||
}
|
}
|
||||||
//*/
|
|
||||||
else if ((rdp.maincimg[0].width > 64) && (addr >= rdp.maincimg[0].addr) && (addr < (rdp.maincimg[0].addr + rdp.maincimg[0].width*rdp.maincimg[0].height * 2)))
|
else if ((rdp.maincimg[0].width > 64) && (addr >= rdp.maincimg[0].addr) && (addr < (rdp.maincimg[0].addr + rdp.maincimg[0].width*rdp.maincimg[0].height * 2)))
|
||||||
{
|
{
|
||||||
if (cur_fb.status != ci_main)
|
if (cur_fb.status != ci_main)
|
||||||
|
|
Loading…
Reference in New Issue