huguang-dazongdu

无畏源于无知

最近闲的没事干(其实也不是没事干,课题还压根没怎么进展,但是就是不想做),想着开发一个简单的游戏模拟器。
从GBA到FC,鬼知道我经历了多少挣扎。最开始想的是:二十年前的游戏机,写个代码模拟模拟应该没什么难得吧。就当是练练手。
最开始以为:
image
到最后变成:
image
从这次经历我深刻的知道了以下几点:

  1. 虽然初生牛犊不怕虎,但是牛就是牛,虎就是虎。难度摆在那,你气势再怎么强都没用。
  2. 认知之外的知识不能想的太过单纯,总之还是要谨慎对待。

当然这次开发经历(如果可以算的上开发的话,实际上我一行代码都没写XD)也不能算是一无所获,经过我的刻苦钻研(搜百度)和勤奋学习(看知乎)还是搞懂了一些关于游戏机模拟器的一些底层知识。

游戏机模拟器的具体原理

摘自知乎 (http://游戏机模拟器的具体原理是什么? - 胡星宇的回答 - 知乎 https://www.zhihu.com/question/55489815/answer/145325853 "游戏机模拟器的具体原理")

我就简单说一下。一般我们使用的计算机是这样,操作系统运行在计算机硬件基础上,为应用程序抽象了一些功能接口,然后我们使用应用程序进行工作或娱乐。---应用程序------操作系统------计算机硬件---游戏机模拟器是一个应用程序,运行在操作系统之上,而这个程序能够加载运行相应的游戏程序。就变成了:-------------------应用程序------操作系统---(如果有的话)---模拟硬件----------------------操作系统------计算机硬件---

其中应用程序、操作系统都是软件,和真正游戏机上运行的没有区别。关键之处就在于模拟器用代码实现了硬件的功能。比如内存,功能是存储代码与数据,就可以简单在程序里申请一个相应大小的全局数组,把要运行的二进制代码载入这个数组里,寄存器类似。

再比如CPU,功能是取指,译码,执行。我们就可以在上面这个内存数组里取出PC指针指向的一个字节二进制代码(opcode),分析它后执行相应的操作(内存里某个地址的值加一、PC指针跳转到内存的某处等等)。

我们可以知道,一个游戏机模拟器是通过编写软件来调用自己电脑上的硬件,从自己的电脑中模拟出一个可以让游戏文件运行的环境,其中涉及到CPU和内存的模拟,还有其他各种硬件的模拟。

分类:

技术点:

相关文章: