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:
parent
887f221674
commit
edb3278370
1 changed files with 12 additions and 10 deletions
|
|
@ -408,16 +408,18 @@ edits the same driver).
|
|||
bisect" wording: the whole-stage terrain event is replaced in THIS chunk
|
||||
(drawing terrain twice would already hide the punch and make the gate
|
||||
meaningless), and chunk 4 loses that deletion.
|
||||
- **R5 — the sky draws TWICE.** `LScape::draw` @0x00506330 calls
|
||||
`GameSky::Draw(sky, 0)` @0x0050633c BEFORE `draw_check_blocks`, walks the
|
||||
blocks (`DrawBlock` @0x00506374), and then calls `GameSky::Draw(sky, 1)`
|
||||
@0x00506396 AFTER every block. acdream emits one `Sky()` event at the
|
||||
landscape turn's start. The implementer reads `GameSky::Draw` (grep it)
|
||||
and reports what the second pass (`arg2 == 1`) draws; if it is a real
|
||||
post-terrain layer (horizon band, celestial sprites, the far fog dome),
|
||||
chunk 3 adds the second sky event after the last land cell; if it is
|
||||
empty at retail defaults, the contract records why with the address. Do
|
||||
not guess — read it.
|
||||
- **R5 — the sky draws TWICE, and the second pass is the WEATHER.**
|
||||
`LScape::draw` @0x00506330 calls `GameSky::Draw(sky, 0)` @0x0050633c BEFORE
|
||||
`draw_check_blocks`, walks the blocks (`DrawBlock` @0x00506374), then calls
|
||||
`GameSky::Draw(sky, 1)` @0x00506396 AFTER every block. `GameSky::Draw`
|
||||
@0x00506ff0's `arg2 == 1` is the weather pass, gated on
|
||||
`SmartBox::is_player_outside` @0x00451e80 (already Ghidra-arbitrated and
|
||||
modeled by `RetailPViewPassExecutor.DrawLandscapeSliceLate`'s `RenderWeather`
|
||||
call — see that method's comment). Chunk 3 keeps the sky at the landscape
|
||||
turn's start and places the weather pass AFTER the last land cell of the
|
||||
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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue