Reads and rewrites all three script sections of a ROOM*.RDT, picked with the
section selector in the toolbar:
0x60 init SCD (runs once on room load),
0x64 main SCD (runs every frame), and
0x68 the event scripts (the cutscene VM).
The two SCD sections share one opcode set, taken from the port's
CmdFunctions.cpp using the port handler names
(cmd_<subject>_<verb>, see
docs/SCD_SCRIPT_SYSTEM.md); the event VM is a different grammar entirely and comes
from RoomEvents.cpp. Both were verified against the original.
Flag operands read from the MSB.cmd_bit_op masks with
0x80000000 >> index and cmd_bit_test shifts left by it,
so raw index 31 is bit 0. Decoded lines show both (bit=0(msbidx 31));
the bit index field in the editor takes the raw MSB-counted value.
mirror_set lines also decode the room mirror parameters - and a
bit0=0 there does not mean the mirror is off, because the plane-X rooms
enable it with a following bit_op.
Drop a ROOM????.RDT here, or click to pick one
File
Region budget
If the rebuilt region no longer fits between the event table and the next RDT
section, it is appended at end of file and header 0x68 is repointed.
Nothing else moves, so every other section pointer stays valid.