NES_DEV is an open source NES emulator for educational and experimental purposes.
I want to port this emulator on a STM32F103ZET6 micro controller, and making a portable and hand held game console, which can run on a low cost ARM device. There is may NES emulators in the world, but none of them runs on low cost micro controllers, most of them runs on PCs. I want to make a simple and easy to build system, which anyone can make and enjoy it.
This emulator only depends on SDL library. You can get it from www.libsdl.org.
NES_DEV running on linux with enabled debug options.
My STM32F103ZET board. I bought it from ECA.
Super Mario Bros. on ILI9325 TFT color LCD.
- Sprite 0 hit flag not working properly in some conditions. I think that it is because poor implementation of transparent color of palette.
- Mapper 4 not working perfectly.
- When PPU rendering is disabled, emulator doesn't render any thing (It must render color 0 from palette).
- Clipping background and sprites not implemented yet.
- Generated .sln file for visual studio by cmake, doesn't understand start up project. After opening project in visual studio, you must right click on NES_DEV project and select it as start up project manually.
- Better PPU and graphic implementation.
- Optimized and fast rendering for ARM devices.
- APU and sound implementation.
- Adding more mappers.
- Adding SD card file system for loading ROM images for ARM devices.
- Making a small game for tests.
- Adding a better build script for making TEST ROM.
- Designing low const, felexible, and extensible PCB for hand-held console.
- First get and install cmake build system, and get SDL library and install it.
- Make bin directory in project root directory with "mkdir bin" command.
- Go to bin directory with "cd bin" command.
- Run cmake with "cmake .." command.
- Build project with "make" command in linux environments or click on .sln file to open visual studio.
- Esc -> Quit emulator
- Arrow keys -> Directional buttons
- Key pad 1 or S key -> A button
- Key pad 2 or A key -> B button
- Key pad 7 or Enter key -> Start button
- Key pad 8 or Right Ctrl key -> Select button
- P key -> Toggle sprites
- B key -> Toggle background
- T key -> Toggle name table window
- Y key -> Toggle pattern table window
- F1 to F4 keys -> Save game state into slot 1 to slot 4
- F5 to F8 keys -> Load game state from slot 1 to slot 4
- iNesDPT : ines pattern table dumper.
- iNesInfo : Prints ines file information.
- iNesMk : ines header file maker.
I used X6502 from FCEUX project, and M6502 from Marat Fayzullin project source codes for my p6502 module testing. My test runs all modules and checks all CPU contexts and RAMs with each other. If there is inconsistency, it fails. I found that there is some bugs in M6502 module.