# SimpleNes **Repository Path**: linux2014/SimpleNes ## Basic Information - **Project Name**: SimpleNes - **Description**: Nes(Famicom)俗称红白机的模拟器项目。支持VS2019 、Android和 QT 环境。十分不错的学习项目。爷青回!!! - **Primary Language**: C++ - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 46 - **Created**: 2022-07-08 - **Last Updated**: 2022-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimpleNes #### 介绍 SimpleNes是Nes(Famicom)俗称红白机的虚拟机项目。 项目目前处于开发初期,代码比较凌乱。 本项目是学习C++的项目,之前没有C++也没有相关游戏开发和音视频的基础。 因此有很多不完善的地方有待后续解决。 抽时间会具体整理教程 :joy: `SimpleNes` 是VS2019下的窗口类 `SimpleNesCore` 是SimpleNes的核心文件,在VS2019项目中是以静态库的方式存在。 `SimpleNes_Qtdemo` 是Qt下使用SimpleNes的例程 #### 完成度 目前使用的是低精度的同步方式,但是足够应对常见的游戏 实现了Mapper 0-5等少数几个Mapper,后续会逐渐扩充 #### 移植进度 - 目前已经成功使用QT编译通过,示例demo已经上传 - 目前已经成功移植到Android,demo晚些时候上传 - 目前已经成功移植到嵌入式开发板(通过QT) #### 最终目标 最终目标是实现跨平台的应用,尤其是移植到嵌入式平台 #### 已测试的游戏 - 超级马里奥 - 超级马里奥3 - 终结者 - 机械战警3 - 赤色要塞 - 坦克大战 - 神龟比武 - 忍者神龟 - 重装机兵 - 蝙蝠侠 - 侏罗纪公园 - 中东战争 - 松鼠大作战 - 1942 - 塞尔达传说 - 双截龙1、2 - 魂斗罗 - 等... ![软件截图](https://images.gitee.com/uploads/images/2021/0811/094217_93e57737_1930444.png "4GL@1I(O%$7VRF2R(LEG)5S.png") ![android截图](https://images.gitee.com/uploads/images/2021/0821/100447_3623a02d_1930444.jpeg "1629511441790.jpg") ![游戏截图](https://images.gitee.com/uploads/images/2021/0810/151340_5920b751_1930444.png "23H12($QPWOC$`[HGEBLHLY.png") #### 已知有问题游戏 - ~~时间统治者 不显示人物、底部记分牌问题~~(已修复) - 游戏加载时存在噪音 #### 使用方法 ~~修改`NesMain.cpp`来修改测试的游戏~~ 编译完成后直接通过菜单栏【文件】->【打开ROM】选择游戏文件(.nes后缀,百度可以搜到很多,例如 超级马里奥.nes)。 `W`,`S`,`A`,`D`,`J`,`K`,`U`,`I`分别是上下左右 选择 确认 和 A B 为了方便大家测试我分享几个常见的游戏rom,里面的不一定都能运行~ 链接:https://pan.baidu.com/s/1ZrlJUlbGcOs4CDalehkXnw 提取码:3qg1 测试存档功能:(~~目前仅支持Mapper00 抽时间完善~~) ~~按键1存档 按键2恢复。注意只能在游戏进行中的时候操作,而且目前不能本地存档,是存在内存中。毕竟只是测试的。功能测试一段时间没问题后再增加本地存档~~ 按1存档,按2恢复。存档会在rom所在的路径下创建一个同名但增加一个.save后缀的文件保存状态。目前仅仅是依靠文件名对不同的游戏分别存档,也只支持恢复最后一次存档。不过可以轻松 的扩展。参见`SimpleNes/FamicomThread.cpp`内的`FileSavebundle`类。 #### 软件架构 请使用VS2019编译 完全不修改或者简单修改后可以移植到Android和Qt。 因为代码处于开发阶段,接口可能发生改变而android和qtdemo可能不能及时更新,所以如果出现编译不通过可以参考SimpleNes文件夹内的vs2019项目。 #### 自我评价 鉴于时间仓促又是学习性质,我对本项目的评价是:像一栋摇摇欲坠的老房子,内部杂乱无章且不明所以,但是至少,它运行了。 :v: