Skip to content

NXEngine emulates Cave Story. It reads 5 files, 3 of them required: without a required file it does not start games.

About this profile
Detail Value
Type libretro
Classification Game engine
Source https://github.com/libretro/nxengine-libretro
Upstream https://github.com/Rox64/NXEngine
Version 1.0.0.6, stated in nxengine/libretro/libretro.cpp
Revision libretro/nxengine-libretro@fd1c0686f8b4
Profiled 2026-03-24
Profile YAML, JSON
Cores nxengine, nx
Systems Cave Story
Install this emulator's files

The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.

Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.

PowerShell
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator nxengine
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:289-294). When launched with a .exe content file, it uses the parent directory of that file (nxengine/libretro/libretro.cpp:272).

At startup (nxengine/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 (nxengine/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:142).

5 files: 3 required, 2 optional. 2 have an HLE fallback.

By kind: 5 game data.

In this collection: 5 in repo and 0 missing.

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
  • Placed in system/nxengine/. The core extracts ORG music, PXT sounds, stage tile attributes, BMP graphics, and wavetable from this binary at each launch.
Hashes, packages and source
  • SHA1: bb2d0441e073da9c584f23c2ad8c7ab8aac293bf
  • MD5: 38695d3d69d7a0ada8178072dad4c58b
  • Installed by the platform's own package on: lakka, retrobat, retrodeck
  • Asked for by: emulator code, libretro port and libretro glue
  • Source: nxengine/main.cpp:77-78 (emulator code, libretro port), nxengine/libretro/libretro.cpp:278 (libretro glue)

data/ required in repo game data directory

Full game asset directory tree (399 files: sprites, NPC sheets, stage maps, scripts, backgrounds)

  • Path: nxengine/data/
  • System: Cave Story
  • 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.
Packages and source

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
  • Located in system/nxengine/data/. Used to validate data directory presence and to load NPC behavior attributes.
Packages and source
  • Installed by the platform's own package on: lakka, retrobat, retrodeck
  • Asked for by: emulator code, libretro port
  • Source: nxengine/main.cpp:47-53 (emulator code, libretro port), nxengine/ai/ai.cpp:56-59 (emulator code, libretro port)

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
  • Not shipped in the freeware distribution. If missing, the core uses a compiled-in copy (sprites_sif.h).
Source

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
  • Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in nxengine/map.cpp:30.
Source
.