From b37b2bf29faf7a67e49a353165b9e310ff653be7 Mon Sep 17 00:00:00 2001 From: Agent X <44549182+AgentXLP@users.noreply.github.com> Date: Mon, 4 May 2026 23:41:07 -0400 Subject: [PATCH] Prevent HOOK_ON_HUD_RENDER_BEHIND from being halted --- src/game/area.c | 74 ++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/src/game/area.c b/src/game/area.c index c22fa22eb..9de060aa6 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -448,13 +448,15 @@ void play_transition_after_delay(s16 transType, s16 time, u8 red, u8 green, u8 b void render_game(void) { dynos_update_gfx(); - if (gCurrentArea != NULL && !gWarpTransition.pauseRendering) { - geo_process_root(gCurrentArea->root, gViewportOverride, gViewportClip, gFBSetColor); + if (gCurrentArea != NULL) { + if (!gWarpTransition.pauseRendering) { + geo_process_root(gCurrentArea->root, gViewportOverride, gViewportClip, gFBSetColor); - gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gViewportFullscreen)); + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gViewportFullscreen)); - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH, - SCREEN_HEIGHT - BORDER_HEIGHT); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH, + SCREEN_HEIGHT - BORDER_HEIGHT); + } if (!gDjuiDisabled) { djui_reset_hud_params(); @@ -466,41 +468,45 @@ void render_game(void) { smlua_call_event_hooks(HOOK_ON_HUD_RENDER_BEHIND, djui_reset_hud_params); djui_gfx_displaylist_end(); } - render_hud(); - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); - render_text_labels(); - do_cutscene_handler(); - if (!gDjuiInMainMenu) { - print_displaying_credits_entry(); - } - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH, - SCREEN_HEIGHT - BORDER_HEIGHT); - gPauseScreenMode = render_menus_and_dialogs(); + if (!gWarpTransition.pauseRendering) { + render_hud(); - if (gPauseScreenMode != 0) { - gSaveOptSelectIndex = gPauseScreenMode; - } - - if (gViewportClip != NULL) { - make_viewport_clip_rect(gViewportClip); - } else + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + render_text_labels(); + do_cutscene_handler(); + if (!gDjuiInMainMenu) { + print_displaying_credits_entry(); + } gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT - BORDER_HEIGHT); + gPauseScreenMode = render_menus_and_dialogs(); - if (gWarpTransition.isActive) { - if (gWarpTransDelay == 0) { - gWarpTransition.isActive = !render_screen_transition(0, gWarpTransition.type, gWarpTransition.time, - &gWarpTransition.data); - if (!gWarpTransition.isActive) { - if (gWarpTransition.type & 1) { - gWarpTransition.pauseRendering = TRUE; - } else { - set_warp_transition_rgb(0, 0, 0); - } - } + if (gPauseScreenMode != 0) { + gSaveOptSelectIndex = gPauseScreenMode; + } + + if (gViewportClip != NULL) { + make_viewport_clip_rect(gViewportClip); } else { - gWarpTransDelay--; + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH, + SCREEN_HEIGHT - BORDER_HEIGHT); + } + + if (gWarpTransition.isActive) { + if (gWarpTransDelay == 0) { + gWarpTransition.isActive = !render_screen_transition(0, gWarpTransition.type, gWarpTransition.time, + &gWarpTransition.data); + if (!gWarpTransition.isActive) { + if (gWarpTransition.type & 1) { + gWarpTransition.pauseRendering = TRUE; + } else { + set_warp_transition_rgb(0, 0, 0); + } + } + } else { + gWarpTransDelay--; + } } } } else {