Files
libretro/emulators/nxengine.yml
T
Abdessamad Derraz b3b3880c19 chore: say which repository each source_ref cites
Profiles that read two repositories, a libretro port and its upstream,
now prefix each citation with source or upstream, decided by which tree
carries the cited value at its pin. The emulator pages use the word to
tell libretro glue, emulator code as the port carries it, and the
upstream emulator apart.
2026-10-20 09:23:41 +02:00

92 lines
4.5 KiB
YAML

emulator: NXEngine
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/nxengine-libretro"
upstream: "https://github.com/Rox64/NXEngine"
profiled_date: "2026-03-24"
source_commit: "fd1c0686f8b4c0aea9b5addbc077e3ad7da23bb7"
core_version: "1.0.0.6"
display_name: "Cave Story (NXEngine)"
cores: [nxengine, nx]
systems: [cave-story]
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).
files:
- name: "Doukutsu.exe"
installed_on: [lakka, retrobat, retrodeck]
path: "nxengine/Doukutsu.exe"
category: game_data
system: cave-story
description: "Cave Story freeware executable (data source for music, sfx, bitmaps, wavetable)"
required: true
size: 1478656
md5: "38695d3d69d7a0ada8178072dad4c58b"
sha1: "bb2d0441e073da9c584f23c2ad8c7ab8aac293bf"
source_ref: "source nxengine/main.cpp:77-78 (opened for extraction), source nxengine/libretro/libretro.cpp:278 (existence check)"
note: "Placed in system/nxengine/. The core extracts ORG music, PXT sounds, stage tile attributes, BMP graphics, and wavetable from this binary at each launch."
- name: "data/"
installed_on: [lakka, retrobat, retrodeck]
path: "nxengine/data/"
type: directory
category: game_data
system: cave-story
description: "Full game asset directory tree (399 files: sprites, NPC sheets, stage maps, scripts, backgrounds)"
required: true
source_ref: "source nxengine/extract-auto/cachefiles.c:38-439 (filenames[] array loaded at init)"
note: "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."
- name: "data/npc.tbl"
installed_on: [lakka, retrobat, retrodeck]
path: "nxengine/data/npc.tbl"
category: game_data
system: cave-story
description: "NPC attribute table (entity behavior flags, HP, damage, display rect offsets)"
required: true
source_ref: "source nxengine/main.cpp:47-53 (existence check for data/ directory), source nxengine/ai/ai.cpp:56-59 (loaded for NPC properties)"
note: "Located in system/nxengine/data/. Used to validate data directory presence and to load NPC behavior attributes."
- name: "data/sprites.sif"
path: "nxengine/data/sprites.sif"
category: game_data
system: cave-story
description: "Sprite information file (sprite positions, sizes, animation data)"
required: false
hle_fallback: true
source_ref: "source nxengine/extract-auto/cachefiles.c:101 (in filenames[]), source nxengine/extract-auto/cachefiles.c:515-521 (compiled-in fallback from sprites_sif.h)"
note: "Not shipped in the freeware distribution. If missing, the core uses a compiled-in copy (sprites_sif.h)."
- name: "tilekey.dat"
path: "nxengine/tilekey.dat"
category: game_data
system: cave-story
description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)"
required: false
hle_fallback: true
source_ref: "source nxengine/map.cpp:290-303 (loaded at init, hardcoded default if missing)"
note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in nxengine/map.cpp:30."