NXEngine - RetroBIOS¶
Technical notes
NXEngine is an open-source reimplementation of the Cave Story (Doukutsu Monogatari) engine by Studio Pixel, authored by Caitlin Shaw. It is not an emulator but a source port that loads the original freeware game data.
The core requires the freeware Cave Story distribution placed in {system_dir}/nxengine/. When launched without content, it looks for Doukutsu.exe there (libretro.cpp:254-259). When launched with a .exe content file, it uses the parent directory of that file (libretro.cpp:237).
At startup (main.cpp:75-90), the core opens Doukutsu.exe and extracts: ORG music (extractorg.c), PXT sound effects (extractpxt.c), stage tile attributes (extractstages.c), 18 credit BMPs + pixel.bmp (endpic/), and the wavetable (cachefiles.c:464-485). All kept in memory.
The data/ directory (399 files from the freeware release) is loaded into an in-memory cache at init (cachefiles.c:38-439, 497-540). All subsequent file access goes through this cache. The core verifies data/ by checking for data/npc.tbl (main.cpp:47-58).
The font is compiled-in (bitmap_font.h). The upstream standalone version uses font.ttf via SDL_ttf.
Valid content extension: .exe (libretro.cpp:109).
5 files | 3 required, 2 optional | 5 in repo, 0 missing | 2 with HLE fallback Categories: 5 game data
Doukutsu.exe required in repo game_data
Cave Story freeware executable (data source for music, sfx, bitmaps, wavetable)
- Path:
nxengine/Doukutsu.exe - System: cave-story
- Size: 1.4 MB
- SHA1:
bb2d0441e073... - MD5:
38695d3d69d7... - Source:
main.cpp:77-78 (opened for extraction), libretro.cpp:258 (existence check) - Placed in system/nxengine/. The core extracts ORG music, PXT sounds, stage tile attributes, BMP graphics, and wavetable from this binary at each launch.
data/ required in repo game_data
Full game asset directory tree (399 files: sprites, NPC sheets, stage maps, scripts, backgrounds)
- Path:
nxengine/data/ - System: cave-story
- Source:
cachefiles.c:38-439 (filenames[] array loaded at init) - Must contain root assets (Arms.pbm, MyChar.pbm, etc.), Npc/ (36 sprite sheets), and Stage/ (333 map/script/tileset files). All files from the original freeware release.
data/npc.tbl required in repo game_data
NPC attribute table (entity behavior flags, HP, damage, display rect offsets)
- Path:
nxengine/data/npc.tbl - System: cave-story
- Source:
main.cpp:50 (existence check for data/ directory), ai/ai.cpp:56-59 (loaded for NPC properties) - Located in system/nxengine/data/. Used to validate data directory presence and to load NPC behavior attributes.
data/sprites.sif optional in repo HLE fallback game_data
Sprite information file (sprite positions, sizes, animation data)
- Path:
nxengine/data/sprites.sif - System: cave-story
- Source:
cachefiles.c:101 (in filenames[]), cachefiles.c:515-521 (compiled-in fallback from sprites_sif.h) - Not shipped in the freeware distribution. If missing, the core uses a compiled-in copy (sprites_sif.h).
tilekey.dat optional in repo HLE fallback game_data
Tile attribute lookup table (maps tile codes to collision/behavior attributes)
- Path:
nxengine/tilekey.dat - System: cave-story
- Source:
map.cpp:290-303 (loaded at init, hardcoded default if missing) - Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in map.cpp:30.
Generated on 2026-04-18T08:05:07Z