Files
libretro/emulators/minivmac37.yml
T
Abdessamad Derraz 78fd70ae50 feat: profile Mini vMac 37 standalone
The SDL build reads vMac.ROM, fixed at build time to the Mac Plus ROM name and 128 KB (setup/SPCNFGAP.i:60-63), and checks it against three Mac Plus checksums (src/CONTROLM.h:1344-1388). Search order: --rom, the executable's directory, mnvm_rom/ under the SDL pref path, the working directory (src/OSGLUSDL.c:546-620).
2026-10-20 15:07:21 +02:00

66 lines
3.2 KiB
YAML

emulator: "Mini vMac 37"
type: standalone
core_classification: community_fork
source: "https://github.com/minivmac/minivmac"
profiled_date: "2026-10-20"
source_commit: "6860a9a7f372c461b25dc42974b191a453ebcfb2"
core_version: "37.03"
display_name: "Apple - Macintosh Plus (Mini vMac 37)"
mode: standalone
cores: []
systems:
- apple-macintosh
notes: |
Mini vMac 37.03 (setup/SPBASDEF.i:21-24), maintained from Paul C. Pratt's
code (setup/SPBASDEF.i:30). The emulated model, the ROM name, the ROM size
and the accepted checksums are fixed when the setup tool writes the build configuration, so one binary runs
one model. The default model is the Macintosh Plus (setup/SPBLDOPT.i:101,108).
The entries below describe a build with -m Plus, which is also the default.
The setup tool names the ROM after the model (setup/SPCNFGAP.i:28-63):
Twig43.ROM (Twig43), Twiggy.ROM (Twiggy), Mac128K.ROM (128K),
MacPlusKanji.ROM (Kanji), MacSE.ROM (SE), SEFDHD.ROM (SEFDHD), Classic.ROM
(Classic), PB100.ROM (PB100), MacII.ROM (II), MacIIx.ROM (IIx) and vMac.ROM
for 512Ke and Plus. ROM sizes per model are set at setup/SPBLDOPT.i:3229-3257
and the per-model checksums at setup/SPCNFGAP.i:81-126. A build for another
model reads only the name of that model.
The SDL backend (-api sdl, sd2 or sd3, src/OSGLUSDL.c) looks for the ROM in
this order (src/OSGLUSDL.c:606-620): the path given by --rom or -r
(src/OSGLUSDL.c:4962-4968), the directory given by -d or else the directory
of the executable from SDL_GetBasePath (src/OSGLUSDL.c:576-604,5185), the
mnvm_rom folder under SDL_GetPrefPath("gryphel", "minivmac")
(src/OSGLUSDL.c:546-573,5187), then the working directory. The executable
directory and the preference folder are searched only on SDL 2 and later
(src/OSGLUSDL.c:67-72). The default Linux backend is X11
(setup/GNBLDOPT.i:1609-1621), which searches the command line path, the
executable directory, ~/.gryphel/mnvm_rom/ and the working directory
(src/OSGLUXWN.c:957-1022).
When no ROM loads, the emulator keeps running and waits for a ROM image
dropped on its window (src/OSGLUSDL.c:470-483,620).
At startup the SDL backend mounts disk1.dsk to disk9.dsk from the executable
directory, stopping at the first missing one (src/OSGLUSDL.c:486-540). These
are user disk images.
files:
- name: "vMac.ROM"
system: apple-macintosh
path: "vMac.ROM"
required: true
min_size: 131072
validation: [size]
source_ref: "setup/SPCNFGAP.i:60-63,115-124, setup/SPBLDOPT.i:3240-3243, src/OSGLUSDL.c:435-468,606-620, src/CONTROLM.h:1314-1326,1344-1388"
note: >
Macintosh Plus ROM. LoadMacRomFrom reads kROM_Size bytes, 131072 for the
Plus (setup/SPCNFGGL.i:73-77), and rejects a shorter file. ROM_IsValid
then compares the first long word of the image with the three Plus
checksums 0x4D1EEEE1 (v1), 0x4D1EEAE1 (v2) and 0x4D1F8172 (v3), and
recomputes the sum of the 16-bit words from offset 4 over 131072 bytes,
which must equal the stored value. A ROM that fails either test is
refused. The -chr 0 setup option compiles both tests out
(setup/SPBLDOPT.i:3288-3311, setup/SPCNFGAP.i:128-130,
src/CONTROLM.h:1309-1310).