Files
libretro/emulators/pom2.yml
T

878 lines
46 KiB
YAML

emulator: POM2
type: standalone
core_classification: other
source: "https://github.com/habib256/pom2"
upstream: "https://github.com/habib256/pom2"
profiled_date: "2026-10-04"
source_commit: "c2ce3f685cf3c7429de7341b2b3df65e9981b907"
core_version: "0.9.4"
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 (src/SystemProfile.cpp:32-302): 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
(src/ResourcePaths.cpp:178-251): the per-user data directory
(~/.local/share/POM2, ~/Library/Application Support/POM2,
%LOCALAPPDATA%\POM2) when it really is per-user, the executable
directory, its parent, ../share/POM2, the temp fallback data directory
otherwise, 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, src/ProfileSwitch.cpp:113-133):
][ 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 (src/MainWindow.cpp:328-336). A first run with no //e image
falls back to the ][+ chain (src/MainWindow.cpp:233-246).
Memory::loadAppleIIRom (src/Memory.cpp:174-237) 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
(src/SystemProfile.cpp:429).
Character generators follow charRomProbeOrder per profile, or the locale
picked in the toolbar (src/CharRomCatalog.cpp:42-91,
src/ProfileSwitch.cpp:135-141). Memory::loadCharRom accepts 2 KB, 4 KB
and 8 KB dumps (src/Memory.cpp:325-358); 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 (src/SlotCardFactory.cpp).
The Disk II carries the 341-0027-A boot PROM and the 16-sector P6
sequencer built in (src/DiskIICard.cpp:136-149). CFFA, Liron,
Workstation, the MC68705 mouse card, the 1981 Grappler, the Apple
Parallel Interface and the Videx Videoterm leave the slot empty without
their dump; Grappler+, ThunderClock+ and the Super Serial Card run a
synthetic ROM instead, and TransWarp accelerates without its boot
firmware. The catalogue behind the ROM Status panel (src/RomCatalog.h)
lists every name in probe order with the size the loader enforces,
what a missing dump costs (degraded, card unavailable, unused) and,
where POM2 vouches for a dump, its CRC32; the panel hashes each present
file (src/RomStatus_ImGui.cpp:169-181, 311).
Help > Download missing ROMs (src/RomFetch.cpp:68-301) fetches 45 files,
43 distinct dumps, with curl from raw.githubusercontent.com/Abdess/retrobios,
pinned to HTTPS (src/RomFetch.cpp:732-748). Every entry carries a
SHA-256, fourteen a CRC32 as well; a download is installed only when its
size, CRC32 and SHA-256 match (src/RomFetch.cpp:629-665). A present file
is re-checked with the same gate and, when it is not the catalogued dump,
replaced after a copy to roms-replaced/ under the data directory
(src/RomFetch.cpp:579-627, 833-853, 862-880); a 12 KB apple2p.rom is the
one alternate size kept as is. Nine entries are members of MAME romsets,
read in-process (src/ZipMember.cpp): apple2e_unenh.rom is 342-0135-b.64
then 342-0134-a.64 from apple2e.zip, mouse_341-0270-c.bin is
341-0270-c.4b from a2mouse.zip, ssc_341-0065-a.bin is 341-0065-a.bin from
a2ssc.zip, grappler_eps-1.bin is eps-1_c1981.u6 from a2grappler.zip,
341-0057.bin is 341-0057.7b from a2pic.zip, and the four Videoterm files
come from a2vidtrm.zip. Downloads land in the per-user data directory's
roms/ (src/RomFetch.cpp:801-821). Unavailable in the browser build
(src/RomFetch.cpp:922-925).
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_
(src/FloppySoundDevice.cpp:81-119, src/MainWindow.cpp:345-358); a
missing sample is logged and the drive stays silent. A second bank, the
Virtual ][ recordings, is read from roms/virtual_ii_sons/ when that
directory exists (src/MainWindow.cpp:362-376): eight drive and switch
takes under lecteur/ and interface/ (src/FloppySoundDevice.cpp:195-204)
and one printer loop under imprimante/. The bank is selectable once
Disk Rotation, Move arm, Disk Insertion and Disk Removal have loaded
(src/FloppySoundDevice.cpp:205-225); an .aiff name is retried as .wav
(src/FloppySoundDevice.cpp:166-187). The packaging manifest keeps the
directory out of release packages (packaging/bundle.manifest:75-78).
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
(src/main.cpp:285-289); the headless CLI mounts
disks_5.4/dos33_master.dsk by default (src/pom2_headless.cpp:262-264).
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-237, src/RomFetch.cpp:72-75"
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/ProfileSwitch.cpp:121-128, src/RomFetch.cpp:76-83"
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: [12288, 20480]
sha256: "92c4bef609920842ea472d21b661a0d35dbda6cd90963b8b734a205e22d84108"
sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:222-232, src/RomFetch.cpp:84-96, src/RomFetch.cpp:862-873"
note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:242-246). The loader drops the leading 4 KB of the 20 KB dump. The fetch gate names that dump; a 12 KB six-chip image already on disk is kept as present without a digest check."
- 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:241-253, src/Memory.cpp:202-214, src/Memory.cpp:233-235, src/MainWindow.cpp:233-236, src/RomFetch.cpp:97-100"
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:267-279, src/RomFetch.cpp:51-56, src/RomFetch.cpp:101-109"
note: "First candidate of the //e Unenhanced profiles; 342-0135-b.64.rom is probed second, apple2e.rom third. The fetcher assembles it from the two 8 KB chips of the MAME apple2e set, 342-0135-b.64 then 342-0134-a.64."
- 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"
sha256: "d65bbf97058b9cdce8eaebf74124048e3b4e42dca1bd42be316747bbc27dc124"
sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/Memory.cpp:202-214, src/Memory.cpp:233-235, src/RomFetch.cpp:110-113"
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"
sha256: "3ca1c8a27bf111aa0f4dc9372c5e6404457adb9a458ce32ae4b03a7e989e0c76"
sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:220-221, src/RomFetch.cpp:114-117"
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"
sha256: "678d5c9d374664d2ee94ba9c9564d26a917b31116b07c46df30a3e82c640885b"
sha1: "10767e96cc17bad0970afda3a4146564e6272ba1"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:142-143, src/RomFetch.cpp:118-121"
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"
sha256: "5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374"
sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:429-434, src/RomFetch.cpp:122-125"
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:128-131, src/Memory.cpp:325-358"
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:132-144, src/Memory.cpp:325-358"
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, and the fetcher writes both names."
- 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:145-152, src/Memory.cpp:325-358"
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 and the fetcher writes both."
- 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"
sha256: "52d8e46b487a617c288caaf12ab7ad6cb81030b6ab92419f9a2e19c43d765566"
sha1: "42afb02aab4146f781ac52803a2733adc4da834e"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:155-158, src/Memory.cpp:325-358"
note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A, a name the fetcher does not serve."
- 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"
sha256: "56479cbec4767651c62a4d0f61e6ed103395216f2b86eddba74d85495dd71cc4"
sha1: "4043e0808af8be096660827445e41149d16c5c85"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:159-162, src/Memory.cpp:325-358"
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"
sha256: "d55bd5391485cd78c68c71408f09bd088e82a73d179a0a25820067a0c1554acd"
sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:163-166, src/Memory.cpp:325-358"
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"
sha256: "f2199fbfb473e98a8c3fb7e7c3312faaf76b4b010b02c655b662e5f87dc997f3"
sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:167-170, src/Memory.cpp:325-358"
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"
sha256: "b92576b4fa994384501078ff99963b53cfa98eff4bb641eb61649d484a469315"
sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:171-174, src/Memory.cpp:325-358"
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"
sha256: "0e32ab131e3932fc61c0a5f0f5509b4c37ab8db6239027f5955d47feba56d39f"
sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:175-178, src/Memory.cpp:325-358"
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"
sha256: "d4d29771658372c6ab5d18ff3bdab6b3b2b02b8de30ed6b021efb8a415192432"
sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:81-84, src/CharRomCatalog.cpp:158-163, src/RomFetch.cpp:179-184, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
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"
sha256: "c69c8e1eb26923c5df03d3507fdf86c5f768283a924a5fffdd80377cf2339321"
sha1: "f79815457437e50404f4f537d8aabe34bff3a220"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:85-86, src/RomFetch.cpp:185-189, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs."
- name: "apple2e_char_us_mt_iigs.rom"
path: "roms/apple2e_char_us_mt_iigs.rom"
description: "Apple //e US Enhanced character generator with the IIgs MouseText glyphs, 4 KB"
required: false
size: 4096
crc32: "a68a4f03"
sha1: "66eca035fd18024fceed4c30c32a4185792cb3ea"
sha256: "097cd3500afe6c15d710d2e96af539a8e5065853986289294aac08ee7a1f070a"
validation: [size]
source_ref: "src/CharRomCatalog.cpp:87-88, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry. Shipped in roms/; the fetcher does not serve it, so only the size is checked."
- name: "apple2e_char_reactive.rom"
path: "roms/apple2e_char_reactive.rom"
description: "ReActive custom Apple //e character generator, 4 KB"
required: false
size: 4096
crc32: "af19aff6"
sha1: "02075efbfdb99af48360561323404a921b91a676"
sha256: "49716e2804b119810c22ab668ae37cebadf0cd53bc8911b5f17c4a62a3acb514"
validation: [size]
source_ref: "src/CharRomCatalog.cpp:89-90, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:250, src/Memory.cpp:325-358"
note: "Locale picker entry. Shipped in roms/; the fetcher does not serve it, so only the size is checked."
- 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"
sha256: "6a516bcd96382597af7a498fb1da7547490c830db0f9d22d541fb065b9cd048b"
sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999"
validation: [size, crc32, sha256]
source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:208-214, src/RomFetch.cpp:190-194, src/RomStatus_ImGui.cpp:311"
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:102-115, src/DiskIICard.cpp:136-141, src/DiskIICard.cpp:151-174, src/RomFetch.cpp:197-200"
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:102-115, src/DiskIICard.cpp:142-149, src/DiskIICard.cpp:176-202, src/DiskIICard.cpp:251-263, src/RomFetch.cpp:201-204"
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:102-115, src/DiskIICard.cpp:204-221, src/DiskIICard.cpp:264-288, src/RomCatalog.h:90-93, src/RomFetch.cpp:205-208"
note: "A mounted 13-sector disk switches the card to this PROM at $Cn00 and forces the bit-level LSS; without it the disk mounts but cannot boot."
- 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:102-115, src/DiskIICard.cpp:223-240, src/DiskIICard.cpp:273-283, src/RomCatalog.h:94-97, src/RomFetch.cpp:209-212"
note: "Read into the card and not consumed: the 13-sector switch depends on disk2_13.rom alone, and the sequencer keeps running the 16-sector P6 on 13-sector disks."
- name: "cffa20eec02.bin"
path: "roms/cffa20eec02.bin"
description: "CFFA 2.0 firmware, 65C02 build"
required: false
size: 4096
crc32: "fb3726f8"
sha256: "a08cb25ad80054649ee5fcb620e01ed56f025acb28c753bc28dd187a1d149cab"
sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:124-148, src/CffaCard.cpp:26-40, src/RomCatalog.h:119-123, src/RomFetch.cpp:223-226"
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:124-148, src/CffaCard.cpp:26-40, src/RomCatalog.h:124-129, src/RomFetch.cpp:219-222"
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:60-92, src/SlotCardFactory.cpp:337-352, src/MouseCard.cpp:119-153, src/MouseCardAppleWin.cpp:89-102, src/RomFetch.cpp:243-248"
note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only. The fetcher extracts it from the MAME a2mouse set as 341-0270-c.4b."
- 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:60-92, src/MouseCard.cpp:150-153, src/M68705P3.cpp:85-104, src/RomFetch.cpp:239-242"
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:156-175, src/GrapplerCard.cpp:30-53, src/RomCatalog.h:132-138, src/RomFetch.cpp:235-238"
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"
sha256: "bcbb1a3bab083b0c2988b502f5e024ff4346fab5dbf09276b32724693bcbd0e9"
sha1: "7b75534e7895e04859a0b1337801c6eeb0cef52a"
validation: [size, crc32, sha256]
source_ref: "src/TranswarpCard.h:175, src/TranswarpCard.cpp:215-235, src/RomCatalog.h:139-146, src/RomFetch.cpp:231-234"
note: "Shipped in roms/ since v0.9.3. The dump is the card's boot firmware, 65C02 code overlaid on $F000-$FFFF until it writes $C072: it tests RAM and the Apple ROM, then boots through the Apple reset vector. Without it the card accelerates and the machine boots straight into the Apple ROM. The shadow steps aside for a main ROM reload and covers the new firmware."
- name: "ssc_341-0065-a.bin"
path: "roms/ssc_341-0065-a.bin"
description: "Apple Super Serial Card EPROM 341-0065-A, MAME a2ssc"
required: false
aliases: ["341-0065-a.bin", "SSC.rom"]
size: 2048
crc32: "b7539d4c"
sha256: "4fa1323ba31f4bd562486838397b7744257c126806766e360876720daca6e2aa"
sha1: "6dab633470c6bc4cb3e81d09fda46597caf8ee57"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:379-397, src/SuperSerialCard.cpp:722-728, src/RomCatalog.h:147-154, src/RomFetch.cpp:281-284"
note: "Three names are probed in order and a file that is not 2048 bytes is refused. Without it the card runs a hand-written slot ROM: PR#n, IN#n and the Pascal 1.1 entries work, the firmware commands and printer mode are absent. Not loaded on the //c and //c Plus. The fetcher extracts it from the MAME a2ssc set as 341-0065-a.bin."
- name: "grappler_eps-1.bin"
path: "roms/grappler_eps-1.bin"
description: "Orange Micro Grappler EPROM, the 1981 card, MAME a2grappler"
required: false
size: 2048
crc32: "862773cb"
sha256: "4cce25c87ba4dd396919ce82f8567894225519c3d9db76c5667760f77054694f"
sha1: "791ebae64a7fad8f42bdfaec36b9e2d34f12ded8"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:178-216, src/GrapplerClassicCard.cpp:28-34, src/RomCatalog.h:155-158, src/RomFetch.cpp:253-256"
note: "The original Grappler leaves its slot empty without it. The fetcher extracts it from the MAME a2grappler set as eps-1_c1981.u6."
- name: "341-0057.bin"
path: "roms/341-0057.bin"
description: "Apple Parallel Interface Card PROM 341-0057, MAME a2pic"
required: false
size: 512
crc32: "0a6b084b"
sha256: "634e91bae5938820da79183984c03aa06075cbd5701d480debcc4f6d70620001"
sha1: "de8aa285dcac88b1cc80ec9128b092833f5174b6"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:178-216, src/AppleParallelCard.cpp:28-34, src/RomCatalog.h:159-162, src/RomFetch.cpp:257-260"
note: "The Apple Parallel Interface leaves its slot empty without it. The fetcher extracts it from the MAME a2pic set as 341-0057.7b."
- name: "videx_videoterm_v24_60hz.bin"
path: "roms/videx_videoterm_v24_60hz.bin"
description: "Videx Videoterm firmware v2.4 with the 60 Hz CRTC table, 2 KB, MAME a2videoterm 6.ic6.bin"
required: false
priority: 1
size: 2048
crc32: "5776fa24"
sha256: "420da3867e489824f5fc0377c287c48a125296f19e1306df764e8f63bd23b00a"
sha1: "19f69011ed7d2551c39d5c1cac1f5a2defc8f8fb"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:235-246, src/SlotCardFactory.cpp:254-264, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:165-171, src/RomFetch.cpp:263-266"
note: "First firmware candidate of the Videoterm card; the 50 Hz dump is probed second. With neither the slot stays empty. The fetcher extracts it from the MAME a2vidtrm set."
- name: "videx_videoterm_v24_50hz.bin"
path: "roms/videx_videoterm_v24_50hz.bin"
description: "Videx Videoterm firmware v2.4 with the 50 Hz CRTC table, 1 KB, MAME a2videoterm videx videoterm rom 2.4.bin"
required: false
priority: 2
size: 1024
crc32: "bbe3bb28"
sha256: "616f4d9f81a7a4ea0fa918842a05dfb3b503927776d2bfe97e6950b5431b562e"
sha1: "bb653836e84850ce3197f461d4e19355f738cfbf"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:235-246, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:172-177, src/RomFetch.cpp:267-271"
note: "Fallback firmware of the Videoterm card, padded to 2 KB with $FF. The fetcher extracts it from the MAME a2vidtrm set."
- name: "videx_videoterm_char_normal.bin"
path: "roms/videx_videoterm_char_normal.bin"
description: "Videx Videoterm character ROM, normal set, MAME a2videoterm"
required: false
size: 2048
crc32: "87f89f08"
sha256: "ad873ca47e09def4c942177c84809d853231d4774e8d824e1b834d2033b8199c"
sha1: "410b54f33d13c82e3857f1be906d93a8c5b8d321"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:247-264, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:178-182, src/RomFetch.cpp:272-276"
note: "The Videoterm card leaves its slot empty without it. The fetcher extracts it from the MAME a2vidtrm set as videx videoterm character rom normal.bin."
- name: "videx_videoterm_char_inverse.bin"
path: "roms/videx_videoterm_char_inverse.bin"
description: "Videx Videoterm character ROM, inverse set, MAME a2videoterm 4.ic4.bin"
required: false
size: 2048
crc32: "8a497a48"
sha256: "4d03bd0934ab39cb18f22444e0361f91d1984131759c07010398ad5cf84397c0"
sha1: "50c3df528109c65491a001ec74e50351a652c1fd"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:247-253, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:183-188, src/RomFetch.cpp:277-280"
note: "Alternate set of the Videoterm card. A missing or wrong-size file is ignored and the card derives the set as the bitwise inverse of the normal one. The fetcher extracts it from the MAME a2vidtrm set."
- 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: [256, 2048]
sha256: "ecca793179427fdd193373080bf23e49a95743bd7b5e0b218c747663938b6c03"
sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a"
validation: [size, sha256]
source_ref: "src/ClockCard.cpp:469-530, src/RomCatalog.h:216-226, src/RomFetch.cpp:227-230"
note: "The card loads a 256-byte slot ROM or the 2 KB chip, which supplies the $C800 expansion ROM as well; the fetch gate names the 2 KB dump and replaces a 256-byte file. 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
sha256: "42c1ae66c6bec932669239599eb8989a5364752d56fa5c8997bb23d8dfc0b657"
sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:299-325, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:100-104, src/RomFetch.cpp:215-218"
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"
sha256: "ce785b913b9fcec6db0fab89b2d94f07fcd07664a822531dcbba3a5ca70ca3bf"
sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:274-297, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:198-206, src/RomFetch.cpp:291-294"
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"
sha256: "084587835c1d2c92f5708a9745fdd43ba32136fcdb861a12ee7d690de22dc172"
sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46"
validation: [size, crc32, sha256]
source_ref: "src/RomCatalog.h:105-111, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:287-290"
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"
sha256: "4ae7ff693a486b155a70a8833047b3d4363464dace6760ed64bfb68db233ed4b"
sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e"
validation: [size, crc32, sha256]
source_ref: "src/RomCatalog.h:112-118, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:311, src/RomFetch.cpp:295-298"
note: "Host keys are mapped directly, no keyboard decode ROM is emulated; the ROM Status panel and the fetch gate check 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:81-119, src/MainWindow.cpp:345-358"
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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- 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:81-119, src/MainWindow.cpp:345-358"
- name: "Disk Rotation.wav"
path: "roms/virtual_ii_sons/lecteur/Disk Rotation.wav"
description: "Virtual ][ recording, drive motor loop"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:196, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "The Virtual ][ bank is offered only when this file and the arm, insertion and removal takes have loaded."
- name: "Boot.wav"
path: "roms/virtual_ii_sons/lecteur/Boot.wav"
description: "Virtual ][ recording, boot one-shot"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:197, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "Move arm.aiff"
path: "roms/virtual_ii_sons/lecteur/Move arm.aiff"
description: "Virtual ][ recording, head arm step"
category: game_data
required: false
aliases: ["Move arm.wav"]
source_ref: "src/FloppySoundDevice.cpp:198, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "Disk Insertion.aiff"
path: "roms/virtual_ii_sons/lecteur/Disk Insertion.aiff"
description: "Virtual ][ recording, drive lid, disk inserted"
category: game_data
required: false
aliases: ["Disk Insertion.wav"]
source_ref: "src/FloppySoundDevice.cpp:199, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "Disk Removal.aiff"
path: "roms/virtual_ii_sons/lecteur/Disk Removal.aiff"
description: "Virtual ][ recording, drive lid, disk removed"
category: game_data
required: false
aliases: ["Disk Removal.wav"]
source_ref: "src/FloppySoundDevice.cpp:200, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
note: "Needed for the bank; the .wav name is tried when the .aiff does not decode."
- name: "I-O Error.wav"
path: "roms/virtual_ii_sons/lecteur/I-O Error.wav"
description: "Virtual ][ recording, read error one-shot"
category: game_data
required: false
source_ref: "src/FloppySoundDevice.cpp:201, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "PopOn2.aiff"
path: "roms/virtual_ii_sons/interface/PopOn2.aiff"
description: "Virtual ][ recording, power switch on"
category: game_data
required: false
aliases: ["PopOn2.wav"]
source_ref: "src/FloppySoundDevice.cpp:202, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "PopOff2.aiff"
path: "roms/virtual_ii_sons/interface/PopOff2.aiff"
description: "Virtual ][ recording, power switch off"
category: game_data
required: false
aliases: ["PopOff2.wav"]
source_ref: "src/FloppySoundDevice.cpp:203, src/FloppySoundDevice.cpp:166-187, src/FloppySoundDevice.cpp:205-225, src/MainWindow.cpp:362-376"
- name: "Matrix Printer.wav"
path: "roms/virtual_ii_sons/imprimante/Matrix Printer.wav"
description: "Virtual ][ recording, dot-matrix printer loop"
category: game_data
required: false
source_ref: "src/MainWindow.cpp:372-374, src/PrinterSoundDevice.cpp:272-299"
note: "Loaded when present; the printer sound is generated otherwise."
- name: "DejaVuSans.ttf"
path: "fonts/DejaVuSans.ttf"
description: "DejaVu Sans, the frontend text font"
category: game_data
required: false
bundled: true
size: 759720
sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3"
source_ref: "src/main.cpp:533-546"
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
size: 426112
sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf"
source_ref: "src/main.cpp:593-611"
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
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
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."