port(exporter): export GP_OPTIONS -- the OPTIONS screens render

authored/screen_names.json export_archives gains dat/GP_OPTIONS.pak, alone.
Adding all four candidate archives at once would land 139 new screens together
and make any regression unattributable.

Result: 14 screen builds, 30-41 sprites each, ZERO missing sprites, 434 PNGs.
All 30 screens (16 title + 14 options) validate against sylpheed.screen/3, and
export/screens/title is BYTE-IDENTICAL to before -- the addition disturbed
nothing existing.

And they render. build_04 is the real CONTROL SETTINGS screen: 43 elements,
1280x720, title, ten labelled rows and the button legend, every sprite resolving.
Element ids carry a po_ prefix, so these are the options builds and not a
coincidence of the detector.

⚠️ One element, po_pad_slider1, has no sprite in the export and is reported as
NOT DRAWN rather than silently skipped.

⚠️ Screens are unnamed (build_NN by entry index) and OPTIONS is not yet reachable
from the menu -- ptbtn04 still has goto=null. Naming and wiring are the next
units, deliberately separate from making the screens exist.
This commit is contained in:
Sylpheed port agent
2026-09-03 18:10:58 +00:00
parent fda417a5db
commit 3efe1cc03e
650 changed files with 94945 additions and 91 deletions

View File

@@ -1,94 +1,125 @@
{
"format": "sylpheed.screen_names/1",
"_": [
"Which GP_TITLE pak entry is which screen. AUTHORED: the disc does not name its",
"builds, so every name here is a decision. The identifications come from",
"HANDOFF Q2 (ui-title-build-map.md), which measured them against framebuffer",
"captures of the running game; the exporter stamps the name into the screen",
"file with name_source: \"authored\" so a reader can tell a recovered name from",
"an invented one.",
"",
"KEYED BY PAK ENTRY INDEX, not by the enumeration ordinal. It used to be the",
"ordinal; widening the enumeration to reach the splash renumbers ordinals, and",
"a name that moves when the enumeration rule changes is not a name. The entry",
"was always described here as the stronger locator -- now it is the only",
"stable one.",
"",
"Delete an entry here the day the RE agent decodes a name field."
],
"archives": {
"dat/GP_TITLE.pak": {
"2": {
"name": "press_start",
"why": "HANDOFF Q2: builds 2/3 are the PRESS (A) BUTTON plate -- a build of its own, composited over the title and faded in a beat later. English of the EN/JP pair. Measured against a live capture. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"3": {
"name": "press_start_jp",
"why": "HANDOFF Q2: the Japanese twin of build 2. Out of scope for this milestone; named so it is not mistaken for a screen we need. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"4": {
"name": "title",
"why": "HANDOFF Q2: build 4 is the English title art. Measured against a live capture. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"5": {
"name": "main_menu",
"why": "HANDOFF Q2: builds 5/8 are the five-button main menu; 5 is English. Measured against a live capture. (An earlier reading called 8 a submenu and was withdrawn -- 8 is the Japanese main menu.) 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"6": {
"name": "extras",
"why": "HANDOFF Q2: builds 6/9 are the EXTRAS submenu, the only submenu inside this archive. Measured against a fresh EXTRAS capture. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"7": {
"name": "title_jp",
"why": "HANDOFF Q2: the Japanese twin of build 4. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"8": {
"name": "main_menu_jp",
"why": "HANDOFF Q2: the Japanese twin of build 5. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"9": {
"name": "extras_jp",
"why": "HANDOFF Q2: the Japanese twin of build 6. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"10": {
"name": "publisher_logo",
"why": "The SQUARE ENIX PUBLISHER wordmark -- the FIRST thing the boot sequence shows, before the developer logos. Measured by the RE agent 2026-08-29, render grid at docs/re/captures/title-builds/splash-both-halves-rendered.png. Entries 10/13 are region twins distinguished by the trademark glyph; 10 carries the (TM). 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"13": {
"name": "publisher_logo_r",
"why": "The region twin of entry 10, carrying (R) where 10 carries (TM). Named so it is not mistaken for a second screen the boot path needs. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"11": {
"name": "developer_logos",
"why": "The GAME ARTS / SETA / studio anima logos -- the developer splash, shown after the publisher wordmark. HANDOFF Q2 and the RE agent's 2026-08-29 render grid; draws 7/7 elements. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"14": {
"name": "developer_logos_r",
"why": "The region twin of entry 11, as 13 is to 10. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
}
"format": "sylpheed.screen_names/1",
"_": [
"Which GP_TITLE pak entry is which screen. AUTHORED: the disc does not name its",
"builds, so every name here is a decision. The identifications come from",
"HANDOFF Q2 (ui-title-build-map.md), which measured them against framebuffer",
"captures of the running game; the exporter stamps the name into the screen",
"file with name_source: \"authored\" so a reader can tell a recovered name from",
"an invented one.",
"",
"KEYED BY PAK ENTRY INDEX, not by the enumeration ordinal. It used to be the",
"ordinal; widening the enumeration to reach the splash renumbers ordinals, and",
"a name that moves when the enumeration rule changes is not a name. The entry",
"was always described here as the stronger locator -- now it is the only",
"stable one.",
"",
"Delete an entry here the day the RE agent decodes a name field."
],
"export_archives": [
"dat/GP_TITLE.pak",
"dat/GP_OPTIONS.pak"
],
"export_archives_why": [
"WHICH disc archives the export reads screen builds from.",
"",
"GP_TITLE was the only one for the whole project, hardcoded in the",
"exporter. That single constant is why four of the five main-menu",
"destinations are dead: authored/flow.json records LOAD GAME, TUTORIAL,",
"OPTIONS and NEW GAME's difficulty chain as MEASURED destinations,",
"blocked only because 'there is no screen file to go to'.",
"",
"GP_OPTIONS ADDED 2026-09-03, and deliberately alone. The probe",
"(crates/sylpheed-export/examples/probe_archives.rs) finds screen builds",
"in 24 archives with the EXISTING detector -- GP_OPTIONS 14,",
"GP_SAVE_LOAD 18, GP_DIALOG 105, GP_TUTORIAL 2. Adding all four at once",
"would land 139 new screens together and make any regression",
"unattributable, so this takes the smallest archive first.",
"",
"\u26a0\ufe0f is_build() PARSING IS NOT RENDERING. It says the record is a build,",
"not that its sprites resolve or that anyone has identified the screen.",
"Unnamed builds export as build_NN by entry index. Expect names to be",
"wrong-looking until someone drives the game to them; that is a naming",
"gap, not a decode failure.",
"",
"\u26a0\ufe0f OUT OF SCOPE ON PURPOSE: GP_HANGAR_ARSENAL (390 builds), the",
"GP_MAIN_GAME_* set and the rest of the gameplay archives. MISSION",
"section 7 scopes gameplay out, and a screen that parses is not a screen",
"this milestone wants."
],
"archives": {
"dat/GP_TITLE.pak": {
"2": {
"name": "press_start",
"why": "HANDOFF Q2: builds 2/3 are the PRESS (A) BUTTON plate -- a build of its own, composited over the title and faded in a beat later. English of the EN/JP pair. Measured against a live capture. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"3": {
"name": "press_start_jp",
"why": "HANDOFF Q2: the Japanese twin of build 2. Out of scope for this milestone; named so it is not mistaken for a screen we need. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"4": {
"name": "title",
"why": "HANDOFF Q2: build 4 is the English title art. Measured against a live capture. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"5": {
"name": "main_menu",
"why": "HANDOFF Q2: builds 5/8 are the five-button main menu; 5 is English. Measured against a live capture. (An earlier reading called 8 a submenu and was withdrawn -- 8 is the Japanese main menu.) \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"6": {
"name": "extras",
"why": "HANDOFF Q2: builds 6/9 are the EXTRAS submenu, the only submenu inside this archive. Measured against a fresh EXTRAS capture. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"7": {
"name": "title_jp",
"why": "HANDOFF Q2: the Japanese twin of build 4. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"8": {
"name": "main_menu_jp",
"why": "HANDOFF Q2: the Japanese twin of build 5. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"9": {
"name": "extras_jp",
"why": "HANDOFF Q2: the Japanese twin of build 6. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"10": {
"name": "publisher_logo",
"why": "The SQUARE ENIX PUBLISHER wordmark -- the FIRST thing the boot sequence shows, before the developer logos. Measured by the RE agent 2026-08-29, render grid at docs/re/captures/title-builds/splash-both-halves-rendered.png. Entries 10/13 are region twins distinguished by the trademark glyph; 10 carries the (TM). \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"13": {
"name": "publisher_logo_r",
"why": "The region twin of entry 10, carrying (R) where 10 carries (TM). Named so it is not mistaken for a second screen the boot path needs. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"11": {
"name": "developer_logos",
"why": "The GAME ARTS / SETA / studio anima logos -- the developer splash, shown after the publisher wordmark. HANDOFF Q2 and the RE agent's 2026-08-29 render grid; draws 7/7 elements. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"14": {
"name": "developer_logos_r",
"why": "The region twin of entry 11, as 13 is to 10. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
}
}
},
"unnamed": {
"dat/GP_TITLE.pak": "Entries 0/1 and 12/15 are plates never seen running -- not in the boot path, not on any title-side screen, not in the attract loop (HANDOFF Q2). They export under their entry index rather than a name we would be inventing."
},
"also_export": {
"dat/GP_TITLE.pak": {
"10": {
"name": "publisher_logo",
"why": "LOCATED BY ENTRY INDEX, not by a rule. These four bundles declare their sprites directly and have no .rat layout child, so `is_build` cannot see them -- and the RE agent established that NO content rule can: design size fails (every extra composable bundle sampled is 1280x720, the same as every screen) and element count fails (fragments run 2..15 elements in GP_OPTIONS/GP_SAVE_LOAD while these are 3 and 7 -- the ranges overlap). Safe here and not in general: in GP_TITLE the widened set adds exactly these four and all four are real screens, zero fragments. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"11": {
"name": "developer_logos",
"why": "As entry 10: located by index because no content rule distinguishes a splash from a fragment. 7 elements, all drawn. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"13": {
"name": "publisher_logo_r",
"why": "As entry 10, region twin. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"14": {
"name": "developer_logos_r",
"why": "As entry 11, region twin. \ud83d\udccc SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. \u26a0\ufe0f The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
}
}
}
},
"unnamed": {
"dat/GP_TITLE.pak": "Entries 0/1 and 12/15 are plates never seen running -- not in the boot path, not on any title-side screen, not in the attract loop (HANDOFF Q2). They export under their entry index rather than a name we would be inventing."
},
"also_export": {
"dat/GP_TITLE.pak": {
"10": {
"name": "publisher_logo",
"why": "LOCATED BY ENTRY INDEX, not by a rule. These four bundles declare their sprites directly and have no .rat layout child, so `is_build` cannot see them -- and the RE agent established that NO content rule can: design size fails (every extra composable bundle sampled is 1280x720, the same as every screen) and element count fails (fragments run 2..15 elements in GP_OPTIONS/GP_SAVE_LOAD while these are 3 and 7 -- the ranges overlap). Safe here and not in general: in GP_TITLE the widened set adds exactly these four and all four are real screens, zero fragments. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"11": {
"name": "developer_logos",
"why": "As entry 10: located by index because no content rule distinguishes a splash from a fragment. 7 elements, all drawn. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"13": {
"name": "publisher_logo_r",
"why": "As entry 10, region twin. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
},
"14": {
"name": "developer_logos_r",
"why": "As entry 11, region twin. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter."
}
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

239
export-probe2/manifest.json Normal file
View File

@@ -0,0 +1,239 @@
{
"format": "sylpheed.manifest/1",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"disc": "/disc",
"screens": [
{
"name": "build_00",
"file": "screens/title/build_00.json",
"sprites": 7
},
{
"name": "build_01",
"file": "screens/title/build_01.json",
"sprites": 7
},
{
"name": "press_start",
"file": "screens/title/press_start.json",
"sprites": 2
},
{
"name": "press_start_jp",
"file": "screens/title/press_start_jp.json",
"sprites": 2
},
{
"name": "title",
"file": "screens/title/title.json",
"sprites": 18
},
{
"name": "main_menu",
"file": "screens/title/main_menu.json",
"sprites": 20
},
{
"name": "extras",
"file": "screens/title/extras.json",
"sprites": 20
},
{
"name": "title_jp",
"file": "screens/title/title_jp.json",
"sprites": 24
},
{
"name": "main_menu_jp",
"file": "screens/title/main_menu_jp.json",
"sprites": 20
},
{
"name": "extras_jp",
"file": "screens/title/extras_jp.json",
"sprites": 20
},
{
"name": "publisher_logo",
"file": "screens/title/publisher_logo.json",
"sprites": 2
},
{
"name": "developer_logos",
"file": "screens/title/developer_logos.json",
"sprites": 6
},
{
"name": "build_12",
"file": "screens/title/build_12.json",
"sprites": 9
},
{
"name": "publisher_logo_r",
"file": "screens/title/publisher_logo_r.json",
"sprites": 2
},
{
"name": "developer_logos_r",
"file": "screens/title/developer_logos_r.json",
"sprites": 6
},
{
"name": "build_15",
"file": "screens/title/build_15.json",
"sprites": 9
},
{
"name": "build_03",
"file": "screens/options/build_03.json",
"sprites": 30
},
{
"name": "build_04",
"file": "screens/options/build_04.json",
"sprites": 41
},
{
"name": "build_05",
"file": "screens/options/build_05.json",
"sprites": 30
},
{
"name": "build_06",
"file": "screens/options/build_06.json",
"sprites": 26
},
{
"name": "build_07",
"file": "screens/options/build_07.json",
"sprites": 34
},
{
"name": "build_08",
"file": "screens/options/build_08.json",
"sprites": 41
},
{
"name": "build_09",
"file": "screens/options/build_09.json",
"sprites": 26
},
{
"name": "build_10",
"file": "screens/options/build_10.json",
"sprites": 34
},
{
"name": "build_16",
"file": "screens/options/build_16.json",
"sprites": 31
},
{
"name": "build_18",
"file": "screens/options/build_18.json",
"sprites": 31
},
{
"name": "build_19",
"file": "screens/options/build_19.json",
"sprites": 15
},
{
"name": "build_20",
"file": "screens/options/build_20.json",
"sprites": 40
},
{
"name": "build_21",
"file": "screens/options/build_21.json",
"sprites": 15
},
{
"name": "build_22",
"file": "screens/options/build_22.json",
"sprites": 40
}
],
"videos": [
{
"name": "ADV",
"file": "video/ADV.ogv",
"command": "ffmpeg -hide_banner -loglevel error -y -i /disc/dat/movie/ADV.wmv -c:v libtheora -q:v 8 -c:a libvorbis -q:a 5 -af pan=stereo|FL=0.4142*FL+0.2929*FC+0.2929*BL |FR=0.4142*FR+0.2929*FC+0.2929*BR -ac 2 export-probe2/video/ADV.ogv",
"why": "HANDOFF Q9: ADVERTISE_MOVIE -> ADV.wmv, and the boot intro and the attract movie are the SAME asset -- there is no separate boot slot.",
"duration_s": 137.437458,
"fps": 30.0
},
{
"name": "S00A",
"file": "video/S00A.ogv",
"command": "ffmpeg -hide_banner -loglevel error -y -i /disc/dat/movie/S00A.wmv -c:v libtheora -q:v 8 -c:a libvorbis -q:a 5 -af pan=stereo|FL=0.4142*FL+0.2929*FC+0.2929*BL |FR=0.4142*FR+0.2929*FC+0.2929*BR -ac 2 export-probe2/video/S00A.ogv",
"why": "HANDOFF Q9: MS00A -> S00A.wmv is the new-game intro. P7.",
"duration_s": 93.778583,
"fps": 30.0
}
],
"audio": [
{
"kind": "se",
"name": "back",
"file": "audio/se/back.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/se/.back.xma.wav -c:a libvorbis -q:a 5 export-probe2/audio/se/back.ogg",
"why": "HANDOFF Q8, measured: the (B) back cue, 4 096 B / 0.344 s, reproduced across two boots. No `name_match` for the same reason as `confirm` -- Q8 names no identifier for it. AUTHORED because it is measured, not decoded: authored/audio.json se.back. Located in Static.slb at 0xec0 for 2 packet(s); the ASSEMBLY is sylpheed_formats::media::se_wave_riff, which refuses a short read.",
"peak_dbfs": -5.699542,
"duration_s": 0.343833
},
{
"kind": "se",
"name": "confirm",
"file": "audio/se/confirm.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/se/.confirm.xma.wav -c:a libvorbis -q:a 5 export-probe2/audio/se/confirm.ogg",
"why": "HANDOFF Q8, measured: the (A) confirm cue, 12 288 B / 1.016 s. NO `name_match`: Q8 is explicit that (A)'s wave was not separated between `SE_UI_DECIDE` and `SE_UI_SUB_WIN_OPN`, so naming it would invent the one thing the measurement did not settle. AUTHORED because it is measured, not decoded: authored/audio.json se.confirm. Located in Static.slb at 0x5d6c0 for 6 packet(s); the ASSEMBLY is sylpheed_formats::media::se_wave_riff, which refuses a short read.",
"peak_dbfs": 0.178538,
"duration_s": 1.016
},
{
"kind": "se",
"name": "move",
"file": "audio/se/move.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/se/.move.xma.wav -c:a libvorbis -q:a 5 export-probe2/audio/se/move.ogg",
"why": "HANDOFF Q8, measured: the d-pad move cue, 8 192 B / 0.533 s, reproduced across two boots. Left/right play nothing at all, which is a measurement too and is why there is no `left`/`right` row here rather than a silent file. AUTHORED because it is measured, not decoded: authored/audio.json se.move. Located in Static.slb at 0x1ec0 for 4 packet(s); the ASSEMBLY is sylpheed_formats::media::se_wave_riff, which refuses a short read.",
"peak_dbfs": -1.397579,
"duration_s": 0.533354,
"name_match": "SE_UI_CURSOR"
},
{
"kind": "bgm",
"name": "main_menu",
"file": "audio/bgm/main_menu.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/bgm/.main_menu.0.xma.wav -i export-probe2/audio/bgm/.main_menu.1.xma.wav -filter_complex amix=inputs=2:normalize=0,volume=0.500000 -ss 9.44 -t 61.87 -c:a libvorbis -q:a 5 export-probe2/audio/bgm/main_menu.ogg",
"why": "MEASURED, HANDOFF Q10 -- NOT a port choice. `GamePart_Title`'s phase handler `sub_821C5580` plays cue 1103 = `BGM_103`, and `BGM_103.slb`'s two declared waves (3 876 864 / 3 930 112 B) are byte-for-byte the two streams the XMA probe saw decoding at the main menu. Static code, disc census and runtime all agree; see docs/re/menu-audio-cues.md and docs/re/structures/bgm-two-stems.md. The name carries its `.slb` extension because that is what `sound.pak` hashes -- `BGM_103` alone resolves to nothing, which is how the first draft of this file failed. ✅ AUDITED 2026-08-31 -- the THREE legs are three, and that is now measured rather than asserted. Prompted by the Decoder's point that a decorative second support is worse than none, since a conclusion with two supports reads as better evidenced than one and apparent redundancy is itself the misinformation. Read literally, 'disc census' and 'runtime' could be ONE comparison -- declared wave sizes matched byte-for-byte against the probe -- which would make three legs two. It is a real third leg only if the census EXCLUDES alternatives: if another bank carried the same two sizes, the byte match would not distinguish BGM_103. Measured with this port's own reader (`crates/sylpheed-export/examples/bgm_size_census.rs`): of 32 readable BGM_* banks on the disc, EXACTLY ONE carries waves of that size. The census therefore excludes, the static-code leg names the cue independently, and the three legs stand. ✅ AND THE EXCLUSION IS TIGHTER THAN I STATED. The Decoder attempted to refute it from their own census tool rather than this port's reader: of 32 census rows, exactly one bank carries EITHER of those wave sizes -- not merely both together, which is what I measured. A collision would therefore need to reproduce a single size, not a pair, and none does. authored/audio.json bgm.main_menu names bank BGM_103.slb. Of its 2 sub-wave(s), 2 are SUMMED into one file and the sum is scaled by 1/2, which is the smallest constant that cannot clip. MEASURED, HANDOFF Q10: a bank is exactly TWO waves of identical duration (32/32 banks on the disc), sample-synchronous -- transient correlation peaks at lag 0.00 s over +/-5 s and both stop at the same millisecond. Concatenating them plays the piece twice, the second time as a bass-less stem; that was the previous reading and it is refuted. Emitting two files would be wrong for a second reason: MODDING rule 1 is one logical asset, one file, and handing a modder two stems to line up by hand is the reassembly the exporter exists to have already done. WHAT IS SUMMED IS SETTLED; WHAT WAVE 1 IS, IS NOT -- HANDOFF calls it quieter, far more L/R-decorrelated and almost bass-free, so it reads as a surround-rear pair OR a second intensity layer, and `ChannelMask` is 0x0002 on both so the file will not say. A unity sum is right under either reading; a weighting would only be justified once that is settled. MEASURED, and this field's own history is why it says so first. The bed loops; the loop is a RUNTIME field -- `loop_start`/`loop_end` in the XMA decoder context, set by `XMASetLoopData` and logged by Xenia -- and the cycle was watched directly: three wraps, both contexts wrapping at the same instant every time, mean 61.81 s against the 61.93 s authored in `loop_end_s`, 0.2 % apart from instruments sharing nothing. The export is TRIMMED to that window, because Godot loops a whole file and a loop region therefore has to BE the file. ⚠️ The window's START is not measured and is authored as 0, which is known to be wrong -- see `loop_start_why`. 🔴 EVERY SENTENCE THAT PRECEDED THIS ONE WAS REFUTED, and the previous text survived in the manifest for two days after the corrections were written. It said the loop would be `AUDIBLY WRONG AT THE SEAM [refuted]`, that `no loop-point field has been identified [refuted] anywhere`, and that trimming `would INVENT a loop point`. All three are false: the field exists, the 3.4 s of near-silence was the PORT'S loop and not the game's, and the trim is now what the measurement says. The corrections went into `loop_end_why` and `loop_start_why`; this field is the one the exporter concatenates into `manifest.json`, so the export went on telling readers the refuted story. A correction that does not reach the artifact a consumer reads has not been made. 📌 CITATIONS ADDED 2026-09-01, and their absence was found by `audit-kinds` the moment this field got a `kind` -- it had 1 400 characters of prose and nothing openable, which is exactly the state the audit exists to catch and could not see while the field was unlabelled. The wrap measurement is docs/re/data/menu-bgm-loop-measured.txt and the start is docs/re/data/menu-bgm-loop-start.txt; the bank's two-stem structure is docs/re/structures/bgm-two-stems.md.",
"peak_dbfs": -4.201146,
"duration_s": 61.87,
"loop_mode": "restart"
},
{
"kind": "voice",
"name": "ADV",
"file": "audio/voice/ADV.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/voice/.ADV.0.xma.wav -i export-probe2/audio/voice/.ADV.1.xma.wav -i export-probe2/audio/voice/.ADV.2.xma.wav -filter_complex [0:a]anull,pan=mono|c0=0.500000*c0+0.500000*c1[m0];[1:a]anull,pan=mono|c0=c0[m1];[2:a]anull,pan=mono|c0=0.500000*c0+0.500000*c1[m2];[m0]volume=0.4142[w0];[m1]volume=0.2929[w1];[m2]volume=0.2929[w2];[w0][w1][w2]amix=inputs=3:normalize=0[a] -map [a] -c:a libvorbis -q:a 5 export-probe2/audio/voice/ADV.ogg",
"why": "DECODED, not authored: the movie manifest in tables.pak binds ADV to a voice cue, and sylpheed_formats::media::resolve_movie_voice_region walks movie -> token -> sound id -> byte region [433425776, 437044592) of the continuous voice stream. NOT matched by filename: RT01A's voice lives inside VOICE_ADV.slb, so the name is right for this movie by luck and wrong for others. ✅ ALL 3 region chunk(s) are exported, summed. Keeping ONE was REFUTED FROM THE OUTPUT SIDE 2026-08-30: a recording of the game's own 6-channel output over the intro decomposes as capture = 0.600 x movie + residual, and the residual is THREE signals at three positions -- front pair (r 0.918), rear pair (r 0.929), and a centre whose partner LFE is empty to -115 dB. The load-bearing number is LFE reproducing to -115.73 dBFS: where nothing is added the two decoders agree exactly, so the other residuals are ADDED CONTENT and not codec mismatch. ⚠️ WHICH stream sits at which position is NOT determined -- the assignment is by position, not content -- so this is a mono sum divided by the count, never a positional downmix. The three downmix weights sum to one whatever the assignment, so the total is right and the distribution is the only thing unclaimed. ⚠️ The movie's OWN track is WMA Pro 5.1 and carries the bed; these streams are additional. 3 kept under presentation `all`, folded to mono on each stream's own live channels. Chunks found, in region order: chunk 0 1294396 B (137.324 s); chunk 1 1118268 B (137.324 s); chunk 2 1171516 B (137.324 s). Decoded length 137.324 s against the movie's 137.437 s (delta -0.114 s); NOT trimmed to fit -- a clamp would hide a resolution error, and the runtime stops the voice when the video ends.",
"peak_dbfs": -2.866331,
"duration_s": 137.32394
},
{
"kind": "voice",
"name": "S00A",
"file": "audio/voice/S00A.ogg",
"command": "ffmpeg -hide_banner -loglevel error -y -i export-probe2/audio/voice/.S00A.0.xma.wav -i export-probe2/audio/voice/.S00A.1.xma.wav -filter_complex [0:a]anull,pan=mono|c0=0.500000*c0+0.500000*c1[m0];[1:a]anull,pan=mono|c0=c0[m1];[m0][m1]amix=inputs=2:normalize=1[a] -map [a] -c:a libvorbis -q:a 5 export-probe2/audio/voice/S00A.ogg",
"why": "DECODED, not authored: the movie manifest in tables.pak binds S00A to a voice cue, and sylpheed_formats::media::resolve_movie_voice_region walks movie -> token -> sound id -> byte region [452294000, 455499120) of the continuous voice stream. NOT matched by filename: RT01A's voice lives inside VOICE_ADV.slb, so the name is right for this movie by luck and wrong for others. ✅ ALL 3 region chunk(s) are exported, summed. Keeping ONE was REFUTED FROM THE OUTPUT SIDE 2026-08-30: a recording of the game's own 6-channel output over the intro decomposes as capture = 0.600 x movie + residual, and the residual is THREE signals at three positions -- front pair (r 0.918), rear pair (r 0.929), and a centre whose partner LFE is empty to -115 dB. The load-bearing number is LFE reproducing to -115.73 dBFS: where nothing is added the two decoders agree exactly, so the other residuals are ADDED CONTENT and not codec mismatch. ⚠️ WHICH stream sits at which position is NOT determined -- the assignment is by position, not content -- so this is a mono sum divided by the count, never a positional downmix. The three downmix weights sum to one whatever the assignment, so the total is right and the distribution is the only thing unclaimed. ⚠️ The movie's OWN track is WMA Pro 5.1 and carries the bed; these streams are additional. 2 kept under presentation `all`, folded to mono on each stream's own live channels. Chunks found, in region order: chunk 0 1810492 B (93.694 s); chunk 1 1263676 B (93.694 s); chunk 2 98364 B (93.694 s, SILENT). Also dropped: chunk 2 (93.694 s, 98364 B, peak SILENT). A chunk marked SILENT carries no signal and contributes nothing; one of a different duration is not a concurrent stream of this take. 🔴 THIS SENTENCE USED TO SAY the leading chunk was `the TAIL of the kept stream [refuted]`, on a sliding envelope correlation of r=0.998. The CORRELATION was sound and the INTERPRETATION was refuted: `resolve_movie_voice_region` was starting 238 packets inside the first stream, so what matched end-flush was a START-TRUNCATED SIMULTANEOUS stream, not a duplicate tail -- which is why it aligned at the end. Fixed in formats-pin-2026-08-30; that chunk is now kept at full length and nothing is dropped for that reason any more. Decoded length 93.694 s against the movie's 93.779 s (delta -0.085 s); NOT trimmed to fit -- a clamp would hide a resolution error, and the runtime stops the voice when the video ends.",
"peak_dbfs": -2.827022,
"duration_s": 93.69375
}
],
"warnings": [
"Screen builds from 2 only (dat/GP_TITLE.pak, dat/GP_OPTIONS.pak). Other archives on the disc also contain UI builds and are not exported. Only the two movies MISSION section 6 puts in scope.",
"The four splash bundles (entries 10/13 publisher, 11/14 developer) have no .rat layout child, so `is_build` cannot see them and no content rule can: element count and design size both overlap with two-element fragments in other archives. They are located by ENTRY INDEX from authored/screen_names.json `also_export`, which is a locator and not a claim -- see each one's name_why.",
"video/*.ogv: the 5.1->stereo fold is NOT the matrix MISSION §6 pins. §6 fixes it at FL = 1.0*FL + 0.707*FC + 0.707*BL (a human decision, 2026-08-29); this export ships that matrix scaled by 0.4142 -- same weighting, 7.65 dB quieter. Measured over the whole of both movies, float-decoded so nothing is pre-clamped: under the PINNED matrix ADV peaks at +4.26 dBFS with 4406 samples at or over full scale (1874 more than 1 dB over, longest clamped run 0.333 ms), while S00A peaks at -1.34 dBFS and never clips. So the pin overloads ADV and this constant is over-broad for S00A; the smallest single scalar under which neither clamps is 1/1.6339 = 0.612. NOT changed on the exporter's own authority -- the level of a mix is what §6 reserves to a human. See docs/port/DECISIONS.md."
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,734 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 11,
"build": 11
},
"name": "developer_logos",
"name_source": "authored",
"name_why": "The GAME ARTS / SETA / studio anima logos -- the developer splash, shown after the publisher wordmark. HANDOFF Q2 and the RE agent's 2026-08-29 render grid; draws 7/7 elements. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "palogo_eff0",
"declared": "palogo_eff0.prm",
"role": "primitive",
"kind_raw": "0x10",
"pivot": [
640,
360
],
"size": [
1280,
720
],
"layer_source": "implied",
"layer": "0x00000000",
"rest": {
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0
}
]
},
{
"index": 1,
"id": "palogo_gamearts",
"declared": "palogo_gamearts.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_gamearts.png",
"pivot": [
250,
36
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 2,
"id": "palogo_gamearts_eff",
"declared": "palogo_gamearts_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_gamearts_eff.png",
"pivot": [
260,
46
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 15
},
"keyframes": [
{
"t": 0,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 3,
"id": "palogo_seta",
"declared": "palogo_seta.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_seta.png",
"pivot": [
120,
44
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 4,
"id": "palogo_seta_eff",
"declared": "palogo_seta_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_seta_eff.png",
"pivot": [
130,
55
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 15
},
"keyframes": [
{
"t": 0,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 5,
"id": "palogo_anima",
"declared": "palogo_anima.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_anima.png",
"pivot": [
194,
68
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 6,
"id": "palogo_anima_eff",
"declared": "palogo_anima_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos/palogo_anima_eff.png",
"pivot": [
204,
78
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0,
2,
4,
6,
1,
3,
5
],
"buttons": [],
"settle_window": [
45,
190,
117
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

View File

@@ -0,0 +1,734 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 14,
"build": 14
},
"name": "developer_logos_r",
"name_source": "authored",
"name_why": "The region twin of entry 11, as 13 is to 10. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "palogo_eff0",
"declared": "palogo_eff0.prm",
"role": "primitive",
"kind_raw": "0x10",
"pivot": [
640,
360
],
"size": [
1280,
720
],
"layer_source": "implied",
"layer": "0x00000000",
"rest": {
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0
}
]
},
{
"index": 1,
"id": "palogo_gamearts",
"declared": "palogo_gamearts.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_gamearts.png",
"pivot": [
250,
36
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
390,
164
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 2,
"id": "palogo_gamearts_eff",
"declared": "palogo_gamearts_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_gamearts_eff.png",
"pivot": [
260,
46
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 15
},
"keyframes": [
{
"t": 0,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
379,
154
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 3,
"id": "palogo_seta",
"declared": "palogo_seta.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_seta.png",
"pivot": [
120,
44
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
521,
316
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 4,
"id": "palogo_seta_eff",
"declared": "palogo_seta_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_seta_eff.png",
"pivot": [
130,
55
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 15
},
"keyframes": [
{
"t": 0,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
511,
305
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 5,
"id": "palogo_anima",
"declared": "palogo_anima.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_anima.png",
"pivot": [
194,
68
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 190,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 194,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 206,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 210,
"pos": [
446,
449
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 6,
"id": "palogo_anima_eff",
"declared": "palogo_anima_eff.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/developer_logos_r/palogo_anima_eff.png",
"pivot": [
204,
78
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
435,
440
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0,
2,
4,
6,
1,
3,
5
],
"buttons": [],
"settle_window": [
45,
190,
117
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,326 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 2,
"build": 2
},
"name": "press_start",
"name_source": "authored",
"name_why": "HANDOFF Q2: builds 2/3 are the PRESS (A) BUTTON plate -- a build of its own, composited over the title and faded in a beat later. English of the EN/JP pair. Measured against a live capture. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "ptbtn00",
"declared": "ptbtn00.rat",
"role": "unknown",
"kind_raw": "0x73002",
"sprite": "sprites/title/press_start/ptbtn00.png",
"focus_sprite": "sprites/title/press_start/ptbtn00f.png",
"focus": {
"record": "ptbtn00f.rat",
"loop_length_units": 120,
"elements": [
{
"id": "ptbtn00f",
"declared": "ptbtn00f.t32",
"sprite": "sprites/title/press_start/ptbtn00f.png",
"blend_additive": true,
"pivot": [
268,
38
],
"rest": {
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0,
"t": 35
},
"keyframes": [
{
"t": 0,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 6,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x06ffffff",
"rotation_deg": 0
},
{
"t": 29,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x4affffff",
"rotation_deg": 0
},
{
"t": 35,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0
},
{
"t": 50,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0
},
{
"t": 58,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x4affffff",
"rotation_deg": 0
},
{
"t": 97,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x06ffffff",
"rotation_deg": 0
},
{
"t": 105,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
]
},
"leaf": {
"record": "ptbtn00.rat",
"loop_length_units": 120,
"elements": [
{
"id": "ptbtn00",
"declared": "ptbtn00.t32",
"sprite": "sprites/title/press_start/ptbtn00.png",
"blend_additive": false,
"pivot": [
256,
25
],
"rest": {
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
}
]
}
]
},
"opt_link": "ptbtn00f.rat",
"pivot": [
256,
25
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x00008110",
"rest": {
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 236
},
"keyframes": [
{
"t": 0,
"pos": [
383,
560
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 214,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 236,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 238,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 244,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0
],
"buttons": [],
"settle_window": [
214,
236,
225
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

View File

@@ -0,0 +1,326 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 3,
"build": 3
},
"name": "press_start_jp",
"name_source": "authored",
"name_why": "HANDOFF Q2: the Japanese twin of build 2. Out of scope for this milestone; named so it is not mistaken for a screen we need. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "ptbtn00",
"declared": "ptbtn00.rat",
"role": "unknown",
"kind_raw": "0x73002",
"sprite": "sprites/title/press_start_jp/ptbtn00.png",
"focus_sprite": "sprites/title/press_start_jp/ptbtn00f.png",
"focus": {
"record": "ptbtn00f.rat",
"loop_length_units": 120,
"elements": [
{
"id": "ptbtn00f",
"declared": "ptbtn00f.t32",
"sprite": "sprites/title/press_start_jp/ptbtn00f.png",
"blend_additive": true,
"pivot": [
268,
38
],
"rest": {
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0,
"t": 35
},
"keyframes": [
{
"t": 0,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 6,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x06ffffff",
"rotation_deg": 0
},
{
"t": 29,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x4affffff",
"rotation_deg": 0
},
{
"t": 35,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0
},
{
"t": 50,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x50ffffff",
"rotation_deg": 0
},
{
"t": 58,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x4affffff",
"rotation_deg": 0
},
{
"t": 97,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x06ffffff",
"rotation_deg": 0
},
{
"t": 105,
"pos": [
371,
537
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
]
},
"leaf": {
"record": "ptbtn00.rat",
"loop_length_units": 120,
"elements": [
{
"id": "ptbtn00",
"declared": "ptbtn00.t32",
"sprite": "sprites/title/press_start_jp/ptbtn00.png",
"blend_additive": false,
"pivot": [
256,
25
],
"rest": {
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
}
]
}
]
},
"opt_link": "ptbtn00f.rat",
"pivot": [
256,
25
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x00008110",
"rest": {
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 236
},
"keyframes": [
{
"t": 0,
"pos": [
383,
560
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 214,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 236,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 238,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 244,
"pos": [
383,
550
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0
],
"buttons": [],
"settle_window": [
214,
236,
225
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

View File

@@ -0,0 +1,299 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 10,
"build": 10
},
"name": "publisher_logo",
"name_source": "authored",
"name_why": "The SQUARE ENIX PUBLISHER wordmark -- the FIRST thing the boot sequence shows, before the developer logos. Measured by the RE agent 2026-08-29, render grid at docs/re/captures/title-builds/splash-both-halves-rendered.png. Entries 10/13 are region twins distinguished by the trademark glyph; 10 carries the (TM). 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "palogo_eff0",
"declared": "palogo_eff0.prm",
"role": "primitive",
"kind_raw": "0x10",
"pivot": [
640,
360
],
"size": [
1280,
720
],
"layer_source": "implied",
"layer": "0x00000000",
"rest": {
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0
}
]
},
{
"index": 1,
"id": "palogo_sqex",
"declared": "palogo_sqex.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/publisher_logo/palogo_sqex.png",
"pivot": [
330,
30
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 235,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 239,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 251,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 255,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 2,
"id": "palogo_sqex_eff",
"declared": "palogo_sqex_eff.t32",
"role": "unknown",
"kind_raw": "0x1",
"sprite": "sprites/title/publisher_logo/palogo_sqex_eff.png",
"pivot": [
341,
41
],
"parent": 1,
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0,
2,
1
],
"buttons": [],
"settle_window": [
45,
235,
140
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

View File

@@ -0,0 +1,299 @@
{
"format": "sylpheed.screen/3",
"exporter": "sylpheed-export 0.1.0",
"formats_rev": "8b6dbcf",
"source": {
"archive": "dat/GP_TITLE.pak",
"entry": 13,
"build": 13
},
"name": "publisher_logo_r",
"name_source": "authored",
"name_why": "The region twin of entry 10, carrying (R) where 10 carries (TM). Named so it is not mistaken for a second screen the boot path needs. 📌 SOURCE, added 2026-09-01 in the uncited-why backfill: the four bundles are identified in docs/re/ui-title-build-map.md, and the ordinal-versus-entry distinction this entry depends on is docs/re/structures/build-ordinal-vs-entry.md. ⚠️ The sibling references below (\"as entry 10, region twin\") are a citation form too -- they point at another entry in this file rather than at a document, and forcing a path onto them would be mislabelling to satisfy a counter.",
"design": [
1280,
720
],
"elements": [
{
"index": 0,
"id": "palogo_eff0",
"declared": "palogo_eff0.prm",
"role": "primitive",
"kind_raw": "0x10",
"pivot": [
640,
360
],
"size": [
1280,
720
],
"layer_source": "implied",
"layer": "0x00000000",
"rest": {
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0,
"t": 0
},
"keyframes": [
{
"t": 0,
"pos": [
0,
0
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xff000000",
"rotation_deg": 0
}
]
},
{
"index": 1,
"id": "palogo_sqex",
"declared": "palogo_sqex.t32",
"role": "decoration",
"kind_raw": "0x0",
"sprite": "sprites/title/publisher_logo_r/palogo_sqex.png",
"pivot": [
330,
30
],
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a110",
"rest": {
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 235,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 239,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xe8ffffff",
"rotation_deg": 0
},
{
"t": 251,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x20ffffff",
"rotation_deg": 0
},
{
"t": 255,
"pos": [
309,
330
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
},
{
"index": 2,
"id": "palogo_sqex_eff",
"declared": "palogo_sqex_eff.t32",
"role": "unknown",
"kind_raw": "0x1",
"sprite": "sprites/title/publisher_logo_r/palogo_sqex_eff.png",
"pivot": [
341,
41
],
"parent": 1,
"blend_additive": false,
"layer_source": "sprite",
"layer": "0x0000a100",
"rest": {
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0,
"t": 30
},
"keyframes": [
{
"t": 0,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
},
{
"t": 15,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xffffffff",
"rotation_deg": 0
},
{
"t": 30,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0xd4ffffff",
"rotation_deg": 0
},
{
"t": 45,
"pos": [
299,
319
],
"scale": [
100,
100
],
"tint_rgba": "0xffffffff",
"fade_argb": "0x00ffffff",
"rotation_deg": 0
}
]
}
],
"paint_order": [
0,
2,
1
],
"buttons": [],
"settle_window": [
45,
235,
140
],
"unresolved": [
"keyframe_time_unit",
"paint_order_ties",
"fade_out_duration"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Some files were not shown because too many files have changed in this diff Show More