Reproduce arcade menu transitions

This commit is contained in:
2026-08-15 16:25:11 +02:00
parent 3090555ab3
commit 72c59bf410
2 changed files with 448 additions and 66 deletions
+14 -6
View File
@@ -90,9 +90,11 @@ list deltas rather than complete scenes:
- `COLT` carries RGBA multiplication, including authored visibility fades;
- `ASRC` contains the exported `play();`, `stop();`, and target actions.
`gc::BuildRvbSnapshot` now accumulates those deltas through a selected label
and advances `play()` entry frames to their following `stop()` frame. This is
why hidden templates and transition masks no longer appear together.
`gc::BuildRvbSnapshot` accumulates those deltas through a selected label. Its
snapshot state can either advance a `play()` entry to the following `stop()`
or request a relative animation frame globally or per MovieClip path. Per-path
evaluation is required here because the selected transition must advance while
unrelated child loops remain at their authored steady frames.
MTX starts with `MTX\0`; each payload is a DDS whose first dword was replaced
by the container. Restoring `DDS ` yields a standard DDS. RVB `ImageN` maps to
@@ -137,9 +139,15 @@ actual formulas and spacings:
- `(7 - count) * 0.5 * 68`, with the row anchored at `426 + 16`;
- `(9 - count) * 0.5 * 52`, with the row anchored at `433 + 16`.
The remaining visual work is outside this recovered static scene snapshot:
the executable-owned player/status HUD in the blank upper band, continuous
timeline interpolation, and the exact transition timing between task states.
`FUN_00447170` also supplies the transition timing used by the executable. Song
slot changes interpolate linearly over `0.125` seconds. The list enters/exits
over `0.375` seconds and shifts by one viewport width using exponent `4` easing.
The row plates retain their full dimensions; their opacity and the title scale
use the slot values `0.7`, `0.8`, `0.9`, and `1.0`. The desktop selector now
combines these executable-owned values with frame-based RVB entry, exit, sort,
focus, difficulty-change, and decision states. Confirmation is a distinct
`jf_decision`/`jf_mode_decision` phase before the task exit timeline; collapsing
both phases is why an immediate screen switch does not resemble the cabinet.
## Common and navigator layers