Skip to content

NXEngine - RetroBIOS

Type libretro
Classification Game engines
Source https://github.com/libretro/nxengine-libretro
Upstream https://github.com/Rox64/NXEngine
Version 1.0.0.6
Profiled 2026-03-24
Cores nxengine, nx
Systems cave-story
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 (nxengine/libretro/libretro.cpp:273-278). When launched with a .exe content file, it uses the parent directory of that file (nxengine/libretro/libretro.cpp:256).

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 (nxengine/extract-auto/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 (nxengine/extract-auto/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 (nxengine/libretro/libretro.cpp:126).

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, nxengine/libretro/libretro.cpp:274
  • 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: nxengine/extract-auto/cachefiles.c:38-439
  • 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, ai/ai.cpp:56-59
  • 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)

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
  • 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-09-14T09:03:10Z