diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index c93782918a..6593244d40 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -1804,6 +1804,12 @@ void GLGSRender::ExecCMD() } } + if (m_set_two_side_light_enable) + { + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + checkForGlError("glLightModeli"); + } + if(m_set_shade_mode) { glShadeModel(m_shade_mode); diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 9958db93a6..c4ec54633d 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -1117,6 +1117,12 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, const u32 args_addr, const } break; + case NV4097_SET_TWO_SIDE_LIGHT_EN: + { + m_set_two_side_light_enable = ARGS(0) ? true : false; + } + break; + case NV4097_SET_STENCIL_MASK: { m_set_stencil_mask = true; diff --git a/rpcs3/Emu/RSX/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h index d7bad7561b..d6a8cb8fe3 100644 --- a/rpcs3/Emu/RSX/RSXThread.h +++ b/rpcs3/Emu/RSX/RSXThread.h @@ -288,6 +288,7 @@ public: bool m_set_stencil_zpass; u32 m_stencil_zpass; bool m_set_two_sided_stencil_test_enable; + bool m_set_two_side_light_enable; bool m_set_back_stencil_mask; u32 m_back_stencil_mask; bool m_set_back_stencil_func; @@ -462,6 +463,7 @@ protected: m_set_point_sprite_control = false; m_set_specular = false; m_set_two_sided_stencil_test_enable = false; + m_set_two_side_light_enable = false; m_set_surface_clip_horizontal = false; m_set_surface_clip_vertical = false; m_set_poly_offset_fill = false; @@ -551,6 +553,7 @@ protected: m_set_blend_color = false; m_set_stencil_test = false; m_set_two_sided_stencil_test_enable = false; + m_set_two_side_light_enable = false; m_set_stencil_mask = false; m_set_stencil_func = false; m_set_stencil_func_ref = false; diff --git a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp index da87d67abe..c14cef7f3f 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp @@ -445,6 +445,7 @@ void SetupRsxRenderingStates(vm::ptr& cntxt) r.m_set_poly_offset_fill = false; r.m_set_stencil_test = false; r.m_set_two_sided_stencil_test_enable = false; + r.m_set_two_side_light_enable = false; r.m_set_point_sprite_control = false; r.m_set_dither = true; r.m_set_shade_mode = true; r.m_shade_mode = CELL_GCM_SMOOTH;