游戏机模拟器的具体原理是什么?
安卓模拟器吧
全部回复
仅看楼主
吧务
level 13
山野心语 楼主
MAME里实现了各种 68000, z80,mips, sparc, arm,pic16c5x,nec, alpha,等 100 多款你见过的或者没见过的主从协处理器的模拟,虽然都是 switch case opcode,但是不像 lua虚拟机。
2024年02月23日 06点02分 1
吧务
level 13
山野心语 楼主
你要把 4Mhz跑成 8Mhz,游戏玩起来节奏就不一样了。比如以前老游戏机上敌人一多,就会慢下来,你实现模拟器,也得把这种慢下来给实现了。另外很多街机是双处理器,比如一块 68000 + z80,你不能复原老主机的运行速度,一些写的粗糙的游戏 ROM可能会出错。
2024年02月23日 06点02分 2
吧务
level 13
山野心语 楼主
模拟 CPU重点是 “精细”,比如浮点数误差最好一致,比如中断优先级你得模拟出来,模拟器由于按照 interval 来运行,更容易产生同时多个硬件中断被触发,比如 “手柄按键” ,多核通信之类各种东西加在一起,某个核满负荷运行的情况下,优先级低的可能永远得不到处理,弄错了可能游戏就没法玩了。
2024年02月23日 06点02分 3
吧务
level 13
山野心语 楼主
模拟 CPU重点是 “精细”,比如浮点数误差最好一致,比如中断优先级你得模拟出来,模拟器由于按照 interval 来运行,更容易产生同时多个硬件中断被触发,
2024年02月27日 07点02分 4
吧务
level 13
山野心语 楼主
比如 “手柄按键” ,多核通信之类各种东西加在一起,某个核满负荷运行的情况下,优先级低的可能永远得不到处理,弄错了可能游戏就没法玩了。
2024年02月27日 07点02分 5
吧务
level 13
山野心语 楼主
总线也有好多规格需要实现,不同基板的总线链接不同cpu 和外设的方式都不一样,还是需要 “精确模拟”,比如 ROM /RAM / IO 地址映射,一些大容量游戏需要 ROM 的 BANK 切换,还有一些游戏会在卡带上带有扩展内存,除此之外还要正确模拟各种异常,
2024年02月27日 07点02分 6
吧务
level 13
山野心语 楼主
比如某些 RAM,读写奇数地址会出错,要给对应 CPU发送异常信号,某些老点的 RAM只能读写 16bit的 WORD,不能读写 DWORD或者 BYTE,否则都无效。这些你都得模拟到位了,有些有 BUG的游戏,错误的写了内存,在真实主机上,写操作直接被硬件忽略掉了,没有损伤,但软件模拟不注意执行了那条指令结果就不一致了。
2024年02月27日 07点02分 7
吧务
level 13
山野心语 楼主
如果你嫌 MAME太复杂庞大,再推荐一个 gens 的代码,只针对世嘉16位机的 Windows实现,条理很清晰,很多比世嘉简单的 FC模拟器写的都没有 gens那么结构清晰,简单易读。它就不像MAME那么大而全,很多步骤实现的很直接不需要配置那么多,代码量也不大。
2024年02月28日 01点02分 8
吧务
level 13
山野心语 楼主
现在新进的模拟器很多,没机会逐一查看他们的实现细节,只记得有几款比较新的模拟器都是直接裁剪 MAME的部分代码来弄的,
2024年02月28日 01点02分 9
吧务
level 13
山野心语 楼主
因为 MAME里面几乎实现了所有游戏能用的芯片了,拿出来改改参数加点指令集就可以用,比如 MAME里面模拟了 mips,我们裁剪出来实现 PSP模拟器,个别指令有些区别需要改一下,然后我们着重自己实现 PSP里面 MAME没有的硬件部分。
2024年02月28日 01点02分 10
吧务
level 13
山野心语 楼主
总之是个辛苦活,你需要一本硬件手册,然后边查边弄。
2024年02月28日 01点02分 11
吧务
level 13
山野心语 楼主
安卓模拟器(Android Emulator)是一个在电脑上模拟安卓操作系统运行的软件。它使开发者能够在没有安卓设备的情况下,也可以运行和测试安卓应用程序,方便开发和调试。
2024年03月04日 02点03分 12
吧务
level 13
山野心语 楼主
安卓模拟器的优点是可以方便地进行调试和测试。开发人员可以在计算机上运行应用程序,而不需要实际的设备。此外,安卓模拟器还可以模拟不同的设备类型和操作系统版本,以确保应用程序在各种设备上都能正常运行。
2024年03月04日 02点03分 13
吧务
level 13
山野心语 楼主
模拟器 是在电脑上玩手游的工具
2024年03月06日 06点03分 14
1