Files
lintunes/scripts/kaleidostrobe/README.md
T
trav e38c751e39 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.
2026-10-14 12:02:22 -07:00

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, 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.