Commodore 64 (C64) 是一款经典的家用电脑,但当组件发生故障时,其内部硬件行为的诊断可能非常复杂。与模拟机器软件行为的传统模拟器不同,开发者 antirez 开发的 `c64-hw-sim` 项目在更细粒度的电气层面对 C64 主板(特别是 ASSY 250407 版本)进行建模。该模拟器理解电路板上的特定电气连接(即网表),并了解每个独立芯片在其特定引脚上的行为。这允许用户像物理操作硬件一样与机器交互:他们可以“拔起”芯片的引脚,将引脚短接到接地或 +5V,将芯片从插座中取出,或者“断开”电阻,以观察系统做出何种反应。

一个 GIF 动画显示在执行 BASIC 程序期间,字符 ROM 被拔出并重新插入。
演示模拟器模拟物理硬件操作的能力,例如将芯片从插座中移除。github.com

此视觉效果展示了该项目模拟物理硬件交互(如移除芯片)的核心能力。

模拟机制依赖于对电气走线物理特性的建模。每个引脚以不同的强度(强驱动、弱上拉或无驱动)驱动其连接的网络。模拟器决定网络上的哪个信号“获胜”;如果两个输出发生冲突,较低的电压将胜出。它还模拟浮空线的行为,这些线路会根据是受 TTL 输入还是 MOS 输入负载,随时间漂移到特定的电压。这种细节意味着,当用户模拟损坏部件时,屏幕上产生的视觉“乱码”是模拟电路逻辑的直接结果,而非预编程的效果。例如,拔起颜色 RAM 上的特定引脚可能会导致机器正常启动,但由于 CPU 和视频芯片 (VIC) 正在从不同的、别名化的地址读取数据,因此屏幕上会显示随机颜色。

尽管准确度极高,但由于其详尽的建模,该模拟器面临显著的性能权衡。由于模拟每个芯片的每一个引脚,即使在高端现代硬件上,该程序也难以达到实时运行速度;例如,Apple M3 Max 只能以原始速度约 31% 的速度模拟 C64。这使其不适合玩游戏,但非常适合其预定用途:硬件取证。维修人员可以使用该工具测试损坏电路板的假设,在进行繁琐且有风险的组件去焊工艺之前,识别出最可能故障的芯片。然而,该模拟仍有局限性;它目前不模拟内部芯片故障(如损坏的 DRAM 单元),也不模拟电源或 SID 滤波器的音频输出等模拟组件。它仍然是一个用于理解 C64 “亲密”电气机制的专业工具,而非通用模拟器。