Skip to content

Fix Deku Scrub Flower Flash#6610

Open
unreference wants to merge 3 commits into
HarbourMasters:developfrom
unreference:fix/en_dnt_nomal-flower-flash
Open

Fix Deku Scrub Flower Flash#6610
unreference wants to merge 3 commits into
HarbourMasters:developfrom
unreference:fix/en_dnt_nomal-flower-flash

Conversation

@unreference
Copy link
Copy Markdown

@unreference unreference commented May 12, 2026

This fixes #2796.

Despite the interpolation label on the issue, this is not a frame interpolation bug. The flash occurs at original frame rates as well -- it's an actor initialization issue where the draw function is enabled before all draw data is ready. This bug also exists on original hardware, but is likely masked by the original asynchronous DMA.

En_Dnt_Nomal briefly renders its flower display list at the world origin during spawn. The actor's lifecycle has a gap between its draw and flowerPos initialization. Between EnDntNomal_WaitForObject and EnDntNomal_SetFlower, flowerPos is zero-initialized from memset in Actor_Spawn. Both EnDntNomal_DrawTargetScrub and EnDntNomal_DrawStageScrub use flowerPos with MTXMODE_NEW to position the flower independently of the actor, so the flower renders at (0, 0, 0) until SetFlower corrects it.

21 actors share the same deferred-draw pattern (draw function set in an Object_IsLoaded callback rather than Init). I audited all of them individually and En_Dnt_Nomal is the only one affected. The other 20 either draw at actor.world.pos (always valid from spawn) or initialize all draw data in the same update call where the draw function is enabled.

Comment thread soh/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

scrub tops? flash on screen when going through lost woods

2 participants