Skip to content

Native32Emu

Native32Emu emulates Sunplus Native32.

About this profile
Detail Value
Type standalone + libretro
Classification Pure libretro
Source https://github.com/AloysHF/Native32Emu
Version 1.4.0, stated in Cargo.toml
Revision AloysHF/Native32Emu@059fa33c658c
Profiled 2026-10-26
Profile YAML, JSON
Cores native32emu
Systems Sunplus Native32
Technical notes

Emulator for the Sunplus Native32 game format written in Rust by AloysHF. The libretro core and the native32emu standalone binary share the native32emu-core crate. Content (.smf, .sgm, .ssl or a .zip package) is read from its full path (need_fullpath = true, crates/native32emu-libretro/src/libretro/api.rs:107; Emulator::from_path, crates/native32emu-core/src/emulator.rs:86-149). The header is decrypted with DES keys compiled into the core (crates/native32emu-core/src/header_decryptor.rs:136, crates/native32emu-core/src/des_constants.rs).

A .zip package is extracted to a temporary directory (crates/native32emu-core/src/archive_loader.rs:17-67) and booted from the menu found at its root, FHUI.smf first, then NA32UI.smf. A package without a root menu boots its only .smf, or the one named like the archive (crates/native32emu-core/src/archive_loader.rs:11, crates/native32emu-core/src/archive_loader.rs:94-98, crates/native32emu-core/src/archive_loader.rs:152-211). The Emscripten build receives the archive already extracted by EmulatorJS and switches to the root menu when one exists (crates/native32emu-libretro/src/libretro/api.rs:146-159, crates/native32emu-core/src/archive_loader.rs:112-117). Every later file is resolved relative to the running content and its parent directories, case-insensitively with trailing spaces trimmed (crates/native32emu-core/src/content_loader.rs:73-130): child .smf and .ssl content (crates/native32emu-core/src/emulator.rs:617-627), .dat thumbnails for the menu (crates/native32emu-core/src/emulator.rs:565-592), .mpg cutscenes (crates/native32emu-core/src/emulator.rs:464-480) and the menu's game listing (crates/native32emu-core/src/file_browser.rs:75-120). All of them ship inside the game package. Saves are written to <content>.ssl_sav beside the content. The Emscripten build asks for the frontend save directory and writes there instead, under a name flattened from the content path (crates/native32emu-core/src/save_manager.rs:6-26, crates/native32emu-core/src/save_manager.rs:33-48, crates/native32emu-libretro/src/libretro/api.rs:194-197, crates/native32emu-libretro/src/libretro/callbacks.rs:205-222).

RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY is defined (crates/native32emu-libretro/src/libretro/constants.rs:42) but nothing calls it. No include_bytes! data is compiled in.

No BIOS or firmware files required.

.