Skip to content

Add MiSTer FPGA platform support#50

Open
Takiiiiiiii wants to merge 2 commits into
Abdess:mainfrom
Takiiiiiiii:add-misterfpga-platform
Open

Add MiSTer FPGA platform support#50
Takiiiiiiii wants to merge 2 commits into
Abdess:mainfrom
Takiiiiiiii:add-misterfpga-platform

Conversation

@Takiiiiiiii

@Takiiiiiiii Takiiiiiiii commented Apr 5, 2026

Copy link
Copy Markdown

Add MiSTer FPGA as a supported platform

What is MiSTer FPGA?

MiSTer FPGA is an open-source, FPGA-based hardware platform that faithfully recreates vintage consoles, arcade hardware, and computers at the gate level. Unlike software emulation, MiSTer cores reproduce the original hardware's behavior cycle-accurately on reconfigurable logic.

The MiSTer community maintains 100+ console, arcade, and computer cores. Many cores require the original system's BIOS ROM to boot. Today, MiSTer users rely on ajgowans/BiosDB_MiSTer (consumed via MiSTer Downloader / Update_All_MiSTer) to fetch BIOS from archive.org — a single point of failure.

What this PR adds

platforms/misterfpga.yml — a MiSTer FPGA platform definition following retrobios's existing schema, cross-referencing 31 BIOS files across 17 MiSTer cores to canonical retrobios entries by MD5.

Systems covered (17):

  • 3DO Interactive Multiplayer (3do)
  • Atari Lynx (atari-lynx)
  • Philips CD-i (philips-cdi)
  • Tandy TRS-80 Color Computer 3 (coco3)
  • Game Boy / Game Boy Color (game-boy)
  • Game Boy Advance (game-boy-advance)
  • Intellivision (intellivision)
  • MSX1 (msx)
  • Sega CD / Mega-CD (sega-cd)
  • Neo Geo (AES/MVS) (neo-geo)
  • NES / Famicom Disk System (nes-fds)
  • Neo Geo CD (neo-geo-cd)
  • Sony PlayStation (playstation)
  • Pokémon Mini (pokemon-mini)
  • Super Game Boy (super-game-boy)
  • Super NES / Super Famicom (snes)
  • Sega Saturn (sega-saturn)

Gap analysis — what's not yet mapped (and where to find it)

The following BIOS files are required by MiSTer cores but aren't matchable against retrobios's current database by MD5. Each is listed with its known archive.org source (from ajgowans/BiosDB_MiSTer) so retrobios maintainers can evaluate adding them. Three root causes:

(A) Systems not in retrobios at all — 14 cores

These cores have zero files in retrobios. Most are obscure handhelds / Japan-only computers that mainstream emulator databases don't cover. BIOS sources:

MiSTer path Size MD5 Source (archive.org via BiosDB)
games/Astrocade/boot.rom 8,192 7d25a26e5c4841b364cfe6b1735eaf03 archive.org
games/Casio_PV-2000/boot0.rom 16,384 558540c5c6f776d88a897f2f3b8fec8f archive.org
games/CreatiVision/boot.rom 16,384 4dfadfb1158f84e2df2b85b13f303986 archive.org
games/Gamate/boot.rom 4,096 ef67993a94503c4b7798b5901c7dda52 archive.org
games/Interact/boot.rom 2,048 aa9fb0e9697a009dfb9d876351dd8f48 archive.org
games/Jaguar/boot.rom 131,072 6e844759720226e58d55ecaf33608a13 archive.org
games/Jaguar/boot1.rom 262,144 948447d009b89b51e72b17e80c470b81 archive.org
games/Jaguar/boot2.rom 131,072 4af00f1c26898cf04585e1693d25faba archive.org
games/N64/boot.rom 1,984 5c124e7948ada85da603a522782940d0 archive.org
games/N64/boot1.rom 1,984 d4232dc935cad0650ac2664d52281f3a archive.org
games/PC8801/boot.rom 393,216 f1ce4d5f83717093982e5f75516b8f3c archive.org
games/PocketChallengeV2/boot.rom 4,096 54b915694731cc22e07d3fb8a00ee2db archive.org
games/PocketChallengeV2/boot1.rom 8,192 880893bd5a7d53fff826bd76a83d566e archive.org
games/SCV/boot.rom 6,144 b596975be2e0360232bbeb1e492ab873 archive.org
games/TGFX16-CD/cd_bios.rom 262,144 98d43a097a165b03df170fd5c2ad2c2f archive.org
games/TI-99_4A/boot0.rom 196,608 a75bb208176c0aed1b6a04b2dcf4770c archive.org
games/WonderSwan/boot.rom 4,096 54b915694731cc22e07d3fb8a00ee2db archive.org
games/WonderSwan/boot1.rom 8,192 880893bd5a7d53fff826bd76a83d566e archive.org
games/WonderSwanColor/boot.rom 4,096 54b915694731cc22e07d3fb8a00ee2db archive.org
games/WonderSwanColor/boot1.rom 8,192 880893bd5a7d53fff826bd76a83d566e archive.org

(B) Partial cores — specific files missing

retrobios has some of these systems' BIOS files but not all of them. The YAML already includes whatever is matchable; these rows are the ones still missing:

MiSTer path Size MD5 Source (archive.org via BiosDB)
games/CD-i/boot2.rom 131,072 9694c466f9b65c1990a81b7a6280546b archive.org
games/MegaCD/boot.rom 131,072 14db9657bbaa6fbb9249752424dc0ce4 archive.org
games/NEOGEO/neo-epo.sp1 131,072 b11751ad42879c461d64ad2b7b2b0129 archive.org
games/NEOGEO/sfix.sfix 131,072 aa2b5d0eae4158ffc0d7d63481c7830b archive.org
games/NEOGEO/sp-s2.sp1 131,072 2968f59f44bf328639aa79391aeeeab4 archive.org
games/NEOGEO/uni-bios.rom 131,072 4f0aeda8d2d145f596826b62d563c4ef archive.org
games/PSX/sbi.zip 218,953 706d60ab2dfdbfdd53be2069cb85a1fe archive.org

(C) Hash mismatch — same system, different dump/format

retrobios has entries for these systems, but with different BIOS revisions or file formats than MiSTer expects:

  • TGFX16-CD (cd_bios.rom): retrobios has syscard3.pce at 262,656 bytes; MiSTer expects 262,144 bytes — identical content, but retrobios's version has a 512-byte header prefix that changes the MD5. Could be resolved by adding a headerless variant.
  • CreatiVision: retrobios has bioscv.rom (2KB); MiSTer wants boot.rom (16KB) — different revision entirely.
  • Jaguar: retrobios has [BIOS] Atari Jaguar (World).j64 (131KB single file); MiSTer has three separate boot*.rom files with different hashes from different source dumps.
  • Astrocade / Casio PV-2000 / Gamate / SCV / TI-99_4A: retrobios stores these as MAME-format ROM zips (containing multiple files packed together), not as individual raw BIOSes. The MD5 of the zip ≠ the MD5 of the BIOS inside. Would be resolved if retrobios unpacked the individual files alongside the zips.

Schema choices

  • base_destination: games — MiSTer stores BIOS at /media/fat/games/<Core>/<file> on the SD card. The games base is relative to the MiSTer SD card root.
  • hash_type: md5 / verification_mode: md5 — MiSTer's BiosDB uses MD5 as its canonical hash. This matches BiosDB's verification behavior.
  • Destinations use MiSTer's expected filenames (boot.rom, boot0.rom, cd_bios.rom, etc.) rather than the BIOS's native filenames — these are what each MiSTer core actually looks for.
  • Each system's docs: field points to the corresponding MiSTer-devel GitHub core repo.

How this was generated

Programmatically from the live BiosDB database cross-referenced with retrobios's database.json by MD5 hash. Source: Takiiiiiii/MiSTerFPGA-BIOS. Every file entry has been verified to exist in retrobios with matching MD5, SHA1, CRC32, and size.

Generated: 2026-04-06T05:49:05Z

Testing

# Validate YAML syntax
python3 -c "import yaml; yaml.safe_load(open('platforms/misterfpga.yml'))"

# Sanity check counts
grep -c '^  [a-z]' platforms/misterfpga.yml  # systems
grep -c '    - name:' platforms/misterfpga.yml  # files

Adds platforms/misterfpga.yml mapping 17 MiSTer cores (31 BIOS files)
to canonical retrobios entries by MD5, sourced from the live
ajgowans/BiosDB_MiSTer community database.
@Takiiiiiiii Takiiiiiiii requested a review from Abdess as a code owner April 5, 2026 22:45
@Takiiiiiiii Takiiiiiiii force-pushed the add-misterfpga-platform branch from eb5c4b8 to 7da8d2f Compare April 6, 2026 05:54
@Takiiiiiiii

Copy link
Copy Markdown
Author

Any progress on this PR review?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants