Scenes: dezo_endgame.rs misses or approximates retail waits (tower tops, Re-Faze, the guardians, Profound Darkness)

Open
#571 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust

Research direction

Start with the wait census rows in rust/psiv-core/src/scenes/wait_census.rs and the scene script in dezo_endgame.rs, matching the offsets listed for each event against the census. Run cargo test -p psiv-core --lib wait_census with the US image to see which rows still read Missing, Recorded or defect. Done means each listed wait is a native Wait of the right length and loop kind, or its omission is justified in docs/source-notes/README.md, and a scene test drives the repaired timing.

Written by the indexing model from the issue text.

Description

priority: medium tracker

Found by the #470 wait census of dezo_endgame.rs (#519). Each wait below is a row in rust/psiv-core/src/scenes/wait_census.rs naming this issue, checked against the US image. Offsets are US retail; counts are the dbf passes (n + 1).

Event_StrengthTowerTop ($070E4E)

17 DoMainUpdatesLoop calls and 2 Event_StepObject calls against 5 native Waits.

  • $070E7C, $070E9E, $070EC0, $070EE2 (15 frames each): ops 2-5 (ObjectAnimation, frames: 15) record the count, but the runner does not block on ObjectAnimation.
  • No native wait: $070F16 (4), $070F28 (60), $070F30 (30), $070F60 (20), $07100C (6), $0710B2 (30).
  • No op: the two Event_StepObject calls at $070F44 and $070F58 (8 passes each: map updates, no field-object update).
  • Op 12's Wait 60 is $0710DE. Retail runs it after the speed-8 pan ($071074), the SFXID_EnemyKilled and the 30-frame wait. The transcription runs it before the pan. The pan back to Character_1 is #565.

Event_CourageTowerTop ($071102)

  • $071152, $07118A, $0711BA, $0711F2 (2 frames each): ops 3-6 (ObjectAnimation, frames: 2) record the count but don't block.
  • The second round of four $2BC spawns and their two SFXID_Foi ($0711FE..$0712CF) has no ops. Neither do its waits at $07122A, $071262, $071292 and $0712CA (2 each), or $0712D2 (10).
  • No native wait: $07139E (2), $0713F0 (20). The final $071426 (30) is #565's.

Event_ReFaze ($07157A)

  • $07160C (DoMainUpdatesLoop, 63): op 10 (ObjectAnimation, frames: 63) records the count but doesn't block.
  • Op 13's Wait 64 stands for the 64-frame loc_58666 restore at $071636, which runs no map updates. It is transcribed after the SFXID_FireBreath, where retail runs the 136-frame DoMainUpdatesLoop at $071652, which has no wait.
  • The Megid branch: the two 40-frame Pal_IncreaseTone loops ($071688, $0716B8), the 10-frame wait at $0716E8, the 40-frame restore at $071708 and Pal_VariableFadeToPal2 have no ops.

Event_DeVarsDefeated ($07175A) and Event_SaLewsDefeated ($071822)

  • Op 2's Wait 40, after a FadeOut, stands for the first 40-frame Pal_IncreaseTone loop ($071772 / $07183A). That loop brightens rather than fades and runs no map updates.
  • The second 40-frame tone loop ($0717A8 / $071870) and the 40-frame restore after the barrier sound ($071808 / $0718CC) have no ops.
  • The 10-frame DoMainUpdatesLoop ($0717F8 / $0718BC) is recorded by op 3's ObjectAnimation (frames: 10) but doesn't block.

Cutscene_ProfoundDarkness ($078D30)

  • Op 12's Wait 600 stands for loc_78ECE's 600 passes ($078ED4). Each pass runs MapUpdate_TheEdgePart2_PalLine2, loc_55D78 and the random palette-line-2 white flashes with SFXID_Tandle, with no RunMapUpdates. No op records the flashes.

Not a wait, found on the way

  • Cutscene_Reunion: Event_MoveObjectStatic ($078AAA) blocks until object $FFFFC340 reaches ($1F0,$1B0), updating objects and the map. Op 2's SetObjectDestination doesn't block. This is #470's motion-loop clause.

Acceptance

  • Each listed retail wait is a native wait of the right length and loop kind, or its omission is recorded in docs/source-notes/README.md with a reason.
  • Its census row moves from Missing/Recorded/defect to a plain Wait or Within claim. cargo test -p psiv-core --lib wait_census passes with the US image.
  • A scene test drives each repaired scene's timing.
Dominant language
Rust
Stars
1
Forks
0
Avg merge
8h 43m
Merged PRs (30d)
288

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from TusanHomichi/PSIV

All issues in TusanHomichi/PSIV

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.