v0.53.0: Kaleidostrobe, the 2002 iTunes visualizer, as the fourth style
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.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 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, Darwin `rand`, TickCount/Microseconds, Carbon's `pi`), GL calls
|
||||
recorded. After adding a hook, `ctl_remove_cache` — Unicorn never applies
|
||||
a hook to code it already translated.
|
||||
- `plugin.py` — drives `VisualPluginHandler` like 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.
|
||||
Reference in New Issue
Block a user