An experiment porting the leaked NESticle code (from 1997) released by IamRifki to SDL2.
I only did this for fun/learning, I don't really know anything about NESticle -- it's older than me.
(I just added this readme as the project was poorly documented)
NOTE: I am not actively working on this project! If you wish to continue it please do!
I have the Emulator somewhat working!
Screenshot of Nesticle running on Ubuntu 20.04:
(compiled with g++ 9.3 as C++17!)
Windows (64bit) builds here: https://github.com/MacDue/NesticlePortSDL2/releases
This is mostly using the original source code with some fixes, and some compiled code that was reverse engineered (as the released source was incomplete however there were compiled object files for the missing parts that were manually decompiled).
The SDL2 port works by adding another backend for the input/rendering. There already were backends for DOS and Windows 95, so adding SDL2 support just required implementing the relevant methods.
This build, however, does not use the original 6502 CPU emulator used in NESticle (since that was written in assembly and not portable -- or compatible with the Linux system I use). It was replaced with a C++ version (wrapped to use the same API) which allows this version of NESticle to be cross-platform. This 6502 emulator is included as a submodule.
If you want to get the true experience you get try getting the original 6502 emulator working (it's in src-original/m6502/m6502.asm
) -- PRs welcome.
- The GUI and mouse input (mostly)
- A bunch of the configs/settings/options in the menus seem to be functional
- Loading ROMs
- Running games (somewhat -- there's a lot of emulation issues)
- Mainly rendering glitches
- Keyboard input/controls
- Getting the emulator to a playable state
- Probably more
Install SDL2 (dev) then run (using the included makefile)
make nesticle # note compiling the code as 64bit works!
./nesticle # run the emulator (needs to be in the same folder as gui.vol and anes.pal)
The above steps work on both Linux and Windows. If you're building on Windows you will need to install MSYS2 with MinGW first (and install SDL2 with MSYS2), which gives a Linux-like build environment that can run the makefile.
Note: You need to use at least g++-7
(from GCC 7) as I used C++17's std::filesystem
to reimplement the ROM loader.
Note 2: After cloning do git submodule update --init --recursive
to download the mos6502 CPU emulator.