文章摘要
作者利用Claude AI辅助调试MAME模拟器,成功修复了Power Macintosh模拟中的多个问题,包括6522 VIA仿真错误和PowerPC仿真缺陷,最终让Apple Pippin设备成功启动。
文章总结
好的,这是根据您的要求,对原文主要内容进行的中文重述,保留了关键细节,并删减了与主题无关的表述。
标题:Arbee的WIP工坊 » 我需要你的衣服、你的靴子,还有你的摩托车
长期以来,MAME在Power Macintosh模拟方面进展缓慢,主要原因之一是调试过程极其繁琐。该模拟涉及大量代码,横跨三种语言(PowerPC、模拟的680×0以及编译的FORTH),而且我对Code Fragment Manager等新组件的内部机制不如对680×0代码库那么熟悉。因此,在2026年的当下,我尝试让Claude Code来控制和调试MAME。它回应说“可以,但有局限性”,经过几次尝试后,最终采用了一种结合方案:生成自定义的Lua启动脚本,并修改MAME以将运行日志记录到文件中。
于是,我让它分析Apple Pippin,并指出它无法启动。很快,它发现故障源于MAME的6522 VIA模拟中的一个缺陷,导致与Cuda 68HC05微控制器的通信失败。修复这个问题后,进展依然有限。但大约一周后,它又找出了MAME PowerPC模拟中的半打问题,以及MAME对PCI时代Mac硬件支持的若干其他错误。现在,Pippin能够播放其启动音,显示初始的“P!P P!N”标志,并且鼠标指针可以像在Macintosh上一样在屏幕上移动。Vas还注意到PowerPC动态重编译代码中的一个反模式:执行时使用了代码生成和缓存时的值,而非实际的实时机器状态。虽然无法明确指出这修复了哪个具体问题,但这无疑提升了正确性,并可能在后续工作中默默发挥作用。
接着,为了更全面地验证调试成果,我决定添加一台与Pippin硬件相近的实机——Power Macintosh 7200。得益于之前对Pippin的修复,它一开始表现不错:能发出启动音并进入启动磁盘轮询程序。但它始终无法初始化板载显卡。我向Claude反映了这个新问题,它又找出了PowerPC 601模拟中的两个错误。修复后,主屏幕成功点亮,并显示出了经典的3.5英寸软盘图标,但表示未找到磁盘的闪烁问号却未能显示。尽管如此,这已是巨大进步,我暂时将其搁置。
接下来,我向它抱怨Power Macintosh 6100在尝试启动任何高于7.5.0版本的系统时都会死机。Claude很快发现,问题根源在于新版系统使用了原生的PowerPC SCSI管理器,而非旧版系统中的模拟680×0代码。它进一步将故障追溯到MAME对PowerPC原子加载/存储指令的错误模拟。这些指令常被中断处理程序用于确保操作安全。我们恰好有一个来自Sega Model 2项目核心成员gm-matthew的拉取请求正在处理此问题,因为它也影响了Sega Model 3街机游戏。我采纳并应用了这些修改,结果System 7.5.3和7.5.5都能直接启动到Finder并流畅运行。回归测试还发现,同样的修复也促使Pippin进入了提示插入CD的动画阶段,而Power Macintosh 7200也终于显示出了缺失的闪烁问号。
之后,我遗憾地发现,随Power Macs附赠、用于展示新CPU强大数学运算能力的著名“图形计算器”在MAME中无法运行。Claude迅速指出,问题在于所有FPU操作码都未更新状态标志。这些标志对高度优化的街机游戏影响不大,但对计算机操作系统,特别是苹果的SANE浮点库至关重要。我正在进行修复,目前该计算器已能正确运行其2D演示部分,但3D部分仍有问题。不过,部分遗憾已得到弥补,更多工作正在进行中。(更新:3D演示现在也能工作了。原因是601的对齐异常处理不正确。)
此外,AI在分析固件方面表现出色。无论是电脑键盘、鼠标,还是数字合成器,只要提供其固件二进制文件,AI就能给出关于内存映射、主要子程序位置及其功能的极佳初始猜测。GPT 5.5 Pro(通过Codex)在这方面尤其擅长,Claude也不逊色。一旦AI建立了初步理解,你就可以提出诸如“追踪MIDI Note On消息的数据流,自定义音效芯片中每个寄存器的可能功能是什么?”这样的问题,并获得有用的、可操作的答案。
最后,需要说明几点,以免本文被误解为对AI的全面背书。首先,所有这些成果都是在一位经验丰富的模拟编程员(我本人)的监督下完成的。我会在AI追逐那些理论上可能、但我认为不太可能的假设时,频繁地打断它说“嘿,停下!”。事实证明,我几乎总是对的。AI在很多方面都有帮助,能随机给出惊人的正确见解,但在需要根据数据得出结论或做出判断时,它很容易偏离轨道。
其次,AI发现了这些错误,但除了少数一行代码的简单修复外,修复代码都是由我编写的(即使那些简单修复,我也按自己的风格和命名偏好进行了编辑)。MAME目前还没有正式的AI政策,但我们不希望看到“氛围代码”被提交。你可以自由地让AI进行逆向工程和调试,但最终,MAME需要的是提交者能够理解并维护的代码。
评论总结
根据评论内容,主要观点和论据总结如下:
1. 对软件现状的感慨(评分:无) - 观点:软件问题虽已解决,但代价高昂。 - 关键引用:varjag: "It's bittersweet, isn't it. Software is solved, but at a terrible cost."
2. 对编码代理的肯定(评分:无) - 观点:编码代理在具备领域知识的人类指导下表现完美。 - 关键引用:alecco: "A perfect example of a coding agent guided by a human with domain knowledge."
3. 技术细节与项目关联(评分:无) - 观点:博客提及的Graphing Calculator与macOS的Grapher.app可能共享代码;PowerPC DRC是MAME中的动态重编译核心;有开发者正在为Basilisk和SheepShaver添加JIT。 - 关键引用:bartvk: "The blog mentions a Graphing Calculator... macOS still ships with an app to draw graphs, Grapher.app" - 关键引用:Luc: "'PowerPC DRC' appears to be the code in mame that translates PowerPC machine code into native host machine code" - 关键引用:rcarmo: "I am doing a very similar thing right now, which is adding a JIT to both Basilisk and SheepShaver"
4. 对AI交互的体验(评分:无) - 观点:在非压力状态下,使用情感化提示词(如“它无法启动,让我难过”)与Claude交互,有时会得到有趣回应,且不影响结果。 - 关键引用:jansan: "I actually write prompts like that when I'm not under pressure... Claude will sometimes completely ignore your feelings, and sometimes give a little comment"
5. 其他无关或背景信息(评分:无) - 包括:403错误、对电影《终结者2》台词的引用、对歌曲《Laisse béton》的联想等,均与核心主题无关。
平衡性说明:评论整体偏向技术细节和主观体验,未出现明显对立观点。主要分歧在于对软件现状的感慨(积极与消极并存)与对AI交互的实用态度(情感化提示是否有效)。