[Glide64] Get lodmode to use enum
This commit is contained in:
parent
88e5009afa
commit
5f0ece5dde
|
@ -15521,12 +15521,18 @@ void Combine()
|
||||||
Alpha0[(rdp.cycle1 >> 16) & 7], Alpha1[(rdp.cycle1 >> 19) & 7], Alpha2[(rdp.cycle1 >> 22) & 7], Alpha3[(rdp.cycle1 >> 25) & 7],
|
Alpha0[(rdp.cycle1 >> 16) & 7], Alpha1[(rdp.cycle1 >> 19) & 7], Alpha2[(rdp.cycle1 >> 22) & 7], Alpha3[(rdp.cycle1 >> 25) & 7],
|
||||||
Alpha0[(rdp.cycle2 >> 16) & 7], Alpha1[(rdp.cycle2 >> 19) & 7], Alpha2[(rdp.cycle2 >> 22) & 7], Alpha3[(rdp.cycle2 >> 25) & 7]);
|
Alpha0[(rdp.cycle2 >> 16) & 7], Alpha1[(rdp.cycle2 >> 19) & 7], Alpha2[(rdp.cycle2 >> 22) & 7], Alpha3[(rdp.cycle2 >> 25) & 7]);
|
||||||
if (!rdp.LOD_en || rdp.cur_tile == rdp.mipmap_level)
|
if (!rdp.LOD_en || rdp.cur_tile == rdp.mipmap_level)
|
||||||
|
{
|
||||||
lod_frac = rdp.prim_lodfrac;
|
lod_frac = rdp.prim_lodfrac;
|
||||||
else if (g_settings->lodmode == 0)
|
}
|
||||||
|
else if (g_settings->lodmode() == CSettings::LOD_Off)
|
||||||
|
{
|
||||||
lod_frac = 0;
|
lod_frac = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
lod_frac = 10;
|
lod_frac = 10;
|
||||||
|
}
|
||||||
|
|
||||||
rdp.noise = RDP::noise_none;
|
rdp.noise = RDP::noise_none;
|
||||||
|
|
||||||
uint32_t found = TRUE;
|
uint32_t found = TRUE;
|
||||||
|
|
|
@ -500,10 +500,10 @@ public:
|
||||||
TTSetTxt(IDC_TXT_LOD_CALC, tooltip.c_str());
|
TTSetTxt(IDC_TXT_LOD_CALC, tooltip.c_str());
|
||||||
TTSetTxt(IDC_CMB_LOD_CALC, tooltip.c_str());
|
TTSetTxt(IDC_CMB_LOD_CALC, tooltip.c_str());
|
||||||
m_cmbLOD.Attach(GetDlgItem(IDC_CMB_LOD_CALC));
|
m_cmbLOD.Attach(GetDlgItem(IDC_CMB_LOD_CALC));
|
||||||
m_cmbLOD.SetItemData(m_cmbLOD.AddString("off"), 0);
|
m_cmbLOD.SetItemData(m_cmbLOD.AddString("off"), CSettings::LOD_Off);
|
||||||
m_cmbLOD.SetItemData(m_cmbLOD.AddString("fast"), 1);
|
m_cmbLOD.SetItemData(m_cmbLOD.AddString("fast"), CSettings::LOD_Fast);
|
||||||
m_cmbLOD.SetItemData(m_cmbLOD.AddString("precise"), 2);
|
m_cmbLOD.SetItemData(m_cmbLOD.AddString("precise"), CSettings::LOD_Precise);
|
||||||
SetComboBoxIndex(m_cmbLOD, g_settings->lodmode);
|
SetComboBoxIndex(m_cmbLOD, g_settings->lodmode());
|
||||||
|
|
||||||
tooltip = "Aspect ratio of the output:\n\nMost N64 games use 4:3 aspect ratio, but some support widescreen too.\nYou may select appropriate aspect here and set widescreen mode in game settings->\nIn \"Stretch\" mode the output will be stretched to the entire screen, other modes may add black borders if necessary";
|
tooltip = "Aspect ratio of the output:\n\nMost N64 games use 4:3 aspect ratio, but some support widescreen too.\nYou may select appropriate aspect here and set widescreen mode in game settings->\nIn \"Stretch\" mode the output will be stretched to the entire screen, other modes may add black borders if necessary";
|
||||||
TTSetTxt(IDC_TXT_ASPECT_RATIO, tooltip.c_str());
|
TTSetTxt(IDC_TXT_ASPECT_RATIO, tooltip.c_str());
|
||||||
|
@ -565,7 +565,7 @@ public:
|
||||||
g_settings->SetSwapMode((CSettings::SwapMode_t)m_cmbBufferSwap.GetItemData(m_cmbBufferSwap.GetCurSel()));
|
g_settings->SetSwapMode((CSettings::SwapMode_t)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;
|
||||||
g_settings->lodmode = m_cmbLOD.GetItemData(m_cmbLOD.GetCurSel());
|
g_settings->SetLODmode((CSettings::PixelLevelOfDetail_t)m_cmbLOD.GetItemData(m_cmbLOD.GetCurSel()));
|
||||||
|
|
||||||
CButton * fb_buttons[] =
|
CButton * fb_buttons[] =
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,7 +26,7 @@ vsync(0),
|
||||||
fog(0),
|
fog(0),
|
||||||
buff_clear(0),
|
buff_clear(0),
|
||||||
m_swapmode(SwapMode_Old),
|
m_swapmode(SwapMode_Old),
|
||||||
lodmode(0),
|
m_lodmode(LOD_Off),
|
||||||
m_aspectmode(Aspect_4x3),
|
m_aspectmode(Aspect_4x3),
|
||||||
m_frame_buffer(0),
|
m_frame_buffer(0),
|
||||||
//Texture filtering options
|
//Texture filtering options
|
||||||
|
@ -149,7 +149,7 @@ void CSettings::RegisterSettings(void)
|
||||||
|
|
||||||
general_setting(Set_optimize_texrect_default, "optimize_texrect", true);
|
general_setting(Set_optimize_texrect_default, "optimize_texrect", true);
|
||||||
general_setting(Set_filtering_default, "filtering", CSettings::Filter_Automatic);
|
general_setting(Set_filtering_default, "filtering", CSettings::Filter_Automatic);
|
||||||
general_setting(Set_lodmode_default, "lodmode", 0);
|
general_setting(Set_lodmode_default, "lodmode", CSettings::LOD_Off);
|
||||||
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", SwapMode_New);
|
general_setting(Set_swapmode_default, "swapmode", SwapMode_New);
|
||||||
|
@ -215,6 +215,15 @@ void CSettings::SetAspectmode(AspectMode_t value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSettings::SetLODmode(PixelLevelOfDetail_t value)
|
||||||
|
{
|
||||||
|
if (value != m_lodmode)
|
||||||
|
{
|
||||||
|
m_lodmode = value;
|
||||||
|
m_dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSettings::SetFiltering(Filtering_t value)
|
void CSettings::SetFiltering(Filtering_t value)
|
||||||
{
|
{
|
||||||
if (value != m_filtering)
|
if (value != m_filtering)
|
||||||
|
@ -503,7 +512,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->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);
|
||||||
if (g_settings->res_data < 0 || g_settings->res_data >= 0x18) g_settings->res_data = 12;
|
if (g_settings->res_data < 0 || g_settings->res_data >= 0x18) g_settings->res_data = 12;
|
||||||
|
@ -564,6 +572,7 @@ void CSettings::ReadGameSettings(const char * name)
|
||||||
SetFiltering((Filtering_t)GetSetting(g_romopen ? Set_filtering : Set_filtering_default));
|
SetFiltering((Filtering_t)GetSetting(g_romopen ? Set_filtering : Set_filtering_default));
|
||||||
SetSwapMode((SwapMode_t)GetSetting(g_romopen ? Set_swapmode : Set_swapmode_default));
|
SetSwapMode((SwapMode_t)GetSetting(g_romopen ? Set_swapmode : Set_swapmode_default));
|
||||||
SetAspectmode((AspectMode_t)GetSetting(g_romopen ? Set_aspect : Set_aspect_default));
|
SetAspectmode((AspectMode_t)GetSetting(g_romopen ? Set_aspect : Set_aspect_default));
|
||||||
|
SetLODmode((PixelLevelOfDetail_t)GetSetting(g_romopen ? Set_lodmode : Set_lodmode_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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,7 +622,7 @@ void CSettings::WriteSettings(void)
|
||||||
SetSetting(g_romopen ? Set_fog : Set_fog_default, g_settings->fog);
|
SetSetting(g_romopen ? Set_fog : Set_fog_default, g_settings->fog);
|
||||||
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, lodmode());
|
||||||
SetSetting(g_romopen ? Set_aspect : Set_aspect_default, m_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);
|
||||||
|
|
|
@ -90,6 +90,13 @@ public:
|
||||||
SwapMode_Hybrid = 2,
|
SwapMode_Hybrid = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum PixelLevelOfDetail_t
|
||||||
|
{
|
||||||
|
LOD_Off = 0,
|
||||||
|
LOD_Fast = 1,
|
||||||
|
LOD_Precise = 2,
|
||||||
|
};
|
||||||
|
|
||||||
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
|
||||||
|
@ -103,7 +110,6 @@ public:
|
||||||
|
|
||||||
int fog;
|
int fog;
|
||||||
int buff_clear;
|
int buff_clear;
|
||||||
int lodmode;
|
|
||||||
|
|
||||||
|
|
||||||
enum FBCRCMODE
|
enum FBCRCMODE
|
||||||
|
@ -135,6 +141,7 @@ public:
|
||||||
inline Filtering_t filtering(void) const { return m_filtering; }
|
inline Filtering_t filtering(void) const { return m_filtering; }
|
||||||
|
|
||||||
inline SwapMode_t swapmode(void) const { return m_swapmode; }
|
inline SwapMode_t swapmode(void) const { return m_swapmode; }
|
||||||
|
inline PixelLevelOfDetail_t lodmode(void) const { return m_lodmode; }
|
||||||
inline AspectMode_t aspectmode(void) const { return m_aspectmode; }
|
inline AspectMode_t aspectmode(void) const { return m_aspectmode; }
|
||||||
//Texture filtering options
|
//Texture filtering options
|
||||||
std::string texture_dir;
|
std::string texture_dir;
|
||||||
|
@ -200,6 +207,7 @@ public:
|
||||||
int wrpFBO;
|
int wrpFBO;
|
||||||
int wrpAnisotropic;
|
int wrpAnisotropic;
|
||||||
void SetAspectmode(AspectMode_t value);
|
void SetAspectmode(AspectMode_t value);
|
||||||
|
void SetLODmode(PixelLevelOfDetail_t value);
|
||||||
void SetFiltering(Filtering_t value);
|
void SetFiltering(Filtering_t value);
|
||||||
void SetSwapMode(SwapMode_t value);
|
void SetSwapMode(SwapMode_t value);
|
||||||
void UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove);
|
void UpdateFrameBufferBits(uint32_t BitsToAdd, uint32_t BitsToRemove);
|
||||||
|
@ -220,6 +228,7 @@ private:
|
||||||
ScreenRotate_t m_rotate;
|
ScreenRotate_t m_rotate;
|
||||||
Filtering_t m_filtering;
|
Filtering_t m_filtering;
|
||||||
SwapMode_t m_swapmode;
|
SwapMode_t m_swapmode;
|
||||||
|
PixelLevelOfDetail_t m_lodmode;
|
||||||
hacks_t m_hacks;
|
hacks_t m_hacks;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -971,7 +971,7 @@ static void CalculateLOD(VERTEX *v, int n)
|
||||||
double intptr;
|
double intptr;
|
||||||
float s_scale = rdp.tiles[rdp.cur_tile].width / 255.0f;
|
float s_scale = rdp.tiles[rdp.cur_tile].width / 255.0f;
|
||||||
float t_scale = rdp.tiles[rdp.cur_tile].height / 255.0f;
|
float t_scale = rdp.tiles[rdp.cur_tile].height / 255.0f;
|
||||||
if (g_settings->lodmode == 1)
|
if (g_settings->lodmode() == CSettings::LOD_Fast)
|
||||||
{
|
{
|
||||||
deltaS = (v[1].u0 / v[1].q - v[0].u0 / v[0].q) * s_scale;
|
deltaS = (v[1].u0 / v[1].q - v[0].u0 / v[0].q) * s_scale;
|
||||||
deltaT = (v[1].v0 / v[1].q - v[0].v0 / v[0].q) * t_scale;
|
deltaT = (v[1].v0 / v[1].q - v[0].v0 / v[0].q) * t_scale;
|
||||||
|
@ -1569,20 +1569,13 @@ static void render_tri(uint16_t linew, int old_interpolate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings->lodmode > 0 && rdp.cur_tile < rdp.mipmap_level)
|
if (g_settings->lodmode() != CSettings::LOD_Off && rdp.cur_tile < rdp.mipmap_level)
|
||||||
|
{
|
||||||
CalculateLOD(rdp.vtxbuf, n);
|
CalculateLOD(rdp.vtxbuf, n);
|
||||||
|
}
|
||||||
|
|
||||||
cmb.cmb_ext_use = cmb.tex_cmb_ext_use = 0;
|
cmb.cmb_ext_use = cmb.tex_cmb_ext_use = 0;
|
||||||
|
|
||||||
/*
|
|
||||||
if (rdp.tbuff_tex)
|
|
||||||
{
|
|
||||||
for (int k = 0; k < 3; k++)
|
|
||||||
{
|
|
||||||
WriteTrace(TraceRDP, TraceDebug, "v%d %f->%f, width: %d. height: %d, tex_width: %d, tex_height: %d, lr_u: %f, lr_v: %f", k, vv0[k], pv[k]->v1, rdp.tbuff_tex->width, rdp.tbuff_tex->height, rdp.tbuff_tex->tex_width, rdp.tbuff_tex->tex_height, rdp.tbuff_tex->lr_u, rdp.tbuff_tex->lr_v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (g_settings->wireframe)
|
if (g_settings->wireframe)
|
||||||
{
|
{
|
||||||
SetWireframeCol();
|
SetWireframeCol();
|
||||||
|
@ -1595,11 +1588,6 @@ static void render_tri(uint16_t linew, int old_interpolate)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// VERTEX ** pv = rdp.vtx_buffer?(vtx_list2):(vtx_list1);
|
|
||||||
// for (int k = 0; k < n; k ++)
|
|
||||||
// WriteTrace(TraceRDP, TraceDebug, "DRAW[%d]: v.x = %f, v.y = %f, v.z = %f, v.u = %f, v.v = %f", k, pv[k]->x, pv[k]->y, pv[k]->z, pv[k]->coord[rdp.t0<<1], pv[k]->coord[(rdp.t0<<1)+1]);
|
|
||||||
// pv[k]->y = g_settings->res_y - pv[k]->y;
|
|
||||||
|
|
||||||
if (linew > 0)
|
if (linew > 0)
|
||||||
{
|
{
|
||||||
VERTEX *V0 = &rdp.vtxbuf[0];
|
VERTEX *V0 = &rdp.vtxbuf[0];
|
||||||
|
|
Loading…
Reference in New Issue