From 99c9993c170340f56cac62ff985fc75f74840015 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Wed, 21 Oct 2026 10:02:32 +0200 Subject: [PATCH] fix: profile stella from stella-emu/stella The buildbot builds the stella core from stella-emu/stella master (src/os/libretro), not from stella2014 code, and stella2023 claimed the stella name. stella.yml now documents that tree at 2c3d7023: the KidVid tapes are read from a stella folder under the save directory, loose or in KidVidAudio.zip, and played. stella2023 keeps its own name only. --- emulators/stella.yml | 91 +++++++++++++++++++++++++++++---- emulators/stella2023.yml | 1 - tests/test_audit_regressions.py | 7 +-- 3 files changed, 84 insertions(+), 15 deletions(-) diff --git a/emulators/stella.yml b/emulators/stella.yml index eeab8549..cb53f71c 100644 --- a/emulators/stella.yml +++ b/emulators/stella.yml @@ -1,18 +1,87 @@ emulator: Stella -type: alias -alias_of: stella2014 -source: "https://github.com/libretro/stella-libretro" -profiled_date: "2026-03-25" -core_version: "3.9.3" +type: standalone + libretro +core_classification: official_port +source: "https://github.com/stella-emu/stella" +profiled_date: "2026-10-21" +source_commit: "2c3d7023e9136f75c789803b44f119d8749dc104" +core_version: "8.0_pre" display_name: "Atari - 2600 (Stella)" cores: - stella systems: - atari-2600 -note: | - Identical codebase to stella2014-libretro. Both repos share the same HEAD - commit and produce a binary reporting library_name "Stella 2014". The - stella_libretro.info lists display_version "6.6", and the binary reports - 3.9.3. See stella2014.yml for firmware requirements - and KidVid audio files. +notes: | + The libretro core is built from stella-emu/stella, the tree of the + standalone emulator, with its wrapper in src/os/libretro. The binary + reports library_name "Stella" (src/os/libretro/StellaLIBRETRO.hxx:59) + and the version of src/common/Version.hxx:35. The stella_libretro.info + lists display_version "6.6". + + The Atari 2600 has no BIOS ROM: TIA, RIOT and 6507 CPU are emulated in + software. The SuperCharger (Starpath) BIOS is replaced by built-in code + (ourDummyROMCode in src/emucore/CartAR.cxx:635). + + The libretro core reads the system directory (src/os/libretro/libretro.cxx:1716-1724) + but nothing reads the path it stores. Its base directory is a stella + folder under the save directory, or ./ without one + (src/os/libretro/OSystemLIBRETRO.hxx:71-79). The standalone base + directory is the configuration directory, $XDG_CONFIG_HOME/stella on + Linux and the application data folder on Windows + (src/os/unix/OSystemUNIX.cxx:79, src/os/windows/OSystemWINDOWS.cxx:32). + + KidVid Voice Module tapes: the tape the game selects and KVSHARED.WAV are + looked up in KidVidAudio.zip in the base directory, then loose in the + base directory, and both must be present (src/emucore/KidVid.cxx:255-268). + The archive holds the same seven files listed below. + The libretro build compiles with SOUND_SUPPORT and ZIP_SUPPORT + (src/os/libretro/Makefile:599) and plays them (src/os/libretro/SoundLIBRETRO.hxx:127-133). + Without them the game runs on a timing-based fallback with a beep + (src/emucore/KidVid.cxx:343-348). + + EEPROM save data for AtariVox and SaveKey peripherals is managed as + NVRAM, not user-supplied. + +files: + - name: KVS1.WAV + description: "KidVid Voice Module audio tape 1 (Smurfs Save the Day)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVS2.WAV + description: "KidVid Voice Module audio tape 2 (Smurfs Save the Day)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVS3.WAV + description: "KidVid Voice Module audio tape 3 (Smurfs Save the Day)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVB1.WAV + description: "KidVid Voice Module audio tape 1 (Berenstain Bears)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVB2.WAV + description: "KidVid Voice Module audio tape 2 (Berenstain Bears)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVB3.WAV + description: "KidVid Voice Module audio tape 3 (Berenstain Bears)" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:246-248, src/emucore/KidVid.cxx:255-268" + - name: KVSHARED.WAV + description: "KidVid Voice Module shared audio samples" + required: false + load_from: {libretro: save_dir, standalone: config_dir} + category: game_data + source_ref: "src/emucore/KidVid.cxx:255-268, src/emucore/KidVid.cxx:329-331" diff --git a/emulators/stella2023.yml b/emulators/stella2023.yml index 9551e64b..afc3d7ac 100644 --- a/emulators/stella2023.yml +++ b/emulators/stella2023.yml @@ -9,7 +9,6 @@ core_version: "7.0_pre" display_name: "Atari - 2600 (Stella 2023)" cores: - stella2023 - - stella systems: - atari_2600 diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index d12efd68..1753b1bb 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -3138,15 +3138,16 @@ class TheDatabaseCacheIsWrittenWhole(unittest.TestCase): class KidVidTapesStayWithTheContent(unittest.TestCase): """Stella opens its KidVid tapes by bare name (stella2014, from the working directory) or from its base directory (stella2023, the content - folder): never the system directory. Without load_from every Linux pack - put about 68 MB of WAVs at the BIOS root, in two cases.""" + folder, and stella, a folder under the save directory): never the system + directory. Without load_from every Linux pack put about 68 MB of WAVs at + the BIOS root, in two cases.""" def test_no_pack_places_them_in_the_system_directory(self): from scripts.common import load_emulator_profiles from scripts.validation import outside_gap_scope profiles = load_emulator_profiles(str(ROOT / "emulators")) - for name in ("stella2014", "stella2023"): + for name in ("stella", "stella2014", "stella2023"): tapes = [f for f in profiles[name]["files"] if f["name"].lower().endswith(".wav")] with self.subTest(profile=name):