emulator: Sugarbox2 type: libretro core_classification: community_fork source: "https://gitlab.com/recalbox/packages/recalbox-cores/libretro-sugarbox2" upstream: "https://github.com/Tom1975/SugarboxV2" profiled_date: "2026-10-17" source_commit: "6b565a43a25e4dfb69867f7e927a707e15ea460f" core_version: "v0.9" version_basis: kind: tag tag: "v0.9" distance: 0 display_name: "Amstrad - CPC / GX4000 (Sugarbox2)" cores: - "sugarbox2" built_by: [recalbox] systems: - "amstrad-cpc" notes: | Libretro core by Recalbox wrapping Tom1975's SugarboxV2 (CPC 464, 664, 6128, 464+, 6128+ and GX-4000). Recalbox 10.1.1 builds tag v1.5 from a token-gated copy of this repository, and the public repository carries v0.9 only, which is the revision read here. The core Recalbox ships was read against it: sugarbox2_libretro.so from the 10.1.1 x86_64 image (image sha1 b3d80ff00d46000de73c470c73b0ffa81f23c600, core sha256 eda2d57f9b556c66db95d2b4b755e501c6645de6b9dfc46d901f1f93a1f39c5e) holds the 59 compressed blobs of RomData.cpp byte for byte, reports library_version 0.1, and opens the same paths. Its on-screen keyboard is placed by SetOrigin where v0.9 has SetViewport. Every ROM is compiled into the core as a zlib stream: OS and BASIC for each model and language, AMSDOS, the Plus cartridge plus_en.cpr, the CP/M Plus, FutureOS, SymbOS and utility expansion ROMs, 57 blobs in all (ref: libretro/RomData.h:1-15). rom_uncompress() inflates them when the machine is built (ref: libretro/LibretroCore.cpp:1098-1107) and they are handed to the memory map directly, never through a path (ref: libretro/LibretroCore.cpp:1173-1174). The keyboard map files the engine reads are written from embedded data into the save directory, only when missing: CONF/KeyboardMaps.ini and Keyboards/101_keyboard_linux (ref: libretro/LibretroCore.cpp:1477-1502, 2169-2173). exclusion_note: "all CPC, Plus and GX-4000 ROMs compiled into the core as zlib blobs, and keyboard maps written by the core into the save directory" files: []