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 |
| cd32-platformnotes-doc | The shared Amiga CD32 / CDTV platform checklist the three 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 trademark block that belongs to no file, is pointed at only by a field in the volume descriptor, is not always at sector 21, is byte-identical on three unrelated discs across fourteen months, and turns out to have shipped to developers as a file called CD32.TM, 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 |
| tales-blockcodec-doc | The shared Tales block codec the two carts and discs above feed into, rather than each forking a copy โ Wolf Team's in-house LZSS, on the Super Famicom in 1995 and again on the PlayStation in 1997. 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. The 2003 GBA rebuild of Phantasia does not use the format at all โ the codec followed the team, not the series โ and one reference decoder reproduces both dialects byte for byte, 1,089 blocks on the cartridge and 6,638 on the disc |
| 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.
โ @vs-sr-dev