安卓模拟器吧 关注:63,595贴子:204,533
  • 13回复贴,共1

游戏机模拟器的具体原理是什么?

只看楼主收藏回复

MAME里实现了各种 68000, z80,mips, sparc, arm,pic16c5x,nec, alpha,等 100 多款你见过的或者没见过的主从协处理器的模拟,虽然都是 switch case opcode,但是不像 lua虚拟机。


IP属地:广东1楼2024-02-23 14:50回复
    你要把 4Mhz跑成 8Mhz,游戏玩起来节奏就不一样了。比如以前老游戏机上敌人一多,就会慢下来,你实现模拟器,也得把这种慢下来给实现了。另外很多街机是双处理器,比如一块 68000 + z80,你不能复原老主机的运行速度,一些写的粗糙的游戏 ROM可能会出错。


    IP属地:广东2楼2024-02-23 14:51
    回复
      模拟 CPU重点是 “精细”,比如浮点数误差最好一致,比如中断优先级你得模拟出来,模拟器由于按照 interval 来运行,更容易产生同时多个硬件中断被触发,比如 “手柄按键” ,多核通信之类各种东西加在一起,某个核满负荷运行的情况下,优先级低的可能永远得不到处理,弄错了可能游戏就没法玩了。


      IP属地:广东3楼2024-02-23 14:51
      回复
        模拟 CPU重点是 “精细”,比如浮点数误差最好一致,比如中断优先级你得模拟出来,模拟器由于按照 interval 来运行,更容易产生同时多个硬件中断被触发,


        IP属地:广东4楼2024-02-27 15:37
        回复
          比如 “手柄按键” ,多核通信之类各种东西加在一起,某个核满负荷运行的情况下,优先级低的可能永远得不到处理,弄错了可能游戏就没法玩了。


          IP属地:广东5楼2024-02-27 15:37
          回复
            总线也有好多规格需要实现,不同基板的总线链接不同cpu 和外设的方式都不一样,还是需要 “精确模拟”,比如 ROM /RAM / IO 地址映射,一些大容量游戏需要 ROM 的 BANK 切换,还有一些游戏会在卡带上带有扩展内存,除此之外还要正确模拟各种异常,


            IP属地:广东6楼2024-02-27 15:38
            回复
              比如某些 RAM,读写奇数地址会出错,要给对应 CPU发送异常信号,某些老点的 RAM只能读写 16bit的 WORD,不能读写 DWORD或者 BYTE,否则都无效。这些你都得模拟到位了,有些有 BUG的游戏,错误的写了内存,在真实主机上,写操作直接被硬件忽略掉了,没有损伤,但软件模拟不注意执行了那条指令结果就不一致了。


              IP属地:广东7楼2024-02-27 15:38
              回复
                如果你嫌 MAME太复杂庞大,再推荐一个 gens 的代码,只针对世嘉16位机的 Windows实现,条理很清晰,很多比世嘉简单的 FC模拟器写的都没有 gens那么结构清晰,简单易读。它就不像MAME那么大而全,很多步骤实现的很直接不需要配置那么多,代码量也不大。


                IP属地:广东8楼2024-02-28 09:18
                回复
                  现在新进的模拟器很多,没机会逐一查看他们的实现细节,只记得有几款比较新的模拟器都是直接裁剪 MAME的部分代码来弄的,


                  IP属地:广东9楼2024-02-28 09:19
                  回复
                    因为 MAME里面几乎实现了所有游戏能用的芯片了,拿出来改改参数加点指令集就可以用,比如 MAME里面模拟了 mips,我们裁剪出来实现 PSP模拟器,个别指令有些区别需要改一下,然后我们着重自己实现 PSP里面 MAME没有的硬件部分。


                    IP属地:广东10楼2024-02-28 09:19
                    回复
                      总之是个辛苦活,你需要一本硬件手册,然后边查边弄。


                      IP属地:广东11楼2024-02-28 09:19
                      回复
                        安卓模拟器(Android Emulator)是一个在电脑上模拟安卓操作系统运行的软件。它使开发者能够在没有安卓设备的情况下,也可以运行和测试安卓应用程序,方便开发和调试。


                        IP属地:广东12楼2024-03-04 10:28
                        回复
                          安卓模拟器的优点是可以方便地进行调试和测试。开发人员可以在计算机上运行应用程序,而不需要实际的设备。此外,安卓模拟器还可以模拟不同的设备类型和操作系统版本,以确保应用程序在各种设备上都能正常运行。


                          IP属地:广东13楼2024-03-04 10:29
                          回复
                            模拟器 是在电脑上玩手游的工具


                            IP属地:广东14楼2024-03-06 14:18
                            回复