Skip to content

NicaiEmu emulates Coolbar feature phones.

About this profile
Detail Value
Type standalone + libretro
Classification Frozen snapshot
Source https://github.com/AloysHF/CoolbarEmu
Version 0.1.0, stated in Cargo.toml
Revision AloysHF/CoolbarEmu@4c9b73f7213b
Revision held 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.
Profiled 2026-10-21
Profile YAML, JSON
Cores nicaiemu
Systems Coolbar feature phones
Technical 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 on its command line, --orientation-profile, --screenshot, --save-state and --load-state (crates/nicaiemu/src/main.rs:104-107, crates/nicaiemu/src/main.rs:152-166, crates/nicaiemu/src/main.rs:185-186).

The buildbot publishes nicaiemu_libretro next to coolbaremu_libretro, and the two cores read different system files: nicaiemu_orientation.csv here, coolbaremu_orientation.csv in the coolbaremu core built after the rename.

No BIOS or firmware files required.

.