Skip to content
View vs-sr-dev's full-sized avatar
  • Italy

Block or report vs-sr-dev

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
vs-sr-dev/README.md

Silicon Relics

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.


๐Ÿ•น๏ธ Homebrew

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.

๐Ÿ”€ Ports & reimplementations

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.

๐Ÿ“– Documentation & reverse engineering

Platform research

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

Game and engine documentation

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

๐Ÿงฐ Also

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

Reading the repository names

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

The wider Silicon Relics project

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.

On method and attribution

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

Popular repositories Loading

  1. dc-lba2 dc-lba2 Public

    Forked from LBALab/lba2-classic-community

    Sega Dreamcast port (KallistiOS) of the original 1997 Adeline source of Little Big Adventure 2 / Twinsen's Odyssey. V0.9 alpha โ€” only the opening + first-island transitions are validated on Flycastโ€ฆ

    C++ 2

  2. pc-mediacatalog pc-mediacatalog Public

    C# 2

  3. vis-wolf3d vis-wolf3d Public

    Homebrew port of Wolfenstein 3D to the Tandy/Memorex Video Information System (VIS, 1992) โ€” Win16 native, OPL3 audio, MAME-tested

    C 1

  4. vis-synth vis-synth Public

    OPL3 polyphonic synth for the Tandy/Memorex VIS (1992) โ€” pad-driven instrument, SMF MIDI file player, and live MIDI from host hardware via custom MAME bridge

    C 1

  5. chiproll chiproll Public

    Browser-based piano roll for chip music. NES and Atari TIA, no install.

    JavaScript 1

  6. 3do-omf2097 3do-omf2097 Public

    A playable port of One Must Fall: 2097 to the Panasonic/3DO, built on OpenOMF

    C 1