本文提到相关功能实现完整代码:nes4j
前段时间刷抖音看见许多主播在直播fc小游戏,瞬间儿时的回忆涌上心头。于是打算花点时间实现一个自己的红白机模拟器。由于之前并没有接触过fc相关的开发,所以不知道从什么地方开始,所以出于程序员的习惯遇事不决,先google一下,通过一顿搜索发现老外搞了一个fc游戏开发论坛里面有完整的fc游戏和模拟器开发教程,通过对相关教程的学习我了解到红白机主要由三部分组成:
erDiagram
fc-env ||--|{ cpu : assembly
fc-env ||--|{ apu : sound
fc-env }|..|{ ppu : video
上图中cpu为6502汇编执行器,apu为声音处理单元,ppu为视频处理单元。
在了解了模拟器的基础知识后就开始搭建项目了,项目结构如下:
代码结构中apu对应模拟器的apu模块,core对应模拟器cpu模块,ppu对应模拟器ppu模块,NES代表一个nes游戏实例,由于使用模块化外部无法直接修改或者查询到模拟器内部信息只能通过NES实例间接访问或者修改模拟器内部状态,所以NES也可以理解为一个游戏上下文.
第一次写文章感觉有点词穷,先写这么一点吧,后面续更...............................