Two pages of this corpus disagreed. MISSION says the splash "is the RATC screen, which already renders"; ui-paint-order-key.md says it "cannot be rendered by screen render at all". Running the tool both ways settles it. screen list --all shows all 16 GP_TITLE entries instead of 12, and the four the default listing drops are the splash, each half shipped twice: entries 10 and 13 are the white SQUARE ENIX publisher logo, entries 11 and 14 the GAME ARTS / SETA / studio anima developer logos. Entry 11's seven elements are the three logos, their three _eff glows and the palogo_eff0.prm backdrop -- exactly the composition ui-paint-order-key.md had measured for the splash without being able to draw it. So the "cannot be rendered" line is wrong and is corrected in place. What is true is narrower and worth keeping: the splash is invisible to the DEFAULT listing because is_build wants a .rat child, so anyone who does not pass --all concludes it is missing. That goes in METHOD -- a default filter can hide a whole screen and the corpus will record it as absent. The payoff is for the port rather than for the RE: the first of the five screens now has a reference composite, which it did not have. Marked amber on one point -- there is no framebuffer capture of the splash in this repo, so the match to the running game is by description against the milestone-1 notes, not by pixels.
134 lines
7.3 KiB
Markdown
134 lines
7.3 KiB
Markdown
# 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 by
|
||
default. **They are the developer splash**, and they render — see below.
|
||
|
||
## 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** |
|
||
|
||
## ✅ The splash — the four "non-build" entries, rendered
|
||
|
||
`screen list --all` widens the enumeration to every composable bundle and shows
|
||
all **16** entries. The four that the default listing drops are the two halves of
|
||
the developer splash, each shipped twice:
|
||
|
||
| entry | elements / sprites | what it is |
|
||
|---|---|---|
|
||
| **10, 13** | 3 / 2 | the white **`SQUARE ENIX`** publisher logo |
|
||
| **11, 14** | 7 / 6 | **`GAME ARTS` / `SETA` / `studio anima`** — the developer logos |
|
||
|
||
[`splash-entries-rendered.png`](captures/title-builds/splash-entries-rendered.png).
|
||
Rendered with `screen render --all --primitives --black`. Entry 11's seven
|
||
elements are the three logos, their three `_eff` glows and the
|
||
`palogo_eff0.prm` black backdrop — exactly the composition
|
||
[`structures/ui-paint-order-key.md`](structures/ui-paint-order-key.md) measured
|
||
for the splash.
|
||
|
||
The pair matches the milestone-1 description of the running splash from the
|
||
emulator work — white `SQUARE ENIX`, then `GAME ARTS`/`SETA`/`studio anima`.
|
||
🟡 There is **no framebuffer capture of the splash in this repo** to diff against,
|
||
so that correspondence is by description, not by pixels.
|
||
|
||
**So the first of the five screens now has a reference composite**, which it did
|
||
not before.
|
||
|
||
**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).
|