Files
libretro/emulators/nicaiemu.yml
T
Abdessamad Derraz b44d57a32f 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.
2026-10-21 05:08:00 +02:00

51 lines
2.7 KiB
YAML

emulator: NicaiEmu
type: standalone + libretro
core_classification: pure_libretro
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:
- nicaiemu
systems:
- mstar-nicai
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, 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: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/). 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 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: "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: []