diff --git a/src/GL/gl.c b/src/GL/gl.c index d26e11562f..9a04223a28 100644 --- a/src/GL/gl.c +++ b/src/GL/gl.c @@ -162,6 +162,11 @@ void gl_close() rdpq_close(); } +void gl_reset_uploaded_texture() +{ + gl_set_word(GL_UPDATE_NONE, offsetof(gl_server_state_t, uploaded_tex), 0); +} + void gl_context_begin() { const surface_t *old_color_buffer = state.color_buffer; @@ -179,6 +184,8 @@ void gl_context_begin() glScissor(0, 0, width, height); } + gl_reset_uploaded_texture(); + state.frame_id++; } @@ -286,6 +293,7 @@ void gl_set_flag2(GLenum target, bool value) break; case GL_RDPQ_TEXTURING_N64: gl_set_flag_word2(GL_UPDATE_NONE, FLAG2_USE_RDPQ_TEXTURING, value); + gl_reset_uploaded_texture(); break; case GL_SCISSOR_TEST: gl_set_flag(GL_UPDATE_SCISSOR, FLAG_SCISSOR_TEST, value); diff --git a/src/GL/rsp_pipeline.c b/src/GL/rsp_pipeline.c index d607bcfd73..8d04762972 100644 --- a/src/GL/rsp_pipeline.c +++ b/src/GL/rsp_pipeline.c @@ -302,6 +302,7 @@ static void gl_asm_vtx_loader(const gl_array_t *arrays) const uint8_t cmd_ptr_reg = 20; const uint8_t norm_reg = 2; const uint8_t dst_vreg_base = 24; + const uint32_t current_normal_offset = offsetof(gl_server_state_t, normal) - offsetof(gl_server_state_t, color); uint32_t cmd_offset = 0; @@ -344,7 +345,7 @@ static void gl_asm_vtx_loader(const gl_array_t *arrays) } if (!arrays[ATTRIB_NORMAL].enabled) { - rspq_write_arg(&w, rsp_asm_lw(norm_reg, 0x18, current_reg)); + rspq_write_arg(&w, rsp_asm_lw(norm_reg, current_normal_offset, current_reg)); } else { rspq_write_arg(&w, rsp_asm_lw(norm_reg, cmd_offset, cmd_ptr_reg)); }