Files
libretro/emulators/nxengine.yml
T
Abdessamad Derraz 11da070128 chore: recale the profile refs onto their pins
Upstream moved under 145 profiles: 679 refs shifted and 452 followed a
renamed file, against 6,483 that still anchor where they were written.
The recale rewrites the located ranges only, keeping the annotations and
the sentences that carry them, and 106 pins advance in the same commit
because refs and source_commit name one revision or the profile
describes two at once.

Nothing here was guessed. The 183 refs that are CHANGED, GONE or
AMBIGUOUS are untouched, and the 57 profiles holding them keep their old
pin until someone reads the diff: profile_sync refuses to recale a
profile while any of its refs needs a re-read. trident kept its pin too,
its annotated ref being one the writer will not rewrite.
2026-09-04 14:41:44 +02:00

88 lines
4.2 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: "a1c45fd4d045333f4ea523e556469b545be82b0a"
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: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:128).
files:
- name: "Doukutsu.exe"
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: "main.cpp:77-78 (opened for extraction), nxengine/libretro/libretro.cpp:274 (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/"
path: "nxengine/data/"
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: "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"
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: "main.cpp:50 (existence check for data/ directory), 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: "nxengine/extract-auto/cachefiles.c:101 (in filenames[]), 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: "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 map.cpp:30."