From 48115b153e14d363d8b5af7125a65e0bd43c61a4 Mon Sep 17 00:00:00 2001 From: elisha464 Date: Mon, 10 Feb 2014 18:34:30 +0200 Subject: [PATCH] more rsx texture (control1) and fixed crash of rsx debugger --- rpcs3/Emu/GS/GL/GLGSRender.h | 8 ++++---- rpcs3/Emu/GS/RSXTexture.cpp | 16 +++++----------- rpcs3/Emu/GS/RSXThread.cpp | 9 --------- rpcs3/Emu/GS/RSXThread.h | 7 +++---- rpcs3/Gui/RSXDebugger.cpp | 27 +++++++++++++++------------ 5 files changed, 27 insertions(+), 40 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLGSRender.h b/rpcs3/Emu/GS/GL/GLGSRender.h index 7a174ec7d6..ef46141163 100644 --- a/rpcs3/Emu/GS/GL/GLGSRender.h +++ b/rpcs3/Emu/GS/GL/GLGSRender.h @@ -158,10 +158,10 @@ public: if(format != 0x81 && format != 0x94) { - u8 remap_a = tex.m_remap & 0x3; - u8 remap_r = (tex.m_remap >> 2) & 0x3; - u8 remap_g = (tex.m_remap >> 4) & 0x3; - u8 remap_b = (tex.m_remap >> 6) & 0x3; + u8 remap_a = tex.GetRemap() & 0x3; + u8 remap_r = (tex.GetRemap() >> 2) & 0x3; + u8 remap_g = (tex.GetRemap() >> 4) & 0x3; + u8 remap_b = (tex.GetRemap() >> 6) & 0x3; static const int gl_remap[] = { diff --git a/rpcs3/Emu/GS/RSXTexture.cpp b/rpcs3/Emu/GS/RSXTexture.cpp index e064fa2f3b..16b470e319 100644 --- a/rpcs3/Emu/GS/RSXTexture.cpp +++ b/rpcs3/Emu/GS/RSXTexture.cpp @@ -3,7 +3,6 @@ RSXTexture::RSXTexture() : m_bias(0) - , m_remap(0xE4) , m_min_filter(1) , m_mag_filter(2) { @@ -12,7 +11,6 @@ RSXTexture::RSXTexture() RSXTexture::RSXTexture(u8 index) : m_bias(0) - , m_remap(0xE4) , m_min_filter(1) , m_mag_filter(2) { @@ -140,6 +138,11 @@ bool RSXTexture::IsAlphaKillEnabled() const return ((methodRegisters[NV4097_SET_TEXTURE_CONTROL0 + (m_index*4)] >> 2) & 0x1); } +u32 RSXTexture::GetRemap() const +{ + return (methodRegisters[NV4097_SET_TEXTURE_CONTROL1 + (m_index*4)]); +} + u16 RSXTexture::GetWidth() const { return ((methodRegisters[NV4097_SET_TEXTURE_IMAGE_RECT + (m_index*4)] >> 16) & 0xffff); @@ -150,15 +153,6 @@ u16 RSXTexture::GetHeight() const return ((methodRegisters[NV4097_SET_TEXTURE_IMAGE_RECT + (m_index*4)]) & 0xffff); } -void RSXTexture::SetControl0(const bool enable, const u16 minlod, const u16 maxlod, const u8 maxaniso) -{ -} - -void RSXTexture::SetControl1(u32 remap) -{ - m_remap = remap; -} - void RSXTexture::SetControl3(u16 depth, u32 pitch) { m_depth = depth; diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/GS/RSXThread.cpp index 346a1d5728..4dea573808 100644 --- a/rpcs3/Emu/GS/RSXThread.cpp +++ b/rpcs3/Emu/GS/RSXThread.cpp @@ -205,13 +205,6 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 case_16(NV4097_SET_TEXTURE_CONTROL0, 0x20): { - RSXTexture& tex = m_textures[index]; - u32 a0 = ARGS(0); - bool enable = a0 >> 31 ? true : false; - u16 minlod = (a0 >> 19) & 0xfff; - u16 maxlod = (a0 >> 7) & 0xfff; - u8 maxaniso = (a0 >> 2) & 0x7; - tex.SetControl0(enable, minlod, maxlod, maxaniso); } break; @@ -280,8 +273,6 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 case_16(NV4097_SET_TEXTURE_CONTROL1, 0x20): { - RSXTexture& tex = m_textures[index]; - tex.SetControl1(ARGS(0)); } break; diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/GS/RSXThread.h index fe05924aa6..b8e93153a9 100644 --- a/rpcs3/Emu/GS/RSXThread.h +++ b/rpcs3/Emu/GS/RSXThread.h @@ -31,8 +31,6 @@ public: u8 m_g_signed; u8 m_b_signed; - u32 m_remap; - public: RSXTexture(); RSXTexture(u8 index); @@ -66,12 +64,13 @@ public: u8 GetMaxAniso() const; bool IsAlphaKillEnabled() const; + // Control1 + u32 GetRemap() const; + // Image Rect u16 GetWidth() const; u16 GetHeight() const; - void SetControl0(const bool enable, const u16 minlod, const u16 maxlod, const u8 maxaniso); - void SetControl1(u32 remap); void SetControl3(u16 depth, u32 pitch); void SetFilter(u16 bias, u8 min, u8 mag, u8 conv, u8 a_signed, u8 r_signed, u8 g_signed, u8 b_signed); }; diff --git a/rpcs3/Gui/RSXDebugger.cpp b/rpcs3/Gui/RSXDebugger.cpp index c442a10c99..80c5027ad6 100644 --- a/rpcs3/Gui/RSXDebugger.cpp +++ b/rpcs3/Gui/RSXDebugger.cpp @@ -484,19 +484,22 @@ void RSXDebugger::GetTexture() for(uint i=0; iInsertItem(i, wxString::Format("%d", i)); - m_list_texture->SetItem(i, 1, wxString::Format("0x%x", GetAddress(render.m_textures[i].GetOffset(), render.m_textures[i].GetLocation()))); - m_list_texture->SetItem(i, 2, render.m_textures[i].isCubemap() ? "True" : "False"); - m_list_texture->SetItem(i, 3, wxString::Format("%dD", render.m_textures[i].GetDimension())); - m_list_texture->SetItem(i, 4, render.m_textures[i].IsEnabled() ? "True" : "False"); - m_list_texture->SetItem(i, 5, wxString::Format("0x%x", render.m_textures[i].GetFormat())); - m_list_texture->SetItem(i, 6, wxString::Format("0x%x", render.m_textures[i].Getmipmap())); - m_list_texture->SetItem(i, 7, wxString::Format("0x%x", render.m_textures[i].m_pitch)); - m_list_texture->SetItem(i, 8, wxString::Format("%dx%d", - render.m_textures[i].GetWidth(), - render.m_textures[i].GetHeight())); + if(render.m_textures[i].IsEnabled()) + { + m_list_texture->InsertItem(i, wxString::Format("%d", i)); + m_list_texture->SetItem(i, 1, wxString::Format("0x%x", GetAddress(render.m_textures[i].GetOffset(), render.m_textures[i].GetLocation()))); + m_list_texture->SetItem(i, 2, render.m_textures[i].isCubemap() ? "True" : "False"); + m_list_texture->SetItem(i, 3, wxString::Format("%dD", render.m_textures[i].GetDimension())); + m_list_texture->SetItem(i, 4, render.m_textures[i].IsEnabled() ? "True" : "False"); + m_list_texture->SetItem(i, 5, wxString::Format("0x%x", render.m_textures[i].GetFormat())); + m_list_texture->SetItem(i, 6, wxString::Format("0x%x", render.m_textures[i].Getmipmap())); + m_list_texture->SetItem(i, 7, wxString::Format("0x%x", render.m_textures[i].m_pitch)); + m_list_texture->SetItem(i, 8, wxString::Format("%dx%d", + render.m_textures[i].GetWidth(), + render.m_textures[i].GetHeight())); - m_list_texture->SetItemBackgroundColour(i, wxColour(m_cur_texture == i ? "Wheat" : "White")); + m_list_texture->SetItemBackgroundColour(i, wxColour(m_cur_texture == i ? "Wheat" : "White")); + } } }