Homebrew, ports and preservation research for obscure and failed vintage platforms — the machines that flopped, got cancelled, or were never documented, and so have almost no public technical record.
The goal is concrete: take technical knowledge that exists nowhere else — compiler bugs, hardware register maps, undocumented file formats, emulator internals — and make it publicly verifiable for the people who come after. For several of these platforms, these repositories are the only public documentation of their kind.
Everything below is either original code or documentation. No repository here contains game assets, ROM data or copyrighted content — the tools read media you already own.
Everything here is published as is. This is reverse-engineering work, not a specification: findings are revisited and corrected over time, but nothing in these repositories is guaranteed to be complete or correct, whether or not a given page says so. Where a claim can be checked mechanically, the repository ships the command that checks it — run that rather than trusting the prose.
Original software, written from scratch for the target hardware.
| Repo | Platform | What it is |
|---|---|---|
| fcf-quest | Fairchild Channel F (1976) | A JRPG in 4 KiB of cartridge and 64 bytes of RAM, F8 assembly |
| fcf-bufo | Fairchild Channel F (1976) | BUFO, a road-and-river crossing game in 2 KiB, F8 assembly |
| vis-synth | Tandy/Memorex VIS (1992) | OPL3 polyphonic synth — pad instrument, SMF player, live MIDI from host hardware over a custom MAME bridge |
| vis-fileviewer | Tandy/Memorex VIS (1992) | Media browser for photos, OPL3 audio and FLC video, the native Modular Windows way on an 80286 |
| wiiu-crema | Wii U | Crema — a clean-room GX2/AX engine, benchmarked on real silicon |
The Channel F is the constraint that best explains the appeal: a 1976 console with 64 bytes of system RAM, and two complete games written into it.
Existing games brought to hardware they were never meant to run on, or rebuilt natively.
| Repo | Target | Source |
|---|---|---|
| psx-lba | PlayStation | Little Big Adventure (1994 DOS engine), at native 640×480 |
| ds-lba | Nintendo DS | Little Big Adventure — 50 fps on a stock 4 MB DS, with voices, streamed music and a touch panel |
| wiiu-lba2 | Wii U | LBA2 / Twinsen's Odyssey from the 1997 Adeline source — completed start-to-finish on real hardware |
| dc-lba2 | Dreamcast | LBA2 on KallistiOS — v0.9 alpha, real-hardware boot blocker still open |
| wiiu-planetblupi | Wii U | Planet Blupi (Epsitec) — GamePad touch as mouse, runs on Aroma |
| vis-wolf3d | Tandy/Memorex VIS | Wolfenstein 3D, Win16 native, OPL3 audio |
| 3do-omf2097 | Panasonic 3DO | One Must Fall: 2097, built on OpenOMF |
| pc-mikie | portable C | Konami's Mikie (1984) statically recompiled from MC6809, verified instruction-by-instruction against MAME |
| pc-highlander | PC | Highlander: The Last of the MacLeods (Jaguar CD, 1995) — native reimplementation |
| pc-rpgmaker3 | PC | The RPG Maker 3 (PS2) engine — native reimplementation |
| pc-immercenary | PC | Immercenary (3DO, 1995) — tooling and docs, port in progress |
| pc-ragnarokodysseyace | PC | Ragnarok Odyssey ACE (PS3) — tooling and docs, port in progress |
All ports are BYOA — bring your own assets. They need a copy of the game you already own.
Three platforms with essentially no prior public reverse-engineering record.
| Repo | Platform | Result |
|---|---|---|
| hyperscan-homebrew | Mattel HyperScan (2006) — Sunplus S+Core 7, RFID cards, a total commercial flop | 16+ reproducible bugs in the unmaintained GCC score-elf backend with verified workarounds; PPU, RFID-NFC and I²C drivers from scratch; the first emulated HyperScan audio in MAME (video) |
| ngpc-homebrew-notes | SNK Neo Geo Pocket Color (1999) — Toshiba TLCS-900/H | Verified toolchain and binary inventory, plus the first NGPC↔Dreamcast link-cable bridge ever emulated — retail hardware from 1999 that had never been emulated on either side (homebrew · retail) |
| pippin-homebrew | Bandai Pippin @WORLD (1996) — Apple-licensed PowerPC 603 | Upstreamable DingusPPC fixes giving it serial-over-DBDMA, which put the emulated Pippin on the real Internet (ping, and a live page in Netscape), plus a homebrew thin-client browser — and an honest, tcpdump-backed account of the one symptom that turned out not to be the emulator's fault |
Format archaeology: containers, sprite codecs, map formats, text systems, and the strata a shipped build accidentally preserves. Each repository carries machine-checkable verification commands, not just prose — the claims can be re-run against the files years from now.
| Repo | Subject |
|---|---|
| pc-princeofqin-doc | Prince of Qin (秦殇, 2002) and Object Software's "EasyRPG" engine |
| pc-meridian59-doc | Meridian 59 (1996), one of the first graphical MMORPGs — and 30 years of operational strata |
| pc-dungeonhack-doc | Forgotten Realms: Dungeon Hack (1993) and the AESOP/16 engine |
| pc-wackywheels-doc | Wacky Wheels (Apogee, 1994) and its fixed-point pseudo-3D floor renderer |
| pc-battlebugs-doc | Battle Bugs (Sierra/Epyx, 1994) — 800×600 in 16 planar colours, one asset set serving both modes, and a per-bitplane column-major image codec |
| pc-corridor7-doc | Corridor 7: Alien Invasion (Capstone / IntraCorp, 1994) — a licensed Wolfenstein 3-D taken to 256 colours, shipping its levels in TED5's TED5v1.0 editor work file with the map directory linked into the EXE. The MUSE tags date the whole soundtrack to the day, and ten credit sprites hang along a corridor on level 1 |
| pc-hurl-doc | H.U.R.L. / Slob Zone 3D (Deep River Publishing, 1995) on Lary Myers' ACK-3D. Levels ship as commented ASCII naming 661 of the game's 684 bitmaps by their original artist file names, and every projectile sits in a sealed room off the edge of the map because the engine allocates nothing at run time. The retail build still holds a level-select switch and an objective system never enabled |
| pc-mm-doc | Might & Magic: Secret of the Inner Sanctum (1987) |
| pc-sargon5-doc | Sargon V: World Class Chess (Mediagenic, 1991) — five files with four different extensions turn out to be one container, whose LZW packs least-significant bit first. One 8-bit asset set drives all four displays, the tutorial lessons are 258-node decision trees whose authoring sources shipped by mistake, and the About box hides a hamster |
| pc-nitemare3d-doc | Nitemare-3D: A House of Horrors (David P. Gray, 1994) — a one-man 256-colour shooter that owes nothing to Wolfenstein: every format is Gray's own and none of it is compressed, because the engine demand-pages its art through a three-tier RAM/XMS/disk cache. An artist's placeholder shipped in the retail data as a wall reading "See file TILES007.PCX" |
| cdi-ultracdisoccer-doc | Ultra CD-i Soccer (Krisalis / Philips Interactive Media, 1997) — a Green Book disc 2.4 % full that compresses nothing, with 10 % of its file system shipped as empty files: three abandoned localisations, palettes real and pictures never drawn. The executable asks for a Sega logo nobody pressed, and the studio put itself in the team database |
| cdi-origami-doc | Origami (EagleVision interactive productions, 1993) — the opposite end of the CD-i format: a disc 98 % full in which 52 sectors out of 326,400 are the file system and the program. Catalogued (En,Fr,De,Nl), it carries five narration languages — the fifth is Japanese — and stores every photograph twice, one per video standard, so 21.7 % of the pressing is video your player never reads |
| cdi-linkthefacesofevil-doc | Link: The Faces of Evil (Animation Magic / Philips Interactive Media, 1993) — the retail build still carries 325 C function names, handing over the architecture of a game whose source was never public. Half the 600 MB disc is deliberately empty, eight stereo music channels run in parallel so switching tunes costs no seek, and each playfield ships two dozen compiled 68000 subroutines |
| cdi-merlinsapprentice-doc | Merlin's Apprentice (Philips Interactive Media of America, 1995) — Cliff Johnson's only CD-i game, pressed with the linker's symbol file still on it: 19,752 bytes nobody references, holding 887 named symbols that give up eight puzzle engines and all 27 puzzles by name, a cheat flag, and a streaming scheduler the error strings call the Traffic Cop. The BOLT asset container is mapped to the byte — 129 groups, 7,703 members, zero chain breaks — and its compressor turns out to manage 1.17:1 |
| cdi-theapprentice-doc | The Apprentice (The Vision Factory / Philips, 1994) — the CD-i's best action game, and a CD-i Ready disc: the whole thing hides in the 69,150-sector pregap of track 1, so every ripper reads it as audio and hands it back scrambled. It ships the linker's symbol table (521 named symbols), a 68000 disassembler switched on by a file in the player's NVRAM, and a default high-score table naming twenty people where the credits name three. The soundtrack is pressed twice — 22 Red Book tracks and 22 ADPCM channels, mapped one-to-one, 21 of 22 durations agreeing to a quarter-second — and 714 KB of the Philips bumper is byte-identical to Link's |
| cdi-platformnotes-doc | The shared CD-i platform checklist the five discs above feed into, rather than each forking a copy — sector and Green Book layouts, OS-9 module validation, coding bytes, DYUV, real-time interleave, and the 29 seconds of authoring-system audio that turns up byte-identical on three unrelated discs, two from 1993 and one from 1995 |
| cd32-dragonstone-doc | Dragonstone (Core Design, 1995) on the Amiga CD32 — a floppy game pressed onto a disc it fills 3 % of, whose first-stage loader makes no OS call at all: it kills interrupts, drives Akiko directly and walks ISO 9660 by hand. The resident loader still carries the "Insert Disk X" prompt in three languages and a UK keyboard map for a console with no keyboard, and its file table is dimensioned for twelve levels with row four blanked to 0xFFFF — level 4 was cut and nothing else on the disc remembers it. Every directory record is stamped 1 January 1978, the AmigaDOS epoch, so the timestamps are a 26-minute log of the build. The localised text is IBM CP437 on an Amiga, two German files are in a third code page, and sector 21 — outside the file system, pointed at only by the volume descriptor — carries the Commodore trademark banner followed by 876 bytes of unlinked Exec object file, message-port routines and debug symbols intact |
| cd32-marvinsmarvellousadventure-doc | Marvin's Marvellous Adventure (Infernal Byte Systems / 21st Century, 1994/1995) on the Amiga CD32 — Dragonstone's opposite in every respect, and the disc that answers its open question: sector 21 is byte-identical, all three SHA-1s, so the unlinked Exec object file came with Commodore's trademark block rather than from either studio. Nothing on the disc is compressed and nothing was swept. All 64 level files carry a 360-byte editor trailer naming each level's author, its source paths and whatever the designer was thinking (too much levels!, data suxx, kathrin aus h hilf florian aus b), and the unused half of every one still holds the previous level's memory. The CD32 executable has the floppy release's complete disk map compiled in as plain text, next to the volume names and the four-byte magic it checked them with. The Italian text file is named after Berlusconi, the password screen shipped with its placeholder untranslated in four languages, girls.resource and condom.resource sit in the string pool unreferenced, and the executable opens with BETTER DEAD THAN ZNEVB — ROT13, and level 12 is titled THE CLONE. At the root, run by nothing, a directory containing a working AGA rotozoomer, 550 lines of its 68020 source, and a signed note from the programmer inviting whoever finds it to read them |
| cd32-prey-doc | Prey: An Alien Encounter (Almathera / KirkMoreno Multimedia, 1993) on the Amiga CD32 — a 122 MB disc with no audio track at all, whose entire soundtrack is 1,225 files of exactly 61,440 bytes of raw 8-bit PCM: the chunk size is the number the game writes to AUD3LEN, and the period it writes beside it makes those files 63 minutes 40 seconds at 19,705 Hz. The disc corrects two things the CD32 checklist had generalised too early. The Commodore trademark block is not at sector 21 — Prey's is at LBA 6021, because its volume starts at 6019 behind 6,000 empty sectors, and the volume descriptor says so. And /CD32.TM sits in the root as an ordinary file, dated 10 June 1993, referenced by nothing, byte-identical to that sector: Commodore handed developers the trademark block as a file, and that file already contained the 876-byte fragment of Exec's own source that every disc of the format has been carrying ever since. Its game executable has zero references to the custom-chip base address and 448 absolute register writes, so the usual grep scores it as never touching the hardware while it drives all of Paula. First disc here that really uses AGA — eight bitplanes and palettes ECS cannot represent. The intro animation shipped under the filename Test, C/Prod_Prep is Commodore's factory hard-disk formatter on a retail game disc, the sound effects are named in Danish, the executable still asks for two files that are not there, and several frames of the digitised actors still show the videotape timecode burnt into the picture. Documented alongside the 1992 CDTV release of the same game, which is the control disc: 1,201 files are byte-identical across the fourteen months between the two masters, and it falsified two claims made on the CD32 disc alone — a block of "wrong clock" timestamps that turned out to be the real CDTV build date, and a palette test that scored every ECS palette as 24-bit colour. It is also the first non-ISOCD master in the set, and it shows the .TM block is a shared mechanism with a per-console payload: on CDTV it holds cdtv.device by Carl Sassenrath, with no trademark banner anywhere on the disc |
| cd32-thesperislegacy-doc | The Speris Legacy (Binary Emotions / Team 17, 1996) on the Amiga CD32 — a Zelda-clone filling 0.74 % of its disc, and the one that broke the .TM rule the other three established: its trademark block is 22,152 bytes of cdtv.device by Carl Sassenrath, byte for byte the CDTV Prey master's, on a CD32 disc cut three and a half years later — so the block is not console-determined, it is whatever file the person cutting the master fed to ISOCD. 35 of 47 files are Imploder-crunched and the decruncher is 350 bytes of 68000 inside the game, transcribed register-for-register to open all of it: the LEV2 container renders every map and all 266 sprite frames per level, in genuine 24-bit AGA palettes. The manual copy protection is reconstructed rather than described — the 5,950 codes are computed, by a six-coefficient polynomial per table, so all seven printed tables are regenerated from the executable and verified against a scan of the card. The four-floppy release survives whole inside the CD32 build: four assigns to cd0:, every data file still addressed by the floppy it lived on, and the build timestamps reproduce the same grouping independently. All sixteen levels are still named Egyptian World / Tuten Carmens Tomb, Makiah-2.Lev shipped with its BGFX tag corrupted to 42 47 00 65 and works because nothing validates chunk tags, the retail master carries a 68000 crash debugger, floppy save-disk code and a keyboard map, and the title module's sample names still hold the composer's letter to the team and his BBS phone number |
| cd32-gloom-doc | Gloom (Black Magic Software / Guildhall, 1995) on the Amiga CD32 — a real-time texture-mapped shooter whose textures, sprites and HUD are all 8-bit chunky, on a console whose headline feature converts chunky to planar, and its AKIKO references measure zero in the raw image, in all 131 files and in all 115 decrunched ones. The reason is that there is nothing to convert: the 3D view is displayed as a copper list carrying one MOVE per pixel over bitplanes holding a fixed colour-index ramp, with BPLCON4's BPLAM and the BPLCON3 bank alternating every row so the copper fills one half of AGA's 256 colour registers while the other half is on screen — the renderer emits a colour, not an index. Also: the smallest volume on the format (772 sectors, 0.23 % of a CD) whose game still unpacks to 3.86 MB; CrunchMania as the fifth cruncher here, transcribed out of the loader and 115 of 115 files decrunched on the first run, with the credits screen naming its author; a /freeanim byte-identical to Liberation's; and an out-of-memory handler that flashes the screen red and then writes to address zero |
| cd32-legends-doc | Legends (Krisalis Software, 1996) on the Amiga CD32 — a six-floppy A1200 game copied onto a CD that is 89 % full and only 0.72 % game: 28 Red Book tracks over a 4.9 MB data track, with the floppy release's hard-disk installer still on the disc, asking for the 4.7 MB it occupies and offering to format a boot disk in DF0:. The disc reconstructs its own ancestor four ways — six volume assigns, one floppy name compiled into each level, INSERT LEGENDS DISK 5 still in each level's text, and three-language swap prompts — and Legends_Disk4: is claimed by nothing. Every magic-number scan comes back clean and 79 of 111 files are packed anyway, by a container with no magic at all; the decruncher is 201 bytes in the loader and it is Bytekiller, the cruncher Another World used, with the checksum verification taken out. Because the level overlays are crunched hunk files, the front end re-implements LoadSeg in 400 bytes with the decruncher spliced between reading the body and relocating it. Its 34 sprite banks carry no names and the executables name every object in them, one compiled string per level, matching all 34 banks exactly. All 118 timestamps read 1992-03-06, four years before release and three before the console existed. And the credits are digitised photographs of the team — one of whom, Richard Teather, is also the name in the ISO's data-preparer field |
| cd32-liberation-doc | Liberation: Captive II (Byte Engineers / Mindscape, 1994) on the Amiga CD32 — the largest data track on the format, 82,502 sectors, and 91.2 % of it is digitised speech: 1,248 lines recorded twice, stored as bare 8SVX runs with an offset index whose 0xFFFFFFFF entries are the 63 lines nobody recorded. The 3D engine ships as three shared libraries signed (C) Wyvern 1992 — a Blitter renderer, a geometry layer, and a 512-entry sine table with a perspective divide that catches divs.w overflow and halves the scale and retries — and the city's wall surfaces are not textures at all but 10,792 pre-rendered perspective sprites, four banks per file, identical geometry in all 71 files. The game runs three more executables to generate the city, the plot and every conversation, and names byte-identical backup copies of all four as fallbacks. Its boot script mounts a reset-surviving RAM disk and makes it bootable so a reset shows a warning instead of the game. Twelve directory records read 1992-02-05 and the executable's own build stamp says 08-Apr-94, which settles a two-year-early datestamp without a second release to compare against. Akiko is untouched — the best remaining candidate on the format, and the same binary explains why: both CD32-only libraries sit behind one runtime flag. And the disc shipped its text system's source, comments and all, opening with 384 words of notes to translators and the author's phone number, for a localisation that never happened |
| cd32-microcosm-doc | Microcosm (Psygnosis, 1994) on the Amiga CD32 — the first CD32-exclusive disc in this set and the one that answers two of the checklist's oldest questions. 92.3 % of its data track is a single 483 MB file called cbmbuild, holding 30,707 frames of video in 261 movies with no directory: each frame header carries a look-ahead table of the next eleven frame sizes so a 2x drive can stay ahead, and three nested checksums that all sum to the ASCII constant 'COSM' — enforced at run time by the CD_READXL interrupt, and verified here across all 30,707 headers with zero failures. Akiko is untouched, and this disc finally says why: the decoder writes planar bitplanes directly, ten unrolled move.l per row and +5,760 per plane, so there is no chunky pixel in the pipeline to convert — the conversion happened offline on the Silicon Graphics machines the credits thank. It boots from a five-byte startup-sequence reading cosm, uses AmigaDOS exactly once to turn eighteen filenames into raw sector offsets, and then never touches the filesystem again — which is how a retail Psygnosis disc came to ship with the volume identifier CDTV_TEST and every other descriptor field empty. The executable still carries 77 assembler source-file names in its debug hunks, the release build ships its whole debug console with internal hardware error inlined 195 times as the only error message the product has, and the loader's file table names briefing and eolb4 with a presence flag of 0 — cut content the shipped code is written to step over, with the fourth boss's death and cut-scene modules still linked in. Also: a 203-second Red Book track nothing on the disc ever plays, two eleven-byte files each containing their own filename, four sound effects whose IFF ANNO chunks name AudioMaster IV, and a hidden cheat page threatening to suck the colour from the nice graphics |
| cd32-heroquest2-doc | HeroQuest II: Legacy of Sorasil (Gremlin Graphics, 1994) on the Amiga CD32 — a three-floppy A1200 board game pressed onto a CD that leaves 95.4 % of its volume empty in front of the files, and the disc that adds a sixth cruncher to the format by wearing a familiar one. Every block is stock RNC ProPack 1 — right header, right length arithmetic, both CRCs present — and a stock decoder produces output of exactly the right length that fails the checksum every time, because the literals are XORed with a 16-bit key that rotates one bit after every literal run; three variants ship, told apart by each block's own CRC, and the key was solved rather than searched by exploiting the linearity of CRC-16 over GF(2), turning 65,536 candidate decodes into 128. All 106 blocks verify. The executable has no relocations, no symbols and no debug hunks — impossible for six hunks — because it decrunches and relocates itself in 584 bytes, with 5,524 HUNK_RELOC32 entries compressed inside the hunks and a stub that patches its own return address to enter the program. No AGA register anywhere on the disc and Akiko measured to zero: five bitplanes, six in Extra-Half-Brite, graphics.library opened and never called once, and the colour count settled by a 228-byte root command that blanks exactly 32 registers. The floppy release reconstructs itself — three volume names assigned to cd0: and all 91 paths addressed through them, one of which, Level.Map, is not on the disc. And the leftovers: a retail title screen that still calls the game MASTERS, the publisher's logo shipped twice with the unreferenced copy missing its copyright line, the game's entire ending untranslated in the German and French builds, three Red Book tracks the code cannot reach, a floppy disk-swap loop with no callers, a save that stores 24 bytes and reads 238 back, and the string FrogAndParrot — a pub five minutes from Gremlin's Sheffield office — held in a register across the call that loads your saved game |
| cd32-guardian-doc | Guardian (Acid Software, 1994) on the Amiga CD32 — the disc the checklist had been narrowing towards for six titles: CD32-first, nothing on it compressed, and the first genuine real-time polygon engine in the set. Akiko still measures zero, and this one says why in one instruction — the filler is a Blitter cookie-cut, one per polygon scanline, BLTSIZE height 4 so it paints all four interleaved planes at once — so the frame is never chunky and there is nothing to convert; there is no BLTCON1 write anywhere in the program. A six-plane HUD panel sits over a four-plane 3D view on one 239-line display, its per-scanline sky poured out of 4,096 twenty-four-bit LOCT entries per zone by a 7,144-byte copper list, with BPLCON4's BPLAM relocating the whole thing into AGA registers 128–191. Its A1200 floppy release shares 24 files with it byte for byte, packing only the sprite banks that will not fit — which turns this series' compression rule into a controlled experiment. And what shipped: PIRATES FUCK OFF next to the copyright string, a live buffer-overrun canary spelling hElP still checked at run time, the artist's Deluxe Paint working file beside the binary the game reads, a twelfth zone's assets nothing can load, and a boot script whose pressed .bak names a program called sw — the name of the executable on the floppy release |
| cd32-banshee-doc | Banshee (Core Design, 1994) on the Amiga CD32 — the same-label control this set had never had: Core published this and Dragonstone, the predictions were written before the measurements, and almost nothing matches. The three things that do are the three nobody wrote — Commodore's .TM file, a SetPatch whose byte-identity only tracks which Kickstart was on the build machine (three of the four other version-groups in the set pair unrelated studios), and RNC ProPack, whose Dragonstone decoder unpacked all 37 streams first run. Everything either team wrote differs: 71 library calls against zero, dos.library against a hand-written ISO 9660 parser, and Akiko at zero on both halves where Dragonstone drives $B80000 as a drive controller. The one cross-disc regularity found runs through the mastering operator instead — the preparer field is D J Pocock, character for character Liberation's, a different studio and publisher, and those two discs are the only ones in twelve leaving a 232-sector trailing run rather than 32, in volumes of 1,687 and 82,502. And what shipped: a live developer hook in the pressed boot script that executes a script off a volume called DebugDisk: if one is plugged in; picture.exe, 9.5 % of the data track and named by nothing on the disc, holding a 640×512 interlaced HAM8 picture behind three RNC ProPack method 2 streams and a 484-byte stub that decrunches and applies its own relocation tables — a file census calls it “hunk executable, uncompressed” and its entropy of 7.84 gives it away; the installer chain as two zero-byte files; an empty /icons; a flashing-border halt loop; a thirty-eighth filename with no record header naming a volume nothing assigns; and, outside the four-language table, eight English-only lines asking how anyone could seriously want to kill animals and civilians. Four languages, CP437 for German and French and a private six-character substitution for Danish — " is Æ, $ is Å, ~ is ø — settled by the ordering of the hall-of-fame alphabet; and a build banner inside the executable, 8/7-94 12:59 CD32 slutp, that dates the master to the minute and proves the 41 files stamped 1992-12-21 are a wrong clock whose relative times still fit the real 17-minute session |
| cd32-platformnotes-doc | The shared Amiga CD32 / CDTV platform checklist the twelve discs above feed into, so later Amiga CD pipelines extend one copy instead of forking it — disc identification (the system identifier of a CD32 game reads CDTV), the .TM block that belongs to no file, is pointed at only by a field in the volume descriptor, is not always at sector 21 and not always 2,048 bytes, is required for the disc to boot at all, shipped to developers as a file (CD32.TM, CDTV.TM) and holds whatever that file was — not what the console was, three claims here that later discs falsified and that are corrected in place, RNC ProPack, the Imploder and Bytekiller with the argument for lifting a decruncher out of the loader rather than trusting a format description — and the correction that a scan finding no compression magic proves nothing, the AmigaDOS epoch hiding a build log in the directory timestamps, the two greps that say whether a loader touches the OS at all, RNC ProPack method 1 with the bit-reader detail that makes it self-checking, hunk executables, copper lists and interleaved planar bitmaps, and the encodings not to assume |
| pc-grandiahd-doc | GRANDIA HD Remaster — the PSX GPU/SPU/CD libraries reimplemented on D3D11/XAudio2 |
| pc-secretofmana-doc | Secret of Mana (2018 PC remake), a PhyreEngine title |
| pc-ff5-doc | FINAL FANTASY V (2015 PC) and the mobile-port fingerprints in the build |
| pc-fftype0-doc | FINAL FANTASY TYPE-0 HD — PSP heritage and the HexaDrive render layer |
| pc-talesofberseria-doc | Tales of Berseria (2017) — container format and obfuscation |
| snes-talesofphantasia-doc | Tales of Phantasia on SNES (1995) and GBA (2003), side by side — one of only two commercial ExHiROM carts, no enhancement chip, and its entire 4 KiB boot page duplicated so the same code runs through either window. The in-house LZSS codec is specified and reimplemented: back-references copied with MVN, the length nibble cancelled arithmetically, and the inner loop carried four times because the block-move opcode encodes its banks immediately. There is no global file table — 99 call sites name their assets with literal bank:offset immediates, and the four sparse directories that do exist cover 147 blocks out of 1089. The 2003 rebuild replaces every layer with Nintendo's stock equivalent yet still inherits a 1 KiB metatile table byte for byte, and 735 bytes of ASCII credit the two programmers who left mid-project to found tri-Ace |
| ps1-talesofdestiny-doc | Tales of Destiny (Namco / Wolf Team, PlayStation 1997) — a disc that hands its file system to the program. ISO 9660 lists 29 files, five of them undifferentiated multi-megabyte blobs, and what divides the 131 MB map archive into 1,315 maps is a 10 KiB array of offset/length pairs compiled into SLPS_011.00; delete the executable and 131 MB of the disc becomes unaddressable. Everything else is stock Sony — TIM, SEQ, VAB, XA, MDEC — so the only format Namco wrote is the compressor, and 6,638 of 6,638 packed blocks decode to exactly the length their own header declares. The entire script, 538,900 Shift-JIS strings, sits inside the map archive, and two developer scene-select menus went to press with it: one offering a fake ending, one carrying a note from one programmer to another — in the current build, talk to the boatman. The naval mini-game still has its frame profiler compiled in, with a rank ladder running SEAMAN to GENERAL and then MONKEY and BROKEN; a \DEBUG.TXT probe still runs on every pressed copy; the stored-block path is wired to the wrong pointer and no block ever takes it; and the pad file's extent names the CD-DA audio track |
| ps1-talesofeternia-doc | Tales of Eternia (Namco / Wolf Team, PlayStation 2000, disc 1 of three) — the title that shows the codec was not reimplemented but recompiled: the first 53 and 50 words of its two decompressors are identical to Destiny's byte for byte, and those prologues carry no address constants for a relocation to change. 21,054 blocks decode, 204.7 MB → 485.9 MB; the stored path that was dead and mis-wired in 1997 is fixed here and used 969 times; five blocks overrun their declared length by exactly one byte, and the console does it too. Half the 178 MB map archive — 90.5 MB, 50.6% — is eight sprite sheets stored about 870 times each, one copy per map, disc space traded for a single seek per load. The whole typeface lives in the executable: 3,426 glyphs, 11×11 at 1bpp, the complete JIS X 0208 level 1 set, right-aligned in an eleven-pixel cell whose 121st bit has nowhere to live. Map 0 is the developer debug room, in Japanese, on the retail disc — party editor, craymel grant, a 2,048-flag switcher, and a note from whoever maintained it to whoever kept filing requests: give me a break already, do it yourselves. The executable still carries a stale copy of the B.D directory, wrong in 1,289 of its 1,290 entries, from the build before that one table moved onto the disc; and 63 MB of uncleared mastering buffers inside the XA files spell out the source tree of the voice authoring — mp\chat.wav\skit.xa\, one path per interleave channel, which is what names all three archives |
| ps2-talesofdestiny2-doc | Tales of Destiny 2 (Namco Tales Studio, PlayStation 2 2002) — the title that carried the 1995 compressor across a console generation. 9,469 of 9,469 blocks decode byte-exactly under the shared reference decoder with no PlayStation 2 branch added, 329 MB → 1,413 MB; the decoder itself could not be the same object this time, because the EE is an R5900, and the measurement says exactly that — 0 identical words against the 2000 build against ~50% of the same opcode sequence, the immediate 4078, the ring in a3 and the eight-wide unroll all held constant. Sixteen files on a 3.23 GB DVD, two of them 95% of it. FILE.FPB has no header at all: its 9,206 members are described by an array compiled into SLPS_251.72 that packs each member's padding into the low six bits of its 64-byte-aligned offset — one u32 for extent and exact length, ending on the archive's size to the byte. The linker left 77 empty marker sections naming every overlay in the game, enough to identify 65 of 70 anonymous members of MIPS code, among them a sound test and a model viewer; the 461 scene bundles are 47.2% copies, ten members stored 461 times each; and all 7,424 TM2@ pictures turn out to be palettes, never images. Riding along is 173 MB of a different, unreleased game — a promo build of Venus & Braves, out eight months later — shipped with 2,923 of its 2,939 files replaced by a single space, its entire build manifest intact, seven of its nine asset directories named after the people who filled them, and one 56 KB animation that escaped the stubbing. It also carries a TLS stack and a hard-coded RPC endpoint for eight IOP modules that are not on the disc — and, decisively, no copy of the codec: two Namco teams, one disc, one console, one year, and only one of them used it |
| gc-talesofsymphonia-doc | Tales of Symphonia on GameCube (2003, two discs) and PlayStation 2 (2004, one disc), side by side — the same game thirteen months apart, with the number of discs as the only variable. The 1995 compressor reaches a big-endian console and does not change: main.dol carries the decoder four times, two routines each linked twice byte for byte, with 4078/4079 as subfic/cmpwi/addi, the ring masked to twelve bits, flags | 0xFF00, and the copy loop unrolled by eight — and the nine-byte block header stays little-endian, four bytes from a big-endian archive count, because the decoder assembles each size one lbz at a time and never had a reason to notice. 487 of 487 blocks decode on each disc under the shared reference decoder with no GameCube branch. Then 2004 breaks a chain unbroken since 1997: on the same R5900 as the 2002 title, the longest identical byte run at any alignment is 6 bytes against that pair's 212 — and not only because the compiler changed, since the dictionary clear became a call to an Emotion Engine quadword bzero with 4,080 where every build from 1997 to 2003 used 4,078, rounded up to divide by sixteen. The two-disc split cost 1,002,806,753 bytes: 1,588 files sit on both discs under the same path with the same bytes, duplication inside one disc is 0.1% and on the single-disc port also 0.1%, so the whole 36.0% across the set exists because there are two spindles — 1.78 GB of distinct content against a miniDVD's 1.46 GB made one disc impossible, and both discs run 95–96% full with their last file ending on the final byte, so there was nothing to trade. And the packer, invisible across four titles, is finally measured: nineteen files repacked from identical input come out with identical block counts and identical unpacked lengths and larger every time, +0.72% to +5.21%. Left behind: a battle archive for Rutee Katrea of Tales of Destiny (1997) dated 2003-02-07, four and a half months before every other one and deleted for the port; ten map files named after members of the team; six of eight relocatable modules nothing can load, one a debug build carrying its assertions and the only build path on either release, ./Btl/Debug/debug; movies called tod2_cut.h4m; forty-five archives wearing a Microsoft Cabinet header no cabinet reader can open but holding the only per-asset timestamps on either disc; nine CVM volumes still named SAMPLE_GAME_TITLE; host0: devkit paths in the retail executable — and a project called top2 |
| ps2-talesofrebirth-doc | Tales of Rebirth (Namco Tales Studio, PlayStation 2 2004, Japan only) — the disc that shows the decoder had forked per title, and proves it instead of arguing it. Three months after Symphonia's PlayStation 2 port and on the same R5900, the longest identical byte run between the two decoders, at any alignment anywhere in either executable, is 17 bytes — while 932 bytes of Rebirth's own C runtime, the same needle length measured the same way against the same files, match Symphonia for 276 contiguous bytes and the 2002 title for 288. All three PlayStation 2 games link the same runtime objects byte for byte, so byte equality is demonstrated between exactly the pair whose decoders share nothing, and the toolchain explanation the 2004 finding had to hedge with is closed off by measurement; the positive control, 1997's decoder searched for blind in the whole of 2000's executable, still returns 212. The constant agrees: 1997–2003 clear the dictionary inline with 4078, Symphonia 2004 calls a bespoke quadword bzero with 4080, and this build calls the ordinary library memset with 4079 from a factored ring_init neither other has — 4080 appears nowhere in its executable. Three builds in thirty months, three ways to clear one array, and the format does not notice: 2,851 of 2,851 blocks decode under the unmodified shared decoder across three levels of nesting, 285 MB → 1,061 MB, with zero stored blocks, nothing expanded, and the ~1 MB block ceiling of 2003 still in force. Seven files and zero directories on a single-layer DVD that is 99.52% full and contiguous end to end — so Symphonia's 686 MB interior gap was not studio policy. No CRI middleware, no CVM, no FILE.FPB, and zero MSCF in all 4,508,516,352 bytes, which retires the .cab as a studio convention; what survived from 2002 is the mechanism — three headerless .BIN blobs indexed from .data with the padding packed into the low six bits of each 64-byte-aligned offset — and 744 SCPK bundles the 2002 pipeline's parser reads unchanged, 46.3% of their bytes copies. Left behind: the whole cast romanised into English, surname first, in a game never published outside Japan, beside thirty-eight English place names including Farm Fresh Groceries and a hundred effect names with INPACT *2 and AUTO DEFFEND among them; BISLPS-00000ToRsv%02d eight bytes from the real save string; initialize debug window; the devkit's host0: still reachable behind fatal : '%s' is not found; a [CommonEffectDraw] sc-decode buffer over!! that names the decoder; MINI GAME 3 in a build with two minigame overlays; 359 empty index slots; two vector-unit sections called unknvma because the assembler could not resolve an address and said so — and, for the first time in three discs, nothing from any other title |
| keitai-talesoftactics-doc | Tales of Tactics (Namco, NTT DoCoMo i-appli 2004) — the free trial of a keitai Tales, recovered by the Keitai World preservation project, and the first build in this set that is not a console game. It was compiled 16 December 2004, the day Tales of Rebirth was released, and it is where the 1995 compressor stops. The corpus's usual shortcut cannot even be run here: a JVM has no wide immediate field, and 4078 may be a CONSTANT_Integer, a sipush operand, or computed and never present at all — so a class file parser was written in the Python standard library and all 6,286 integer constants were read in every delivery path. 4078, 4079, 4080, 0xFF00 and 0x0FFF are all absent, no 4,096-element ring is allocated, no nibble-pair token or +3/+19 run escape appears, and the unmodified shared decoder handed 35 payloads and 971,959 bytes in both dialects returns zero blocks; three sibling i-appli measured as a control take it to 2,470,639 bytes, 37,936 constants, 11 class files, still zero — and two of the three are obfuscated where this one is not, so it is not the tooling. What is there instead is deflate twice, and the application wrote neither layer: the JAR, then every downloaded file served as its own one-entry JAR and inflated by the platform's JarInflater. The budget is not inverted, which is the surprise — Rebirth spends 67.2% of 4.5 GB on video and voice, this spends 63.3% of 369,509 bytes on images and sound, four points apart at 13,076× the scale; the 100 KiB cap changed not how much media there was but where it was allowed to live, since inside the metered download media is 0.0% and the program 93.9%, and the largest non-code cost is 23.0% of StackMap, a table the CLDC preverifier levies and the program never reads. Nothing is obfuscated, so the leftovers are the richest in the set: 311 method and 421 field names, the complete engineering credit roll shipped inside the JAR, a six-state game loop recovered from one 37-instruction method, 653 bytes of bytecode nothing calls — including the only constructor of a 3D Texture, so the tactical map ships as untextured coloured primitives with the texturing path written and unwired — and the whole dead server protocol: not one absolute URL in 3,690 constant pool entries, the base from getSourceURL() and everything else from the JAM's own AppParam, four endpoints, a 31-day window delivered as 2,678,400 seconds, and uid=NULLGWDOCOMO beside GetUtn = terminalid,userid. Episodes handed progress to each other through tales-m.com, so with the host gone the retail game is not merely unpreserved but unfinishable. And a 16-record party table holds the male and female lead of Phantasia 1995, Destiny 1997, Eternia 2000, Destiny 2 2002 and Symphonia 2003 — the five titles that do carry the codec, in order — with Rebirth absent from all seven of its cast because the roster was frozen in July, plus five empty seats named with the katakana vowels |
| ps2-talesoflegendia-doc | Tales of Legendia (Namco Tales Studio, PlayStation 2 2005, Japan only) — the disc that has the format without having the code, and changes the container instead. The constant scan returns one 4078 and it is the decoder: an inline zero loop unrolled by eight, ring at 0x004A0AE0, mask 4095, cursor at RING − 18 — the 1997–2003 mechanism, not Symphonia 2004's quadword bzero at 4,080 nor Rebirth 2004's library memset at 4,079, so four PlayStation 2 builds in thirty-two months now clear one array four ways and the fourth way is the first way. Yet 872 bytes of that decoder searched at any alignment through whole executables score 21 against Symphonia and 20 against Rebirth — and 20 against VENUS.ELF, the corpus's own executable-with-no-decoder-in-it, so it resembles its nearest sibling exactly as much as a file that contains nothing resembles it. Byte equality was available and is shown twice: the same-length needle taken from this build's own C runtime saturates against Symphonia, and widening it until the answer stops growing gives 2,420 contiguous identical bytes between two executables that both stamp MW MIPS C Compiler (2.4.1.01) — 2,420 of library, 21 of decoder, same compiler. Then the envelope moves for the first time since 1995: the nine-byte header with its method byte becomes CPS, sixteen bytes with no method byte, no run escape, and — the first change to the dictionary since 1997 — no synthetic preload, ring_init clearing 4,078 bytes and returning, which means the packer stopped emitting references into it too or nothing would decode. Inside that envelope nothing moved, and 4,508 of 4,508 members decode under the unmodified shared decoder, 1,176,881,049 → 2,098,653,952 bytes; the decoder itself is a resumable state machine keeping cursor, mask, control register and a 0..3 state word in five gp-relative globals, which nothing else in the lineage is. Six CRI AFS archives hold 24,835 members sized by parallel MBS tables — one u32 of in-memory size per member, correct on 24,834 of them and sixty bytes short on the other — eight months after Rebirth shipped with no CRI at all, alongside ADX, AHX, Sofdec and a cvFs volume API linked for a .CVM that is not on the disc. CDVD.000 is 26.31% of the disc: a 0xFD prologue, a 608 MB two-valued tail, a stamp a year older than every other file, 1,430 CPS members on 2,048-byte boundaries that all decode exactly, Metrowerks code, a TLPKv1+50 tag — and no index anywhere that refers to it. The soundtrack is 136,763 bytes: thirty music cues are MIDI sequences played by a KORG IOP Sound Driver out of 25.8 MB of sample banks, where Rebirth streamed 1.30 GB, which is why media is 37.70% of this disc against 67.2% of that one — a large score and a small audio budget being the same fact from two sides. Left behind: host0:C:\tox\fieldwork\dev\field\, naming the project root; BISLPS-25533TOL-S with the real product code compiled in where Rebirth left five zeroes; a KORG USB-MIDI DRIVER naming Roland UM-1/UM-2/UM-4 and YAMAHA UW500/UX96/UX16 by model, the composer's studio rig on a retail disc; CRI's build stamps to the second, nine components in twenty-six seconds on 12 April 2004, never rebuilt; three CRI functions whose bodies are not implemented; 263,645 bytes of network stack in a single-player game; an AFS/FLIST.DIR of six DOS paths listing the archives in a different order from the index the game actually reads; mov_03 and mov_16 missing from a set that runs to 24; twenty DANG* streams byte-for-byte identical to each other; and — unlike Rebirth, which romanised its whole cast — no English name table at all, the cast surviving only as the three-letter prefixes that make 16,261 sound files a countable line tally in which the protagonist is not the most-recorded character |
| ps2-talesoftheabyss-doc | Tales of the Abyss (Namco Tales Studio, PlayStation 2 2005, Japan) — the disc that puts the code back four months after Legendia took it away, and names which copy it came from. 872 bytes of its decoder searched at any alignment through whole executables score 69 against Symphonia's PlayStation 2 port — against 14 for VENUS.ELF, the corpus's own executable-with-no-decoder-in-it, and 18 for Legendia — while the same-length needle from its own C runtime returns 632 against both neighbours and saturates there at an 8 KiB needle, with all three files stamping MW MIPS C Compiler (2.4.1.01). Byte equality was equally available against both and only one of them gave any. Sharper still: SLPS_254.00 carries the codec four times, in two pairs sharing 2 identical words in 276 with each other, and this build scores 4 bytes against the quadword-bzero-at-4080 pair the 2004 headline was made of and 69 bytes / 31 identical words in 200 against the copy in the same file nobody edited — diverging on register allocation and nothing else, daddu t7 against daddu t4, with the two dispatchers matching for 10 words of 44 in a routine that is mostly branch offsets. One of Symphonia's two copies has descendants; the other does not. The envelope reverts completely: Legendia's sixteen-byte CPS chunk is absent from 4.36 GB (seven hits for CPS /CPS\0 against a chance rate of about one each, every one located inside video or audio payload), and the nine-byte header is back whole — methods 0/1/3 used directly, a 4,096-byte ring rebuilt on the stack every call, both synthetic preload loops, the run escape with its +19. 47,513 of 47,513 blocks decode under the unmodified shared decoder, 1,069,278,379 → 2,643,327,828, zero stored, nothing expanded — and 46,345 of them were nearly missed, because they sit inside twenty-seven members with no container header at all, flat runs of sector-aligned blocks where F0.PKF is 37,951,488 bytes whose first nine are a valid header, so a member-level census decodes 163,176 of them, matches the declared length and reports success. The shortcut needed a correction too: the ring clear here is unrolled by eight, so its bound is 4071/4070 and the 4078/4079 hit is the cursor, 135 and 139 words into the routine — and the unroll turns out to be the compiler's, since Legendia shares 18 bytes with this decoder and unrolls the same loop identically while Destiny 2, the one build with no compiler string, does not. Nine CRI ROFS volumes built by the same ROFSBLD Ver.1.52 2003-06-09 that made Symphonia's eighteen months earlier, still shipping SAMPLE_GAME_TITLE, holding 3,047 members with real per-asset dates — the first in the lineage that has them — and inside those, AFS and the studio's own FPS3/FPS2, whose FPS2 count field is a trap: every one declares 67 slots and none has more than seven. A quarter of the disc is geometry, the first here whose largest class is not media: compressed data 24.54%, voice 22.61%, video 22.52%, ADX 16.53%, with 13.60 hours of AHX across 12,643 streams that share one identical frame header, 4.62 hours of ADX, and — like Legendia, unlike anything before it — a MIDI player on the I/O processor for six sequences totalling 77,584 bytes next to 621 MB of streamed music. And it is not a clean disc, where Rebirth and Legendia were: 109 sound effects carry the prefix tor_, and all 105 of their distinct names — stripped of it — are present on Tales of Rebirth's own image, whose effect table reads no_se_mp_steps00 … no_se_mp_steps12, though no audio body matches, so the library was re-encoded rather than copied. Three battle models are named FIRIA, RID and NANARI — one lead each from 1997, 2000 and 2002 — and they are the three oldest game assets on the disc, four months older than the protagonist's own, tagged exc000–exc002 in a series running to at least exc006, and named nowhere in any code. Left behind: twenty-five absolute source paths under C:\TO7\prog\, recovered because three Metrowerks-built I/O processor modules kept 113, 85 and 74 un-merged .comment sections apiece; the complete BGM track list in English in a Japan-only release, beside a CSoundMode* sound-test class family, where the single occurrence of the word abyss anywhere on the disc is track one; nine Visual SourceSafe VSSVER.SCC files, one per volume, five of them the newest member of their volume; 36 Metrowerks MWo3 overlays in nine unexplained configurations, all distinct; 611 copies of one 13,810-byte dummy.adx filling the unused slots of the sound-effect archive, with five AFS archives holding nothing but their dummy; a monster encyclopedia that says it is not implemented and a debug string reading debug-only? comp_dict_XXX does not work; RenderWare, the only disc in the corpus that uses it, down to c:/daily/rwsdk/plugin/pds/sky2/; CRI's whole library stamped inside a twenty-nine-second build; a Sony SDK module from 2000-04-25, five years older than everything else; and the staff credit roll shipped as plain Shift-JIS text anyone could open |
| tales-blockcodec-doc | The shared Tales block codec the carts and discs above feed into, rather than each forking a copy — Wolf Team's in-house LZSS, on the Super Famicom in 1995, on the PlayStation in 1997 and again in 2000, on the PlayStation 2 in 2002, on the GameCube in 2003, on the PlayStation 2 twice more in 2004 and once again in 2005. The same nine-byte header, the same method numbering in its low bits, the same 4 KiB window, and the same run escape with the same two constants: +3 and +19. On the 65816 those fall out of MVN, which transfers A + 1 bytes; the MIPS decoder has no MVN, no reason to be off by two, and is off by two anyway. What 1997 added is a 4 KiB ring preloaded with 3,840 bytes of synthetic tile-shaped data before a single token is read — and instrumenting all 20,085 compressed blocks of the 2000 disc shows where the packer actually goes: 72.9% of its reads of that untouched dictionary come from the plain zeroed tail, from 36 addresses out of 256, and not one block ever reads a byte the decoder never initialised. By 2000 it is no longer merely the same format: 212 bytes of the decoder are the same object code. By 2002 byte equality is off the table — a new CPU — and what survives instead is the source: half the opcode sequence and every constant a compiler does not get to choose. By 2003 it survives a change of byte order as well, on a PowerPC whose containers are big-endian while the codec's own header stays little-endian, because nothing in it was ever read as a word. And in 2004 the chain breaks twice over. Symphonia's port shares 6 bytes with the 2002 build on the same CPU and clears the dictionary with a quadword bzero at 4,080 instead of 4,078; three months later Rebirth shares 17 with Symphonia and clears it a third way, a library memset at 4,079. That last pair carries the control the others could not: 932 bytes of shared C runtime match for 276, so byte equality was available and the decoders simply are not the same source. The finding is therefore not that somebody edited the source once — it is that by 2004 there was no longer one copy of it to edit — and the format did not move a bit through any of it. The packer surfaces at the same moment: nineteen files packed twice from one input, a year apart, segmented identically both times and 2.49% larger the second — leaving it the only thing in the lineage that provably never forked. The 2003 GBA rebuild of Phantasia does not use the codec at all, neither does Venus & Braves, which shares a disc with the 2002 title, and neither does the i-appli Tales of Tactics, built the day Rebirth shipped and measured clean across 2.47 MB and 37,936 integer constants — so the codec followed the codebase, not the company, the console, the series or the year, and the boundary is one of inheritance: a Java application on a phone had nothing to inherit. The ninth build then makes inheritance mean something weaker than it had. Tales of Legendia (2005) shares 21 bytes of decoder with Symphonia against the 20 scored by an executable with no decoder in it, while 2,420 contiguous bytes of C runtime are identical between the same pair and both stamp the same compiler — and it wraps the format in a sixteen-byte header with no method byte, drops the run escape, and stops preloading the dictionary at both ends at once, while 4,508 of 4,508 members still decode unmodified. What crossed to that build was the specification, not the file: somebody had every constant, the nibble order and the +3 exactly, and had neither the source nor the container. The tenth build then restores the half the ninth had removed, and it does so as a three-way test with no preferred answer: Tales of the Abyss (2005), four months later, scores 69 bytes against Symphonia's port — against 14 for the no-decoder control and 18 for Legendia — with 632 contiguous bytes of shared C runtime against both neighbours, and it descends from a specific one of the four copies SLPS_254.00 carries: 4 bytes against the quadword-bzero-at-4,080 pair the 2004 finding was made of, 69 against the copy in the same file nobody edited. So the codebase was carrying two things at once — a source file that kept being compiled and a specification good enough to re-implement from — and three edits of that source are now on record, none of which propagated. The format and the code that implements it are two different objects, and only one of them has ever been stable. Those two builds also forced the checklist's only real revisions: the 4078 scan assumes immediate fields in fixed-width instruction words and a virtual machine has neither; the scan finds the cursor, so on a build whose ring clear is unrolled by eight the hit lands 139 words inside the routine and 4070/4071 are needed to reach its top — and those two turn out to identify the toolchain, not the packer; and a census must not stop at the member level, because a member can be a flat run of sector-aligned blocks with no header of its own, which is where 46,345 of Abyss's 47,513 live and where a member-level pass reports a length match and moves on. One reference decoder reproduces every dialect byte for byte, 1,089 blocks on the cartridge and 93,142 across nine disc images, without a line changed for any of them |
| pc-infiniteundiscovery | Infinite Undiscovery (tri-Ace, Xbox 360) and the ASKA engine |
| android-talesofcrestoria-doc | Tales of Crestoria (Bandai Namco, 2020) — a dead gacha running on tri-Ace's ASKA, twelve years after the Xbox 360: the same SLZ container with Zstandard bolted on, the same texture header field-for-field in little-endian, Direct3D 9 shader profiles still sitting inside a GLES3 cache — and a shipped native library with 99.7% of its code zeroed out |
| wii-thelaststory-re | The Last Story (Wii) and the LastWorld engine |
| snes-rudranohihou-re | Rudra no Hihou (SNES, Square) — the Japanese text system |
| Repo | What it is |
|---|---|
| chiproll | Browser piano roll for chip music — NES, Atari TIA and POKEY. No install, no build, no server |
| pc-mediacatalog | .NET 8 / WPF media cataloguer — perceptual-fingerprint duplicate detection across re-encodes |
| silicon-relics | The wider Silicon Relics codex — a showcase site covering work beyond what is published here |
<platform>-<subject>, where the platform is the target, not the origin. So psx-lba is Little Big Adventure running on PlayStation, and pc-mikie is an arcade game brought to PC.
Two suffixes narrow it further: -doc is documentation only, and -re is a reverse-engineering devlog. Anything without a suffix ships runnable code.
These repositories are part of a larger, ongoing body of cross-console work — an analog-horror ARG series and the homebrew and reverse-engineering that underpins it, spanning many years and many forgotten machines. Which platforms, and in what order, is something the series leaves for players to discover.
This is where that technical work surfaces publicly first.
This is a human + LLM collaboration, stated openly because the honesty is the point. Claude acts as a technical bridge: I bring decades of domain knowledge and direction — knowing these platforms, recognising when a result is a genuine first, and deciding where it's worth digging — and Claude provides implementation across architectures I could not otherwise approach: the drivers, the emulator patches, the disassembly and log forensics, the documentation. Neither side reaches these results alone.
I'm a professional technical translator, a field heavily affected by AI, and I hold a deliberate position about it: AI used for net-new work that displaces no one — reverse-engineering an abandoned console that nobody else was working on — is the case worth defending. Visibility of the collaboration is part of that argument, not a disclaimer.