Files
libretro/emulators/pom2.yml
T
Abdessamad Derraz 315dab82b7 feat: give each set its requirement and one pick
Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.

Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.

One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.

variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
2026-11-09 18:19:32 +01:00

1559 lines
82 KiB
YAML

emulator: POM2
type: standalone
core_classification: other
source: "https://github.com/habib256/pom2"
upstream: "https://github.com/habib256/pom2"
profiled_date: "2026-11-02"
source_commit: "06dd03a08674c67fda3e8d44d314aeeda04fda19"
core_version: "1.2.0"
version_basis:
kind: file
path: "CMakeLists.txt"
pattern: 'project\(pom2_imgui\s+VERSION\s+([0-9][\w.+-]*)'
display_name: "Apple - Apple II (POM2)"
cores:
- pom2
systems:
- apple-ii
mode: standalone
data_root:
windows:
path: "%LOCALAPPDATA%/POM2"
source_ref: "src/ResourcePaths.cpp:95-124"
note: "Searched before the files shipped beside the executable."
macos:
path: "~/Library/Application Support/POM2"
source_ref: "src/ResourcePaths.cpp:95-124"
note: "Searched before the files shipped in the bundle."
linux:
path: "$XDG_DATA_HOME/POM2"
source_ref: "src/ResourcePaths.cpp:95-124"
note: "~/.local/share/POM2 when XDG_DATA_HOME is unset. Searched before the install tree."
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:34-314): 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. Since v1.1.0 a desktop release package ships no firmware dump
(packaging/bundle.manifest:36-42): the user downloads or drops them in.
The browser build alone preloads the 32 KB //c ROM, the enhanced //e
ROM, the //e character generator and the AppleMouse slot EPROM
(packaging/bundle.manifest:58-61). Packages do carry the floppy samples,
the ImageWriter II recordings, the fonts and the pic/ folder
(packaging/bundle.manifest:65, 69, 80, 88).
Machine firmware is a probe chain per profile, first name found wins
(SystemProfile.cpp romProbeOrder, src/ProfileSwitch.cpp:136-154):
][ 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:357-364). A first run boots the //e on
apple2e.rom, else the ][+ chain, else the //c chain
(src/MainWindow.cpp:246-296): one of these is the set the machine needs,
each model's chain is a set of its own.
Memory::loadAppleIIRom (src/Memory.cpp:177-264) 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:455).
Character generators follow charRomProbeOrder per profile, or the locale
picked in the toolbar (src/CharRomCatalog.cpp:42-91,
src/ProfileSwitch.cpp:156-162). Memory::loadCharRom accepts 2 KB, 4 KB
and 8 KB dumps (src/Memory.cpp:348-381). 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 comes up on POM2's own 16-sector boot PROM, assembled from
the boot protocol (src/DiskIIBootRom.h, src/DiskIICard.cpp:81-91).
Apple's 341-0027-A replaces it when roms/disk2.rom is present
(src/DiskIICard.cpp:98-121). Without the P6 PROM, .dsk and .nib images
run the legacy 32-cycle gate and a WOZ is read by POM2's own sequencer
(src/DiskIICard.cpp:123-151, src/DiskIICard.cpp:1425-1429). The
Applicard and the UltraTerm leave the slot empty without their dump
(src/SlotCardFactory.cpp:328-345, src/SlotCardFactory.cpp:362-385). The
CCS 7710 and the DAN ][ run POM2's own firmware page without theirs
(src/SlotCardFactory.cpp:290-327). CFFA, Liron,
Workstation, the MC68705 mouse card, the 1981 Grappler, the Apple
Parallel Interface, the Videx Videoterm and the Apple Memory Expansion
Card 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:187-214, 431) and lists the Virtual ][
recordings with a decode check (src/RomStatus_ImGui.cpp:341-407).
Help > Download missing ROMs fetches the catalogue of 57 names, 54
distinct dumps (src/RomFetch.cpp:72-371), with curl pinned to HTTPS
(src/RomFetch.cpp:753-759). The RetroBIOS URLs are read at one pinned
commit, never at the branch tip: 441d412, a commit of RetroBIOS main where
every URL resolves (src/RomFetch.h:119-144). POM2's own archive is asked
first and RetroBIOS serves what it cannot supply.
Every entry carries a SHA-256, most a CRC32 as well, and a download is
installed only when its size, CRC32 and SHA-256 match
(src/RomFetch.cpp:674, src/RomFetch.cpp:930). 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:626, src/RomFetch.cpp:900-921). A 12 KB apple2p.rom is
the one alternate size kept as is. Seventeen 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, the four Videoterm files come
from a2vidtrm.zip, slinky_341-0344a.bin from a2memexp.zip,
applicard_v9.bin is applicard-v9.bin from a2aplcrd.zip and the four
UltraTerm files come from a2ulttrm.zip and a2ultrme.zip, the two CCS 7710
PROMs are 7710-03h.u5 and 7710-03l.u6 from ccs7710.zip, and the DAN ][
EPROM is a loose file (src/RomFetch.cpp:333-354). Downloads land in POM2's own roms/ when that
folder takes files, else in the per-user data directory's roms/
(src/RomFetch.cpp:836-862). Unavailable in the browser build
(src/RomFetch.cpp:999-1005).
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:83-121, src/MainWindow.cpp:373-386). A
missing sample is logged and the drive stays silent. A door and a head
stop for the 5.25 inch drive, which the MAME set lacks, are read from
roms/floppy_extras/ when present (src/MainWindow.cpp:387-394,
src/FloppySoundDevice.cpp:135-157). tools/install_drive_extras.py makes
them from OpenEmulator recordings and packages do not carry them. The
printer plays Scott Lawrence's ImageWriter II recordings from
roms/printer_samples/, which packages carry, once the three carriage
loops and one line feed have loaded, and is synthesised otherwise
(src/MainWindow.cpp:395-402, src/PrinterSoundDevice.cpp:392-457). A second bank, the
Virtual ][ recordings, is read from the folder picked with Import
sounds in the audio mixer, stored as mechanical_sound_path
(src/MainWindow_AudioPanels.cpp:351-383), then from roms/virtual_ii_sons/,
and on macOS from Virtual ][.app/Contents/Resources/ under /Applications
and ~/Applications (src/MainWindow.cpp:404-420,
src/VirtualIISoundCatalog.h:34-45): eight drive and switch takes under
lecteur/ and interface/ (src/VirtualIISoundCatalog.h:19-28) and one
printer loop under imprimante/ (src/VirtualIISoundCatalog.h:30-31). The
bank is selectable once Disk Rotation, Move arm, Disk Insertion and Disk
Removal have loaded (src/FloppySoundDevice.cpp:216-252). Each take is
tried under its path, then an .aiff path as .wav, then the bare file
name, then the bare name with .aiff turned into .wav or .wav into .raw,
so a Virtual ][ Contents/Resources/ folder is read as it is
(src/VirtualIISoundCatalog.h:47-66, src/FloppySoundDevice.cpp:200-214).
The packaging manifest keeps the directory out of release packages
(packaging/bundle.manifest:120-123).
The nine takes come from Contents/Resources/ of Virtual ][.app in
VirtualII.dmg, the free download on virtualii.com (Virtual ][ 13.3).
The five .aiff files are copied unchanged. The four .wav files are the
headerless Boot.raw, Disk Rotation.raw, I-O Error.raw and Matrix
Printer.raw behind a 44-byte RIFF header, the data chunk being the .raw
file byte for byte. The header states PCM, one channel, 44100 Hz, signed
16-bit little-endian. That is the stream Virtual ][ builds for these
files: every playWithSoundFile:sampleRate:sampleSize: call passes 44100.0
and 16, and SoundRepeater fills an lpcm AudioStreamBasicDescription with
one channel, the signed-integer flag for 16 bits and no big-endian flag.
POM2 decodes the takes through miniaudio into mono float at the file's
own rate. An .aiff whose FORM chunk declares more bytes than the file
holds is rejected. A file miniaudio refuses is read as mono signed 16-bit
little-endian 44100 Hz when it ends in .raw, and through AudioToolbox
on macOS when it ends in .aiff (src/FloppySoundDevice.cpp:159-192,
src/PrinterSoundDevice.cpp:92-115, src/VirtualIISoundLoader.h:17-104).
The screen sits in a Monitor II bezel, pic/retro/monitor/monitor2.png,
on by default (src/MainWindow_Screen.cpp:367-368), and the Drives window
shows a picture per drive state from pic/retro/drives/
(src/RetroArtwork.cpp:44-91, src/MainWindow_DriveRack.cpp:109-120).
Without a picture the screen has no bezel and the drive is drawn as a
vector mechanism (src/DriveRack_ImGui.cpp:57-61). The FujiNet card runs
FujiNet-PC Apple v1.5.2, a separate program the release packages carry
under fujinet-pc-APPLE/<platform>/ (src/FujiNetRuntime.cpp:38-62,
packaging/fujinet/stage.py:24-35).
Media named by the code are not firmware and are not listed here: the
browser demo boots bundled_disks/DIX-fix.po on the //c PAL preset unless
?preset=, ?disk=, ?url= or ?nodisk=1 says otherwise
(wasm/shell.html:114-120, src/main.cpp:317-323), and the headless CLI
mounts disks_5.4/dos33_master.dsk by default, a library image packages
do not carry (src/pom2_headless.cpp:428-433). Disk, tape and hard-disk images are
browsed from disks_5.4/, disks_3.5/, hdv/, floppyemu/, bundled_disks/,
cassettes/ and prodos_folder/ next to the executable.
groups:
boot:
required: true
ii:
required: false
ii-plus:
required: false
iie-unenhanced:
required: false
iic:
required: false
iic-plus:
required: false
char:
required: false
char-iie-unenhanced:
required: false
videoterm:
required: false
files:
- name: "apple2o.rom"
path: "roms/apple2o.rom"
group: {ii: 1}
description: "Apple ][ Original monitor and Integer BASIC, $D000-$FFFF"
bundled: false
size: 12288
sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1"
sha1: "78008be557f643e956a106121bcc182c0fb9ea6d"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:40, src/Memory.cpp:177-264, src/RomFetch.cpp:76-79"
note: "First candidate of the Apple ][ Original profile. apple2.rom is probed next."
- name: "apple2.rom"
path: "roms/apple2.rom"
group: {ii: 2, ii-plus: 2, boot: 3}
description: "Apple ][ generic 12 KB fallback, Autostart monitor and Applesoft"
bundled: false
size: 12288
sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905"
sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:40, src/SystemProfile.cpp:56, src/ProfileSwitch.cpp:142-149, src/RomFetch.cpp:80-87"
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"
group: {ii-plus: 1, boot: 2}
description: "Apple ][+ Autostart monitor and Applesoft, 4 KB pad then $C000-$FFFF"
bundled: false
size: [12288, 20480]
sha256: "92c4bef609920842ea472d21b661a0d35dbda6cd90963b8b734a205e22d84108"
sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:56, src/Memory.cpp:249-259, src/RomFetch.cpp:88-100, src/RomFetch.cpp:930-941"
note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:255-259). The loader drops the leading 4 KB of the 20 KB dump. The fetch gate names that dump, but a 12 KB six-chip image already on disk is kept as present without a digest check."
- name: "apple2e.rom"
path: "roms/apple2e.rom"
group: {boot: 1, iie-unenhanced: 3}
description: "Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half"
bundled: false
size: 32768
sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab"
sha1: "d756eba578a6c5a4807510dfee30ee585c63755e"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:110, src/SystemProfile.cpp:253-265, src/Memory.cpp:229-241, src/Memory.cpp:260-262, src/MainWindow.cpp:246-249, src/RomFetch.cpp:101-104"
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"
group: {iie-unenhanced: 1}
description: "Apple //e Unenhanced firmware, 4 KB internal $Cx00 ROM then $D000-$FFFF"
bundled: false
aliases: ["342-0135-b.64.rom"]
size: 16384
sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b"
sha1: "61fa9254628e5bb7236fb474006116d67684d747"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:80-81, src/SystemProfile.cpp:279-291, src/RomFetch.cpp:52-57, src/RomFetch.cpp:105-113"
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"
group: {iic: 1, iic-plus: 3, boot: 4}
description: "Apple //c two-bank firmware, bank 0 in the lower 16 KB"
bundled: false
size: 32768
crc32: "323952d1"
sha256: "d65bbf97058b9cdce8eaebf74124048e3b4e42dca1bd42be316747bbc27dc124"
sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:151-152, src/SystemProfile.cpp:213-214, src/SystemProfile.cpp:455-460, src/Memory.cpp:229-241, src/Memory.cpp:260-262, src/RomFetch.cpp:114-117"
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"
group: {iic: 2, boot: 5}
description: "Apple //c ROM 255, 16 KB, MAME apple2c a2c.128"
bundled: false
size: 16384
crc32: "f0edaa1b"
sha256: "3ca1c8a27bf111aa0f4dc9372c5e6404457adb9a458ce32ae4b03a7e989e0c76"
sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:151-152, src/Memory.cpp:247-248, src/RomFetch.cpp:118-121"
note: "Second candidate of the //c chain, loaded at $C000."
- name: "3420033a.256"
path: "roms/3420033a.256"
group: {iic: 3, boot: 6}
description: "Apple //c ROM 0, UniDisk 3.5 firmware, MAME apple2c0 342-0033-A"
bundled: false
size: 32768
crc32: "c8b979b3"
sha256: "678d5c9d374664d2ee94ba9c9564d26a917b31116b07c46df30a3e82c640885b"
sha1: "10767e96cc17bad0970afda3a4146564e6272ba1"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:151-152, src/RomFetch.cpp:122-125"
note: "Third candidate of the //c chain."
- name: "apple2cp.rom"
path: "roms/apple2cp.rom"
group: {iic-plus: 1}
description: "Apple //c Plus two-bank firmware, MAME apple2cp 341-0625-a.256"
bundled: false
aliases: ["apple2c-plus.rom"]
size: 32768
crc32: "0b996420"
sha256: "5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374"
sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:213-214, src/SystemProfile.cpp:455-460, src/RomFetch.cpp:126-129"
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"
group: {char: 2, char-iie-unenhanced: 3}
description: "Apple ][ and ][+ character generator, 2 KB uppercase set"
bundled: false
size: 2048
sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de"
sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:39-41, src/SystemProfile.cpp:55-57, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:132-135, src/Memory.cpp:348-381"
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"
group: {char: 1}
description: "Apple //e Enhanced character generator 342-0265-A, 4 KB with MouseText"
bundled: false
aliases: ["apple2e_char_us.rom"]
size: 4096
sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f"
sha1: "b2b5d87f52693817fc747df087a4aa1ddcdb1f10"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:114, src/SystemProfile.cpp:153, src/SystemProfile.cpp:215, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:136-148, src/Memory.cpp:348-381"
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"
group: {char-iie-unenhanced: 1}
description: "Apple //e Unenhanced character generator 342-0133-A, 4 KB"
bundled: false
aliases: ["apple2e_char_2k.rom", "342-0133-a.chr.rom"]
size: 4096
sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c"
sha1: "58ad0008df72896a18601e090ee0d58155ffa5be"
validation: [size, sha256]
source_ref: "src/SystemProfile.cpp:86-93, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:149-156, src/Memory.cpp:348-381"
note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 342-0133-a.chr.rom, the MAME member name, then apple2_char.rom. The fetcher writes the dump as apple2e_char_us_unenh.rom and apple2e_char_2k.rom."
- name: "apple2e_char_fr.rom"
path: "roms/apple2e_char_fr.rom"
description: "Apple //e French character generator, 4 KB"
required: false
bundled: 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:159-162, src/Memory.cpp:348-381"
note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A, and the fetcher writes that name from the same object (src/RomFetch.cpp:183-189)."
- name: "apple2e_char_frca.rom"
path: "roms/apple2e_char_frca.rom"
description: "Apple //e French Canadian Enhanced character generator, 4 KB"
required: false
bundled: 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:163-166, src/Memory.cpp:348-381"
note: "Locale picker entry, equal to 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
bundled: 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:167-170, src/Memory.cpp:348-381"
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
bundled: 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:171-174, src/Memory.cpp:348-381"
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
bundled: 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:175-178, src/Memory.cpp:348-381"
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
bundled: 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:179-182, src/Memory.cpp:348-381"
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
bundled: 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:198-203, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381"
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
bundled: false
size: 8192
crc32: "1eae3944"
sha256: "c69c8e1eb26923c5df03d3507fdf86c5f768283a924a5fffdd80377cf2339321"
sha1: "f79815457437e50404f4f537d8aabe34bff3a220"
validation: [size, sha256]
source_ref: "src/CharRomCatalog.cpp:85-86, src/RomFetch.cpp:204-208, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381"
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
bundled: 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:300, src/Memory.cpp:348-381"
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
bundled: 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:300, src/Memory.cpp:348-381"
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
bundled: false
size: 2048
crc32: "00f68076"
sha256: "6a516bcd96382597af7a498fb1da7547490c830db0f9d22d541fb065b9cd048b"
sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999"
validation: [size, crc32, sha256]
source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:253-259, src/RomFetch.cpp:209-213, src/RomStatus_ImGui.cpp:431"
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
bundled: false
has_builtin: true
size: 256
sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d"
sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:81-87, src/DiskIICard.cpp:98-121, src/RomFetch.cpp:216-219"
note: "The card comes up on POM2's own boot PROM, written from the boot protocol (src/DiskIIBootRom.h). Apple's 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
bundled: false
has_builtin: true
size: 256
sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2"
sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:88-96, src/DiskIICard.cpp:123-151, src/DiskIICard.cpp:200-210, src/RomFetch.cpp:220-223"
note: "Loading the file switches the bit-level P6 path on for every image. Without it the legacy 32-cycle nibble gate serves .dsk and .nib images and POM2's own sequencer reads and writes WOZ images."
- name: "disk2_13.rom"
path: "roms/disk2_13.rom"
description: "Disk II 13-sector boot PROM 341-0009"
required: false
bundled: false
size: 256
sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6"
sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:153-170, src/DiskIICard.cpp:211-235, src/RomCatalog.h:92-95, src/RomFetch.cpp:224-227"
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
bundled: false
size: 256
sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655"
sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:172-189, src/DiskIICard.cpp:220-230, src/RomCatalog.h:96-99, src/RomFetch.cpp:228-231"
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
bundled: false
size: 4096
crc32: "fb3726f8"
sha256: "a08cb25ad80054649ee5fcb620e01ed56f025acb28c753bc28dd187a1d149cab"
sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:133-157, src/CffaCard.cpp:26-40, src/RomCatalog.h:121-125, src/RomFetch.cpp:242-245"
note: "Preferred when the CPU is a 65C02, the 6502 build is the fallback, and the slot stays empty when neither is found."
- name: "cffa20ee02.bin"
path: "roms/cffa20ee02.bin"
description: "CFFA 2.0 firmware, 6502 build"
required: false
bundled: false
size: 4096
crc32: "3ecafce5"
sha256: "3d7f6918f9af3828f5a6299299a817df0d354ee62e547bc0238755de66162a88"
sha1: "d600692ed9626668233a22a48236af639410cb7b"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:133-157, src/CffaCard.cpp:26-40, src/RomCatalog.h:126-131, src/RomFetch.cpp:238-241"
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
bundled: false
size: 2048
sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af"
sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:69-101, src/SlotCardFactory.cpp:505-520, src/MouseCard.cpp:120-154, src/MouseCardAppleWin.cpp:90-103, src/RomFetch.cpp:262-267"
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
bundled: false
size: 2048
sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0"
sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:69-101, src/MouseCard.cpp:151-154, src/M68705P3.cpp:84-103, src/RomFetch.cpp:258-261"
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.1"
required: false
bundled: false
aliases: ["grappler+.bin", "grappler.bin"]
size: 4096
sha256: "9be4dea7722ad8928aee64c2ae708f365a6d66c50a63bff8a3c1a4e7596d44c6"
sha1: "829072cc19a58b24d36c2af972abaad6f9ba35d9"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:171-190, src/GrapplerCard.cpp:31-54, src/RomCatalog.h:134-140, src/RomFetch.cpp:254-257"
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
bundled: 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:141-148, src/RomFetch.cpp:250-253"
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:547-565, src/SuperSerialCard.cpp:849-855, src/RomCatalog.h:192-199, src/RomFetch.cpp:300-303"
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:193-231, src/GrapplerClassicCard.cpp:28-34, src/RomCatalog.h:200-203, src/RomFetch.cpp:272-275"
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:193-231, src/AppleParallelCard.cpp:28-34, src/RomCatalog.h:204-207, src/RomFetch.cpp:276-279"
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"
group: {videoterm: 1}
description: "Videx Videoterm firmware v2.4 with the 60 Hz CRTC table, 2 KB, MAME a2videoterm 6.ic6.bin"
size: 2048
crc32: "5776fa24"
sha256: "420da3867e489824f5fc0377c287c48a125296f19e1306df764e8f63bd23b00a"
sha1: "19f69011ed7d2551c39d5c1cac1f5a2defc8f8fb"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:250-261, src/SlotCardFactory.cpp:269-279, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:210-216, src/RomFetch.cpp:282-285"
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"
group: {videoterm: 2}
description: "Videx Videoterm firmware v2.4 with the 50 Hz CRTC table, 1 KB, MAME a2videoterm videx videoterm rom 2.4.bin"
size: 1024
crc32: "bbe3bb28"
sha256: "616f4d9f81a7a4ea0fa918842a05dfb3b503927776d2bfe97e6950b5431b562e"
sha1: "bb653836e84850ce3197f461d4e19355f738cfbf"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:250-261, src/VidexVideotermCard.cpp:40-47, src/RomCatalog.h:217-222, src/RomFetch.cpp:286-290"
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:262-279, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:223-227, src/RomFetch.cpp:291-295"
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:262-268, src/VidexVideotermCard.cpp:49-65, src/RomCatalog.h:228-233, src/RomFetch.cpp:296-299"
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
bundled: 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:704-765, src/RomCatalog.h:261-271, src/RomFetch.cpp:246-249"
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
bundled: false
size: 4096
sha256: "42c1ae66c6bec932669239599eb8989a5364752d56fa5c8997bb23d8dfc0b657"
sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60"
validation: [size, sha256]
source_ref: "src/SlotCardFactory.cpp:460-493, src/LironCard.cpp:68-92, src/SmartPortCard.cpp:102-119, src/RomCatalog.h:102-106, src/RomFetch.cpp:234-237"
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
bundled: false
aliases: ["341-0358-a.bin"]
size: 65536
crc32: "63819dcb"
sha256: "ce785b913b9fcec6db0fab89b2d94f07fcd07664a822531dcbba3a5ca70ca3bf"
sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:435-458, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:243-251, src/RomFetch.cpp:361-364"
note: "The Workstation card leaves its slot empty without it. The card runs its own 65C02 on the upper 32 KB."
- name: "slinky_341-0344a.bin"
path: "roms/slinky_341-0344a.bin"
description: "Apple Memory Expansion Card firmware 341-0344A, 4 KB, MAME a2memexp"
required: false
bundled: false
size: 4096
crc32: "1e994e17"
sha256: "2b9beab16f64cda027ef8f2a048e54f3cb8f8016eafdc98d7be500c6a90ccc9c"
sha1: "6e823a1fa40ed37eeddcef23f5df24da2ea1463e"
validation: [size]
source_ref: "src/SlotCardFactory.cpp:407-433, src/SlinkyCard.cpp:39-41, src/SlinkyCard.h:94-98"
note: "The Memory Expansion card leaves its slot empty without it, and a file that is not 4096 bytes is refused. The firmware is the card's ProDOS RAM-disk driver: seven per-slot $Cn00 pages and the $C800 expansion ROM. Not in the fetch catalogue."
- 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
bundled: false
size: 32768
crc32: "c73ff25b"
sha256: "084587835c1d2c92f5708a9745fdd43ba32136fcdb861a12ee7d690de22dc172"
sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46"
validation: [size, crc32, sha256]
source_ref: "src/RomCatalog.h:107-113, src/RomStatus_ImGui.cpp:190-208, src/RomFetch.cpp:357-360"
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
bundled: false
size: 2048
crc32: "f04970a9"
sha256: "4ae7ff693a486b155a70a8833047b3d4363464dace6760ed64bfb68db233ed4b"
sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e"
validation: [size, crc32, sha256]
source_ref: "src/RomCatalog.h:114-120, src/RomStatus_ImGui.cpp:190-208, src/RomStatus_ImGui.cpp:431, src/RomFetch.cpp:365-368"
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: "applicard_v9.bin"
path: "roms/applicard_v9.bin"
description: "PCPI Applicard Z80 boot ROM v9, MAME a2aplcrd applicard-v9.bin"
required: false
bundled: false
size: 2048
crc32: "1d461000"
sha256: "ee9841257e923e1d6be9cd366d2d98d12db9647c9cb1cfe3ce5d631f588cdeca"
sha1: "71d633be864b6084362e85108a4e600cbe6e44fe"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:328-345, src/ApplicardCard.h:58-62, src/ApplicardCard.cpp:39-44, src/RomCatalog.h:155-159, src/RomFetch.cpp:313-316"
note: "ROM-gated: the card's 6 MHz Z80 boots from this 2 KB ROM and has nothing else to run, so a file that is missing or not 2048 bytes leaves the slot empty. The fetcher extracts it from the MAME a2aplcrd set, which the collection holds in bios/Arcade/Arcade/a2aplcrd.zip."
- name: "videx_ultraterm_frm_b537.bin"
path: "roms/videx_ultraterm_frm_b537.bin"
description: "Videx UltraTerm firmware EPROM, original card, MAME a2ulttrm frm_b537.bin"
required: false
bundled: false
size: 4096
crc32: "1e85a93e"
sha256: "8c9888dbc0c5dc8d51493e3f192a09415216ccb96d99e9d94ea29c58dec643e0"
sha1: "b4acd1775c08ae43996ab4edf6d8e28f4736346b"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:174-177, src/RomFetch.cpp:317-320"
note: "Loaded as a pair with videx_ultraterm_chs_7859.bin: both must be 4 KB or the slot stays empty. On a //e the enhanced pair is tried first and this one second. A ][ or ][+ probes this pair only. Member of the MAME a2ulttrm set, bios/Arcade/Arcade/a2ulttrm.zip."
- name: "videx_ultraterm_chs_7859.bin"
path: "roms/videx_ultraterm_chs_7859.bin"
description: "Videx UltraTerm character ROM, original card, MAME a2ulttrm chs_7859.bin"
required: false
bundled: false
size: 4096
crc32: "ebe8f333"
sha256: "d9c3108abb2a21a3807deb992af62c963891f18938f1da945e536f82e4676651"
sha1: "3517fa9e7a39573f1cb159b3161d6939dec199ba"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:179-182, src/RomFetch.cpp:321-324"
note: "The high- and low-density glyph sets of the original card, 128 glyphs of 16 rasters each. Pair of videx_ultraterm_frm_b537.bin. Member of the MAME a2ulttrm set, bios/Arcade/Arcade/a2ulttrm.zip."
- name: "videx_ultraterm_enh_frm_b5c9.bin"
path: "roms/videx_ultraterm_enh_frm_b5c9.bin"
description: "Videx UltraTerm firmware EPROM, enhanced //e card, MAME a2ultrme frm_b5c9.bin"
required: false
bundled: false
size: 4096
crc32: "b71e05e0"
sha256: "cb17d747d3370723df02504f94bcf72aae9ef6d7419dc1e2edeb2cccfedf4024"
sha1: "092e3eda4644d4f465809864a7f023ac7d1d1542"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:183-186, src/RomFetch.cpp:325-328"
note: "Loaded as a pair with videx_ultraterm_enh_chs_5604.bin, the first pair tried on a //e and never probed on a ][ or ][+. Member of the MAME a2ultrme set, bios/Arcade/Arcade/a2ultrme.zip."
- name: "videx_ultraterm_enh_chs_5604.bin"
path: "roms/videx_ultraterm_enh_chs_5604.bin"
description: "Videx UltraTerm character ROM, enhanced //e card, MAME a2ultrme chs_5604.bin"
required: false
bundled: false
size: 4096
crc32: "3fb4e90a"
sha256: "cbbfd3d07be729795d2b5a2bcdb1f1daf01af945f2f80430a5666bb7f0fedcd0"
sha1: "94ff75199232a9b613585c22f88470f73fb7dd09"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:188-191, src/RomFetch.cpp:329-332"
note: "Pair of videx_ultraterm_enh_frm_b5c9.bin. Member of the MAME a2ultrme set, bios/Arcade/Arcade/a2ultrme.zip."
- name: "ccs7710_03h.u5"
path: "roms/ccs7710_03h.u5"
description: "CCS 7710 asynchronous serial interface, firmware 7710-03 PROM U5 (high nibbles), MAME ccs7710 7710-03h.u5"
required: false
bundled: false
size: 256
crc32: "a2cdb6bd"
sha256: "1e303244535c4f00f2c6758ab4c9416414e5228639921a5b1b3277ccea529bf3"
sha1: "6ecfb6b145256d4787a943da8ef267303df562d6"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:160-163, src/RomFetch.cpp:333-346"
note: "One of the card's two 256x4 PROMs: each holds one nibble of every firmware byte, so both must be present and 256 bytes for the card to load them. Loaded, CCS's firmware executes. Without the pair, or with ccs7710_firmware = pom2, the card serves POM2's own page written to behave as the 7710-03. Member of the MAME ccs7710 set, bios/Arcade/MAME/ccs7710.zip."
- name: "ccs7710_03l.u6"
path: "roms/ccs7710_03l.u6"
description: "CCS 7710 asynchronous serial interface, firmware 7710-03 PROM U6 (low nibbles), MAME ccs7710 7710-03l.u6"
required: false
bundled: false
size: 256
crc32: "18e3983f"
sha256: "1af47c6f8c45af30483fd84bae77994583753a0268ca43c2c8f5b45fa4b4a04e"
sha1: "d0df2aaf0134f8c1b929a4de0036fedc7e7164e2"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:164-168, src/RomFetch.cpp:333-350"
note: "The low-nibble half of the 7710-03 firmware, see ccs7710_03h.u5. Member of the MAME ccs7710 set, bios/Arcade/MAME/ccs7710.zip."
- name: "dan2_eprom.bin"
path: "roms/dan2_eprom.bin"
description: "DAN ][ Controller slot EPROM, 512 bytes (two slot pages), ThorstenBr/Apple2Card"
required: false
bundled: false
size: 512
crc32: "b1c3860f"
sha256: "c64413319243ecab3e2a93a9f5e93702d372b32dd265fa13d45c38298a3a2130"
sha1: "5e2737d233f5769df654d2d5aa96d24f2fd85671"
validation: [size, crc32, sha256]
source_ref: "src/SlotCardFactory.cpp:309-327, src/Dan2Card.h:41-44, src/Dan2Card.h:60, src/Dan2Card.cpp:106-111, src/RomCatalog.h:169-173, src/RomFetch.cpp:351-354"
note: "The card's own firmware from the open-source DAN ][ project (zlib licence), selected one page at a time through the 8255's bit set/reset. A file that is not 512 bytes is refused. Without it the card serves POM2's own page written to the same protocol: ProDOS signature, boot by SAFEREAD of block 0, the block driver."
- 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
bundled: true
size: 5336
sha1: "2d046a880476218685ed738fe8c8381962afd74a"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
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
bundled: true
size: 14860
sha1: "6f698055fa6e9da6c5ae3fd6fb05de76b92a45a9"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 22764
sha1: "fbbbb5e8724c076d194e66a4443d299d54a8efd6"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 30060
sha1: "b6cd14944454c743861196edb4fcab1cc9b586d4"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 8864
sha1: "4b13701d9a7f8ab0f0827f17ba80b5c32b4e0fa7"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17708
sha1: "875f90538a3ff5db863ad4c384e1808841ddea9b"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 11180
sha1: "b87d89c4b46c36dd78dec3dc5170ca61501e7cd9"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17708
sha1: "510476098848e2b5cdfe9f1608f8dfa3207fe9b4"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 8864
sha1: "f8d9b94c4d92d35d9ffb1117b693fc74a93f613f"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 6628
sha1: "669ee98fb9fac4371c72ed0b60be1bc8470bc7f8"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 7450
sha1: "55caafbd19486b8d517e4b33a6fa65250df55e25"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
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
bundled: true
size: 22230
sha1: "87e5dec269e67497681c15849777ebfc301131c1"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 26540
sha1: "c6b34fc61496943134ac45cc836a24e743caf794"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 44144
sha1: "b2fe4c3a4185146a7d11483d92d4412dd79dbc78"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17708
sha1: "db04fc097bdd0411cff232f57525ded491b48c6c"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17708
sha1: "96ce04a5b02af0da6d311f06fc4906a3cf71c78f"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17708
sha1: "af770fd9261a8efee23d66cd39b27be7b2ab7853"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 35308
sha1: "c82b1714378bf2507ed86dea1e9fe743c380abab"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 17684
sha1: "a8901b692de15eb7a9052f61283f0e7a2b63d67d"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- 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
bundled: true
size: 6878
sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97"
source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386"
- name: "print_draft_loop.mp3"
path: "roms/printer_samples/print_draft_loop.mp3"
description: "ImageWriter II recording, print head at draft quality, looped while printing"
category: game_data
required: false
bundled: true
size: 25114
sha1: "ad0ac01db454b0a9a609b128cb36fd2efb411570"
source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised."
- name: "print_medium_loop.mp3"
path: "roms/printer_samples/print_medium_loop.mp3"
description: "ImageWriter II recording, print head at standard quality, looped while printing"
category: game_data
required: false
bundled: true
size: 31907
sha1: "1550df48e8352ecdf8810f5642b5771cd89068bb"
source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised."
- name: "print_nlq_loop.mp3"
path: "roms/printer_samples/print_nlq_loop.mp3"
description: "ImageWriter II recording, print head at near letter quality, looped while printing"
category: game_data
required: false
bundled: true
size: 130646
sha1: "62acd9f113054b6c58b68815ba9da571a057b01b"
source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised."
- name: "line_feed_01.mp3"
path: "roms/printer_samples/line_feed_01.mp3"
description: "ImageWriter II recording, one line feed"
category: game_data
required: false
bundled: true
size: 10481
sha1: "dda17e6f1ea5b9e0021fd8f3aa81f9feec851b34"
source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "The three line feeds play in turn. The recorded bank needs at least one of them."
- name: "line_feed_02.mp3"
path: "roms/printer_samples/line_feed_02.mp3"
description: "ImageWriter II recording, one line feed"
category: game_data
required: false
bundled: true
size: 13616
sha1: "97ec7045601d055ba58e0131d8f2018ee71febe3"
source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "The three line feeds play in turn. The recorded bank needs at least one of them."
- name: "line_feed_03.mp3"
path: "roms/printer_samples/line_feed_03.mp3"
description: "ImageWriter II recording, one line feed"
category: game_data
required: false
bundled: true
size: 10481
sha1: "5cd3dde3a97c3e40f03d803f84eb587d7d8258d0"
source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "The three line feeds play in turn. The recorded bank needs at least one of them."
- name: "page_feed_short.mp3"
path: "roms/printer_samples/page_feed_short.mp3"
description: "ImageWriter II recording, a paper feed of 1 to 3 inches"
category: game_data
required: false
bundled: true
size: 15709
sha1: "417073a8125251d055a4c9d78fba3ff69a1fc6b9"
source_ref: "src/PrinterSoundDevice.cpp:437, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "page_feed_medium.mp3"
path: "roms/printer_samples/page_feed_medium.mp3"
description: "ImageWriter II recording, a paper feed of 3 to 7 inches"
category: game_data
required: false
bundled: true
size: 27203
sha1: "f9d6648111dcb75fbfd5effa301de6e03757242c"
source_ref: "src/PrinterSoundDevice.cpp:438, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "page_feed_long.mp3"
path: "roms/printer_samples/page_feed_long.mp3"
description: "ImageWriter II recording, a longer paper feed"
category: game_data
required: false
bundled: true
size: 66385
sha1: "ae3377a9aa9e2d4123ee40d7ca48c0369fdb325b"
source_ref: "src/PrinterSoundDevice.cpp:439, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "paper_tear_01.mp3"
path: "roms/printer_samples/paper_tear_01.mp3"
description: "ImageWriter II recording, sheet torn off"
category: game_data
required: false
bundled: true
size: 11527
sha1: "e63fb9cb72a8f403a2dbf92b5b94e48fec68ee19"
source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "paper_tear_02.mp3"
path: "roms/printer_samples/paper_tear_02.mp3"
description: "ImageWriter II recording, sheet torn off"
category: game_data
required: false
bundled: true
size: 17274
sha1: "3e5c670abaf401790dd42857ec2a8c956735b9a6"
source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "paper_tear_03.mp3"
path: "roms/printer_samples/paper_tear_03.mp3"
description: "ImageWriter II recording, sheet torn off"
category: game_data
required: false
bundled: true
size: 9437
sha1: "3ada27aaf3d06b066a69d18e44b240ba9b1aced7"
source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "paper_tear_04.mp3"
path: "roms/printer_samples/paper_tear_04.mp3"
description: "ImageWriter II recording, sheet torn off"
category: game_data
required: false
bundled: true
size: 12572
sha1: "1e58e92ffd7a0d0ef17c4a4e3b246c2fc5f436f1"
source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "paper_tear_05.mp3"
path: "roms/printer_samples/paper_tear_05.mp3"
description: "ImageWriter II recording, sheet torn off"
category: game_data
required: false
bundled: true
size: 18319
sha1: "8774c81069059079a2bba070e8288fb78877818f"
source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "power_switch.mp3"
path: "roms/printer_samples/power_switch.mp3"
description: "ImageWriter II recording, printer switched off"
category: game_data
required: false
bundled: true
size: 16751
sha1: "a3c4555810b819e61e492eb50ec4cea2cb433278"
source_ref: "src/PrinterSoundDevice.cpp:444, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_01.mp3"
path: "roms/printer_samples/powerup_01.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 56455
sha1: "36fc1b574dd3c3261f00891cdf99978c13dcb0e1"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_02_closed.mp3"
path: "roms/printer_samples/powerup_02_closed.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 73702
sha1: "9caf0408c818c7ab4279ada5562d794f9661d0a2"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_03.mp3"
path: "roms/printer_samples/powerup_03.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 66904
sha1: "7894c42ea47ef4a1b780d0794dd7364c318d5d87"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_04_quick.mp3"
path: "roms/printer_samples/powerup_04_quick.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 37130
sha1: "60e963376aca5ebdd6416716a3e34143d329b25e"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_05_color.mp3"
path: "roms/printer_samples/powerup_05_color.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 70567
sha1: "6ea19a9d720d23262de19711694045b10fb1c7ea"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "powerup_06_mono.mp3"
path: "roms/printer_samples/powerup_06_mono.mp3"
description: "ImageWriter II recording, printer switched on"
category: game_data
required: false
bundled: true
size: 70566
sha1: "cbb108a8f3548d6faaacc533c4684c54024f42c0"
source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69"
note: "Optional take of the recorded bank. A missing one leaves that event silent."
- name: "525_door_open.wav"
path: "roms/floppy_extras/525_door_open.wav"
description: "OpenEmulator Shugart SA400 recording, 5.25 inch drive door opening"
category: game_data
required: false
bundled: false
source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55"
note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Open.ogg of openemulator/libemulation at 8288db41 (sha256 64197916aa6d5bada4cdcceaae9fae8b15fb1622bbc7dfa3da0ff8cc50dc7f36), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent."
- name: "525_door_close.wav"
path: "roms/floppy_extras/525_door_close.wav"
description: "OpenEmulator Shugart SA400 recording, 5.25 inch drive door closing"
category: game_data
required: false
bundled: false
source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55"
note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Close.ogg of openemulator/libemulation at 8288db41 (sha256 9df48a2b5c3590e6d3c0d19eb093aed4b310270a0dd3c59eddeeb1faf692bf55), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent."
- name: "525_head_stop.wav"
path: "roms/floppy_extras/525_head_stop.wav"
description: "OpenEmulator Shugart SA400 recording, 5.25 inch head hitting the track 0 stop"
category: game_data
required: false
bundled: false
source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55"
note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Stop.ogg of openemulator/libemulation at 8288db41 (sha256 9a5ed615cc3114b15e7555e1124557e3134896a1d08b69d51041f6e200d2b142), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent."
- name: "Disk Rotation.wav"
path: "roms/virtual_ii_sons/lecteur/Disk Rotation.wav"
description: "Virtual ][ recording, drive motor loop"
category: game_data
required: false
size: 18420
sha1: "553e664b2f41f1cc74e2525c966e9c71f9e3bd2f"
source_ref: "src/VirtualIISoundCatalog.h:20, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "The Virtual ][ bank is offered only when this file and the arm, insertion and removal takes have loaded. The bare Disk Rotation.wav and Disk Rotation.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Disk Rotation.raw (sha1 993b054ee6ecf3778186937593d591eba332bdd6) behind a mono 44100 Hz 16-bit PCM RIFF header."
- name: "Boot.wav"
path: "roms/virtual_ii_sons/lecteur/Boot.wav"
description: "Virtual ][ recording, boot one-shot"
category: game_data
required: false
size: 6806
sha1: "15c67468555494a9336d8f1981806ecd05a47da4"
source_ref: "src/VirtualIISoundCatalog.h:21, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "The bare Boot.wav and Boot.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Boot.raw (sha1 06db331ec01064661bf64ed39b58a9b35aaec067) behind a mono 44100 Hz 16-bit PCM RIFF header."
- name: "Move arm.aiff"
path: "roms/virtual_ii_sons/lecteur/Move arm.aiff"
description: "Virtual ][ recording, head arm step"
category: game_data
required: false
size: 36510
sha1: "3e03cfef6a327adf9e2c09dd329a4c5b8e0aac52"
aliases: ["Move arm.wav"]
source_ref: "src/VirtualIISoundCatalog.h:22, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Move arm.aiff unchanged."
- 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
size: 69146
sha1: "3da6c2e5986c38b6c7200bacc95ef076d0429152"
aliases: ["Disk Insertion.wav"]
source_ref: "src/VirtualIISoundCatalog.h:23, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Disk Insertion.aiff unchanged."
- 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
size: 243894
sha1: "9c33c1c1d793c8b9d6ff2e7867ae3c51f2556355"
aliases: ["Disk Removal.wav"]
source_ref: "src/VirtualIISoundCatalog.h:24, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Disk Removal.aiff unchanged."
- 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
size: 4014
sha1: "464e3d8f9b50d21cef706503058cef63a5d73995"
source_ref: "src/VirtualIISoundCatalog.h:25, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "The bare I-O Error.wav and I-O Error.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ I-O Error.raw (sha1 b123ef605fa977bcda49617cb96c7bc898281dbc) behind a mono 44100 Hz 16-bit PCM RIFF header."
- name: "PopOn2.aiff"
path: "roms/virtual_ii_sons/interface/PopOn2.aiff"
description: "Virtual ][ recording, power switch on"
category: game_data
required: false
size: 172338
sha1: "7473f2ade668f9155729e6dfc56775f998bb9ac3"
aliases: ["PopOn2.wav"]
source_ref: "src/VirtualIISoundCatalog.h:26, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "Virtual ][ PopOn2.aiff unchanged."
- name: "PopOff2.aiff"
path: "roms/virtual_ii_sons/interface/PopOff2.aiff"
description: "Virtual ][ recording, power switch off"
category: game_data
required: false
size: 144702
sha1: "60b4b8bb589bcc3e4c6876a09d4aa4b391390798"
aliases: ["PopOff2.wav"]
source_ref: "src/VirtualIISoundCatalog.h:27, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420"
note: "Virtual ][ PopOff2.aiff unchanged."
- 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
size: 1316870
sha1: "0b0363772efc684ea0d21cb79e62a0df63f0c094"
source_ref: "src/VirtualIISoundCatalog.h:30-31, src/MainWindow.cpp:415-418, src/PrinterSoundDevice.cpp:92-115, src/PrinterSoundDevice.cpp:460-484"
note: "Loaded when present, otherwise the printer sound is generated. The bare Matrix Printer.wav and Matrix Printer.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Matrix Printer.raw (sha1 6f6d26237389435693469b4dd0e0b69083797bff) behind a mono 44100 Hz 16-bit PCM RIFF header."
- 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:585-598"
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:645-663"
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:800"
- 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: 568596
sha1: "dc85406f7bb69c4439088e78afab610afb753865"
source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:643-654"
note: "Keyboard window picture for every profile outside the //c family. The window hotspots are fractions of this image. Without it the window has nothing to click."
- name: "Keyboard_AppleIIc.png"
path: "pic/Keyboard_AppleIIc.png"
description: "Apple //c keyboard photograph the clickable keyboard window uses on the //c family"
category: game_data
required: false
bundled: true
size: 1743304
sha1: "f7c8a696d66ce9403b5c2f5f62b797c816961df0"
source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:643-654"
note: "Keyboard window picture for the //c, //c PAL and //c Plus profiles. Without it the window has nothing to click."
- name: "monitor2.png"
path: "pic/retro/monitor/monitor2.png"
description: "Apple Monitor II bezel drawn around the screen"
category: game_data
required: false
bundled: true
size: 24460
sha1: "1b8f16f4e74e6717d0332364c7b80cf20f37580f"
source_ref: "src/RetroArtwork.cpp:44-47, src/MainWindow_Screen.cpp:367-368"
note: "Drawn by default. Without it the screen has no bezel."
- name: "driveopen.png"
path: "pic/retro/drives/driveopen.png"
description: "Disk II drive 1, door open, motor off"
category: game_data
required: false
bundled: true
size: 81661
sha1: "c768cae9b9f1c8aed4bbea72df40767b00935530"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
note: "Drives window picture. Without it the drive is drawn as a vector mechanism."
- name: "driveopenrunning.png"
path: "pic/retro/drives/driveopenrunning.png"
description: "Disk II drive 1, door open, motor on"
category: game_data
required: false
bundled: true
size: 83258
sha1: "7fb68df047b698fb6c4308ca518c7e8af72c86cf"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "driveclosed.png"
path: "pic/retro/drives/driveclosed.png"
description: "Disk II drive 1, disk in, motor off"
category: game_data
required: false
bundled: true
size: 97766
sha1: "a0cafd4de513c9787a15484a2658c10cb529b5af"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "driverunning.png"
path: "pic/retro/drives/driverunning.png"
description: "Disk II drive 1, disk in, motor on"
category: game_data
required: false
bundled: true
size: 99189
sha1: "24fbad2dccd60363e08cfca0a2f94b55c7ef6775"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "drive2open.png"
path: "pic/retro/drives/drive2open.png"
description: "Disk II drive 2, door open, motor off"
category: game_data
required: false
bundled: true
size: 82048
sha1: "d35419fe9ca5cdee1bd6e35ebd5378be15021ee5"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "drive2openrunning.png"
path: "pic/retro/drives/drive2openrunning.png"
description: "Disk II drive 2, door open, motor on"
category: game_data
required: false
bundled: true
size: 83639
sha1: "8b2d611608b67898819cba78c37ea9c81aeb8461"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "drive2closed.png"
path: "pic/retro/drives/drive2closed.png"
description: "Disk II drive 2, disk in, motor off"
category: game_data
required: false
bundled: true
size: 98370
sha1: "200ef91f19ac37d95edf270149f3856e278c76d0"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "drive2running.png"
path: "pic/retro/drives/drive2running.png"
description: "Disk II drive 2, disk in, motor on"
category: game_data
required: false
bundled: true
size: 99783
sha1: "82b7541e0ba7f5c466079e7bfe8121f827c64c02"
source_ref: "src/RetroArtwork.cpp:75-91, src/MainWindow_DriveRack.cpp:113-116"
- name: "diskiicopen.png"
path: "pic/retro/drives/diskiicopen.png"
description: "//c built-in drive, door open, motor off"
category: game_data
required: false
bundled: true
size: 14098
sha1: "c9a06c6bfb9a5b8d5261ad2a4ba100c2e1eb66ac"
source_ref: "src/RetroArtwork.cpp:56-66, src/MainWindow_DriveRack.cpp:113-116"
note: "Used in place of the Disk II pictures on the //c, //c PAL and //c Plus profiles."
- name: "diskiicopenrunning.png"
path: "pic/retro/drives/diskiicopenrunning.png"
description: "//c built-in drive, door open, motor on"
category: game_data
required: false
bundled: true
size: 14054
sha1: "e5520d89d11669137c639469ad4818c7b7b8ba12"
source_ref: "src/RetroArtwork.cpp:56-66, src/MainWindow_DriveRack.cpp:113-116"
- name: "diskiicclosed.png"
path: "pic/retro/drives/diskiicclosed.png"
description: "//c built-in drive, disk in, motor off"
category: game_data
required: false
bundled: true
size: 13876
sha1: "5f958d799ed0037dfa0c05b8594289135080ea2a"
source_ref: "src/RetroArtwork.cpp:56-66, src/MainWindow_DriveRack.cpp:113-116"
- name: "diskiicrunning.png"
path: "pic/retro/drives/diskiicrunning.png"
description: "//c built-in drive, disk in, motor on"
category: game_data
required: false
bundled: true
size: 13830
sha1: "8af19c7739c5e796f9870dbc1808e81ddf85bbd1"
source_ref: "src/RetroArtwork.cpp:56-66, src/MainWindow_DriveRack.cpp:113-116"
- name: "apple35.png"
path: "pic/retro/drives/apple35.png"
description: "3.5 inch drive, idle"
category: game_data
required: false
bundled: true
size: 8746
sha1: "17605fc7452fdf062496d062fb0f4cef11ee9969"
source_ref: "src/RetroArtwork.cpp:49-54, src/MainWindow_DriveRack.cpp:117-118"
- name: "apple35running.png"
path: "pic/retro/drives/apple35running.png"
description: "3.5 inch drive, busy"
category: game_data
required: false
bundled: true
size: 8743
sha1: "5c5df0b5393ef75169651799e912cd66ce938abc"
source_ref: "src/RetroArtwork.cpp:49-54, src/MainWindow_DriveRack.cpp:117-118"
- name: "applehd.png"
path: "pic/retro/drives/applehd.png"
description: "Hard disk, idle"
category: game_data
required: false
bundled: true
size: 7792
sha1: "f0c81be813937e16adfa5d01914b14017d21b121"
source_ref: "src/RetroArtwork.cpp:68-73, src/MainWindow_DriveRack.cpp:119-120"
- name: "applehdrunning.png"
path: "pic/retro/drives/applehdrunning.png"
description: "Hard disk, busy"
category: game_data
required: false
bundled: true
size: 7690
sha1: "dfe8bdfccad5aeea4b5077b2e45ee27bcb6278d7"
source_ref: "src/RetroArtwork.cpp:68-73, src/MainWindow_DriveRack.cpp:119-120"