diff --git a/README.md b/README.md index d72b2f7a..b19e53ca 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Each file is checked the way your platform checks it. Most compare a checksum, t - **6 files** the platforms' emulators load are still to be found, and 21 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made); both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/) - **12 platforms** supported with platform-specific verification -- **449 emulators** profiled from source (RetroArch cores + standalone) +- **450 emulators** profiled from source (RetroArch cores + standalone) - **470 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...) - **10,331 files**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 4,986 system files, 2,806 arcade ROM sets, 2,539 game and engine data files - **553 of 4,986 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index @@ -136,7 +136,7 @@ The [documentation site](https://abdess.github.io/retrobios/) provides: - **Per-emulator profiles** with source code references for every file - **Per-system pages** showing which emulators and platforms cover each console - **Gap analysis** identifying missing files and undeclared core requirements -- **Cross-reference** mapping files across 12 platforms and 449 emulators +- **Cross-reference** mapping files across 12 platforms and 450 emulators - **Versioned data access** through JSON, CSV and SQLite exports with published SHA-256 checksums ## How it works @@ -174,4 +174,4 @@ The scripts and tooling are released under the [MIT License](LICENSE). The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed. The reasoning, and where it is weakest, is in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal). -*Auto-generated on 2026-09-13T22:17:47Z* +*Auto-generated on 2026-09-13T23:45:27Z* diff --git a/database.json b/database.json index 2a11327a..bcc1f4ae 100644 --- a/database.json +++ b/database.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "generated_at": "2026-09-13T22:10:18Z", + "generated_at": "2026-09-13T23:43:03Z", "total_files": 10331, "total_size": 13535566159, "files": { @@ -148180,9 +148180,18 @@ "apple2e-enh-video.rom": [ "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" ], + "apple2e_char_us.rom": [ + "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" + ], "apple2e-enh.rom": [ "b8ea90abe135a0031065e01697c4a3a20d51198b" ], + "apple2e_char_2k.rom": [ + "58ad0008df72896a18601e090ee0d58155ffa5be" + ], + "341-0265-a.chr.rom": [ + "58ad0008df72896a18601e090ee0d58155ffa5be" + ], "20pSlide.wav": [ "f92d854f017d154c9ae0a2351629876515ba48d7" ], @@ -151963,6 +151972,9 @@ "libnfs.so": [ "73fc328ddfaa5cec953107904e006c0d9d0de6dc" ], + "342-0135-b.64.rom": [ + "61fa9254628e5bb7236fb474006116d67684d747" + ], "nds_sd_card.bin": [ "3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3" ], diff --git a/emulators/pom2.yml b/emulators/pom2.yml new file mode 100644 index 00000000..0a3dd2ed --- /dev/null +++ b/emulators/pom2.yml @@ -0,0 +1,663 @@ +emulator: POM2 +type: standalone +core_classification: other +source: "https://github.com/habib256/pom2" +upstream: "https://github.com/habib256/pom2" +profiled_date: "2026-09-14" +source_commit: "78aa14c1135ea9eaf3e68f09d624fab788aab236" +core_version: "0.9.2" +display_name: "Apple - Apple II (POM2)" +cores: + - pom2 +systems: + - apple-ii +mode: standalone + +notes: | + Apple ][, ][+, //e, //c and //c+ emulator by Arnaud Verhille, C++ with an + ImGui frontend, plus a browser build and a headless CLI. Nine machine + profiles (SystemProfile.cpp:32-300): Apple ][ Original, ][+, //e + Unenhanced, //e Enhanced, //c, //c Plus, and PAL variants of the //e + Unenhanced, //e Enhanced (the default) and //c (Le Chat Mauve). + + Every file is looked up by a relative name through findResource + (ResourcePaths.cpp:173-246): the per-user data directory + (~/.local/share/POM2, ~/Library/Application Support/POM2, + %LOCALAPPDATA%\POM2), the executable directory, its parent, + ../share/POM2, then the working directory and its two parents. The + first hit wins. Release packages ship the whole roms/ tree, the fonts and + the two photos (packaging/bundle.manifest). + + Machine firmware is a probe chain per profile, first name found wins + (SystemProfile.cpp romProbeOrder, MainWindow_Slots.cpp:1458-1481): + ][ Original apple2o.rom, apple2.rom + ][+ apple2p.rom, apple2.rom + //e Unenhanced apple2e_unenh.rom, 342-0135-b.64.rom, apple2e.rom + //e Enhanced apple2e.rom + //c apple2c-32Kv0.rom, apple2c-16K.rom, 3420033a.256 + //c Plus apple2cp.rom, apple2c-plus.rom, apple2c-32Kv0.rom + With no candidate the machine runs on a $D000-$FFFF stub and the Welcome + panel opens (MainWindow.cpp:318-326). A first run with no //e image falls + back to the ][+ chain (MainWindow.cpp:223-236). Memory::loadAppleIIRom + (Memory.cpp:174-224) maps 12 KB at $D000, 16 KB at $C000, skips the 4 KB + pad of a 20 KB ][+ dump, and slices a 32 KB dump by profile: //e images + carry the firmware in the upper half, //c and //c+ images are two firmware + banks with bank 0 in the lower half (SystemProfile.cpp:432). + + Character generators follow charRomProbeOrder per profile, or the locale + picked in the toolbar (CharRomCatalog.cpp:42-79, MainWindow_Slots.cpp: + 1489-1505). Memory::loadCharRom accepts 2 KB, 4 KB and 8 KB dumps + (Memory.cpp:313-345); an 8 KB dump is two 4 KB banks, loaded as one bank + or kept dual-bank with annunciator 2 selecting the live set. + + Peripheral ROMs are read when the card is plugged (SlotCardFactory.cpp). + The Disk II carries the 341-0027-A boot PROM and the 16-sector P6 + sequencer built in (DiskIICard.cpp:135-150). CFFA, Liron, Workstation and + the MC68705 mouse card leave the slot empty without their dump; Grappler+, + ThunderClock+ and TransWarp run a synthetic ROM instead. The catalogue + behind the ROM Status panel (RomCatalog.h) lists every name in probe + order with the size the loader enforces and, where POM2 vouches for a + dump, its CRC32; the panel hashes each present file + (RomStatus_ImGui.cpp:169-181, 306). + + Help > Download missing ROMs (RomFetch.cpp:61-141) fetches 18 dumps with + curl from raw.githubusercontent.com/Abdess/retrobios and installs a + download only when its size, CRC32 and SHA-256 match the catalogue + (RomFetch.cpp:398-431); a present local file is re-checked with the same + gate (RomFetch.cpp:583-603). Unavailable in the browser build. + + The floppy mechanical sounds are MAME's samples/floppy set, read from + roms/floppy_samples/ as two banks of ten WAV files prefixed 525_ and 35_ + (FloppySoundDevice.cpp:80-118, MainWindow.cpp:335-348); a missing sample + is logged and the drive stays silent. + + Media named by the code are not firmware and are not listed here: the + browser demo boots floppyemu/DIX.po (wasm/shell.html:89) or, when the + shell passes no disk, floppyemu/Total Replay v6.1.hdv (main.cpp:281-285); + the headless CLI mounts disks_5.4/dos33_master.dsk by default + (pom2_headless.cpp:263). Disk, tape and hard-disk images are browsed + from disks_5.4/, disks_3.5/, hdv/, floppyemu/, cassettes/ and + prodos_folder/ next to the executable. + +files: + - name: "apple2o.rom" + path: "roms/apple2o.rom" + description: "Apple ][ Original monitor and Integer BASIC, $D000-$FFFF" + required: false + priority: 1 + size: 12288 + sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1" + sha1: "78008be557f643e956a106121bcc182c0fb9ea6d" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:174-224, src/RomFetch.cpp:61-63" + note: "First candidate of the Apple ][ Original profile; apple2.rom is probed next." + - name: "apple2.rom" + path: "roms/apple2.rom" + description: "Apple ][ generic 12 KB fallback, Autostart monitor and Applesoft" + required: false + priority: 2 + size: 12288 + sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905" + sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/MainWindow_Slots.cpp:1470-1477, src/RomFetch.cpp:65-67" + note: "Probed after the profile image for the ][ and ][+ profiles. When it resolves in place of that image the loader logs that the ROM identity may not match the machine." + - name: "apple2p.rom" + path: "roms/apple2p.rom" + description: "Apple ][+ Autostart monitor and Applesoft, 4 KB pad then $C000-$FFFF" + required: false + priority: 1 + size_options: [12288, 20480] + sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6" + validation: [size] + source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:209-219, src/RomFetch.cpp:69-79" + note: "First candidate of the ][+ profile and of the first-run fallback (MainWindow.cpp:234). The loader drops the leading 4 KB of a 20 KB dump. The fetcher builds a 12 KB image from the six 2 KB chips of the MAME apple2p set and accepts either size as present; it carries no digest for this file." + - name: "apple2e.rom" + path: "roms/apple2e.rom" + description: "Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half" + required: true + priority: 1 + size: 32768 + sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab" + sha1: "d756eba578a6c5a4807510dfee30ee585c63755e" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:239-251, src/Memory.cpp:189-201, src/Memory.cpp:220-222, src/MainWindow.cpp:223-226, src/RomFetch.cpp:80-83" + note: "Sole candidate of the //e Enhanced profiles, NTSC and PAL, PAL being the default machine. Also the last fallback of the //e Unenhanced chain." + - name: "apple2e_unenh.rom" + path: "roms/apple2e_unenh.rom" + description: "Apple //e Unenhanced firmware, 4 KB internal $Cx00 ROM then $D000-$FFFF" + required: false + priority: 1 + aliases: ["342-0135-b.64.rom"] + size: 16384 + sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b" + sha1: "61fa9254628e5bb7236fb474006116d67684d747" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:265-277, src/RomFetch.cpp:84-87" + note: "First candidate of the //e Unenhanced profiles; 342-0135-b.64.rom is probed second, apple2e.rom third." + - name: "apple2c-32Kv0.rom" + path: "roms/apple2c-32Kv0.rom" + description: "Apple //c two-bank firmware, bank 0 in the lower 16 KB" + required: false + priority: 1 + size: 32768 + crc32: "323952d1" + sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5" + source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438, src/Memory.cpp:189-201, src/Memory.cpp:220-222" + note: "First candidate of the //c and //c PAL profiles, third of the //c Plus chain. Bank 0 is mapped at reset, the $C028 ROMBANK switch selects the other. Identical to 3420033a.256 with its first 256 bytes zeroed." + - name: "apple2c-16K.rom" + path: "roms/apple2c-16K.rom" + description: "Apple //c ROM 255, 16 KB, MAME apple2c a2c.128" + required: false + priority: 2 + size: 16384 + crc32: "f0edaa1b" + sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729" + source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:207-208" + note: "Second candidate of the //c chain, loaded at $C000." + - name: "3420033a.256" + path: "roms/3420033a.256" + description: "Apple //c ROM 0, UniDisk 3.5 firmware, MAME apple2c0 342-0033-A" + required: false + priority: 3 + size: 32768 + crc32: "c8b979b3" + sha1: "10767e96cc17bad0970afda3a4146564e6272ba1" + source_ref: "src/SystemProfile.cpp:142-143" + note: "Third candidate of the //c chain." + - name: "apple2cp.rom" + path: "roms/apple2cp.rom" + description: "Apple //c Plus two-bank firmware, MAME apple2cp 341-0625-a.256" + required: false + priority: 1 + aliases: ["apple2c-plus.rom"] + size: 32768 + crc32: "0b996420" + sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c" + source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438" + note: "First candidate of the //c Plus profile; apple2c-plus.rom is probed second and apple2c-32Kv0.rom third." + - name: "apple2_char.rom" + path: "roms/apple2_char.rom" + description: "Apple ][ and ][+ character generator, 2 KB uppercase set" + required: false + priority: 1 + size: 2048 + sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de" + sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:90-93, src/Memory.cpp:313-345" + note: "Sole candidate of the ][ and ][+ profiles and the last fallback of every //e-class chain." + - name: "apple2e_char.rom" + path: "roms/apple2e_char.rom" + description: "Apple //e Enhanced character generator 342-0265-A, 4 KB with MouseText" + required: false + priority: 1 + aliases: ["apple2e_char_us.rom"] + size: 4096 + sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f" + sha1: "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:94-97, src/Memory.cpp:313-345" + note: "First candidate of the //e Enhanced, //c and //c Plus profiles; the same dump answers to apple2e_char_us.rom in the locale picker." + - name: "apple2e_char_us_unenh.rom" + path: "roms/apple2e_char_us_unenh.rom" + description: "Apple //e Unenhanced character generator 342-0133-A, 4 KB" + required: false + priority: 1 + aliases: ["apple2e_char_2k.rom", "341-0265-a.chr.rom"] + size: 4096 + sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c" + sha1: "58ad0008df72896a18601e090ee0d58155ffa5be" + validation: [size, sha256] + source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:98-101, src/Memory.cpp:313-345" + note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 341-0265-a.chr.rom then apple2_char.rom; the same dump ships under both names." + - name: "apple2e_char_fr.rom" + path: "roms/apple2e_char_fr.rom" + description: "Apple //e French character generator, 4 KB" + required: false + aliases: ["apple2e_char_frca_unenh.rom"] + size: 4096 + crc32: "ab0be706" + sha1: "42afb02aab4146f781ac52803a2733adc4da834e" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A." + - name: "apple2e_char_frca.rom" + path: "roms/apple2e_char_frca.rom" + description: "Apple //e French Canadian Enhanced character generator, 4 KB" + required: false + size: 4096 + crc32: "2c8fc403" + sha1: "4043e0808af8be096660827445e41149d16c5c85" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry; equals the low bank of 342-0274-a.e9." + - name: "apple2e_char_uk.rom" + path: "roms/apple2e_char_uk.rom" + description: "Apple //e UK Enhanced character generator 342-0273-A, 4 KB" + required: false + size: 4096 + crc32: "dda11653" + sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry." + - name: "apple2e_char_uk_unenh.rom" + path: "roms/apple2e_char_uk_unenh.rom" + description: "Apple //e UK Unenhanced character generator 341-0160-A, 4 KB" + required: false + size: 4096 + crc32: "7a9a91ef" + sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry." + - name: "apple2e_char_de.rom" + path: "roms/apple2e_char_de.rom" + description: "Apple //e German character generator 341-0161-A, 4 KB" + required: false + size: 4096 + crc32: "0d72f153" + sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry." + - name: "apple2e_char_de_improved.rom" + path: "roms/apple2e_char_de_improved.rom" + description: "Apple //e German Improved character generator, 4 KB" + required: false + size: 4096 + crc32: "d345d332" + sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" + note: "Locale picker entry." + - name: "342-0274-a.e9" + path: "roms/342-0274-a.e9" + description: "Apple //e international video ROM 342-0274-A, 8 KB, French Canadian bank then US bank, MAME apple2eefr" + required: false + size: 8192 + crc32: "8f342081" + sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:73-76, src/CharRomCatalog.cpp:144-149, src/Memory.cpp:313-345" + note: "Locale picker entries select bank 0 or bank 1; loaded whole, both banks stay live and annunciator 2 picks the set." + - name: "apple2e_char_ft_blockascii.rom" + path: "roms/apple2e_char_ft_blockascii.rom" + description: "French Touch Block ASCII dual-bank character generator, 8 KB" + required: false + size: 8192 + crc32: "1eae3944" + sha1: "f79815457437e50404f4f537d8aabe34bff3a220" + validation: [size] + source_ref: "src/CharRomCatalog.cpp:77-78, src/Memory.cpp:313-345" + note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs." + - name: "Videx Lower Case Chip ROM.bin" + path: "roms/Videx Lower Case Chip ROM.bin" + description: "Videx LOWER CASE CHIP character generator for the ][ and ][+, 2 KB" + required: false + size: 2048 + crc32: "00f68076" + sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999" + validation: [size, crc32] + source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:143-148, src/RomStatus_ImGui.cpp:306" + note: "Locale picker entry for the ][ and ][+ profiles; without it the picker keeps the stock uppercase set." + - name: "disk2.rom" + path: "roms/disk2.rom" + description: "Disk II 16-sector boot PROM 341-0027-A" + required: false + has_builtin: true + size: 256 + sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d" + sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:135-140, src/DiskIICard.cpp:150-172, src/RomFetch.cpp:104-107" + note: "The card carries the same PROM built in; the file replaces it when present." + - name: "diskii_p6.rom" + path: "roms/diskii_p6.rom" + description: "Disk II 16-sector P6 logic state sequencer PROM 341-0028-A" + required: false + has_builtin: true + size: 256 + sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2" + sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:141-148, src/DiskIICard.cpp:175-197, src/DiskIICard.cpp:245-262, src/RomFetch.cpp:108-111" + note: "Loading the file switches the bit-level LSS path on for every image; without it the legacy 32-cycle nibble gate serves non-WOZ images and the built-in PROM serves WOZ images." + - name: "disk2_13.rom" + path: "roms/disk2_13.rom" + description: "Disk II 13-sector boot PROM 341-0009" + required: false + size: 256 + sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6" + sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:203-220, src/RomCatalog.h:79-81, src/RomFetch.cpp:112-115" + note: "13-sector disks mount but cannot boot without it." + - name: "diskii_p6_13.rom" + path: "roms/diskii_p6_13.rom" + description: "Disk II 13-sector P6 logic state sequencer PROM 341-0010" + required: false + size: 256 + sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655" + sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:222-239, src/RomCatalog.h:82-84, src/RomFetch.cpp:116-119" + note: "Paired with disk2_13.rom; the card never switches to the 13-sector pair without both." + - name: "cffa20eec02.bin" + path: "roms/cffa20eec02.bin" + description: "CFFA 2.0 firmware, 65C02 build" + required: false + size: 4096 + crc32: "fb3726f8" + sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd" + validation: [size, crc32] + source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:103-106" + note: "Preferred when the CPU is a 65C02, the 6502 build is the fallback; the slot stays empty when neither is found." + - name: "cffa20ee02.bin" + path: "roms/cffa20ee02.bin" + description: "CFFA 2.0 firmware, 6502 build" + required: false + size: 4096 + crc32: "3ecafce5" + sha256: "3d7f6918f9af3828f5a6299299a817df0d354ee62e547bc0238755de66162a88" + sha1: "d600692ed9626668233a22a48236af639410cb7b" + validation: [size, crc32, sha256] + source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:107-110, src/RomFetch.cpp:122-126" + note: "Preferred on an NMOS 6502, fallback for a 65C02." + - name: "mouse_341-0270-c.bin" + path: "roms/mouse_341-0270-c.bin" + description: "AppleMouse II card slot EPROM 341-0270-C" + required: false + size: 2048 + sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af" + sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:51-83, src/SlotCardFactory.cpp:232-247, src/MouseCard.cpp:115-149, src/MouseCardAppleWin.cpp:87-100, src/RomFetch.cpp:127-130" + note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only." + - name: "mouse_341-0269.bin" + path: "roms/mouse_341-0269.bin" + description: "AppleMouse II card MC68705P3 MCU mask ROM 341-0269" + required: false + size: 2048 + sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0" + sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:51-83, src/MouseCard.cpp:146-149, src/M68705P3.cpp:85-104, src/RomFetch.cpp:131-134" + note: "The MC68705 mouse card leaves its slot empty without it." + - name: "grappler_plus.bin" + path: "roms/grappler_plus.bin" + description: "Orange Micro Grappler+ parallel printer EPROM 3.2" + required: false + aliases: ["grappler+.bin", "grappler.bin"] + size: 4096 + sha256: "9be4dea7722ad8928aee64c2ae708f365a6d66c50a63bff8a3c1a4e7596d44c6" + sha1: "829072cc19a58b24d36c2af972abaad6f9ba35d9" + validation: [size, sha256] + source_ref: "src/SlotCardFactory.cpp:147-166, src/GrapplerCard.cpp:29-52, src/RomCatalog.h:113-118, src/RomFetch.cpp:135-138" + note: "Without it the card runs a stub ROM: PR#n prints, the graphics dump commands are absent." + - name: "ae_transwarp_1.4.bin" + path: "roms/ae_transwarp_1.4.bin" + description: "Applied Engineering TransWarp accelerator ROM v1.4, MAME warprom" + required: false + aliases: ["ae transwarp rom v1.4.bin"] + size: 4096 + crc32: "afe37f55" + validation: [size, crc32] + source_ref: "src/TranswarpCard.h:166, src/TranswarpCard.cpp:200-218, src/RomCatalog.h:119-125" + note: "Not shipped by POM2. The card accelerates without it and only shadows $F000-$FFFF with the speed-corrected monitor when the dump is present." + - name: "thunderclock_u9_v1.3.bin" + path: "roms/thunderclock_u9_v1.3.bin" + description: "Thunderware ThunderClock+ slot ROM rev 1.3, U9" + required: false + aliases: ["thunderclock_u9.bin", "thunderclock.rom", "Thunderware_REV_1.3_ROM_U9.bin"] + size_options: [256, 2048] + sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a" + validation: [size] + source_ref: "src/ClockCard.cpp:469-524, src/RomCatalog.h:150-160" + note: "A 2 KB dump supplies the $C800 expansion ROM as well. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place." + - name: "liron.rom" + path: "roms/liron.rom" + description: "Apple Liron SmartPort controller firmware, 4 KB" + required: false + size: 4096 + sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60" + validation: [size] + source_ref: "src/SlotCardFactory.cpp:194-220, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:87-90" + note: "The Liron card refuses to plug without it. The SmartPort 3.5 card loads it on machines with physical slots and otherwise presents a synthetic identity." + - name: "341-0358-A.bin" + path: "roms/341-0358-A.bin" + description: "Apple II Workstation Card firmware 341-0358-A, 64 KB" + required: false + aliases: ["341-0358-a.bin"] + size: 65536 + crc32: "63819dcb" + sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720" + validation: [size, crc32] + source_ref: "src/SlotCardFactory.cpp:169-192, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:133-142" + note: "The Workstation card leaves its slot empty without it; the card runs its own 65C02 on the upper 32 KB." + - name: "341-0438-a.bin" + path: "roms/341-0438-a.bin" + description: "Apple II 3.5 Disk Controller SuperDrive firmware 341-0438-A, MAME a2superdrive" + required: false + size: 32768 + crc32: "c73ff25b" + sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46" + validation: [size, crc32, sha256] + source_ref: "src/RomCatalog.h:91-96, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:139-141" + note: "No card reads it; the ROM Status panel and the fetch gate check it." + - name: "342-0326-a.f12" + path: "roms/342-0326-a.f12" + description: "Apple //e French keyboard decode ROM 342-0326-A, MAME apple2eefr" + required: false + size: 2048 + crc32: "f04970a9" + sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e" + validation: [size, crc32] + source_ref: "src/RomCatalog.h:97-102, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:306" + note: "Host keys are mapped directly, no keyboard decode ROM is emulated; the ROM Status panel checks the file only." + - name: "525_seek_2ms.wav" + path: "roms/floppy_samples/525_seek_2ms.wav" + description: "MAME floppy sample, 5.25 inch drive, 2 ms head seek" + category: game_data + required: false + size: 5336 + sha1: "2d046a880476218685ed738fe8c8381962afd74a" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent." + - name: "525_seek_6ms.wav" + path: "roms/floppy_samples/525_seek_6ms.wav" + description: "MAME floppy sample, 5.25 inch drive, 6 ms head seek" + category: game_data + required: false + size: 14860 + sha1: "6f698055fa6e9da6c5ae3fd6fb05de76b92a45a9" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_seek_12ms.wav" + path: "roms/floppy_samples/525_seek_12ms.wav" + description: "MAME floppy sample, 5.25 inch drive, 12 ms head seek" + category: game_data + required: false + size: 22764 + sha1: "fbbbb5e8724c076d194e66a4443d299d54a8efd6" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_seek_20ms.wav" + path: "roms/floppy_samples/525_seek_20ms.wav" + description: "MAME floppy sample, 5.25 inch drive, 20 ms head seek" + category: game_data + required: false + size: 30060 + sha1: "b6cd14944454c743861196edb4fcab1cc9b586d4" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_spin_empty.wav" + path: "roms/floppy_samples/525_spin_empty.wav" + description: "MAME floppy sample, 5.25 inch drive, motor running, no disk" + category: game_data + required: false + size: 8864 + sha1: "4b13701d9a7f8ab0f0827f17ba80b5c32b4e0fa7" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_spin_loaded.wav" + path: "roms/floppy_samples/525_spin_loaded.wav" + description: "MAME floppy sample, 5.25 inch drive, motor running, disk loaded" + category: game_data + required: false + size: 17708 + sha1: "875f90538a3ff5db863ad4c384e1808841ddea9b" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_spin_start_empty.wav" + path: "roms/floppy_samples/525_spin_start_empty.wav" + description: "MAME floppy sample, 5.25 inch drive, motor start, no disk" + category: game_data + required: false + size: 11180 + sha1: "b87d89c4b46c36dd78dec3dc5170ca61501e7cd9" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_spin_start_loaded.wav" + path: "roms/floppy_samples/525_spin_start_loaded.wav" + description: "MAME floppy sample, 5.25 inch drive, motor start, disk loaded" + category: game_data + required: false + size: 17708 + sha1: "510476098848e2b5cdfe9f1608f8dfa3207fe9b4" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_spin_end.wav" + path: "roms/floppy_samples/525_spin_end.wav" + description: "MAME floppy sample, 5.25 inch drive, motor stop" + category: game_data + required: false + size: 8864 + sha1: "f8d9b94c4d92d35d9ffb1117b693fc74a93f613f" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "525_step_1_1.wav" + path: "roms/floppy_samples/525_step_1_1.wav" + description: "MAME floppy sample, 5.25 inch drive, single track step" + category: game_data + required: false + size: 6628 + sha1: "669ee98fb9fac4371c72ed0b60be1bc8470bc7f8" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_seek_2ms.wav" + path: "roms/floppy_samples/35_seek_2ms.wav" + description: "MAME floppy sample, 3.5 inch drive, 2 ms head seek" + category: game_data + required: false + size: 7450 + sha1: "55caafbd19486b8d517e4b33a6fa65250df55e25" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent." + - name: "35_seek_6ms.wav" + path: "roms/floppy_samples/35_seek_6ms.wav" + description: "MAME floppy sample, 3.5 inch drive, 6 ms head seek" + category: game_data + required: false + size: 22230 + sha1: "87e5dec269e67497681c15849777ebfc301131c1" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_seek_12ms.wav" + path: "roms/floppy_samples/35_seek_12ms.wav" + description: "MAME floppy sample, 3.5 inch drive, 12 ms head seek" + category: game_data + required: false + size: 26540 + sha1: "c6b34fc61496943134ac45cc836a24e743caf794" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_seek_20ms.wav" + path: "roms/floppy_samples/35_seek_20ms.wav" + description: "MAME floppy sample, 3.5 inch drive, 20 ms head seek" + category: game_data + required: false + size: 44144 + sha1: "b2fe4c3a4185146a7d11483d92d4412dd79dbc78" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_spin_empty.wav" + path: "roms/floppy_samples/35_spin_empty.wav" + description: "MAME floppy sample, 3.5 inch drive, motor running, no disk" + category: game_data + required: false + size: 17708 + sha1: "db04fc097bdd0411cff232f57525ded491b48c6c" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_spin_loaded.wav" + path: "roms/floppy_samples/35_spin_loaded.wav" + description: "MAME floppy sample, 3.5 inch drive, motor running, disk loaded" + category: game_data + required: false + size: 17708 + sha1: "96ce04a5b02af0da6d311f06fc4906a3cf71c78f" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_spin_start_empty.wav" + path: "roms/floppy_samples/35_spin_start_empty.wav" + description: "MAME floppy sample, 3.5 inch drive, motor start, no disk" + category: game_data + required: false + size: 17708 + sha1: "af770fd9261a8efee23d66cd39b27be7b2ab7853" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_spin_start_loaded.wav" + path: "roms/floppy_samples/35_spin_start_loaded.wav" + description: "MAME floppy sample, 3.5 inch drive, motor start, disk loaded" + category: game_data + required: false + size: 35308 + sha1: "c82b1714378bf2507ed86dea1e9fe743c380abab" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_spin_end.wav" + path: "roms/floppy_samples/35_spin_end.wav" + description: "MAME floppy sample, 3.5 inch drive, motor stop" + category: game_data + required: false + size: 17684 + sha1: "a8901b692de15eb7a9052f61283f0e7a2b63d67d" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "35_step_1_1.wav" + path: "roms/floppy_samples/35_step_1_1.wav" + description: "MAME floppy sample, 3.5 inch drive, single track step" + category: game_data + required: false + size: 6878 + sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97" + source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" + - name: "DejaVuSans.ttf" + path: "fonts/DejaVuSans.ttf" + description: "DejaVu Sans, the frontend text font" + category: game_data + required: false + bundled: true + unsourceable: "host program component shipped inside every POM2 package, not emulation data" + size: 759720 + sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3" + source_ref: "src/main.cpp:522-535" + note: "Falls back to the system DejaVu, Arial Unicode or Segoe UI, then to the ImGui bitmap font." + - name: "fa-solid-900.ttf" + path: "fonts/fa-solid-900.ttf" + description: "Font Awesome 6 Free Solid, the frontend icon font" + category: game_data + required: false + bundled: true + unsourceable: "host program component shipped inside every POM2 package, not emulation data" + size: 426112 + sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf" + source_ref: "src/main.cpp:582-600" + note: "Without it every icon renders as an empty box." + - name: "Apple_II_plus.jpg" + path: "pic/Apple_II_plus.jpg" + description: "Apple ][+ photograph shown in Help > About" + category: game_data + required: false + bundled: true + unsourceable: "host program component shipped inside every POM2 package, not emulation data" + size: 102046 + sha1: "69358dd499148deae4112b49cedb7bec220584e2" + source_ref: "src/MainWindow_MiscPanels.cpp:621" + - name: "Keyboard_AppleIIe.jpeg" + path: "pic/Keyboard_AppleIIe.jpeg" + description: "Apple //e keyboard photograph the clickable keyboard window is built on" + category: game_data + required: false + bundled: true + unsourceable: "host program component shipped inside every POM2 package, not emulation data" + size: 794259 + sha1: "a178f37661078739637ff7642cd6450c762993aa" + source_ref: "src/MainWindow_MiscPanels.cpp:480" + note: "The window hotspots are fractions of this image; without it the window has nothing to click." diff --git a/mkdocs.yml b/mkdocs.yml index 56edc09b..00a6fea1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -601,7 +601,7 @@ nav: - Dolphin Launcher: emulators/dolphin_launcher.md - Parallel Launcher: emulators/parallel-launcher.md - SWF Player: emulators/swf-player.md - - Other (56): + - Other (57): - ares: emulators/ares.md - Basilisk II: emulators/basiliskii.md - beebem: emulators/beebem.md @@ -635,6 +635,7 @@ nav: - Oricutron: emulators/oricutron.md - Pizza Boy SC: emulators/pizza-boy-sc.md - Plastic: emulators/plastic.md + - POM2: emulators/pom2.md - project64: emulators/project64.md - puNES: emulators/punes.md - Real3DOPlayer: emulators/real3doplayer.md