Reverse-engineered from its PowerPC binary and checked against the original running under emulation: textures byte for byte and every triangle, over 3,600 frames. 25 fps like the plugin; its colour maps and wave images are extracted from its own code; tests/kaleidostrobe_golden.npz was recorded from the original.
1.1 KiB
1.1 KiB
Kaleidostrobe reverse-engineering tools
How lintunes/kaleidostrobe/ was made, and how to check it again. Dev-only:
needs pip install capstone unicorn numpy (never a LinTunes dependency) and
the original bundle (KALEIDOSTROBE_BIN, default
~/documents/misc/lil hacky bits/Kaleidostrobe.bundle/Contents/MacOS/Kaleidostrobe).
macho.py— Mach-O PPC parser + annotated disassembly (python macho.py _display _checkBeat): resolves the PIC base, stubs, non-lazy pointers and float constants.emu.py— the original under Unicorn: imports answered in Python (libm, Darwinrand, TickCount/Microseconds, Carbon'spi), GL calls recorded. After adding a hook,ctl_remove_cache— Unicorn never applies a hook to code it already translated.plugin.py— drivesVisualPluginHandlerlike iTunes: init, show, vply, vrnd.extract.py OUT.npz— the colour maps and base wave images →lintunes/kaleidostrobe/tables.npz.golden.py OUT.npz—tests/kaleidostrobe_golden.npz.compare.py [frames],coverage.py— the port against the original, frame by frame / function by function.