docs(render): chunk 3 R5 — the second sky pass is retail's weather pass

GameSky::Draw 0x00506ff0 arg2==1 is the weather pass gated on
SmartBox::is_player_outside 0x00451e80, already modeled by RenderWeather;
chunk 3 only has to keep it after the last land cell.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-03 07:29:55 +02:00
parent 887f221674
commit edb3278370

View file

@ -408,16 +408,18 @@ edits the same driver).
bisect" wording: the whole-stage terrain event is replaced in THIS chunk bisect" wording: the whole-stage terrain event is replaced in THIS chunk
(drawing terrain twice would already hide the punch and make the gate (drawing terrain twice would already hide the punch and make the gate
meaningless), and chunk 4 loses that deletion. meaningless), and chunk 4 loses that deletion.
- **R5 — the sky draws TWICE.** `LScape::draw` @0x00506330 calls - **R5 — the sky draws TWICE, and the second pass is the WEATHER.**
`GameSky::Draw(sky, 0)` @0x0050633c BEFORE `draw_check_blocks`, walks the `LScape::draw` @0x00506330 calls `GameSky::Draw(sky, 0)` @0x0050633c BEFORE
blocks (`DrawBlock` @0x00506374), and then calls `GameSky::Draw(sky, 1)` `draw_check_blocks`, walks the blocks (`DrawBlock` @0x00506374), then calls
@0x00506396 AFTER every block. acdream emits one `Sky()` event at the `GameSky::Draw(sky, 1)` @0x00506396 AFTER every block. `GameSky::Draw`
landscape turn's start. The implementer reads `GameSky::Draw` (grep it) @0x00506ff0's `arg2 == 1` is the weather pass, gated on
and reports what the second pass (`arg2 == 1`) draws; if it is a real `SmartBox::is_player_outside` @0x00451e80 (already Ghidra-arbitrated and
post-terrain layer (horizon band, celestial sprites, the far fog dome), modeled by `RetailPViewPassExecutor.DrawLandscapeSliceLate`'s `RenderWeather`
chunk 3 adds the second sky event after the last land cell; if it is call — see that method's comment). Chunk 3 keeps the sky at the landscape
empty at retail defaults, the contract records why with the address. Do turn's start and places the weather pass AFTER the last land cell of the
not guess — read it. turn (retail order); the implementer confirms where the late landscape
slice runs relative to the new per-cell events and moves the weather call
only if it currently runs before them.
### 9.2 Production behavior change ### 9.2 Production behavior change