A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 16520|回复: 17

[硬件改造] FC全集成块主机玩豆卡花屏详解及+IC方法!付图/视频

[复制链接]

精华
1
帖子
448
威望
1 点
积分
549 点
种子
83 点
注册时间
2012-9-17
最后登录
2024-5-21
 楼主| 发表于 2015-4-8 22:33  ·  四川 | 显示全部楼层 |阅读模式
2015.4.4  BY 孙大师

全集成快FC游戏机,无论原装还是组装机,在玩部分豆卡时会花屏,这个问题其实来自游戏卡本身。
其根本原因是 卡带的OE 使能端口被直接接地(永久允许输出数据),原本是要通过金手指17脚与PPU
相连,受控与PPU。 PPU在发送地址码的时候,首先是要发低8位数据到373上锁存,然后读出卡带MAP数据
由于卡带的数据线一直都有数据输出,在PPU发送低8位数据时,与卡带输出的数据碰在一起,导致数据变化
从而导致地址码变化,读出的数据就不对号,所以花屏,甚至还会死机!   

那么在之前大家讨论的更换373可以降低花屏效果,这是为什么呢? 这个原因是因为不同373的输人的
负载不同,而卡带输出的数据没办法在短时间内把373的8个输入端的高电平完全拉低,或者部分拉低
这样数据被改变的很小,或者没改变,这就是不同373有不同效果!

问:  现在的组装机为什么不花屏呢?
答:现在的机器都是更改了读取方式,以获得完全兼容!

所以,我们只需要找到这个方法就能自己改造游戏机,获得同样的效果。

改造方法原理:PPU在读取卡带MAP数据时,将使用 17OE使能  56CS片选,当这两个脚都是低电平时,卡带的RAM
输出对应地址的数据,由于OE端已经接地,那么只要CS片选为低电平就输出数据,我们的方法:
1、把PPU输出的OE信号WE信号CS(A13)片选信号合在一起,组成一个新的CS片选信号,控制卡带56脚。
     
   

2、把PPU输出的OE信号WE信号CS片选信号合在一起,组成一个新的CS片选信号,控制一片74LS245,245的DIR
    方向选择线接PPU的WE信号,把卡带输出的8个数据通过245送到PPU总线上。

   
新的片选信号  逻辑公式  CS=OE&WE+A13

两种方法中,第1个比较简单用两个IC即可实现  一个与门IC,一个或门 IC,方法2比较复杂,在1的基础上还要
动数据线。考虑到+IC的难度,我设计了一个最简单的+IC方法,如下图,



此方法需要两只二极管D4148和一个或门IC 74LS32 ,你还可以准备一个切换开关,控制卡带56脚选择原A13
还是新的片选CS信号,图纸中的电阻R为可选,如果使用74HC32就必须要,10K-20K。

以下是对比图片:









改造过程就不发图片,大家看测试视频:

http://www.tudou.com/programs/view/i7or9sLQOSo

精华
0
帖子
393
威望
0 点
积分
412 点
种子
12 点
注册时间
2005-2-4
最后登录
2022-12-15
发表于 2015-4-8 22:39  ·  上海 | 显示全部楼层
牛B,高手!

精华
0
帖子
1080
威望
0 点
积分
1125 点
种子
24 点
注册时间
2006-11-1
最后登录
2023-10-15
发表于 2015-4-9 20:46  ·  上海 | 显示全部楼层
收藏~以后用得上,孙大师高手~

精华
0
帖子
37180
威望
0 点
积分
43228 点
种子
1631 点
注册时间
2010-9-9
最后登录
2024-11-22
发表于 2015-4-9 22:55  ·  湖北 | 显示全部楼层
真得收藏一下慢慢看呢。。。。

精华
0
帖子
178
威望
0 点
积分
181 点
种子
18 点
注册时间
2011-3-26
最后登录
2024-10-29
发表于 2015-4-12 15:05  ·  广东 | 显示全部楼层
孙大师,厉害!!!
该用户已被禁言

精华
0
帖子
394
威望
0 点
积分
407 点
种子
7 点
注册时间
2009-10-9
最后登录
2019-12-11
发表于 2015-4-26 10:01  ·  广东 | 显示全部楼层
习惯性对金手指吹一吹,然后在上橡皮擦

精华
0
帖子
1206
威望
0 点
积分
1435 点
种子
32 点
注册时间
2011-5-19
最后登录
2024-11-9
发表于 2015-4-29 17:51  ·  江苏 | 显示全部楼层
太高深·~~~~~~完全看不懂
SLN

精华
0
帖子
248
威望
0 点
积分
251 点
种子
12 点
注册时间
2016-1-1
最后登录
2022-12-24
发表于 2016-1-6 12:57  ·  湖北 | 显示全部楼层
收藏~~~~~~~~~~~~~~~~~~~

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
发表于 2016-4-14 11:13  ·  上海 | 显示全部楼层
这个问题,其实就是bus conflict, CPU也会有,比如MAPPER2游戏切bank,
CPU会向0X8000~的某个地址写入一个数据(bank号),卡带的译码电路会根据CPU发出的地址,写信号,和数据选择对应PRGROM BANK。
理论上这个操作是没有问题,但是CPU的数据与PRGROM的数据相连,即两个同时都在输出,输出的最终值由谁的驱动能力强弱决定的。
解决的办法是,软件搞定, 如下
保证ROM该地址处数据正好为CPU要写的值,这样,CPU和ROM同时输出一样的值,这样保证数据总线上是确定的值。

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
发表于 2016-4-14 15:01  ·  上海 | 显示全部楼层
感谢大神分享,我也分析了一下原因如下,请指正
PPU 地址引脚是AD0~AD7和PA8~PA13
数据引脚也是AD0~AD7
即数据线和地址线是复用的。
PPU部分与卡槽/卡带的连线关系
AD0~AD7 –> 373 –> 卡带PPU地址
AD0~AD7 <–> 卡带PPU数据

PPU读ROM或者读写RAM时候,先将地址通过地址线发送出来,其中AD0~AD7被373锁存,固定。
因为AD0~AD7的地址信息已经被373固定,之后可以作为数据线来读写了。

但是可以看到,
AD0~AD7  也与 卡带PPU数据 连接,
那么PPU在AD0~AD7上输出地址时,卡带上的ROM也在AD0~AD7上输出数据,这就导致总线冲突,AD0~AD7上实际的电平,由于PPU的AD0~AD7总线和ROM的DATA总线驱动能力决定的。
哪个驱动能力强,电平就有哪个决定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-24 10:30 , Processed in 0.198177 second(s), 18 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部