NXEngine is open-source rewrite engine of the Cave Story game. Author - Caitlin (rogueeve) Shaw.
This repository contains source code of my NXEngine fork for various weak devices. I have added some engine improvements:
- Sound through SDL_mixer.
- Support for widescreen displays (480x272).
- Ports to various platforms.
- Russification.
You will need following assets to run ./nx
executable:
Provided here:
- sprites.sif
- smalfont.bmp
- tilekey.dat
Provided externally:
- Dokutsu.exe
- data/ - dir from org game.
- xm/ - dir with XM sound files in lowercase (for SDL_mixer)
Binary build:
- nx
Directory structure:
cavestory
├── data/
├── xm/
├── Doukutsu.exe
├── nx
├── smalfont.bmp
├── sprites.sif
└── tilekey.dat
In linux env you can execute ./dl_data.sh all
from this repo to download and extract all "provided externally" assets.
If you have original *.org songs in org/
dir already (use ./nx
native build if not) and gcc binutils
pkg installed, you could just use org2xm submodule tool:
git submodule update --init --recursive
make org2xm
Building requires some SDL libraries: SDL-1.2, SDL_ttf-2.0, SDL_mixer-1.2 (optional). Please install developer versions of these libraries before building the project. You can open "nx.pro" project file in the Qt Creator IDE for easy code navigation.
Platform defines:
Define | Description |
---|---|
-D_480X272 |
Use widescreen 480x272 resolution. |
-D_320X240 |
Use normal 320x240 resolution. |
-D_DINGUX |
Dingux platform and keyboard layout (Ritmix RZX-50, Dingoo A320, Dingoo A380, etc). |
-D_MOTOMAGX |
MotoMAGX platform and keyboard layout (Motorola ZN5, Z6, E8, EM30, VE66, etc). |
-D_MOTOEZX |
MotoEZX platform and keyboard layout (Motorola E2, E6, A1200, A1600). |
-D_SDL_MIXER |
Don't use realtime music generation, *.xm tracks and sounds will be played via SDL_mixer. |
-D_DEBUG |
Enable detailed debug output to the console. |
-D_L10N_CP1251 |
Enable Russian l10n (you need a *.ttf font and Russian version of data-files). |
Please read addition building information (in Russian) in the EXL's Developer Blog.
- full data with XM tracks
make data
- only necessary data and convert .org to .xm
make clean
make -j$(nproc)
make data-cave
./nx
git submodule update --init --recursive
make org2xm
make rel
docker run --volume ./:/src/ -it miyoocfw/toolchain-shared-uclibc:latest
cd /src
export OPT="-mcpu=arm926ej-s -mtune=arm926ej-s -fno-PIC -flto"
make clean
make -j$(nproc) miyoo-ipk COPT="$OPT" CXXOPT="$OPT"
exit
2.2
- rename read music data files according to original *.exe extraction
- reduce audio buffer size for speed
- enable by default
displayformat 1
console option and force FullScreen for 320px - correct text misallignment on lowres
2.1
- correct MIYOO inputs binding
2.0
- fixed music stuttering via XM tracks played through updated SDL_Mixer libs with MOD support (libmikmod)
- other changes from upstream
1.0
- initial legacy release without music support
Ritmix RZX-50:
Windows 8.1:
Haiku OS:
Demonstration video on YouTube which showing launch Cave Story game with this engine on the Ritmix RZX-50 device.
Please read Porting Guide (in Russian) for more info about porting NXEngine to various platforms.