适用于Windows、UNIX、MAC平台的开源NES模拟器,为NES模拟器学习者提供与原NES机器高度相似的运行逻辑展示,源码并没有对运行速度进行优化,这也是为了保证高度还原NES运行机制的妥协。
该项目旨在重现NES游戏机的运行机制,而不注重性能,如果想要学习性能强大的模拟器,可以参照以下模拟器源码,·fceux、jsnes(js)、nes(go)、SimpleNES等源码,这些模拟器皆具有较好的性能,但整体代码结构并不利于NES模拟器的学习,因为其中做了大量的性能优化,导致模拟器的运行机制与原机器大相径庭,所以本仓库源码更利于理解NES。
Nintendo | Emulator |
---|---|
Up, Down, Left, Right | W A S D |
Start | T |
Select | Y |
A | K |
B | J |
Reset | R |
function | key |
---|---|
save game state | F1 |
load game state | F2 |
reset game | Backspace |
change palette | P |
- BUS
- Cartridge(卡带)
- Mapper(0\1\2\3\4\66)
- 2A03(apu)
- 2C02(ppu)
- 6502(cpu)
安装cmake
# ubuntu
# 安装opengl、alsa
sudo apt install cmake mesa-common-dev libgl1-mesa-dev \
libglu1-mesa-dev alsa-base alsa-utils alsa-source libasound2-dev libpng-dev -y
安装vs2019
git clone git@github.com:tiansongyu/6502Emulator.git
cd 6502Emulator
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cd 6502/6502Emulator/
make -j12
./6502Emulator
git clone git@github.com:tiansongyu/6502Emulator.git
cd 6502Emulator
make_VS2019.bat
每个游戏对应一个Mapper,只要实现游戏对应的Mapper,就可以游玩 本模拟器实现的mapper有
- Mapper0 (NROM)
- Mapper1 (MMC1)
- Mapper2 (UxROM)
- Mapper3 ( CNROM )
- Mapper4 (MMC3) 最复杂的一种Mapper,目前可能在存在中断问题,没有解决,metal max 中断不正确
- Mapper66 (GxROM)
查看如下游戏列表,查看对应的Mapper,可以用来判断是否可游玩
0,1,2,3,4为任天堂自己生产的mapper,已经可以游玩大部分游戏,如想实现其他Mapper ,可以查看Mapper资料,并查看本仓库源码,可以找到实现其他mapper的方法。