How to read this page

A thread is one question the project stopped to ask - why a boss battle freezes with the camera circling, where the party's battle models come from, which routine swaps the music. A thread is settled when it has an answer that can be pointed at: an instruction sequence, a runtime capture, or a measurement taken off the disc. resolved is a claim, not a warranty - which is what the evidence column is for.

Each area below is one table. A row gives the question, a one-line verdict, the evidence grade, and a link to the full write-up - every address, capture and correction - at its anchor in docs/reference/re-settled-threads.md. The areas run from the overworld inwards (world map, battle, field, text, animation, audio, boot, rendering) and end with the project's own instruments.

Source of record
docs/reference/re-settled-threads.md
Row lifecycle
open → settled (here) → falsified if a later reading overturns it
Function names
A FUN_<addr> in a row is described in key functions
Function-level view
Port catalog - dumped × documented × ported per routine

What an evidence grade means

Every thread is graded by what its stated evidence rests on. A thread citing more than one kind is graded by the weakest load-bearing claim - the one that breaks the conclusion if it is wrong.

GradeThe thread cites
disassemblyInstructions, addresses, opcode encodings, branch or store sequences read from the MIPS code. The strongest grade.
captureA runtime capture: a save state, an emulator probe, a write watchpoint, a trace, or a measurement taken off the disc.
decompiled-CGhidra's C output, a FUN_x(...) call signature, a Ghidra label, or a claim about store order / count / a boolean operator with no instruction behind it.
inferenceReasoning from surrounding facts, corpus absence, or analogy, with no direct evidence cited.

decompiled-C is the re-audit bucket, not a wrong-answer bucket. It marks a claim nobody has confirmed against instructions. Three shapes carry most of the risk: evidence citing a call signature or a funcs/<addr>.txt dump rather than instructions, any claim about store order or count, and any claim about which boolean operator a predicate uses. The catalogue of C-rendering artifacts is on Ghidra workflow.

World map / kingdom bundles

The overworld: kingdom bundles, continent terrain, the slot-4 animation bank and the place-name carriers.

ThreadVerdictEvidenceWrite-up
Does the disc carry one 4C EA occurrence or more than one?resolved (three - one per kingdom map bundle)disassemblyThe field-op census and the op-arm oracle disagreed by one because the census walk ended at each record's first 0x1F text segment and started partition-0 records three bytes late. With text segments and pickers decoded as strides of the stream, the scripted game-over has one clean site in each of map01 / map02 / map03.
Which camera does the overworld walk use?the field zone camera; the live words equal its staging descriptor on every resident overworld statecapture + disassemblydoc
What does scratchpad flag bit 0 select?the kingdom overworld: the fog spawner's depth-tested, lifted armdisassembly + capturedoc
World-map walk-view continent ground renderresolvedcapturedoc
DAT_8007C018[45..53] mid-load vertex-pool pointersstructuraldoc
Field decoration path - does it dispatch the NCC light handlers?no field light; depth-cue onlycapturedoc
Kingdom slot 4 - per-record semantic + consumerthe world-map scene's type-0x05 ANM animation bank: 8-byte rigid-transform entries read by the clip selector FUN_800204F8 and the animated renderer FUN_8001B964; the vertex-pool / cluster-A reading is falsifieddisassembly capturedoc
The placed-actor mesh resolver on the world mapFUN_80020F88, at spawn time from the allocator, not in the draw loop; the port already matchesdisassemblydoc
MAN sections 2 and 5 - what do _DAT_801C6EA0 / DAT_80073EE0 carry?both are place-name carriersdisassembly capturedoc
The ninth routine of PROT 0901's draw bandit is the bulk terrain-cell emitter FUN_801F89B8, not a per-prim leaf: it reads the camera's visible tile window out of the scratchpad and takes max - min per axis as its loop counts, so that window is a draw extent and not a fog hintdisassemblydocs
The world-map camera's sub-9 arm table, and where its horizon gates storethree stores were credited to the instruction before them - the write sits in the delay slot of the j that leaves the arm; and the bit-24 arm writes two words, not onedisassemblydocs
What is the archive entry labelled monster_test above the world map?the world-map top-view debug image - the label is inherited from the block above it, and the image's own operands are the world-map location table, the kingdom filter and the camera pairdisassemblydoc
Which image holds the world-map dev-menu row strings?the field overlay, at a file offset its own renderer forms the address of; the other slot-A occupant aliases the same address and the two are never co-residentdisassembly + capturedoc
What writes the overworld camera's vertical-offset control word?the first overworld's own entry script, once, through a camera op's delta arm; the port never reached that line because its system script was anchored at the map origin outside field modecapture + disassemblydocs
What does FUN_800271A8 build?the overworld's screen-Y curvature table - not a depth ramp - which the overworld leaves, the fog and the drop shadow add to screen Y; retail bends per vertex, and only the overlay's landmark rowsdisassembly + capturedocs

Battle / arts / level-up

Battle load, the action state machine, arts and Super Arts, damage kernels, the party HUD, level-up and the boss softlocks.

ThreadVerdictEvidenceWrite-up
Why do battle bodies near the camera turn see-through?a near-camera ghost pass runs every battle frame and switches bodies close to the camera (and a caster's allies during magic) to a faint blenddisassembly capturedoc
What does a downed party member play?the knockdown, then a hold, then a kneel that repeats with root motion latched off - not a recover clip with a backstepcapture disassemblydoc
Why do three-on-one fights sit 13 units off their authored rows?the battle recentres the formation at every round start; a balanced formation is already centredcapture disassemblydoc
Which fights cross out the Ra-Seru chip?the Rim Elm ambush and fights whose first monster is 0xAF, through bit 0x200 of the special-battle word; only the command ring reads itdisassemblydoc
What does the auto-combo assembler's tail do?splices learned arts over the Auto command's direction queue, paid from a local copy of the Spirit gaugedisassemblydoc
Where does the target cursor's name plaque sit?placement record 0x29, centred on x = 0xE8, row 162disassembly + capturedoc
Which battle limbs draw dark?a party member's Rot limbs, per mesh object, from a per-character range tabledisassemblydoc
What is battle context byte +0x25?the count of actors a round passes over without acting - not a round counterdisassemblydoc
How is the command-phase commit log laid out?one row of name, command and target per committed member, columns set off the name's width, scrolling up as the round fillsdisassembly capturedoc
What does the party-wide Begin / Reselect screen gate, and where does Reselect land?it follows the last member able to act, for every party size; Reselect steps back one member, onto that last member, and refunds an itemdisassembly + capturedoc
What ends Koru's four turns?Koru's own AI arm casts its finisher on round 4; nothing compares a turn counter to a limitdisassemblydoc
What arms the Miracle marker ctx[+0x25F + slot]?the party actor seeding FUN_80053CB8 (0x80054270, its only store), from the Ra-Seru equipment byte - no input recognizer existsdisassemblydoc
ctx[+0x26] and ctx[+0xD]the level-up banner's UI element id (0x65) and the per-action camera angle variant 0..=3disassemblydoc
Stone and Curse in FUN_800402F4jump table 0x80014FA0 class 9 / 10; Stone also refunds the reserved item and clears +0x1DE; no item record carries either classdisassemblydoc
Attack x2, the swing class and the apply-mode armsctx[+0x16] has two War God Icon writers: the refill at 0x801E3A20 (0 to 1) and the per-stage bump at 0x801E37AC (only when already non-zero); monster +0x1E is the swing class (0 x127 / 1 x1 / 2 x52 / 3 x6)disassemblydoc
How a cast reaches its slot-B moduleFUN_801F1ED4 on the action id, FUN_801F2160 on the spell record's +0x01; the spawn-record data half is now an engine pooldisassemblydoc
What an art body costs in APcomputed by FUN_801EED1C: multiplier 11 / 10 / 6 by visit ordinal, halved under 0x800, times command count; spent from Spirit at 0x801E5D74disassemblydoc
What does a port owe the 0903..0966 module band?of 65 catalogued addresses, 45 are spawn choreography expressible as the spawn-record data layer, 13 carry game logic (two stagers apply damage), 7 are emptydisassemblydoc
Which enemy specials name readef groups 19..21 through monster record +0x1C?none - +0x1C is the readef group index (FUN_801DABA4, base 3*g) and no shipped record takes 19, 20 or 21disassemblydoc
What arms the dome's panel-still streamer?a generic battle-end teardown: ctx[+0xC] = 1 at 0x800474CC in FUN_80047430; ctx[+0x7] == 0x67 is only the escape path's holddisassemblydoc
Encounter MAN sub-section layoutheader shape correcteddisassemblydoc
Battle-intro tile shatter - the side-face shade pagea resident field asset, not a transition uploadcapturedoc
How long does a field-to-battle transition run (DAT_801D2458)?132 frames; 252 for the swirldisassemblydoc
Which stage-dome objects does the battle backdrop draw?drop index 1, not "keep index 0"disassembly capturedoc
Battle ground grid depth cue - the far colourcaptured at the draw; port fogs the gridcapturedoc
Which element the screen-element +0x0E kind pair selects, per valueit is a table index, not a style enumdisassembly capturedoc
The element-badge palette selectorthe badge record's own palette bytedisassembly capturedoc
The status-element badge sheet 0x18..=0x20nine 48x16 word tags; ladder assignment independently confirmeddisassembly capturedoc
Does the battle ground grid roll per-cell randomness?no - a four-entry table walkdisassemblydoc
Endless camera orbit (Gaza 2 softlock) - the 0x19 attack-approach parkcaught live; root-caused; disc fix shippeddisassembly capturedoc
0x19 fallback approach drive - which anim-driver field does summon staging leave stale?pinned + causally reproduced on the parked savedisassembly capturedoc
Super / Miracle Arts trigger chainall 15 Supers live-executeddisassembly capturedoc
Xain "Bloody Horns"/"Terio Punch" ignore elemental guards (community mystery)resolveddisassembly capturedoc
First boss trigger → Battleresolveddisassemblydoc
How an enemy's signature cast picks the spell id it announcesresolveddisassemblydoc
How a Delilas sibling's signature move stages its clipswalk order capture-pinnedcapturedoc
Is the player battle idle channel-delta encoded, like the readef "ME" bodies?no - raw packed inline in record[0]capturedoc
Enemy-ally charm battle softlockboth tracks fixeddisassemblydoc
Battle-actor +0x16E bit 0x400 applier (guard-disabling status)exhaustive negativedisassemblydoc
Who calls the battle on-screen test FUN_8005126C?exhaustive negativedisassemblydoc
What spawns the battle XA voice selector FUN_8004DA00?resolveddisassemblydoc
Effect-VM pass-1 "state token algebra" (FUN_801E0088)portedcapturedoc
Seru-magic summon visual (e.g. Tail Fire)player visual; wiredcapturedoc
summon.dat / readef.DAT side-band streamingentries + formatdisassemblydoc
Monster steal item (Evil God Icon)resolvedcapturedoc
Battle face-stamp issuing siteresolvedcapturedoc
Per-spell magic power / multipliermechanism + roll porteddisassemblydoc
Arts command sequence - independent sourceresolvedcapturedoc
Weapon-specialty arm width (off-class widens the Arms command)resolvedcapturedoc
Stat growth-rate sourcevalidated + wired; core + opt-in jittercapturedoc
Character-record HP/MP/AP pair order (+0x104..0x110) is (max, cur)relabeled throughoutdisassemblydoc
Monster stat-record archive sourceresolvedcapturedoc
Monster mesh + texture poolresolvedcapturedoc
Terra slot-3 / story-flag overlapresolvedcapturedoc
Battle party mesh pack other5 = PROT 1204 (battle form; Baka Fighter reuses it)empiricalcapturedoc
MP-cost ability-bit priority (half vs quarter)dump-confirmeddisassemblydoc
Scripted Tetsu encounter → Battle (v0.1 oracle Battle leg)resolvedcapturedoc
Battle stage backdrop: which scene_tmd_stream a scene fights inresolvedcapturedoc
Battle stage backdrop: is the authored half completed, and howtwo actors; per-stage transform; object 1 droppeddisassembly capturedoc
Battle-stage overlay band (+0x47)resolveddisassemblydoc
Battle-intro tutorial boxes (Tetsu sparring fight)machine pinned, ported and wireddisassemblydoc
The battle-intro enemy-name banner - which placement record raises itnone does - the composer FUN_801D9D3C places it itself, with immediate geometry, for the intro timerdisassembly capturedoc
How is a slot-B cast / summon module entered?two link-time tables in PROT 0898 - the cast-tick switch 0x801CF4EC and the move-VM entry table 0x801F6734 (op 0x20); row = extraction - 903, verified 13/13 and 12/12 against the extracted imagesdisassemblydoc
How is a capture-class cast module's tick entered?a third link-time table in PROT 0898: FUN_801F2160 keys on the spell record's sub-id and jumps through 32 arms at 0x801CF56C (arm i = PROT 935 + i), mostly onto per-spell trampolinesdisassemblydoc
Is the whole slot-B band mapped?all 64 entries carry a map row and 61 are dumped; 196 framed functions, extents by frame matching; 0915 / 0926 / 0935 wait only on their extraction imagesdisassemblydoc
The slot machine's cabinet emittera mesh, not a packet: PROT 1200's second descriptor, an untextured TMD spawned as an ordinary actor by the slot initdisassemblydoc
The slot machine's in-game BGMhost-scene authored: koin1's entry script picks 2018 on the casino floor (2024 bar, 2045 elsewhere); balden plays 2058 / 2010disassemblydoc
The Muscle Dome's Auto armno picker - the review screen shows a 16-byte command string stored in the character record (+0x1A7 / +0x1B7), but the Auto flag makes the arts assembler rebuild that fighter's queue at the start of every rounddisassemblydoc
The dome's three UI cue ids0x21 accept / 0x22 highlight moved / 0x23 refused-or-back, over 37 sitesdisassemblydoc
The arena backdrop's object-1 dust decaltrimmed by the SCUS battle loader unless _DAT_8007B64B is set; no effect path draws itdisassemblydoc
FUN_801F2410 / FUN_801F2E10 - dome or shared?neither is the dome's: the cast colour wash, and a beam emitter called only from slot-B module PROT 0909disassemblydoc
What is per-character record +0x131?nothing - write-only; one store on the disc (the new-game seed) and no reader in SCUS or any of the 80 based overlays; the magic-rank counter is +0x9Cdisassemblydoc
What does item-effect flag bit 0x40 mean?the target side (set = enemy party), read at 0x801D18E0 and forked on 0x20 into the four target phases; the spell table's +2 runs the same ladderdisassemblydoc
What is the arts-name table's +4 halfword?an authored tier constant with no reader (values 60000 down to 1 by list position; neither AP nor input count)disassemblydoc
What is the byte at actor[+0x22C] + 0x80 the SFX-cue router folds into the category?the display object's sound-bank category, {0, 7, 8}, set at battle setup beside the bank-load call - not an element bytedisassemblydoc
What moves the evolved-Cort battle off flow ctx[+0x06] = 0x0C?the boss stage module (PROT 0968) hands the flow back as 0x0B at 0x801F713C when its own intro countdown expires; no input involvedcapture disassemblydoc
Is _DAT_8007B64B clear during a Muscle Dome contest?yes - the loader's trim arm ran with the byte at zero and nothing wrote itcapturedoc
Do the renderer's light-capable prim kinds 8..11 ever execute?no - zero hits over two overworlds, a field scene and a battle, with the overworld's real handlers firing as the controlcapturedoc
What are PROT 1221 / 1222 (other5 / other6)?int.tim / int2.tim, the dome's two ringside panel stills, streamed by FUN_801F6B24 (PROT 0978) through a computed index s0 + 0x4C7 (below-half-HP picks the second)disassemblydoc
What do the higher readef groups' aux slots carry?no new kind: textures inside FUN_801F12D0's base-byte gate, the four ME archives below it, and a never-staged actor record in the three groups it excludesdisassemblydoc
Is cutscene_str's 123 KB code gap un-dumped code?a zero-filled reservation (32,793 zero words of 32,866); the image's real un-dumped code is about 1.3 KBdisassemblydoc
Can a scene TMD pack member be grown in place?nothing outside the pack holds a byte offset into it - every external reference is an index - so a rebuild is the only costdisassemblydoc
Is any of an enemy signature cast's choreography data-driven?partially: the spawn layer is data in the art path's own record format, but the lift and camera are module code, and the prototype table has no free slotdisassemblydoc
What does the battle overlay's private PRNG feed?nothing in the battle model - it shapes one lightning ribbon and is re-seeded per call; 0x801F6950 has three references, all in PROT 0898disassemblydoc
What are the halfwords of a 0x80076C10 screen-element record?a two-seat pair over shared width / height / string; +0x14 is the label string, not an animation descriptordisassemblydoc
What arms the battle-stage id 1 (sparring tutorial)resolveddisassemblydoc
Mid-battle second _DAT_8007B64A stage-id writer (the 0x801fd514 phantom)coordinate re-keyeddisassemblydoc
"No party seated" vs "party dead" in the wipe scanport-only state; guardeddisassembly capturedoc
Battle command-flow byte ctx[+0x06]resolveddisassemblydoc
Action-SM state 0xFF treated as battle end by the portpath was live-reachable; port fixeddisassemblydoc
Spine flag 0x142 (Caruban beat / dolk-dolk2 switch) writerdisc writers + engine port + oraclecapturedoc
Spine flag 0x482 (Drake mist-wall) writerwriter-less; "direct code path" presumption falsifiedcapturedoc
CDNAME scene-window frame (raw = extraction + 2) in Scene::loadengine converts; misattributions correctedcapturedoc
Motion-VM (FUN_80038158) bytecode carrier + flag censuscarrier pinned; spine flags negativecapturedoc
Debug-menu "STR trigger teleports + sets flags" mechanismno per-FMV event table; dev-menu tools explain itdisassemblydoc
Spawned-record player-channel (0xF8) ExecMove/HaltAcquire handshakeretail machine traced: the halt-acquire creates the wait object and the record parks at the next cross-context op; the port's model divergesdoc
Equipment stat-bonus table - slot modelslot model + passivesdisassemblydoc
Flag 0x63A - the vell/vozz P2[7] gate with NO script writerscript writers exist; the "no writer" premise was the CDNAME +2 skewcapturedoc
cave01 P2[16] (the 0x15D entry-key setter) - what spawns itslot-counted spawn chaincapturedoc
Drake Castle deep interiors (jouinc/jouind) depth decodedoor-choreography families, not story gatescapturedoc
scene_destinations P1-table scan misses P2-only door namesP2 pass folded incapturedoc
0x4C 0x51 byte +3 = [bit7 special-model | facing nibble] vs the glide-speed interim depth & 7 readingfacing wins; the two readings were two different opsdisassemblydoc
How an NPC's facing changes after spawn - snap vs ramp, and which writer winstwo laws; order-of-execution prioritydisassemblydoc
dolk2/rikuroa MAN source (the "v12-embedded MAN" was an over-read)streaming carriercapturedoc
kor-family op-0x49 flag window [0x138..0x13F] - what the 8 flags gateUru Mais warp-pad destination memorydisassemblydoc
Formation species limit - what the battle setup does with 3 distinct monster ids[a,b,c] loads as [c,c,a] on half of all rolls, verbatim (three streamed blocks) on …disassembly capturedoc
Super Art connectors and physical inputs - the tokenizer keeps the leading arrowsdisassembly (FUN_801EED1C 0x801EF2EC..0x801EF858) + capturedisassembly capturedoc
The runtime art-record chase - the +4 and the - 0x10 grid originrecord(c) = ((DAT_801C9360[char]) + 0x58) + 4 + (c - 0x10) * 0xD0,disassemblydoc
How many damage-clamp shapes does the slot-B cast band use?three. Of the 79 wrapper sites inside their own image, 70 cap live HP with sltu and kill, seven cap HP - 1 with sltu and can neither kill nor heal, and two cap HP - 1 signed. PROT 0910 picks its cap per hit from its own slash counterdisassemblydoc
Where does a capture-class cast get its damage constant?baked into the module image as an immediate in its own tick body - there is no per-spell power row to patchdisassemblydoc
Which slot-B images touch more than one seat?PROT 0927 (enemy row from ctx[+1]) and 0966 (whole table from ctx[+0]), and both are stagers - neither subtracts HPdisassemblydoc
How do the 0x801CF56C capture-class arms reach a spell body?through a per-image trampoline in six of them; PROT 0955 is a 20-word jump table serving six spells from one cell. PROT 0918 carries power 0x12 and 0949 0xC0 by register reusedisassemblydoc
Where is the Spirit AP-halving flag?character record +0xF8 bit 0x800 - accessory passive 0x2B (AP Used Down), tested at 0x801EF364 and 0x801D4520. Not a per-battle actor bitdisassemblydoc
Does an Attack x2 consume the Super Art starter?no - the build loop marks an accepted art’s starter 1 and the Super tail-replace marks 4, and the compare at 0x801E3A4C is against 1disassemblydoc
What is battle ctx[+0xD]?two independent bits, not an enum: bit 0 adds 0x800 of yaw, bit 1 adds 0x80 of pitch and drops TR.y by 0x100. Nothing writes a Z angledisassemblydoc
Do the dome’s hub screens run on frame counts?no - DAT_801D1A80 and its siblings are 0..0x80 brightness levels, and the two holds end on pad & 0xF4 rather than on a timerdisassemblydoc
What makes a Ra-Seru chip render?three gates in order - the member's chip byte, then +0x16E & 0x1000, then the special-battle word's 0x200 - of which only the third selects a mark; the three mark emitters are pinned cell by celldisassemblydocs
What restricts a special battle's commands?two writer families, not one: SCUS battle init keyed on the first enemy monster id, and the arena seeding the whole word from three story flags. Every seed bars the Item chip and the top seed bars magic, so the Master-course magic ban is real after alldisassemblydocs
What does a cast cost?MP, not AP. The cast path writes the action queue and the phase and touches no AP field; the cost is the spell table's byte, discounted by the character record's ability bitsdisassemblydocs
Which slot-B images write the actor stat block?eight of the 64, not the four cells of one module - which is what made a stat-writing module look like an exception rather than a patterndisassemblydocs
How many capture trampolines are there, and what keys a tick body?21 trampolines carrying 48 arms over 32 bodies, and a body VA is not a key - one address is a tick body in six different modules, so the seam is keyed on the pairdisassemblydocs
What are the battle applier's 132 selectors?116 of them are the shared epilogue, so there is no large undecoded opcode family above 0x0E; the one body up there is the Incense window's top-updisassemblydocs
Which entry does the battle loader's VDF registration walk?the vdf entry, not the player-character pack: the loader reads two entries contiguously, keeps the second half's base, and walks a flat [count][offsets] pack there - and its four TOC constants are the whole effect-data block, a different band from the character packdisassemblydocs
What is the routine an earlier citation gave as the Point Card clamp?the floating damage-number ring push - it writes a value, a seat and a zero into three parallel arrays at a cursor, then folds the cursor mod 8. It is what the one-HP cast calls to show its literal 1disassemblydocs
Which routine applies a player-Seru module's magnitude?the tick body, not the stager - and in PROT 0910 one call deeper still, in the applier its tick reaches three timesdisassemblydoc
Which player-Seru modules heal, and by what formula?two. PROT 0905 (Vera) restores level * 0x20 + 0xE0 with a negated popup; PROT 0911 (Orb) restores (level << 6) + 0x1C0 over the party row. The input is the per-magic level byte - matched on the cast id in the record's 32-slot spell list - not a power byte, and everything else in the band subtractsdisassemblydoc
How many phase stores does a player-Seru body make?between 3 and 10, counting stores through a formed pointer as well as at the literal displacement; eight of the eleven write the terminal 0xFF, and 0x801F69D8 is the tick arm for six of themdisassemblydoc
What is actor +0x1DC at the cast band’s reaction sites?a bitfield - two modules ori single bits in, two store small constants, and nothing increments itdisassemblydoc
What does PROT 0907 (Nighto) roll?a kill roll (rand() % 8, zero kills, anything else confuses) and a resist roll - and the resist is forced, not rolled, for a boss carrying the monster record’s wide-model byte in a scripted fightdisassembly capturedoc
Which band routine allocates a battle seat?PROT 0940 alone: it claims the next enemy seat, copies the monster-record pointer into the seat table and seeds the action bytes, then coin-flips one stat onto either the clone or the casterdisassemblydoc
What does PROT 0941’s enemy Steal take?a bag slot by rejection sampling over the 256-slot bag - floored while battle seat 1 holds roster character 4, the split-bag condition - or, against a monster, an item off the same steal table the player’s Steal reads. No damage at alldisassemblydoc
What does a cast module’s ctx[+0] count?the party; ctx[+1] is the monster count. The group code below 7 is one seat, 8 sweeps the party row, anything else sweeps the enemy rowdisassemblydoc
What escapes PROT 0906’s phase-5 dispatch hole?the stager’s arm 2, which bumps the phase byte; the tick parks busy in a slot its own table does not serve until the stager runsdisassemblydoc
What is PROT 0904’s arm 12?the swept quantity is an angle, not a radius: the accumulator passes a full 12-bit turn, so what moves per tick is the direction of a ±0x30 cone. The unsigned cone test admits both ends of the circledisassemblydoc
What is PROT 0962’s arrival predicate?it arrives when the test reads zero; a non-zero return holds the approach. The port’s doc had the sense inverteddisassemblydoc
Is ctx[+0x287] the counter-attack byte?no - it is the scripted-fight flag, derived at battle init from bit 0x80 of the per-battle flags; the counter-attack byte is +0x288. Two audio-duck arms and the attack-return arm gate on itdisassembly capturedoc
What gates each player-Seru arm’s dwell?measured per arm from casts driven off pre-cast states - and it is not one constant per arm: PROT 0907 holds 8 of 16 arms identical across two fights and moves the other 7capturedoc
Do the Seru debuffs and the encounter boost profiles reproduce live?yes, at measured magnitudes - a level-9 debuff takes ATK 17 to 14, and both boost profiles reproduce off live fights. Vera at level 3 restores 320 and Orb 640, matching their closed forms exactlycapturedoc
What does the dome tally screen draw?six rows with the HP accumulator between lanes 2 and 3, at four brightness steps rather than six, and the brightness argument goes in unclamped - the 0x100 cap belongs to a sibling emitter no tally row calls. The lane base is re-formed into a different register between the product and the store, which is what mis-attributed the lanesdisassemblydoc
What does the dome arena seed the special-battle word with before any story flag matches?1 - course 0 with no bans, a seeded word rather than an untouched one. The register is loaded 43 instructions and three calls earlierdisassemblydoc
Is 0x801F69D8 a routine in PROT 0943?no - it is the five-word head table the body at 0x801F6A04 bounds and jumps through, and the MP-pair stores are inside that body. Citing the base as the writer names the table that points at the writerdisassemblydoc
Is the monster record’s +0x20 a per-monster death-immunity byte?no - a double-width texture-page flag: its primary reader widens the model’s VRAM rect, and 37 of 186 records set it. Three summon ticks borrow it as a "big model" resist proxy, which is what made an upload flag read as an immunity listdisassemblydoc
Where does a slot-B module image's highest spawn record end?its own move-VM program bounds it - walk to a terminator, round the end up to 4, let HALT outrank an armed idle loop, chain [header][program], and fall back to the last maximal WAITdisassemblydoc
What are Enemy Steal's acceptance tests, and what does the consume touch?a third test on the item's shop price (96 of 256 ids unstealable), and a consume that scans only the active window and returns a sentinel outside itdisassemblydoc
How large is the item bag, and what bounds a reader?256 slots behind an active window one setup routine writes; a 72-slot bound is a cheat page's display page and drops 88 items off a real carddisassemblydoc
What gates each capture-class arm's dwell?measured for twelve of the fourteen trampoline arms; the drain is a per-arm multiplier of a scratchpad frame byte, not one product shared by the bandcapturedoc
Is the battle loader's model-pack pointer sane at battle time?no - the battle load reuses the block, so it is garbage in 61 of 61 battle states and sane in 37 of 37 field statescapturedoc
How does the character-pack loader size its section buffers?from the container header, and the decode is length-driven by the descriptor - so a rebuild with a different decoded size gets a truncated packdisassemblydoc
Is the staged background loader one walk or two?two dispatchers picked by one word - a 19-arm field-restore table and a 12-arm panel-still table, both starting at phase 2 because the SCUS sequencer owns states 0 and 1disassemblydoc
What are PROT 1221 and 1222?the party's ringside reaction pair, cheering and dejected, chosen from the lead character's live HPcapturedoc
Which battle state owns the only arm that reaches the high cue band?the Spirit / Item wait state, and an ordinary item use is the door - the magic command routes into it only for ids below a threshold the player's Seru block sits abovedisassembly + capturedoc
What is the != 4 term in the battle selectable scans?a seat: the per-slot table it reads holds roster character ids, and 4 is the AI-companion seat the player does not commanddisassemblydoc
What is the auto-command string pair in a character record?a staged command queue and its backup, chosen by a stat comparison under one gate; the primary leg falls back to an earlier band on an empty head, the secondary zero-fills with no fallback, and the write-back overwrites exactly one of themdisassemblydoc
What writes the slot-B stage selector?the field entity tick, off a system story flag; battle latches the other value directly. Every access is register-relative, invisible to the project's address sweepdisassemblydoc
What are the two archive entries above the cast band?the two boss-stage modules - one function each, a phase machine driving the first monster seat: one stages the arrival, the other the form transition that drops the seat to 1 HPdisassemblydoc
Is the dome's match state machine the dome's?no - it is the round SM every battle runs; one unconditional call site disc-widedisassembly + capturedoc
What draws the dome panel still?two textured quads in the contest hub, addressed by texture page rather than by pixel columndisassembly + capturedoc
What raises the still's fork?the arena init, on re-entry - never the match teardowndisassembly + capturedoc
What does the victory drop roll do?at most one item per battle: every enemy rolls, the last winner decides, and three times in four nothing drops unless a chance is 100% or Items Up appliesdisassemblydocs
What is FUN_801E91E8?the Seru absorb's "already learned?" check, not a Miracle-command lookup; the byte beside it holds the absorbed Seru, taught in the same actiondisassemblydocs
What is monster action tag 0x22?a knockout taunt, played when a monster downs a target while a party member still stands; 180 of 186 monsters also lack the pre-approach tag and take the short stepdisassemblydocs

Field / locomotion

Town and dungeon scenes: locomotion, doors, story-flag gates, ambient animation, NPC facing and the field-VM event scripts.

ThreadVerdictEvidenceWrite-up
Who marks a field NPC as a walker (+0x10 & 0x20000)?the placement seater, for every placed NPC, plus one field-VM op at 26 spawn prologues - and nothing on the disc ever clears itdisassembly capturedoc
What does FUN_801D79E8 do?it is the per-actor visibility cull: an NPC outside the camera's visible tile window or the region box gets a bit that holds its height; 600 of 600 captured decisions reproducedisassembly capturedoc
What makes the place-name banner appear?a one-shot story flag (system flag 2) that the overworld entrance scripts raise before the scene change and the scene loader clears after showing the namedisassembly capturedoc
What happens, tick by tick, when you use a Door of Light or Door of Wind?the pause-menu session fades out and hands over to the Riremito / Rula travel art, which runs its effect, fades to black and loads the destination; a Door of Light goes to the region's recorded exit, not to where you last stoodcapture disassemblydoc
What does a region's battle-setup byte choose?the battle backdrop, whether the Door of Light / Wind items work, whether one backdrop object stays, and a world-map return pointdisassemblydoc
What happens when you step on an in-scene warp tile?a timed warp: a fade out and back, the landing 38 frames after the crossing, the pad back 40 frames after that - and the player stands idle throughoutdisassembly capturedoc
Where does an inn conversation end?when its last page closes; the next talk starts from the loop-back and its halt succeedscapture disassemblydoc
Why is a kor5 flag set on entry but clear after the chain?the write sits in a record's spawn section, which runs once per scene load and not on a same-scene reloaddisassembly capturedoc
What does field op 0x3E do with a first operand below 100?installs a scripted battle from the scene's formation table - the same body as the 0xFF form; talking is a button press, not this opcodedisassemblydoc
How many places re-roll the random-encounter step counter?five - four calls and one inlined copy - all into one counter that survives doorsdisassemblydoc
Does the kor5 chain write its tail flag without help?yes, a few thousand frames after the previous beat clears; the earlier 17,500-frame estimate was the probe'scapturedoc
Which ctx does op 0x23 MOVE_TO move?the one the ctx pointer names (0x801DEC7C vs _DAT_8007C364), not the class-flag bit a spawned record inheritsdisassemblydoc
Which screen opens menu window 46?the casino prize counter's Yes / No confirm (script 0x801E4F2C, sub-screen 0x20, entry-context kind 7)disassemblydoc
Which prescript copy does FUN_800252EC install from?the next PROT entry, through the efect.dat window one sector past the .PCH; there is no splitdisassemblydoc
Rim Elm's south gate - why a seated player exits and a walking one does notresolveddisassemblydoc
Town/field free-movement locomotionresolvedcapturedoc
Field ambient animation - what makes jou's ground pulse and the water shimmerresolveddisassemblydoc
Ambient render-mode 4 - what the op-0x1E seat animatesresolveddisassemblydoc
Master ambient record 0 - what reads the 8-byte rowsit is not a stager record at alldisassemblydoc
town0e's morph-record installerthe census was shape-blind, not the discdisassemblydoc
Which op-0x34 sub-3 installs fire at scene entryresolveddisassemblydoc
Scene bundle type-7 slot content (VDF)resolveddisassemblydoc
VDF morph render substitution - what draws the staged vertices, and what arms the lanesresolveddisassemblydoc
What opens an inn stay in retail?the premise was wrongcapturedoc
Field collision-map sourceheadline corrected: the .MAP supplies the base griddisassemblydoc
Tile-board grid moderesolveddisassemblydoc
game_mode 0x03 = field/town gameplayresolvedcapturedoc
Scene prescript: field-VM event scripts vs move-VM stagers (dual consumer)resolvedcapturedoc
What is the scene_asset_table header's +0x04 word?the sum of the descriptors' decompressed sizes, in all 105 containers; retail never reads itdisassemblydoc
How does a scene bundle reach _DAT_8007B85C?a whole-sector block copy (FUN_8003D26C at 0x801D6918) into the 0x62C00 arenadisassemblydoc
What consumes the "field-pack" entries?the scene texture pack at block +4: FUN_800255B8 paths it by mode, FUN_8002541C walks it; the format itself is dissolveddisassemblydoc
What do the asset-table Flag(0x0A / 0x0F / 0x14) descriptors do?they are the streamed-file loader's mode argument (case << 8, ORed by the walker, shifted back by the caller)disassemblydoc
Engine VRAM byte-exactness for town01major source); minor residuecapturedoc
CLUT row 510 population (env meshes' (64,510) CBA)boot-resident system-UI strip band); residue = the exact boot walker call sitecapturedoc
Scene-transition (0x3F door) destination indexingresolvedcapturedoc
Intra-town (house / interior) door mechanismresolveddisassemblydoc
Field/town environment-geometry placementrenderscapturedoc
Overworld / town entrance story-flag gatingresolvedcapturedoc
Overworld story-conditional destination (dolk→dolk2)mechanism + engine portcapturedoc
Retail-vs-engine NPC + story-flag state parity across the capture librarybreadth oracle); residuals filed as their own rowscapturedoc
Entry pre-run channel slice ends on a no-mask 4C 70 wall paintslice-continue landeddisassemblydoc
Writer of the Rim Elm opening flag (549)self-latching script SET; the census was width-blindcapturedoc
Field .MAP PROT resolution - which entry holds a scene's mapcensus-pinned; engine resolver correctedcapturedoc
World-map CLUT cycling beyond the ocean headclosed (operand table + emitter + cadence pinnedcapturedoc
init_data UI-tile page residency; the map03 terrain columnboth premises falsifiedcapturedoc
What transitions retail into game over?resolveddisassembly capturedoc
Mid-visit NPC re-arrangement beats (dolk2 market crowd; garmel pre-Zeto staging)resolveddisassembly capturedoc
Region story-flag gate families (record-header C1/C2 gates)as structure (play-order residual on the open pagecapturedoc
Extraction-0874 §2 (player.lzs) F-variant pixelsinstalling event nameddisassembly capturedoc
Which chapter-1 scenes the engine can load, script, walk and leavea per-scene verdict over a 68-scene closure; four of the five late "one-way" rooms now leave in-engine (urudre2 is a port limit)disassembly capturedoc
Why did the port drop roughly half the disc's 0x3F destinations?the clean-label gate was lower-case-only; retail just strcats the operand into an ISO path, and the disc's upper-case destinations are all real CDNAME labelsdisassemblydoc
Why do bubu1 and edbubu resolve no MAN?both ship a count = 5 asset table, a retail shape the detector's 6-or-7 bound hid; retail bounds the count nowheredisassembly capturedoc
Why did 28 scenes of the frontier closure become unwalkable at once?a scene change mid-ledge-hop leaked the hop's one-way steering lock 0x0008_0000 - an engine bug retail cannot reach, now fixeddisassembly capturedoc
How a player leaves the Uru Mais chain (uru, urudre1..3) and jouineall five have walk-on exits carried by the scene's .PCH trigger sidecar; jouine's is the FMV hand-off; uru's fired livedisassembly capturedoc
Who latches the clip-end bit for a conversation's cross-context clip pokesport residual nameddisassembly capturedoc
What the op-0x49 entry-context kind byte is, and which screens it selectsdisassembly + disc measurement - disassembly capturedoc
What does the 0x801F2858 template’s tick do?the scene shutter blackout (FUN_801DD784) - two bars ease in and meet. Its one spawner is FUN_801DE754, from field-VM op 43 0Cdisassemblydoc
What is field-VM op 0x4C nibble 9?the scene floor-height ladder at 0x1F80035C - sub 0xE installs all sixteen rungs, subs 0..2 oscillate one, sub 0xF retires them. Not a fade familydisassemblydoc
How does the shop’s buy list order and ink its rows?the last three rows are hoisted to the top tagged 0xA000 (ink 5); everything below the split stages at 0x801C6220 tagged 0x3000 and is appended. A row dims when purse < price or held >= 99disassemblydoc
What keys the menu entry-context byte?the record kind: 0x00 shop → 0x1A, 0x01 save → 0x19, 0x07 casino → 0x20, sentinel 1 → 0x02, the dev character editordisassemblydoc
teien's hedge-base ground fill - does retail draw a kind-2 cell?no, and the question had a false premise: a live field pass emits one quad per 0x1000 cell and none for the 42 cells that carry only the platform bitcapturedocs
Actor +0x16 - heading, facing, or footing?Y. Three doc readings collapse into one: nothing on the disc masks the halfword as an angle, so the routine that eases it is settling a height and not a headingdisassemblydocs
What writes a scene's kind-2 trigger cells at runtime?exactly one arm of the field VM - a rectangle re-floor. Trigger kinds 0 and 3 have no writer at all, and the sidecar's fixup words have none eitherdisassemblydocs
The ending-scene widget family - how many sites, in how many scenes?311 sites across ten ending scenes. The census field it had been counted on is a cross-context target marker, not the sub-opdisassemblydocs
What arms _DAT_8007B8B8?nothing retains it - it is a one-shot entry-mode argument, ten writers and 25 readers across 84 images with six sites writing zero, so the ambient template spawns per scene. Its two neighbours have no writer at alldisassemblydoc
Which way round is actor +0x8A bit 0?it suppresses the scripted motion VM: a zero byte runs the bytecode, and the bit gates the player-engaged / actor-busy / off-map early returnsdisassemblydoc
What are motion ops 0x06, 0x0C and 0x0E?a home-relative one-tile wander, a tint and draw-mode fade, and a two-base model bind - not a pad echo, a glide channel and a single basedisassemblydoc
How do motion ops 0x10/0x11/0x12 address their target?one selector over five halfwords, with a fourth encoding that asserts a magic constant and then dereferences null. The op table’s last six slots point at the loop test, so 26 op bytes cover 24 bodiesdisassemblydoc
Where does a field actor's heading live?it is the middle of a rotation triple at +0x24 - the updater hands the whole vector to the rotation setter, so pitch and roll ride beside the yawdisassemblydoc
What is the field-VM word the port called an input lock?the ambient-particle master gate - one opcode's sub-0 raises it and sub-1 clears it, and none of its six disc-wide references is pad statedisassemblydoc
What does a field submode return to?nothing reads the parked word - the executable and all 86 extracted overlay images yield zero loads at that displacement, and a live read watch records none while the pointer still names the scene struct; the park idiom itself tiles the field overlay 22 timesdisassembly + capturedoc
Does the field passive-ability badge column have a suppress gate of its own?no - its routine has one caller, inside the party readout just above the epilogue the readout's suppress arm jumps to, so the badges carry the readout's suppression exactlydisassemblydoc
What do the fishing bite tick's two per-frame map reads do?one gates water and feeds the bite credit; the other drifts the lure sideways over an obstructed sub-cell, signed by the lifetime cast counterdisassemblydoc
Which way does an obstructed sub-cell drift the fishing lure?by the cast counter's low bit - 447 additions all on an odd counter, 502 subtractions all on an even one, zero violations over 949 forced executions; at the catalogued venue the probe never fires, so retail's lure does not drift therecapturedoc
What writes the fishing cast counter?the bite tick itself, through the save-block base rather than its own address, once per hooked fish - so the drift direction alternates between castsdisassemblydoc
What consumes the fishing bite tick's per-cell fish weight?it is the modulus of the caught fish's size roll, and the same value plus a constant becomes the spawned object's render scale - it touches neither the species roll nor the bite creditdisassemblydoc
What is the Baka Fighter blit-rect table?exactly two records, both the same size and both blitted to one fixed destination; it is the last initialised data in its overlay, so an index past the second reads the destination's own column backdisassembly + bytesdoc
What is the equip compare panel's category byte?the accessory passive index - the panel shows the three stats that passive moves, and the two lookup arms split the item space cleanlydisassembly + capturedoc
What is the equip browse row’s index space?a two-table slot map, not the equip-byte index: row 0 is the weapon row and reads a per-character byte from its own table, rows 1 and up index a second one - weapon, helmet, body, footwear, then three accessory slotsdisassemblydoc
Does retail's equip screen offer a Goods-slot candidate, and out of which id space?yes - the screen has two candidate families, and the three accessory rows reach builder cases whose filter is the item's class plus one effect byte, with no character mask; 80 of 151 candidate ids pass on the USA discdisassembly + measurementdoc
What does the shop quantity window print?quantity over bound, not quantity times price - the second number is the purchase bound the picker fills, the glyph between them is a separator, and the price appears once in the running totaldisassemblydoc
How does the list-reorder screen exchange two rows?a two-press latch carried in one cursor word: one bit means nothing is latched, a confirm stores the hovered row and clears it, the next confirm swaps and re-raises it, and a cancel with a latch pending only drops the latchdisassemblydoc
Which equip byte is the Ra-Seru slot?per character, out of a three-entry table that is the exact complement of the weapon table - so neither is a constant across the party, and reading either as one gets a character wrongdisassembly + bytesdoc
Is the equip browse map's byte run one table or two?three tables and a pad bytedisassemblydoc
What retail's equip candidate step drawsthree stacked panels; the compare category follows the hovered item, not the rowcapturedoc
Where retail enters the list-reorder screenthe pause menu's Status row - one writer disc-wide; only two of its three lists have a doordisassembly + capturedoc
Does retail's wall slide fire in ordinary play?yes - and the oracle that blocked the port was measuring agreementcapturedoc
Is the camera's visible-tile window a property of the scene?no - of the region; one town walk alternates between two windowscapturedoc
What clears the two halt bits an inn conversation sets?the conversation's opening op, read again by the walk kernel as a twenty-frame "turn to face" order; its last frame clears both bits with the box already opencapture + disassemblydocs
What does Incense do?stops random encounters outright for a window of walking steps - 0x40 walk ticks per use, capped at 0x100; the Use list greys it near the capdisassemblydocs
What is menu window 8?the notice a Hyper-Art book raises when an art is learned, not a generic notify windowdisassemblydocs
When does Baka Fighter book an exchange?on the frame the winner's strike keyframe is crossed; a special attack halves both fighters' animation speed for the round and leaves a two-ghost afterimagedisassemblydocs
Who is Baka Fighter's round-start cameo?the ring girl (scene model 3), who walks on only while Triangle is held and winks at the posecapture + disassemblydocs

Text / fonts / dialog

The dialog font and the inline dialog-box encoding.

ThreadVerdictEvidenceWrite-up
Does the USA dialog font have accented letters?yes - 32 of the high cells carry glyphs (CP437 order, one stretch shifted a cell), and most of them have zero width so they print over the next lettercapturedoc
When does a dialog choice menu open, and can the game press for you?only on a confirm press at the end of the prompt; a script-set countdown can make that press for the playerdisassembly capturedoc
What ends an NPC talk?the dialog SM's verdict on the byte after a box: a jump or opcode parks the cursor, and the next talk runs itdisassembly + capturedoc
What draws the battle command chips' words?text strings in the executable, pointed at by each chip's placement record - translatable, not icon artdisassemblydoc
Do the PAL builds keep the narration crawls' page counts?no - they reflow into more pages with blank pages between paragraphsdisassemblydoc
What does PROT 0892 (card_data) carry, and who loads it?the memory-card screen's JIS X 0208 level-1 kanji font - a two-member pack of 4bpp TIMs loaded by FUN_8002574C at CARD INIT; not 12 MB, not a truncated streamdisassembly capturedoc
Dialog font extractiondone - kept for referencecapturedoc
Inline dialog-box format (0x1F-lead segments)init-arm count corrected; session-end semantics opendisassemblydoc
Tetsu 4-option spar menu mechanismresolvedcapturedoc
Pause Items/Magic screens: remaining sub-flowsdim-bit residual closeddisassembly capturedoc
Which routine samples the card-screen kanji page?none - a GPU-FIFO watch at card-screen entry draws nothing from it, and neither of the two constants a sampler would need appears anywhere on the disc. The build ships the Japanese glyph page and never reads itdisassembly capturedoc
What is the battle plaque’s element badge, and how is it selected?a caret escape inside the monster’s own name - badge index is letter - 'A' over the strip 0x8B..=0x92, element to caret is the fixed permutation [4, 3, 0, 2, 1, 5, 6, 7], zero exceptionsdisassemblydoc

Animation

Player and NPC animation streams.

ThreadVerdictEvidenceWrite-up
Player ANM per-record layoutbyte-4 nibble correcteddisassemblydoc
Battle anim-id space + record[0] "strike family"resolvedcapturedoc
FUN_80047430 callerresolvedcapturedoc
Record[0] +0x5C pointer + art-anim bank stream source+0x5C = vestigial paired-relocationdisassemblydoc

Audio

SEQ / VAB playback, the SPU transfer engine, BGM selection and the battle voice cues.

ThreadVerdictEvidenceWrite-up
What plays when a script asks for a scene-local track?a fixed fallback track from the shared music bank - the loader overwrites the scene-block index it computed, and retail never stages a scene bankdisassembly capturedoc
Where does the credits bank go in sound RAM?over the resident sound-effect banks, from the same base as slot 0; retail never reloads them afterwardsdisassemblydoc
How does a Muscle Dome round enter battle mode?the arena stores mode word 0x14, so a round takes the battle arm of the bank switchdisassemblydoc
Which field scripts push sound effects?two opcodes, with the cue id straight from the script; the scene's own bank serves the high idsdisassemblydoc
What does a cue whose bank is closed play?nothing - the driver skips it; it is never played from another bankdisassemblydoc
Who sets the minimum frame step?each mode's init, and a scene's own script - the opening scene raises it to 3disassembly capturedoc
FUN_8003EAE4 - seek plus driver flags, or a stream start?a seek plus bookkeeping; the CD-callback sequencer is FUN_8003D764, driven by gp+0x928 which only FUN_8003D53C writes; two of the three flag cells are write-onlydisassemblydoc
What a normal party attack sounds likean ordinary swing emits neither cue (four captured swings fail the s7 gate); the grunt is the +0x1F3 reaction-commit arm; the sting only when the effect handle _DAT_8007BD84 is non-nulldisassemblydoc
SPU reverb live routing (C7-REVERB)wired; Studio C, globalcapturedoc
XA channel map / STR demux SMstatic decompile of PROT 0970 + SCUSdisassemblydoc
FUN_80018DB0 is a rumble cadence, not an audio onelibpad, not SsAPI; no cue to pindisassemblydoc
Key-on pitch: what does retail put in the voice pitch register?unity on centre; the port was an octave lowdisassemblydoc
SFX cue bank routing - the category byte selects the VAB slotmechanism + the two pinned banks; portedcapturedoc
Which PROT entries fill SFX VAB slots 1 / 3 / 6 / 11slot 6 = 0876, slot 11 = 0889; 1 / 3 are variable banksdisassemblydoc
The FUN_8006EF18 trio is a BIOS kernel-patch sequence, not an SPU initnegativedisassemblydoc
_DAT_8007B910 is the live audio level, not screen brightnessboth hosts' labels correcteddisassemblydoc
XA clip-table writer + (clip_id, chan) cue censuswriter pinned statically; census in audio.mddisassemblydoc
Hyper Arts fanfare selector - what audio fires when a Hyper executesper-(char, art) coin flip over a fixed channel pair of the even-slot fanfare bankdisassemblydoc
Op-0x35 sub-op 0xA - what the "unhalt-pause toggle" waits onit is the track-swap commit; both globals pinned; porteddisassemblydoc
What do bse.dat's record columns mean?the static SFX-table columns; +4 is a u8 category the cue router rewrites per cuedisassemblydoc
Who consumes the bse.dat record-table pointer gp+0x678 (0x8007B990)?the cue router FUN_8004FE5C and the overlay-0971 sound test, via lui+lw pairs the word scan cannot seedisassemblydoc
When does bse.dat load?battle-scene setup - FUN_8001FA88's only caller is battle init FUN_800513F0 - not bootdisassemblydoc
bse.dat 888 vs its 1195 siblingone format, two occupants of the >= 0x200 bank role: 888 in battle, a scene prescript's record 0 in the fielddisassemblydoc
Is there a second bse.dat record family past the table?no - a neighbouring file's PsyQ VagAtr tone rows left in the sector (888's tail equals 886's and 1063's; 1062's equals 1056's)capturedoc
What is _DAT_8007BA9C?the BGM-swap force-reload latch, read at 0x8002457C and XOR-paired with _DAT_8007BAB8; the barrier op-0x35 sub-op 9 waits ondisassemblydoc
What is FUN_80065034?SsUtKeyOnV(voice, vabid, prog, tone, note, fine, voll, volr) - the second argument is the VAB id, which makes a cue’s bank explicit rather than implied by the resident onedisassemblydoc
Which voice clip does a Seru cast play?the module names it, not the caster - 62 of 64 images hardcode a literal cue id, resolving to seventeen streamed-audio filesdisassemblydoc
What bounds the cue dispatcher's streamed-voice leg?two decline gates and nothing on the table index; the table is 0x110 entries with live rows to 0x10F, so a reader stopping at 0x40 drops every cast cuedisassemblydoc
Which tracks do the in-world minigames start?three loader entries through the piecewise extraction map; subtracting a single base gives three wrong tracksdisassemblydoc
What does the sequencer's pause do to sounding notes?it is a key-off, not a freeze - a slot flag the per-tick handler sees releases every voice the channel owns, and only the play cursor survivesdisassemblydoc
Where does a scene's entry music come from?the scene's own script, not the loader - of the request word's four writers disc-wide, the per-scene initializer's is a conditional cleardisassemblydoc
What makes a captured sound voice audible?its envelope level, never its phase word - the phase has no idle member, so a key-off parks a voice in release and a phase test counts every voice a state ever keyed; 1624 of 2352 slots across the retail corpus sit at level zerocapturedoc
Why do two identically-shaped table expressions disagree?they use different index spaces: the archive table is read into RAM from byte 0 with its header included, so the runtime index is the extraction index plus twodisassemblydoc
What is the reserved music-request value?a park sentinel shared by both streaming slots, not a trackdisassembly + capturedoc
Does a save state's scene decide which track it holds?no - a global does, so a town save walked in from the world map still plays the overworldcapture + disassemblydoc
Retail's reverb depth and work areameasured, and outside the preset block - matching the preset says nothing about themcapturedoc
Is slots-per-note a difference between the port and retail?no - it is a property of the arrangement, and the sign reverses with the trackcapturedoc
Does a Muscle Dome round load the battle sound bank?yes - a round closes the field bank's slots and stages the class-2 bank, as any field battle doescapturedocs
What does the scene-stream installer's type-2 chunk install?the music score (a SEQ open), carried by every stream with a score; no chunk type is a texture upload and none is compresseddisassemblydocs

Title / boot / overlays

Boot order, the title screen, the save screen, and which overlay is resident when.

ThreadVerdictEvidenceWrite-up
The title menu's law (FUN_801DD35C sub-mode 0x10)two rows, confirm 0x844, cues 0x21/0x20, 0x5DC attract countdown; ported on both hostsdisassemblydoc
FUN_801D71F0 and its "shared armament placer" 0x801E5AE8one routine, FUN_801E5A08 (0897 +0x171F0), printed 0xE818 low; unreferenced on the discdisassemblydoc
Save-screen view mode 4 ("Return")dead - the block grid has 15 cells and every cursor path is clampeddisassemblydoc
Does FUN_801CE9C0 pin the per-logo quads?no - it uploads; the quads are a six-record sprite-descriptor table at 0x801F369C, emitted by FUN_801CFBB8, sequenced SCEA, Contrail, PROKION by FUN_801CEFD4disassemblydoc
PROT 0895 (init.pak) identity + baseslot A 0x801CE818; mode 16's whole body is its FUN_801CE9C0 (the publisher-logo pass), 20 functions closing byte-exactly ahead of the first TIMdisassemblydoc
_DAT_8007B8C2 polarity, and its writerdocs were backwardsdisassembly capturedoc
Actor-VM (FUN_801D6628) program source - which carrier, what selects onemenu-overlay-resident program tabledisassemblydoc
title.pak PROT entryresolvedcapturedoc
Title screen mode-table PROTno row is named for it, but it runs under the CARD mode pair 22/23; FUN_801DD35C is PROT 0899 +0xEB44disassemblydoc
Load-screen panel 9-slice geometryengine renders byte-perfectcapturedoc
Key-item area consumers (0x800859E8..0x80085A40)narrow negative; the reader enumeration is closed (125 sites over six images; PROT 0954 reads the whole bag with no window)disassemblydoc
XP-table source + readerportedcapturedoc
New-game world-state seed store widths (FUN_80034A6C)port confirmed, no changedisassemblydoc
Overlay identity from the disc (static extraction)pipeline landedcapturedoc
SCUS recomp gap - render/GTE + boot/init clustersaliases + libgte residue + dev tooling; main() documenteddisassemblydoc
Options/menu overlay PROT entryRAM-verified; PROT 0899 @ 0x801CE818capturedoc
PROT 0896 (bat_back_dat) identityresolvedcapturedoc
Slot-A scene-overlay family beyond field/battle/menuin the static mapdisassemblydoc
"world-map / save / shop" overlay PROT entriesnot separate entriesdisassemblydoc
PROT 0977 / 0978 extraction + the dump re-keyresolveddisassemblydoc
Slot-B capture-module band 0935..0966 per-entry identitystatically derived, capture-corroborateddisassemblydoc
Phantom-VA sweep of the PROT 0897 importsresolveddisassemblydoc
Debug flag 0x8007B98Fthe MSB of the debug-mode word _DAT_8007B98Cdisassembly capturedoc
New-Game opening chain + narration rollerchain + caption + roller + prologue gold grade; far-geometry residual resolved-negativedisassembly capturedoc
Overlay-loader index off-by-2 - remaining rippleslot A reconciled; slot-B per-spell identity capture-pinneddisassembly capturedoc
Slot-B overlay cluster (0900..0969) per-entry identityfor every entrydisassembly capturedoc
PROT 0968 - what it is, who loads it, and how big it really isidentity and extent by disassembly, residency by capturecapturedoc
0x80010390 - the SCUS word that looked like a lead on 0968: it is the slot-B overlay destination pointer, shared by every slot-B entrydisassemblydoc
Muscle Dome match shape: an ordinary battle ladder, not a card battledisassembly - disassemblydoc
The dome runs two state machines; the outer one is the contestdisassembly - disassemblydoc
Battle arts-input UI decomposition (dome = standard battle input)capture - the input screen's full piece decomposition +capturedoc
Full-window item-add OOB reachabilitythe write primitive is real; normal play cannot reach it.disassembly inferencedoc
Which title sub-mode does a cold boot show - 0x02 or 0x10?0x10, always: the boot init.pak raises _DAT_8007BB00 unconditionally at 0x801CEB84, and the tick’s own epilogue rewrites a surviving 0x02. A per-vsync cold-boot poll never observes itdisassembly capturedoc
Does anything draw the init.pak WARNING screen?no - the TIM is uploaded to VRAM (704, 0) as descriptor 1 of the 0x801F369C table and no call site passes that id; the build loads the screen and skips itdisassembly capturedoc
Which mode does the retail title screen run under?the card mode, not the mode a trace sees first. The front end is six stores, each written by the handler that hands off rather than by a field of the mode tabledisassemblydocs
What does a mode-change edge clear?four gp words, not three; two neighbouring words are mode copies and are not cleareddisassemblydocs
Which of PROT 0978 / 0979 / 0980 is the dance overlay?only 0980 - 0978 is the staged background loader and 0979 the battle-intro imagedisassemblydoc
Where does PROT 0896 link?at a base its own call graph recovers - and it calls no function entry of this disc's executabledisassemblydoc

Rendering / camera

GTE projection, camera beats, the backdrop draw and VRAM parity.

ThreadVerdictEvidenceWrite-up
Which Muscle Dome hub graphics blend?only a few palettes on one CLUT row, and they add; the "subtractive" packets draw opaque because the GPU blends only texels with the STP bitdisassemblydoc
In what units is a field light's size?camera space, six times world scale - two retail darkness masks match it exactlycapture disassemblydoc
Why did the Mist forest's fog not show in the native window?the effect-texture pool the fog page samples was missing under the scene's video memory; retail keeps it residentcapture + disassemblydoc
What sets the field-fog cap?a scene-header bit - every overworld and one opening scene raise it; it is not a debug switchdisassemblydoc
Does any retail shot author a non-zero camera roll?yesdisassembly capturedoc
Does retail stack coincident curved shells?nocapturedoc
FUN_80045BB4 - a function entry, or interior residue?the bank-3 kind-19 textured Gouraud quad handler; word 12 of the table at 0x8007668C is what makes it reachable, since no jal names itdisassemblydoc
How does PROT 0901’s 0x801F7644..0x801F8EB4 band split into routines?nine - eight frameless tail-call leaves plus a framed ninth at 0x801F89B8. The boundary rule is the j that leaves the band: twenty sit in it and only eight leavedisassemblydoc
Which base does the world-map overlay’s per-prim handler table use?0x801F8968, words 0..7 zero - FUN_80043390 materialises it with lui s4,0x8020 / addiu s4,s4,-0x7698 and indexes it exactly like the SCUS table 0x8007657Cdisassemblydoc
Does FUN_8002C69C draw the post-battle report windows?yes - PROT 0898 contains no jal to it, but SCUS FUN_80031D00 drives it off the retained widget list every frame a battle is up (36 SPRT nine-slice cells, CLUT 0x7FC2, tpage 0x1E)disassembly capturedoc
What is FUN_80019D50?the CLUT-cell HSV cycler - one LoadImage at 0x8001A030 per call and no primitives; jou’s pulsating flesh and the lightningdisassemblydoc
Which arm lays the post-battle report's nine-slice?style 0x03, kind 0, tile set 0 - eight tiles byte-identical to a captured 36-sprite band, all 782 emits arriving from one caller. The "that fight carries no report band" reading fell with itdisassemblydocs
FUN_80058490 - a sound-driver lane?no: it is MoveImage, moving a VRAM rect onto a CLUT row - so the table feeding it holds palette columns, and two consumers were reading those bytes as sound-effect idsdisassemblydocs
Which routine draws the world-map / field ground pass?PROT 0900 ships a pair, not one emitter twice: the two bodies differ by two instructions, one running the GTE depth cue and storing its colour register where the other stores a plain colour word. The selector's non-zero arm sets the far colour first. The decoration pass is a third routine on a different cell bitdisassemblydocs
What order does RotMatrix compose?Rx(vx) * Ry(vy) * Rz(vz), walking the cos and sin table pointers. Composition order is the one thing a capture of a single rotation cannot distinguishdisassemblydoc
What does the scene-entry camera reset write?six stores - an eye triple and an angle triple - and it never touches the camera height, so a port resetting H there adds a store retail does not makedisassemblydoc
Is the field follow camera's framing one set of constants?no - retail derives height, pitch and yaw per scene and per player tile; the pins match 12, 8 and 1 of 19 walkable statescapturedoc
What stages the dance widgets' second texture page?nothing in the minigame's container: it is boot-resident interface art from the archive's unindexed head gap, and both members declare their rect in their own headercapturedoc
Which of a field frame's view builds does the drawn geometry use?the first: of 4289 polygons over three runs, 3861 sit under it, 428 under the second and none under the last or the world-map pair - the last build's whole share is attribute packets and flat rectanglescapturedoc
Which routine draws a field or world-map actor's mesh?three arms of one bracket: every call site of the table-driven renderer is the far arm of a test on one per-actor halfword, and the near arm takes the environment-mapped renderer when a second flag is set, the per-primitive leaf otherwisedisassemblydoc
Does any sampled mode enter the table-driven mesh renderers?no - 720 frames over four states and three game modes give zero entries into either, against 5089 gate reads all of them zero and 10621 entries into the per-primitive leafcapturedoc
Does the disc ship writers of the mesh-renderer gate?yes, two families - one behind a dev counter, one a move-VM opcode carrying script datadisassemblydoc
Which emitter does effect render mode 4 take?always the default - no store on the disc writes either selector bitdisassemblydoc
Is a field fog sheet a world-space quad?no - a screen-facing billboard at the particle's depth; its colour already matched retail packet for packetdisassembly + capturedocs
What does the field drop shadow draw?four textured quads of a blob texture over a 3x3 grid projected at the actor's feet; matches retail's packets on every captured framedisassembly + capturedocs

Measurement + corpus

Claims about the project's own instruments - dump corpus, coverage counts, attribution.

ThreadVerdictEvidenceWrite-up
Does any code reseed BIOS rand?no: the executable carries no srand thunk, so every caller draws on one kernel streamdisassemblydoc
Which save states carry a patched executable?measured and tagged per patch family; every capture-graded claim re-checked against its family standscapturedoc
Where does an overlay image's code stop?at the word after its last jr ra; the only exception is a body the sector-granular PROT extent cut short, which still carries a RAM-page luidisassemblydoc
content_bytes vs clean_copy_bytes - which is an overlay's length?the entry's sector extent; clean_copy_bytes is how much a RAM capture verified (they differ by 0xF174 on PROT 0899)disassemblydoc
Does PROT.DAT's TOC leave gaps between entries?no - a gapless partition; every "unindexed gap" reading was the over-reading entry sizedisassemblydoc
PROT 0867's trailing 0x14000 slotsraw 4bpp PSX TIMs (CLUT row 482, page at x = 384), not LZS monster blocks; the same TIM sits inside PROT 0892capturedoc
summon.dat's seven unclassified slotsthe big-summon (0x9A..=0xA0) third membersinferencedoc
Do a MAN's partition offset tables tile its data region?exactly, data-region-relativeinferencedoc
What is in the SCUS_942.54 code gap the citation graph never listedresolveddisassembly capturedoc
Why three plausible-code blocks in SCUS_942.54 can never be a function bodyresolveddisassemblydoc
Is the unattributable dump-extent residue a re-dumping problemnocapturedoc
Can the inner of two nested overlay spans be measured at allyescapturedoc
Is a caller-site citation checkable, or only assertable?checkable - the disc word at the cited address settles it, and check-port-provenance.py’s site_relation reads it off the bytesdisassemblydoc
Which image do the overlay_dance_* prints above 0x801D6818 come from?PROT 0972, the fishing overlay - PROT 0980’s own content is 0x8000 bytes, and 0x801D73B8 is 0972’s file 0x8BA0 instruction for instructiondisassemblydoc
Is the overlay corpus's uncovered-byte residue un-dumped code?sixteen of twenty ranked runs are not code - the image's own spawn-record band, a neighbouring image's bytes at the same file offset, or zero scratch; the seventeenth was seven frameless leaves in PROT 0949disassemblydocs
Why does every extracted overlay image end in another image's bytes?the build buffer: an image's extent runs past its own content into the previous, longer module's code at the same offset - 66 of 83 images, and now excluded from each image's own code denominatordisassemblydocs
What is the slot-B modules' unclassified data tail?a spawn-record band, addressed by the consumer's own pointer-forming instruction. No earlier shape rule reached it because a record's bytecode contains a lui word by accidentdisassemblydocs
Does the TOC resolver return an LBA?no - a sector count; the LBA is a side effect. Two loader rows and one argument order were reversed against it, and the libcd directory cache had been recorded at the offset half of an address pairdisassemblydocs
Do the feature views measure distinct features?no - twelve of them were measuring one blob, one view's anchor set being a strict subset of another's. Localized, the same feature measures a tenth as many anchorscapturedocs
Does a PCSX-Redux save state carry the scratchpad?yes - in a 64 KiB hardware blob, with the scratchpad at its own offset 0, so the per-cell reads that needed a mednafen state are answerable in either emulator once the reader grows an accessorcapturedocs
Where does a slot-B image’s highest spawn record end?its own move-VM program bounds it - walk the opcode widths to a terminator and round up to 4. 991 of 1027 extents come out exact; of the 33 misses re-walked independently, 14 go past the end, 13 stop on it and 6 below, so the usable invariant is a terminator rule rather than a direction - no miss ever terminates above the enddisassemblydoc
When does SCUS’s one call into slot B run?on ordinary in-battle frames while PROT 0920’s effect budget is non-zero - 212 hits in a single Slippery cast, across six module phases, always with the battle-running signal setcapturedoc
Is a VA that prints in two neighbouring slot-B images one routine?usually, but not always - one such VA is a 272-byte stager in one image and a 2040-byte applier in another, differing at the first instruction. Diff the bytes rather than assuming either waydisassemblydoc
How long is FUN_801DD9D4?588 bytes / 147 instructions. All seven of its dumps stop at 276, because the decompiler stops at an interior jump table the preceding branch skips past - seven dumps agreeing is agreement about the decompilerdisassemblydoc
Are the two 24-instruction tally helpers two routines?one, linked into two overlays - 22 of 24 instructions identical, the two that differ being the pair that materialises the gate worddisassemblydoc
Can a mode-seat parity witness sample the mode word?no - an INIT mode lasts one frame inside the seat's own entry call, so the witness that works is the edge countcapturedoc
What does a reach-triage cell assert?nothing - the page audit checks the addresses a row cites, not the prose beside them, so a cell can keep describing work a ladder already didinferencedoc
Is a resolution ratio over address-forming pairs a base test?no - it is one-sided, rewarding a base that explains little of the imagedisassemblydoc
When may a dump's filename credit an extent?only where something else in the same image confirms by bytesdisassemblydoc
Do two host kernels paired by name do the same work?not necessarily - an empty body pairs with anythinginferencedoc
Can a measurement tool be stale the way its cache is?yes, and more quietly - a documented historical figure reappearing is a stale instrumentcapturedoc

See also

A thread whose verdict no longer matches the disassembly moves back to the open list; the row here is not edited in place.