re: the last keyframe time is the chunk terminator -- observed, not
assumed Continuing the pulse's cycle length, which I had called a structural limit of the format. It is, and now I can show it rather than assert it. Dumping past what I thought was the final keyframe found an EIGHTH block: fade 0x00ffffff at the same position, so the glow returns to fully transparent and the pulse is a closed cycle rather than a one-shot ramp. That is worth having on its own -- the port knows the animation ends where it starts. And the eighth block's time slot contains the four bytes "end ", the record's ASCII terminator. So the corpus's rule that a group's last block has no time of its own holds here in a second form: not the next group's element index, but the chunk terminator. The value does not exist. That goes into ui-rat-layout.md, because it generalises beyond this record. The measured 2.3 s would need a final step of about 33 units. I have written that number down explicitly labelled as fitted to the measurement rather than read from the file, so nobody later re-derives it as a decode. One thing I had half-assumed and can now rule out: the word at +0x004 is not a keyframe count. It reads 60 here with 8 keyframes and 30 in the loop records with 3. Unknown, and marked so.
This commit is contained in:
@@ -695,4 +695,19 @@ rule, and the kind of moderate split that would be easy to over-read.
|
||||
rather than untried, and the field is at least correctly *sized*. Assigning
|
||||
meanings almost certainly needs the game observed with individual bundles
|
||||
loaded, not more static correlation — every property visible in the file has now
|
||||
been tried.
|
||||
been tried.
|
||||
|
||||
## A leaf record's last keyframe time is the chunk terminator (2026-08-28)
|
||||
|
||||
The build placement region's "a group's data stops 4 bytes short of its final
|
||||
block's time slot — that word is already the next group's element index" has a
|
||||
second form in **leaf `.rat` records**, where there is no next group.
|
||||
|
||||
`ptbtn00f.rat` (`GP_TITLE` build 2, `RATC` at `0x04115e`) holds 8 keyframe blocks
|
||||
of the ordinary 40-byte layout starting at `+0x68`. The eighth block's time slot
|
||||
at `+0x1a4` contains **`end `** — the record's ASCII terminator. So the last
|
||||
keyframe's time is not merely unread, it is **not present**, and any animation's
|
||||
full cycle length has to come from measurement.
|
||||
|
||||
❔ The word at `+0x004` is **not** the keyframe count: `0x003c0000` (60) with 8
|
||||
keyframes here, `0x001e0000` (30) with 3 in `ptloop01.rat`/`ptloop02.rat`.
|
||||
|
||||
Reference in New Issue
Block a user