fix: pin nicaiemu to the last nicaiemu build

The repository was renamed to CoolbarEmu (PR #78) and its buildbot
recipe now builds coolbaremu. Hold the profile on 4c9b73f7, the last
revision built as nicaiemu, and document the orientation list it reads
from the system directory.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 05:08:00 +02:00
1 parent 82acd55ebc
commit b44d57a32f
1 file changed
+28 -22
+28 -22
View File
@@ -1,10 +1,11 @@
emulator: NicaiEmu
type: standalone + libretro
core_classification: pure_libretro
source: "https://github.com/AloysHF/NicaiEmu"
upstream: "https://github.com/AloysHF/NicaiEmu"
profiled_date: "2026-09-03"
source_commit: "6f2522b1cbbf1f2ceac4ecc06059c59b73ffd1b0"
source: "https://github.com/AloysHF/CoolbarEmu"
upstream: "https://github.com/AloysHF/CoolbarEmu"
profiled_date: "2026-10-21"
source_commit: "4c9b73f7213b1537d2361a8b1d438857bdcdc798"
pin_frozen: "the nicaiemu core is this revision, the last one whose .gitlab-ci.yml sets CORENAME: nicaiemu. The next master commit, 7496d513 (PR #78, 2026-10-16), renames the project and its crates to CoolbarEmu and the buildbot recipe to CORENAME: coolbaremu, so later commits build the coolbaremu core, described by coolbaremu.yml."
core_version: "0.1.0"
display_name: "MStar - Nicai (NicaiEmu)"
cores:
@@ -15,30 +16,35 @@ systems:
notes: |
Emulator for Nicai/MStar CBE (Cool Bar Engine) phone games written in
Rust by AloysHF. The libretro core and the nicaiemu standalone binary
share the nicaiemu-core crate. A .cbe archive is read whole from its
full path (need_fullpath = true,
share the nicaiemu-core crate, and the workspace builds the libretro
core by default (Cargo.toml:13). The repository was renamed from
AloysHF/NicaiEmu to AloysHF/CoolbarEmu with PR #78.
A .cbe archive is read whole from its full path (need_fullpath = true,
crates/nicaiemu-libretro/src/libretro/api.rs:181, then load_machine,
crates/nicaiemu-libretro/src/libretro/api.rs:360-364, then CbeArchive::load,
crates/nicaiemu-core/src/cbe/archive.rs:68-94). Code, scenes, maps,
actors, scripts, images and audio are sections of that archive, and
installed resource packages are parsed from the same bytes
(crates/nicaiemu-core/src/machine/packages.rs).
crates/nicaiemu-libretro/src/libretro/api.rs:359-363, then
CbeArchive::load, crates/nicaiemu-core/src/cbe/archive.rs:68-94). Files
next to the .cbe (pay kernels, save records, update data) are indexed as
the guest filesystem (crates/nicaiemu-core/src/machine/mod.rs:1022-1024,
crates/nicaiemu-core/src/machine/virtual_fs.rs:58-88), and they belong
to the game.
Phone services are implemented in Rust
(crates/nicaiemu-core/src/machine/services/). The guest file manager is
an in-memory sandbox that never touches the host disk
(crates/nicaiemu-core/src/machine/virtual_fs.rs:14-30). Text is decoded
as GBK and rasterised from the unifont crate compiled into the core
(crates/nicaiemu-core/src/machine/drawing.rs:58,
crates/nicaiemu-core/src/machine/drawing.rs:709). MIDI resources are
(crates/nicaiemu-core/src/machine/services/). Text is decoded as GBK and
rasterised from the unifont crate compiled into the core (Cargo.toml:35,
crates/nicaiemu-core/src/machine/drawing.rs:1886). MIDI resources are
synthesised as decaying sine tones without a sound bank
(crates/nicaiemu-core/src/audio_engine.rs:270-275), while WAV and MP3 are
decoded with symphonia.
The libretro crate asks the frontend for no directory. The standalone
binary reads and writes only the files named by --load-state and
--save-state (crates/nicaiemu/src/main.rs:162-166). No include_bytes!
data is compiled in.
The only system directory read is nicaiemu_orientation.csv, an optional
user list of CRC32, size and orientation for landscape titles missing
from the built-in table (crates/nicaiemu-libretro/src/libretro/api.rs:45,
crates/nicaiemu-libretro/src/libretro/api.rs:365-399,
crates/nicaiemu-core/src/orientation_profile.rs:132-140). A missing file
is logged and the built-in table applies. The standalone binary reads
and writes only the files named by --load-state and --save-state
(crates/nicaiemu/src/main.rs:160-166).
exclusion_note: "No file is read outside the content: the .cbe archive is the only input, the guest filesystem is in-memory, glyphs come from the unifont crate and MIDI is synthesised without a bank, no directory is requested from the frontend, no data is embedded with include_bytes!, and the .info declares firmware_count = 0."
exclusion_note: "The firmware services are reimplemented in the core, glyphs come from the unifont crate and MIDI is synthesised without a bank. The system directory holds only an optional user-written orientation list, and the .info declares firmware_count = 0."
files: []