数码之家

 找回密码
 立即注册
搜索
查看: 30585|回复: 152

[游戏] 世嘉MD游戏机的汇编级维修

    [复制链接]
发表于 2020-11-26 15:07:17 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 orsonzou 于 2020-11-26 15:07 编辑

世嘉MD游戏机是90年代日本世嘉公司推出的16位游戏机,曾经和任天堂的SFC超任一分天下。这货在国内仿制品极多,本人修过起码几十台了,见过的版本估计不下10种

今天要修这台组装机,对应了日本MD最早期的版本。芯片功能和布局,和原装基本一样。但是品质差很远。。。这个符合当年特色!
这台机器的问题是能通电开机,有黑屏的视频信号。说明整机通电,工作,并且芯片输出符合视频的波形,只是没有具体的画面。这是典型的游戏卡程序没有起来的一类故障。

和电脑一样,主板的大部分芯片,只要任意ic或者线路有问题,都可以轻松的让电脑不运行。游戏机也一样。

今天要啰嗦的事情,并不是简单修好的问题。而是在修好和没修好之间,然后柳暗花明又一村,最后修好的过程。

先看下大致框图和主板实际图:
genesis_block_diagram.png

实际电路板:
主板插游戏卡.jpeg
这是标注后的主要芯片图:
主板带芯片注释.jpeg

框图中IC4对应主板的控制芯片。68000是主CPU,Z80是负责音频的辅助CPU。IC4是世嘉的专用芯片,控制着总线,开关机,两个CPU的控制控制信号等等。可以理解为相当于整个双CPU系统之间的粘合剂。



这台机器完全不跑程序。根据我的维修经验,以及各种工作条件和reset信号的基本测试。料定这个控制用的IC4有问题。换了之后。果然就能开机了。
然而,到这里没有结束。。。而是陷入了好几天的折腾分析中!


两张游戏卡,合卡(就是有很多游戏集合的卡)和单卡(只有一个游戏的卡),前者可以正常运行,屏幕看到菜单,但进任何一个游戏都会死机。而后者单卡,就直接白屏死机。
上面是单卡下面是合卡:



游戏卡.jpeg

到这里,根据我以往的维修经验,两者的区别就是合卡因为只是先出菜单,没有声音。而单卡直接进游戏有声音。所以故障就和声音有关的
部分。通常是音频CPU z80,控制芯片IC4或者Z80内存的问题。果断换掉这三个,依次测试。然而还是问题依旧。这下就复杂了,因为以往的维修经验到此已经用光。

接下来只能苦逼的测试所有的数据总线,控制
总线,地址线的通断。全部测了一遍。换芯片和测试各种通断,可能搞了好几天时间,徒劳无功!




在山穷水尽疑无路的时侯,只能硬着头皮深入下去。这个时侯我可以肯定是音频方面的问题,具体那个芯片,哪个引脚,就需要深入的分析了。

在整理思路之后,既然知道是初始化音频方面出的问题,而且无法定位具体地点。所以只能借助于网上的游戏卡代码了。

那个时代的游戏机,主板是没有BIOS的。也就是说,程序都在游戏卡里。主机从游戏卡读取程序并运行,首先就是初始化硬件。

通过网上找到的流传出来的世嘉公司游戏例程,就可以找到具体的流程。

下图是世嘉公司的机密文档:
sega内部例程.png
这是github上整理出来的:
程序卡死部分.png
虽然是汇编,但是程序已经做了详细标注。
初始化Z80 cpu的程序在InitZ80:
主CPU 68000,通过向IC4控制芯片
映射的地址发送数据,来控制IC4的控制引脚向Z80CPU发出两个信号,reset和BusReq。意思就是让Z80复位,并且向Z80请求外设要占用总线。这个时侯Z80应该回复一个BusAck的应答信号。程序等待这个应答信号,如果OK就做另外工作,把一些指令数据,直接通过总线放到Z80的内存里。然后复位Z80。这个时侯两个CPU就是各自工作的状态了。

关于BusReq和BusAck的详细过程,可以在Z80 的datasheet上找到,如图: 上古的Z80 pdf.png


手册中可以看到BusReq拉低后,BusAck确认信号跟着拉低:
PDF的时序.png

正常机器的这个实际波形:
正常的BusAck先高,随BusReq而拉低.jpeg

通过对比正常的机器,终于发现了问题。
正常机器的复位和紧接着的BusReq拉低有效,然后数据传输,然后再reset。这个程序表达的流程一致:

蓝色是reset,黄色是BusReq:
reset后busreq拉低.jpeg

初始化结束后,再次reset(蓝色):
reset拉高在reset一下.jpeg
蓝色是BusReq,黄色是Z80 内存的数据,和汇编程序的表达一致:
busreq器件数据传输.jpeg
但是这台机器,波形并不对,如图蓝色是BusReq,黄色的BusAck一直是低电平状态,并没有初始的高电平,然后随BusReq的拉低而拉低的过程:
问题芯片的BUSACK没有先被拉高.jpeg
所以这台机器的程序,就卡在了等待BusAck有效的地方,程序进入死循环:
QQ20201126-145629@2x.png

找到了问题,接下来就简单了。经过测试,这片Z80 CPU的BusAck引脚,静态测试一切正常的(各种对地阻值等)。但并没有上电处于高电平状态,芯片不良无疑。换掉有问题的Z80 CPU :
两种Z80.jpeg

换掉后,BusAck初始高电平,并随着BusReq的拉低而拉低,后续的波形正常了,程序也继续运行。画面出来,声音响起,维修结束!

谢谢观看,欢迎点赞转发和评论!







打赏

参与人数 34家元 +545 收起 理由
shilifeiyang + 20
xiaoxuanfeng + 20 謝謝分享
wuyaku + 3 原創內容
落叶风 + 20
wmshizheng + 20 謝謝分享
拖鞋 + 3 原創內容
libug + 1
menwawork + 21 優秀文章
langs + 3 硬核维修
jtcat + 10 居然还能找到可以替换的z80

查看全部打赏

本帖被以下淘专辑推荐:

发表于 2020-11-26 15:19:33 | 显示全部楼层
不折不扣的大神,佩服!!!
回复 支持 2 反对 0

使用道具 举报

发表于 2020-11-26 15:21:09 | 显示全部楼层
类似于单片机。楼主相当厉害的说
回复 支持 反对

使用道具 举报

发表于 2020-11-26 15:23:16 | 显示全部楼层
That's awesome.it can be fixed.
回复 支持 反对

使用道具 举报

发表于 2020-11-26 15:27:24 | 显示全部楼层
前排支持,看过lz的帖子,lz对古代游戏机研究的很透彻~
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-26 15:38:14 | 显示全部楼层
朋友的技术真的是高超啊!

打赏

参与人数 1家元 +10 收起 理由
qrut + 10

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-11-26 15:51:12 | 显示全部楼层
这个z80需要烧录好程序吗
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-26 15:58:20 | 显示全部楼层
牛比级的修复,这得研究多少历史啊?
回复 支持 反对

使用道具 举报

发表于 2020-11-26 16:09:20 | 显示全部楼层
这种双列直插式集成电路算最简单了:lol::praise:
回复 支持 反对

使用道具 举报

发表于 2020-11-26 16:16:22 | 显示全部楼层
不折不扣的大神,佩服!!!学不来啊
回复 支持 反对

使用道具 举报

发表于 2020-11-26 16:56:34 | 显示全部楼层
看主板做工还可以。只是惊讶于现在还有人修这个。维修成本比撸新成本高了。
回复 支持 3 反对 0

使用道具 举报

发表于 2020-11-26 17:02:06 | 显示全部楼层
有这技术,应该去研究plc之类的,修那些玩意才能赚钱大大的:sleepy::sleepy:
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-26 17:13:35 | 显示全部楼层
用示波器在脑中反编译程序 高手啊
回复 支持 反对

使用道具 举报

发表于 2020-11-26 18:18:33 来自手机浏览器 | 显示全部楼层
路过给大佬顶贴来了…
回复 支持 反对

使用道具 举报

发表于 2020-11-26 18:39:49 | 显示全部楼层
这换的CPU你从哪找的啊?现在还有这种芯片卖的吗?话说这机器修好了干嘛?收藏?应该不会有人还在玩这个吧?
回复 支持 反对

使用道具 举报

发表于 2020-11-26 18:40:23 来自手机浏览器 | 显示全部楼层
大佬厉害,理论联系实际,高手啊,看主板这个机器是不是NEWSTAR的仿制品
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-26 19:21:58 | 显示全部楼层
本帖最后由 温力口 于 2020-11-26 19:23 编辑

谢谢分享。。。。大婶功底深厚,分析透彻,手到擒来。
另外,请问这个是什么牌子型号的示波器?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-28 19:33 , Processed in 0.124801 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表