diff --git a/emulators/c64-emu.yml b/emulators/c64-emu.yml index eee3d57dc..cf5badfd4 100644 --- a/emulators/c64-emu.yml +++ b/emulators/c64-emu.yml @@ -5,7 +5,7 @@ source: "https://github.com/Rakashazi/emu-ex-plus-alpha" upstream: "https://github.com/VICE-Team/svn-mirror" profiled_date: "2026-08-11" source_commit: "1c12fac5ce49badaadff2e2f210dcc30b89f4943" -upstream_commit: "283fa5e7df83bdf524187f9dac41ad2a66f1d315" +upstream_commit: "2e2a43e0c4803203446a0ea41980bd86f61d2e1f" core_version: "1.5.85" display_name: "Commodore - C64 (C64.emu)" mode: standalone @@ -39,21 +39,23 @@ notes: | Ten machines are built as separate shared libraries (C64.emu/src/CMakeLists.txt:535-683): c64, c64sc, scpu64, c64dtv, c128, vic, pet, plus4, cbm2, cbm5x0. Each opens its files under the VICE machine - directory named by its own machine_name (c64/c64.c:179, c128/c128.c:240, - vic20/vic20.c:144, plus4/plus4.c:131, pet/pet.c:128, cbm2/cbm2.c:131, - cbm2/cbm5x0.c:122, scpu64/scpu64.c:157, c64dtv/c64dtv.c:129), so c64 and c64sc - share C64/ and cbm2 and cbm5x0 share CBM-II/. Drive ROMs live in DRIVES/ - (drive/driverom.c:104,174). + directory named by its own machine_name (C64.emu/src/vice/c64/c64.c:179, + C64.emu/src/vice/c128/c128.c:240, C64.emu/src/vice/vic20/vic20.c:144, + C64.emu/src/vice/plus4/plus4.c:131, C64.emu/src/vice/pet/pet.c:128, + C64.emu/src/vice/cbm2/cbm2.c:131, C64.emu/src/vice/cbm2/cbm5x0.c:122, + C64.emu/src/vice/scpu64/scpu64.c:157, C64.emu/src/vice/c64dtv/c64dtv.c:129), + so c64 and c64sc share C64/ and cbm2 and cbm5x0 share CBM-II/. Drive ROMs live + in DRIVES/ (C64.emu/src/vice/drive/driverom.c:104,174). Nothing is embedded. The app implements sysfile_open, sysfile_locate and - sysfile_load itself (C64.emu/src/main/sysfile.cc:218-355) over a user-set - path that may be a directory or a ZIP archive, and that path is rejected - unless it carries a DRIVES folder (C64.emu/src/main/sysfile.cc:140-151). On - Linux two fallbacks follow it, ~/.local/share/C64.emu and - /usr/share/games/vice (C64.emu/src/main/Main.cc:91-95). A last fallback reads - the application bundle (C64.emu/src/main/sysfile.cc:107-119,252-259), which - supplies only the eight keymaps below (C64.emu/res/android/assets symlinks - C64.emu/res/vice, and each machine directory there holds one file). + sysfile_load itself (C64.emu/src/main/sysfile.cc:218-355) over a user-set path + that may be a directory or a ZIP archive, and that path is rejected unless it + carries a DRIVES folder (C64.emu/src/main/sysfile.cc:140-151). On Linux two + fallbacks follow it, ~/.local/share/C64.emu and /usr/share/games/vice + (C64.emu/src/main/Main.cc:91-95). A last fallback reads the application bundle + (C64.emu/src/main/sysfile.cc:107-119,252-259), which supplies only the eight + keymaps below (C64.emu/res/android/assets symlinks C64.emu/res/vice, and each + machine directory there holds one file). Missing ROMs stop the app rather than degrading it: initC64 throws when the path is unset, and again with the name of the first file that failed once @@ -62,63 +64,69 @@ notes: | All fourteen C64 models are offered (C64.emu/src/main/VicePlugin.cc:66-79), so every kernal revision and both chargens are reachable. The MAX Machine model - loads nothing: c64rom.c:222-224 matches the kernal-none.bin name and zeroes - the ROM area instead of calling sysfile_load. + loads nothing: C64.emu/src/vice/c64/c64rom.c:222-224 matches the + kernal-none.bin name and zeroes the ROM area instead of calling sysfile_load. C128 is the one machine that needs its whole language set present. mem_load runs c128rom_check_res_file over both BASIC halves, all eight kernal resources, all eight chargen resources, Kernal64 and Basic64, and returns -1 - if any one of them cannot be located (c128/c128rom.c:762-806). Only the - selected variant is then read. MachineType stays at C128_MACHINE_INT - (c128/c128-resources.c:684) because no reachable code writes it, so the - Danish, Norwegian and Swedish kernal64 variants of c128rom.h:111-113 are never - named. + if any one of them cannot be located + (C64.emu/src/vice/c128/c128rom.c:762-806). Only the selected variant is then + read. MachineType stays at C128_MACHINE_INT + (C64.emu/src/vice/c128/c128-resources.c:684) because no reachable code writes + it, so the Danish, Norwegian and Swedish kernal64 variants of + C64.emu/src/vice/c128/c128rom.h:111-113 are never named. Drive ROMs are optional in the strict sense: iec_drive_rom_load, ieee_drive_rom_load, tcbm_drive_rom_load and iec128dcr_drive_rom_load return void, and driverom_load logs the miss and disables the units of that type - (drive/driverom.c:186-196,131-144). Default unit 8 is a 1541-II on C64, SCPU64 - and DTV (c64/c64drive.c:43), a 1571CR on C128 (c128/c128drive.c:56), a 1540 on - VIC-20 (vic20/vic20drive.c:44), a 1551 on Plus/4 (plus4/plus4drive.c:46) and a - 2031 on PET and CBM-II (pet/petdrive.c:42, cbm2/cbm2drive.c:42). + (C64.emu/src/vice/drive/driverom.c:186-196,131-144). Default unit 8 is a + 1541-II on C64, SCPU64 and DTV (C64.emu/src/vice/c64/c64drive.c:43), a 1571CR + on C128 (C64.emu/src/vice/c128/c128drive.c:56), a 1540 on VIC-20 + (C64.emu/src/vice/vic20/vic20drive.c:44), a 1551 on Plus/4 + (C64.emu/src/vice/plus4/plus4drive.c:46) and a 2031 on PET and CBM-II + (C64.emu/src/vice/pet/petdrive.c:42, C64.emu/src/vice/cbm2/cbm2drive.c:42). Sizes come from the min and max arguments of each sysfile_load call. The loader accepts a file two bytes over its maximum by dropping the leading load address, pads a short file to the top of the buffer, and truncates anything longer with a warning (C64.emu/src/main/sysfile.cc:30-71). - SHA-1s are those hardcoded in c64/c64rom.h:88-96. c64rom.c:120-131 hashes the - loaded kernal and matches that table to identify the revision, and an unmatched - image is reported and accepted. VICE distributes C128/kernal64-901227-03.bin - and C128/basic64-901226-01.bin with the same bytes as the C64 Rev 3 kernal and + SHA-1s are those hardcoded in C64.emu/src/vice/c64/c64rom.h:88-96. + C64.emu/src/vice/c64/c64rom.c:120-131 hashes the loaded kernal and matches + that table to identify the revision, and an unmatched image is reported and + accepted. VICE distributes C128/kernal64-901227-03.bin and + C128/basic64-901226-01.bin with the same bytes as the C64 Rev 3 kernal and BASIC, so those two entries carry the same hashes. Palettes are read only after the user enables an external palette: the ${CHIP}ExternalPalette resource is registered with factory value 0 and ${CHIP}PaletteFile with the chip's default name - (video/video-resources.c:393-398,916-923). The app lists every .vpl in the - machine directory and sets both resources + (C64.emu/src/vice/video/video-resources.c:393-398,916-923). The app lists + every .vpl in the machine directory and sets both resources (C64.emu/src/main/EmuMenuViews.cc:186,1058,1074-1083, C64.emu/src/main/options.cc:38-51). Only the code-named default of each chip is listed here, and palette_load appends the .vpl extension itself - (palette.c:228-248). + (C64.emu/src/vice/palette.c:228-248). Keymaps are named from KBD_PORT_PREFIX, which the app sets to gtk3 (C64.emu/src/config/kbd.h:7). keymap_init runs inside init_main and the lookup - falls back to _sym.vkm (keymap.c:1249-1270,1386-1392), the file the - app bundles for each machine directory. Host-layout and keyboard-type variants - extend the name and are not enumerated here. + falls back to _sym.vkm + (C64.emu/src/vice/keymap.c:1249-1270,1386-1392), the file the app bundles for + each machine directory. Host-layout and keyboard-type variants extend the name + and are not enumerated here. Four subsystems are compiled but cannot reach their files. Printer ROMs and the PRINTER/ palettes load from drv_mps803_open and drv_nl10_open, which require Printer4, Printer5 or Printer6 to leave PRINTER_DEVICE_NONE - (printerdrv/interface-serial.c:145-149). The app writes no printer resource, - and neither main.c nor initcmdline.c is compiled, so the resource file and the - command line that would set one do not exist. Romset .vrs files, the monitor - command file and joystick .vjm maps have no default name at all - (joyport/joystick.c:2212) and no menu that supplies one. vice/arch is outside - the build, so the CBM font, icon and hotkey lookups of archdep_cbmfont.c, - archdep_icon_path.c and hotkeys/parser.c are never linked. + (C64.emu/src/vice/printerdrv/interface-serial.c:145-149). The app writes no + printer resource, and neither main.c nor initcmdline.c is compiled, so the + resource file and the command line that would set one do not exist. Romset + .vrs files, the monitor command file and joystick .vjm maps have no default + name at all (C64.emu/src/vice/joyport/joystick.c:2212) and no menu that + supplies one. vice/arch is outside the build, so the CBM font, icon and hotkey + lookups of archdep_cbmfont.c, archdep_icon_path.c and hotkeys/parser.c are + never linked. files: # ---------------------------------------------------------------- C64/