FC模拟器的实现 - 开发准备工作 (1) - JAVA

/ 编程技术 / 没有评论 / 1640浏览

作者:玉米


引言

FC是一个时代,是80、90后的时代。FC又叫红白机,它给80、90年代的人带去了丰富多彩的文化娱乐模式。

还记得那些曾经在学校里津津乐道的游戏么:《超级玛丽》、《魂斗罗》、《热血高校》、《最终幻想》、《俄罗斯方块》、《坦克大战》等等。

实不相瞒,笔者今年24岁,仍然是一个乳臭未干,锋芒毕露的人。我对于游戏的追求可以追溯至小学。

因为执着于游戏,一直想做游戏。可就是这样一个梦想,被许多人冠以了吹牛的字样。

这一吹就吹到了大学总算是能做游戏了。这下子好了,一下子就能做游戏了,虽然一雪前耻,但是我似乎已经释怀了,而现在觉得那些似乎都不重要了。

因为更重要的事儿情已经摆在了我的眼前。就是我下一个牛要怎么吹。于是我便打起了做CPU的算盘。

说实话,笔者文科生底子,其数理基础相当薄弱,这样一个工程对于我来说确实有所难度。不过我从来就没有因为难而放弃过。

因为笔者我相信无知则无畏这句话。因为我一无所知,所以我才会有动力去做这样一件事情。

当然对于别人怎么看我、说我比如说我又痴人说梦,说我造轮子。我也没有那闲心去关注了。

因为笔者要全心全意做出自己的骄傲。因为笔者认为自己的一生应该献给荣耀。

而这篇文章将会作为我开始写模拟器的的一篇记序文。我会把我所知道的所有细节尽可能全面的阐述在文中。

当然笔者是不喜欢教条主义的那些框框架架的理解方式、什么专有名词、什么约定俗成的高级符号什么的来表述知识体系。

因为笔者深受其害、因为数学的各种约定俗成的符号,笔者虽有鸿鹄之志,却也在数学上举步维艰。

所以本文将尽可能使用通俗易懂的比喻和轻松幽默易懂的语言来分享做模拟器的技巧和经验。

正文

在模拟器开发之前,我们需要知道我们要模拟的硬件是什么,以及它的运行各个模块是做什么工作的。

一个完整的FC模拟器应该有以下东西。

CPU、APU、PPU、SRAM、VRAM 、以及运行的内存镜像ROM。

CPU : 中央处理器 负责逻辑运算

APU:音频处理器 负责处理声音

PPU:图像处理器 负责处理画面

SRAM : 精灵内存,用于存放人物数据 在PPU内部

VRAM:图像信息内存,用于存放图像的显示相关数据 在PPU内部

ROM:真实游戏卡带的内存镜像。

NES :任天堂娱乐系统

所以我们的工程分为 CPU 、APU、PPU、ROM四个工程 + NES工程 + COMMON公用工程

并设置相关依赖。

其中NES 依赖于 CPU 、APU、PPU、ROM 、COMMON

CPU 依赖于 COMMON

PPU 依赖于 COMMON

APU 依赖于 COMMON

ROM 依赖于 COMMON