re: which GP_TITLE build is which screen, measured against the game
Q2. The archive is eight screens shipped twice, English and Japanese -- not the "build 4 title, 5 main menu, 6/8/9 submenus" the handoff claimed. Build 8 is the JAPANESE main menu; 6 and 9 are the EN and JP EXTRAS, and EXTRAS is the only submenu GP_TITLE holds. The PRESS (A) BUTTON plate is its own build (2/3), composited over the title art and faded in a beat later, not a state of build 4. Confirmed by booting to the main menu and walking it: title, PRESS (A), main menu and EXTRAS each match their render element for element. Builds 0/1 and 10/11 -- a DELTASABER / SYLPHEED A.I. plate -- were looked for in the whole boot filmstrip, every title-side screen and the attract loop, and appear in none of them; the reach of that negative is written down rather than filled in with a guess. Two rig traps went into METHOD: the menus drop d-pad presses shorter than ~0.3 s, and a grab 2.5 s after a transition can catch a screen mid-fade -- which nearly wrote "the returned title has no plate" into the corpus.
This commit is contained in:
107
docs/re/ui-title-build-map.md
Normal file
107
docs/re/ui-title-build-map.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Which `GP_TITLE` build is which screen — measured against the running game
|
||||
|
||||
**Status:** ✅ `CONFIRMED` for the four screens the boot path actually shows
|
||||
(title art, `PRESS Ⓐ BUTTON`, main menu, `EXTRAS`); 🟡 `PROBABLE` for their
|
||||
Japanese twins; ❔ open for the two `DELTASABER` plates.
|
||||
|
||||
Answers [MISSION Q2](../port/MISSION.md). The previous statement — *"build 4
|
||||
title, 5 main menu, 6/8/9 submenus"* — is **partly wrong** and is withdrawn:
|
||||
build 8 is the **Japanese main menu**, not a submenu, and `GP_TITLE` holds
|
||||
exactly **one** submenu (`EXTRAS`), in two languages.
|
||||
|
||||
## The archive is eight screens, each shipped twice
|
||||
|
||||
`GP_TITLE.pak` has 16 entries; `sylpheed-cli screen list` calls 12 of them
|
||||
composable builds. The 16 fall into **eight pairs**, and each pair's two members
|
||||
have near-identical sizes and name hashes that differ by a constant — one
|
||||
character of the name apart:
|
||||
|
||||
| entry | hash | bytes | build idx | pair |
|
||||
|---|---|---|---|---|
|
||||
| 0 | `01a2db9c` | 483 958 | 0 | A |
|
||||
| 1 | `0ff0b8a8` | 483 958 | 1 | A |
|
||||
| 2 | `285d8849` | 267 014 | 2 | B |
|
||||
| 3 | `369773cb` | 267 014 | 3 | B |
|
||||
| 4 | `a60fcb85` | 12 278 666 | 4 | C |
|
||||
| 7 | `b483e6e6` | 13 363 328 | 7 | C |
|
||||
| 5 | `a715f485` | 6 977 437 | 5 | D |
|
||||
| 8 | `b58a0fe6` | 6 931 653 | 8 | D |
|
||||
| 6 | `a81c1d85` | 6 549 126 | 6 | E |
|
||||
| 9 | `b69038e6` | 6 548 438 | 9 | E |
|
||||
| 10 | `cdba806e` | 426 473 | — | F |
|
||||
| 13 | `db2ea1f8` | 423 333 | — | F |
|
||||
| 11 | `cec0a96e` | 999 643 | — | G |
|
||||
| 14 | `dc34caf8` | 999 643 | — | G |
|
||||
| 12 | `cf2a8ccd` | 1 774 639 | 10 | H |
|
||||
| 15 | `dd56d99b` | 1 774 639 | 11 | H |
|
||||
|
||||
For the three pairs whose members differ visibly — C, D, E — **the difference is
|
||||
English versus Japanese**: build 7 is the title art with the katakana subtitle
|
||||
プロジェクト シルフィード, build 8 the main menu reading 新規 / ロード /
|
||||
チュートリアル / オプション / エクストラ, build 9 the `EXTRAS` submenu as
|
||||
エクストラ. That is the whole of the language split we can see. In pairs A, B and
|
||||
H the two members render **byte-identical PNGs** — the archive still carries two
|
||||
copies, but the artwork does not change with the language.
|
||||
|
||||
Pairs F and G are the four entries `screen list` does *not* classify as builds.
|
||||
They are not identified here.
|
||||
|
||||
## The map
|
||||
|
||||
Contact sheet of every render:
|
||||
[`captures/title-builds/title-build-contact-sheet.png`](captures/title-builds/title-build-contact-sheet.png).
|
||||
|
||||
| build | what it is | confirmed how |
|
||||
|---|---|---|
|
||||
| 0, 1 | a `DELTASABER / SYLPHEED A.I.` plate low-left on black, no background | ❔ **not observed running.** Never seen in the boot path, the main menu, `EXTRAS` or `MISSION SELECT` |
|
||||
| **2**, 3 | the `PRESS Ⓐ BUTTON` plate — **an overlay build of its own**, not a state of build 4 | ✅ seen composited over build 4 on the live title, at the same rect our render puts it |
|
||||
| **4** | title art, English (`PROJECT SYLPHEED`, ™, `(C)2006,2007 SQUARE ENIX`) | ✅ [`live-title-press-a.png`](captures/title-builds/live-title-press-a.png) |
|
||||
| 7 | the same, Japanese | 🟡 renders as the JP twin of build 4; the container runs an English locale, so it was not seen |
|
||||
| **5** | main menu, English: NEW GAME / LOAD GAME / TUTORIAL / OPTIONS / EXTRAS, footer `Ⓐ : OK` | ✅ [`live-main-menu.png`](captures/title-builds/live-main-menu.png) — element for element |
|
||||
| 8 | the same, Japanese | 🟡 as above |
|
||||
| **6** | the `EXTRAS` submenu, English: MISSION SELECT / MOVIE THEATER / BACK, footer `Ⓐ : OK Ⓑ : Back` | ✅ [`live-extras.png`](captures/title-builds/live-extras.png) |
|
||||
| 9 | the same, Japanese | 🟡 as above |
|
||||
| 10, 11 | the same `DELTASABER` plate as build 0, over a dark circuit-line background | ❔ **not observed running** |
|
||||
|
||||
**Reach of the two negatives.** Builds 0/1 and 10/11 were looked for in: the whole
|
||||
boot sequence (a 5 s-cadence filmstrip from launch to the title, ~190 s), the
|
||||
title, the main menu, the `EXTRAS` submenu, the `LOAD GAME` slot list, the
|
||||
transition into `MISSION SELECT` (a 40-frame burst), and the attract cycle. They
|
||||
appear in none of them. The obvious remaining candidate is a *long* load — a
|
||||
mission launch — which is out of this objective's scope; they are most likely a
|
||||
loading/AI-chatter plate. That is a hypothesis, not a result.
|
||||
|
||||
## Three things the captures settle beyond the map
|
||||
|
||||
**The live title is two builds composited.** Build 4 draws the art; build 2 draws
|
||||
`PRESS Ⓐ BUTTON` on top, and it **fades in a beat later** — a screenshot taken
|
||||
2.5 s after arriving at the title has the art and no plate, one taken ~1 s later
|
||||
has both. The port must treat the plate as its own timed element.
|
||||
|
||||
**The attract-loop title carries the plate too.** After ~8–10 s idle the title
|
||||
fades to black, a full-motion video plays for ~85 s, and the title comes back —
|
||||
*with* `PRESS Ⓐ BUTTON`
|
||||
([`live-attract-title-press-a-band.png`](captures/title-builds/live-attract-title-press-a-band.png)).
|
||||
This is consistent with, and adds nothing to, the draw-quad comparison in
|
||||
[`canary-scripted-input-traps.md`](canary-scripted-input-traps.md): the plate is
|
||||
not the tell that distinguishes the boot title from the attract title.
|
||||
|
||||
**`EXTRAS` is the only main-menu destination inside `GP_TITLE`.** Ⓐ on `EXTRAS`
|
||||
opens build 6 — measured. The other four destinations leave the archive: Ⓐ on
|
||||
`LOAD GAME` opened a `LOAD GAME` slot list, and Ⓐ on `MISSION SELECT` inside
|
||||
`EXTRAS` opened a `MISSION SELECT` screen, neither of which is a `GP_TITLE`
|
||||
build. `dat/` carries `GP_SAVE_LOAD.pak`, `GP_TUTORIAL.pak`, `GP_OPTIONS.pak`,
|
||||
`GP_MISSION_SELECT.pak` and `GP_MOVIE_THEATER.pak`; **that those are the archives
|
||||
behind the other four buttons is an inference from the names, not a measurement.**
|
||||
|
||||
## How to reproduce
|
||||
|
||||
```bash
|
||||
sylpheed-cli screen list "$SYLPHEED_DISC/dat/GP_TITLE.pak"
|
||||
sylpheed-cli screen render --build 6 "$SYLPHEED_DISC/dat/GP_TITLE.pak" /tmp/b6.png
|
||||
tools/re-capture/boot_menu.sh q2 # boots to the main menu, cursor on NEW GAME
|
||||
tools/re-capture/pad.py dpad down 0.35 # x4 -> EXTRAS
|
||||
tools/re-capture/pad.py tap A 0.30
|
||||
```
|
||||
|
||||
Mind the d-pad hold — see [`METHOD.md`](METHOD.md).
|
||||
Reference in New Issue
Block a user