小时候,我拥有PlayStation 1(PS1)。它是我拥有的第一个(如果不是第一个)游戏机之一,并且对我的未来产生了深远的影响。
我可以追溯到如何参与计算机的历史,可以追溯到玩和改装视频游戏。虽然我年幼时还不够聪明,无法改装游戏机,但我的父亲并不坏。他修改了我的PS1,使其背面有一点开关,使其可以玩烂游戏。他们说苹果离树不远。
快进到今天,我不再拥有原始的PS1。我记得有些游戏无法再加载了,并且我已经获得了PS2。那么,为什么要保留旧的控制台?原来答案是怀旧和回忆。您会错过任何您不再拥有的东西。
最近有一位朋友送给我PS1。这样,旅程就开始了,我该如何改装呢?
索尼将(不是技术术语)字符串(即SCEA,SCEI,SCEE或在极少数情况下为SCEW)烘焙到了官方PS1游戏中,这些位置无法由普通读者复制。该视频和本文对此进行了很好的讨论。
CD驱动器控制器寻找这些字符串以将光盘标识为正式光盘。一旦控制器确定光盘是/不是官方的,主CPU就会读取该决定并采取相应的措施。
如果找不到该字符串或该字符串出现乱码,则PS1知道该光盘不是正版PS1游戏。但是,由于PS1需要解决光盘读取错误,因此通过真实性检查的地方还有很多余地。
由于区域和真实性都被卷成一串,因此Sony在这里用一块石头杀死了两只鸟,并实现了区域锁定和版权保护。
如果您想进行深入的讨论,可以阅读The Old Crow的原始帖子或No $ PSX文档页面或此Modchip FAQ。
PSX modchip通过电抑制驱动器内部任何CD最初产生的输出,然后将新的伪信号注入CD微控制器来工作。这会使PS1相信里面的任何光盘都是合法的,然后继续启动。
更改整个过程,使其仅通过发出正确的字符串就更难绕过。
但是,现代的modchips已经可以解决这个问题。在这些更新的环境下工作的Modchip被称为“隐形modchips”,因为控制台根本无法检测到它们。
第一个“开源” modchip由一个名叫“ The Old Crow”的人进行反向工程。令人惊讶的是,The Old Crow专门研究电子音乐合成器,而不是破解视频游戏机。从他的modchip来说,大多数其他modchip都是从某种意义上衍生的。他最初对商业PS1 modchip进行了逆向工程,该芯片是由在中国公司工作的西方工程师设计的。
这三者各有利弊,但通常可以总结如下:
MM3是当今最常见的PS1 modchip。它唯一真正的缺点是它使用内部振荡器,该振荡器可能与CD驱动器使用的振荡器不同步。如果发生这种情况,您只需要重新启动控制台即可尝试再次阅读。
Mayumi v4尝试使用CD驱动器使用的振荡器。这减少了振荡器同步问题发生的机会;但是,Mayumi v4被认为有点难以安装。
PSNee是最初由TheFrietMan编写的开源modchip。后来,其他人继续对其进行开发,在所有Playstation 1 / PSOne型号上,它似乎都运行良好。根据代码,我相信它会尝试推断PS1在引导过程中的位置,以开始注入伪造的SCEX字符串。不幸的是,PSNee的安装复杂。所提供的图表非常糟糕,远不及MM3和Mayumi的可用图表那么简单。我确定了Attiny45的引脚排列,但最终选择了MM3和Mayumi,因为它更容易。
只要您拥有合适的工具,制作PS1 modchip通常非常容易。在本教程中,我们将专注于制造MM3或Mayumi v4 modchips。
虽然我有Arduino,但我更喜欢在PSNee上使用MM3和Mayumi芯片。如果要制作PSNee modchip,可以按照此处的说明将.ino文件刷新到Attiny。
许多教程都要求使用PIC12C508。这是一个旧模型,除非有库存,否则无需继续使用它们。适用于12C的十六进制代码将适用于12F。
首先,您应该首先查看IC并确定哪条腿。离压印圆圈最近的那条腿是Pin1。相反的那条腿是Pin 8。
您可以将其插入面包板,然后根据下图将其连接到Pickit。您要匹配以下内容(其余内容暂时未使用):
正确连接芯片的电缆后,将PICKit连接到计算机并启动MPLAB IPE。在器件下,选择PIC12F508。
进入设置>高级模式。高级模式的默认密码是微芯片。我不建议更改它,不确定为什么甚至可以使用该选项。
进入左侧的“电源”选项卡,然后从“工具”启用“电源目标电路”。
从这里下载适合您的芯片和控制台的十六进制代码。每个控制台区域它们都不同。
2018-06-20 20:48:02 -0400-正在加载十六进制文件。请稍候...正在从/Users/kchung/Repositories/PsNeePy.wiki/hexcodes/mm3/MM3USA.HEX ...加载代码2018-06-20 20:48:03 -0400-成功加载十六进制文件.2018-06 -20 20:48:20 -0400-编程...设备擦除...编程...将对以下存储区域进行编程:程序存储器:起始地址= 0x0,结束地址= 0x1e7配置存储器编程/验证完成2018-06-20 20:48:25 -0400-编程完成
如果需要,您可以点击“验证”按钮以确保您的闪光灯正确无误。您的输出应类似于以下内容:
2018-06-20 20:50:10 -0400-正在验证...正在验证...以下存储器区域将被验证:程序存储器:起始地址= 0x0,结束地址= 0x1ff配置存储器用户ID MemoryVerification成功。 2018-06-20 20:50:13 -0400-验证完成
在这里,您可以按照在线示意图将芯片焊接到您拥有的PSX。我个人使用了William Quade的出色图表,并认为您也应该这样做。
在查看所有这些modchip时,我认为读和写Python代码而不是Assembly和C代码会很好,因此我开始着手将PSNee移植到Python。
通过使用MicroPython和ESP8266,我们实际上可以创建一个modchip,可以通过ESP8266的WiFi进行远程更新和修改。
在上面的照片(SCPH-7501)中,ESP8266位于左上方,并且标头朝上。电线连接至接头连接器,并在CD驱动器下方布线至右下角的面包板。
面包板的导线被焊接到正确的MM3点,然后用相应的针脚号标记。通过使用该面包板,我可以测试比一次又一次地焊接到板上的modchip快得多的芯片。
虽然我的测试控制台在读取光盘方面非常糟糕,并且控制台很少启动游戏,但modchip确实可以工作。
在大多数情况下(忽略隐身功能),一旦您到达黑色的Playstation徽标屏幕,modchip就会起作用,因为这表明CPU认为游戏是真实的。
但是,由于该代码基于PSNee的旧版本,因此隐身功能似乎不适用于某些较新的PS1版本。
我主要将其创建为概念证明,不太可能对其进行过多维护。尽管我不建议使用我的modchip,但我希望社区能够采用它并帮助改进它。尽管控制台已失效,但PSX社区相当活跃。
借助PsNeePy,您可以通过WiFi远程更新ESP8266,进行远程调试以及轻松重置芯片。至此,PS1花费了许多时间进行工作,更现代的体验令人耳目一新。
感谢我的PS1的一个匿名朋友,Sharan修复了我的PS1,William Quade的出色图表,AssemblerGames尽管没有接受我加入论坛而获得了很好的信息,以及PSXDEV回答了我的一些问题。