Entry 24
rugrats-re on rrt-dis, and XA through rrt-kit's Player
Files9 in 5 directories
crates/rugrats-re/src/
main.rsbios.rscrates/rugrats-re/Cargo.tomlCargo.tomlCargo.lockREADME.mdcrates/rugrats/src/movie.rscine.rscrates/rugrats/examples/cine_ids.rsretro_rt now has rrt-dis (disassembly, analysis, a lifting IR and the
decompiler that started here) and rrt-kit's xa::Player, which is the
drive drop rule from worklog 22 moved upstream. The port now uses both.
rugrats-re on rrt-dis (retro_rt 719d0fa, then 070248b):
Program::loadis rrt-dis throughout:PsxExe::parse,Symbols::parse,find_gp,Program::analyze,Listing,Pseudo.- The commands and their arguments are unchanged.
disasm --func,pseudo,xrefs,callsandcallersalso take a name or an address inside a function. - BIOS stub naming stays in this repo (
bios.rs), since rrt-dis leaves it to each project.crates/rugrats-psxis deleted. - Against the old tool's baselines:
- It finds 2237 functions against 2161. The new ones include
VSyncCallbacksandDMACallback. - All 80 old jump tables match, plus one new one.
- Unowned words drop from 2145 to 191.
- 1936 of 2161 functions decompile identically once the presentation changes from worklog 12 are normalised. The rest differ in folding, BIOS calls, frame sizes of tiny stubs (now correct), and conditions that test the register just written.
- It finds 2237 functions against 2161. The new ones include
- Three rrt-dis problems were noted for retro_rt:
value_beforewalks back across ajal, which leaves junk store slots (0x53, 0x55) inProgram::slots.- Arity inside a call cycle depends on decompile order (fn_8002e67c).
D_names both an address and the memory at it.
XA: movie::XaPlayer is gone, and the movies and the cinematic stream
use xa::Player::new(xa::DOUBLE_SPEED). The opening's sound is still
47.1 s (cine_ids now prints it), and the tests pass.
Still unknown
- nothing