Locate level_overlay's sections and a 16-aligned debug string table
level_overlay was on the open list with no parser and no located structure. It now has a header naming two sections and a string table. Range measured: overlay.bin on levels 0, 1 and 2 -- 2751268, 2763668 and 2928424 bytes. Result 1: the file opens with section names. +000: 80 7c 1a 00 | dc 99 00 00 | 01 00 00 00 | 88 3b 2a 00 +010: 00 00 00 00 | 00 00 00 00 | "crap\n" | 00 00 00 00 00 +020: "system misc" 00 00 00 00 00 00 00 00 00 +030: 20 80 ff 40 | 00 60 cf 00 | 64 00 | 46 00 | 19 00 00 00 u32@+0x00 is 1735808 on all three levels, +0x08 is 1, and the bytes at +0x18 and +0x20 spell "crap" and "system misc". Result 2: a debug string table on 16-byte alignment. 332 such strings on level 0, 362 on level 1, 351 on level 2, first at +0x20 and last between 1.3 MB and 2.5 MB. They are the game's own debug text: host0:r:/rc2/shock/wavetable.bin host0:z:/i5/shock/wavetable1.bin unloaded sound bank %#010x Camera_CollPrimTest WARNING! - grid out of bounds! (RAR) render setup sky draw pre effects pre 2 effects Camera_CollPrimTest WARNING! - grid out of bounds! (RAR) is direct evidence for the collision reading. It is the game's own string, naming a grid and a collision test, and it is why the two leading counts in the collision payload are worth continuing to treat as grid dimensions despite not sizing the payload. The wavetable.bin paths also confirm the sound bank is loaded from named files, which bears on the SBlk/DAW framing. Not done: the string table is located and counted but not parsed -- the records preceding each string have not been identified, so there is no gc_formats module for it yet. The +0x18/+0x20 names are section names but their structure is not established, and it is not yet shown that they index anything.
This commit is contained in:
@@ -1576,3 +1576,48 @@ cover something else, or cover a subset of cells. Resolving it needs either the
|
|||||||
same offset found in other levels at a position the leading counts predict, or a
|
same offset found in other levels at a position the leading counts predict, or a
|
||||||
reason for 17. Neither exists yet, and this is the point at which the
|
reason for 17. Neither exists yet, and this is the point at which the
|
||||||
measurement trail goes cold on collision.
|
measurement trail goes cold on collision.
|
||||||
|
|
||||||
|
## overlay.bin: named sections and a 16-aligned debug string table
|
||||||
|
|
||||||
|
`level_overlay` was on the open list with no parser and no located structure. It
|
||||||
|
now has one: a header naming two sections, and a string table.
|
||||||
|
|
||||||
|
**Range measured:** `overlay.bin` on levels 0, 1 and 2 -- 2,751,268,
|
||||||
|
2,763,668 and 2,928,424 bytes.
|
||||||
|
|
||||||
|
**Result 1 -- the file opens with section names.**
|
||||||
|
|
||||||
|
+000: 80 7c 1a 00 | dc 99 00 00 | 01 00 00 00 | 88 3b 2a 00
|
||||||
|
+010: 00 00 00 00 | 00 00 00 00 | "crap\n" | 00 00 00 00 00
|
||||||
|
+020: "system misc" 00 00 00 00 00 00 00 00 00
|
||||||
|
+030: 20 80 ff 40 | 00 60 cf 00 | 64 00 | 46 00 | 19 00 00 00
|
||||||
|
|
||||||
|
`u32@+0x00` is **1,735,808 on all three levels**, `+0x08` is `1`, and the bytes
|
||||||
|
at `+0x18` and `+0x20` spell **"crap"** and **"system misc"**.
|
||||||
|
|
||||||
|
**Result 2 -- a debug string table on 16-byte alignment.** 332 such strings on
|
||||||
|
level 0, 362 on level 1, 351 on level 2, the first at `+0x20` and the last
|
||||||
|
between 1.3 MB and 2.5 MB. They are the game's own debug text:
|
||||||
|
|
||||||
|
host0:r:/rc2/shock/wavetable.bin
|
||||||
|
host0:z:/i5/shock/wavetable1.bin
|
||||||
|
unloaded sound bank %#010x
|
||||||
|
Camera_CollPrimTest WARNING! - grid out of bounds! (RAR)
|
||||||
|
render setup
|
||||||
|
sky draw
|
||||||
|
pre effects
|
||||||
|
pre 2 effects
|
||||||
|
|
||||||
|
**`Camera_CollPrimTest WARNING! - grid out of bounds! (RAR)` is direct evidence
|
||||||
|
for the collision reading.** It is the game's own string, naming a grid and a
|
||||||
|
collision test, and it is why the two leading counts in the collision payload
|
||||||
|
are worth continuing to treat as grid dimensions despite not sizing the payload.
|
||||||
|
|
||||||
|
The `wavetable.bin` paths also confirm the sound bank is loaded from named
|
||||||
|
files, which bears on the `SBlk`/`DAW` framing.
|
||||||
|
|
||||||
|
**Not done.** The string table is located and counted but not parsed -- the
|
||||||
|
records preceding each string have not been identified, so there is no
|
||||||
|
`gc_formats` module for it yet. The `+0x18`/`+0x20` names are section names but
|
||||||
|
their structure is not established, and it is not yet shown that they index
|
||||||
|
anything.
|
||||||
|
|||||||
Reference in New Issue
Block a user