From b298ec677384cc2fc64d037fb4353d941801cdf3 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:37:33 +0200 Subject: [PATCH] feat: profile Recalbox's uae4all core Recalbox compiles uae4all from Chips-fr/uae4all-rpi (libretro-uae4all.mk:8-9), a libretro core that reads kick34005.A500 from the system directory and nothing else. built_by makes the name resolve to it on Recalbox only. --- emulators/uae4all-rpi.yml | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 emulators/uae4all-rpi.yml diff --git a/emulators/uae4all-rpi.yml b/emulators/uae4all-rpi.yml new file mode 100644 index 00000000..50af2fdd --- /dev/null +++ b/emulators/uae4all-rpi.yml @@ -0,0 +1,63 @@ +emulator: UAE4ALL (libretro, Chips-fr) +type: libretro +core_classification: community_fork +cores: ["uae4all"] +built_by: [recalbox] +source: "https://github.com/Chips-fr/uae4all-rpi" +profiled_date: "2026-10-20" +source_commit: "ae7eb74cfbe726a45f5b791484948676dcba1aef" +core_version: "0.7" +display_name: "Commodore - Amiga (UAE4ALL)" +systems: + - commodore-amiga + +notes: | + Chips-fr's libretro port of UAE4ALL, an Amiga 500 emulator with the FAME + 68000 core. It reports itself as uae4all 0.7 and loads adf, adz and zip + images (libretro/core/libretro-core.cpp:425-428). Recalbox builds it from + this commit with Makefile.libretro at tag 10.1.1 + (recalbox package/libretro-uae4all/libretro-uae4all.mk:8-9, 19-22). + Its two patches switch the CPU core to Cyclone and lower the cycle unit, + neither touches file loading. + + The Kickstart path is fixed: retro_init takes the frontend system + directory (libretro/core/libretro-core.cpp:309-313) and the option update + joins it with A500_ROM, kick34005.A500 (libretro/core/libretro-core.cpp:76, + 85-88, 284). No other name is tried. The joined path is cut at 63 + characters (romfile[64], src/disk.cpp:50). Recalbox sets the system + directory of every Amiga system to bios/amiga/bios + (recalbox projects/configgen/configgen/generators/libretro/libretroRetroarch.py:517-519). + + read_kickstart (src/memory.cpp:853-888) fills a 512 KB ROM space + (src/include/memory.h:53). It accepts 8 KB (A1000 bootstrap), 256 KB + (mirrored) or 512 KB, and rejects any other size. A checksum mismatch only + writes a log line (src/memory.cpp:836-851). No hash is checked, so any + Kickstart of an accepted size works under that name. An AMIROMTYPE1 + header is skipped but decode_cloanto_rom is empty (src/memory.cpp:831-834, + 860-865), so encrypted Amiga Forever ROMs do not boot and rom.key is never + read. extfile is never set, so no extended ROM is loaded + (src/memory.cpp:890-896). + + Without the ROM the core shows "No Kickstart file found." and runs the + UAE ersatz replacement (src/memory.cpp:1234-1240, src/ersatz.cpp:35-41). + It stubs a few exec calls and boots the bootblock in DF0 with read-only + trackdisk access, so only self-booting trackloader disks start, and the + core quits with no disk in DF0 (src/ersatz.cpp:75-112). + + A .uae content file is read for its floppy0= and floppy1= lines only + (libretro/core/libretro-core.cpp:101-128, 281-282). The data/ assets + (menu images, click.wav, music.mod, vkbd bitmaps) belong to the + standalone GUI. Makefile.libretro defines NO_VKBD (Makefile.libretro:28), + which stubs vkbd_init (src/vkbd/vkbd.cpp:17-23), and does not compile + src/menu/menu.cpp or src/sound.cpp (Makefile.libretro:100-132). The + bios/uae_data folder the Recalbox package creates is never opened by this + core (recalbox package/libretro-uae4all/libretro-uae4all.mk:27). + +files: + - name: "kick34005.A500" + system: commodore-amiga + description: "Kickstart 1.3 rev 34.5, A500" + required: true + hle_fallback: true + size: 262144 + source_ref: "libretro/core/libretro-core.cpp:76, libretro/core/libretro-core.cpp:284, src/memory.cpp:954-978, src/memory.cpp:1234-1240"