我需要你的衣服、靴子和摩托车
在MAME中,Power Macintosh仿真长期以来进展缓慢的原因之一是调试非常繁琐。有大量代码表面,使用了3种语言(PowerPC、仿真680×0和编译的FORTH),而且我对新东西的内部运作,比如代码片段管理器,了解不如对680×0代码库的行为那么熟悉。所以,在2026年,我问克劳德·科德是否可以控制和调试MAME。它回答我:“是的,但有一定限制。”经过几次尝试后,它决定使用生成自定义的Lua启动脚本和修改MAME以将发生的事情记录到文件中的组合。因此,我将其指向Pippin并说:“这不能启动,让我感到难过。”(其实并不是。我提出的请求不是关于我的情感,而是受到我之前尝试自己调试的影响)。很快它发现与Cuda 68HC05的通信因为MAME的6522 VIA仿真中的错误而失败。修复这一点并没有带我们走得更远,但在一周左右的时间里,它找到了MAME的PowerPC仿真中的半打问题以及MAME对PCI时代Macintosh硬件支持的几个其他问题。因此,Pippin现在可以播放它那有点诡异的启动声音,并显示最初的“P!P P!N”方框徽标,此外你还可以像使用不太秘密的Macintosh一样移动鼠标指针。Vas在PowerPC DRC中注意到一个反模式,即在执行过程中使用了生成和缓存时的值,而不是实际的实时机器状态(在编写DRC时,容易不知不觉中陷入这样的做法)。我无法指明是什么具体修复了这个问题,但这绝对是一个正确性的改进,并且在后续工作中很可能是默默有帮助的。接着,我想增加对硬件接近Pippin的真正PowerMac的支持,以跟踪调试的更广泛结果。Power Macintosh 7200完全符合这一要求(它使用了Quadras中熟悉的DAFB视频的变体)。起初看起来进展顺利,多亏了Pippin的所有修复 - 它鸣叫着并进入了启动磁盘轮询例程。但是它从未初始化板载视频。我告诉克劳德,这就是现在让我感到难过的地方,然后它发现了PowerPC 601仿真中的两个错误。解决这些问题后,主屏幕现在显示打开状态,并显示熟悉的3.5英寸软盘引导搜索例程。然而,指示未找到磁盘的闪烁问号却没能正常工作。尽管如此,进展还是很好的,所以我将其搁置。接下来,让我感到难过的是Power Macintosh 6100在尝试引导任何版本高于7.5.0的系统时冻结。克劳德很快发现,区别在于本机PowerPC SCSI管理器与以前系统版本中仿真的680×0代码,并追踪到MAME错误仿真PowerPC的原子加载/存储指令。这些指令经常被中断处理程序使用,以保证安全操作,即使系统中的其他设备(例如第二个CPU或DMA控制器)触及了内存并通知了处理器。我们收到了来自Sega Model 2 MVP gm-matthew的一个拉取请求,解决了这个问题,因为它也破坏了Sega Model 3街机游戏中的某些内容,但它被困在审查中。我抓取了更改并应用了它们,System 7.5.3和7.5.5直接引导到Finder并顺利运行(由于本机PowerPC SCSI驱动程序,运行得更高效)。在回归测试这些更改时,我发现相同的修复也使Pippin顺利进入其动画,提示需要插入CD,而PowerMac 7200获得了缺失的闪烁问号。不错!之后,我感到遗憾的是与Power Macs一起发货的著名图形计算器无法在MAME中运行。克劳德迅速指出,没有任何FPU操作码更新状态标志,而这些状态标志在像MAME的PowerPC核心最初编写以支持的高度优化的街机游戏中并不常用。但它们对计算机操作系统和具体来说对苹果的SANE浮点库非常重要。我现在有一个正在修复的过程,使图形计算器能够正确运行其自我演示的2D部分,但3D部分还未工作。所以一些遗憾得到了缓解,而在我写这些文字时,还有更多工作正在进行中。(更新:3D现在可以正常工作。601的对齐异常没有正常运作,我本以为这会产生比我迄今可以证明的更大的影响)。此外,人工智能在处理某种明确规定的设备(从计算机键盘或鼠标到数字合成器)的固件二进制文件时,非常擅长于给出关于内存映射和主要子程序位置及其功能的优秀起始猜测。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡