re: an embedded .prt part is a top-level RATC bundle, addressed by its element prefix

Read first: ui-rat-layout.md OWNS the RATC stack and already documents
the 60-byte element declaration table and 'one bundle = one
(context x language) build of that screen'.  What it does not say is how
a part is addressed when it is NOT a pak entry.

The elements of one bundle share a common name prefix, and that prefix
is the part name.  GP_MAIN_GAME_E2D.pak has 130 bundles with 114
distinct element prefixes -- pgmenu_btn00, pghud_wing, pgface,
pghud_range, pgmanuva_eff0 -- exactly the in-game part names.

The 100 in-game-only .prt names match a 2D bundle prefix 68 times; the
control, the 241 shipped parts, matches ZERO.  The two families are
disjoint on the test.  13 shipped parts match a bundle prefix in their
own screen pak, which is the expected shape.

Four of the five mission banners land here: pgmsg_start.prt is E2D
bundle 0x89fac252, a one-element bundle declaring pgmsg_start_sub.rat;
likewise _end_, _failed_, _restart_.  pgmsg_update has no bundle at all,
consistent with having no _sub.rat.

32 in-game names still have no 2D bundle.  They cluster into families
whose base name is a bundle, reading as a variant declared inside a
parent bundle -- a reading, not adopted.

Artefact +38 lines / 0 deletions; the other six regenerate
byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-27 14:27:38 +00:00
parent dc868e14c3
commit 4d9f7ce563
4 changed files with 135 additions and 2 deletions

View File

@@ -66,6 +66,44 @@
psview_release.prt
pg* parts: 135, of which 6 resolve: ['pgloading.prt', 'pgloading2.prt', 'pgmsg_scr.prt', 'pgpause.prt', 'pgpause_ttrl.prt', 'pgpbase.prt']
## AN EMBEDDED PART IS A TOP-LEVEL RATC BUNDLE, named by its element prefix
RATC bundle element-prefixes: 363 distinct (2D paks: 114)
in-game-only .prt (100): match a 2D bundle prefix 68 ; any bundle prefix 68
CONTROL shipped .prt (241): match a 2D bundle prefix 0 ; any bundle prefix 13
in-game .prt with NO 2D bundle (32):
pggauge_armor_eff1.prt
pggauge_shield_eff1.prt
pghud_GAremainder.prt
pghud_OBremainder.prt
pghud_arms_active1em.prt
pghud_arms_active1oh.prt
pghud_arms_active2em.prt
pghud_arms_active2oh.prt
pghud_arms_active3em.prt
pghud_arms_active3oh.prt
pghud_range_bar_em.prt
pghud_range_main.prt
pghud_range_nose.prt
pghud_subtarget.prt
pghud_target_locator_easy.prt
pghud_wing_act_attack.prt
pghud_wing_act_dispersion.prt
pghud_wing_act_formation.prt
pghud_wing_act_guard.prt
pghud_wing_alert.prt
pghud_wing_damage.prt
pgmanuva_eff1.prt
pgmanuva_eff2.prt
pgmanuva_eff3.prt
pgmark_em_ob_s.prt
pgmsg_update.prt
pgremaining.prt
pgtarget_G_missile.prt
pgtarget_cannon.prt
pgtarget_gun.prt
pgtarget_laser.prt
pgtimer.prt
## `<stem>_sub.rat` sub-bundles inside RATC
distinct _sub.rat names: 11
pgmsg_end_sub.rat in 6 archives ['GP_MAIN_GAME_D2D.pak', 'GP_MAIN_GAME_E2D.pak']