请选择 进入手机版 | 继续访问电脑版

电玩龙资讯台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1596|回复: 0

我早年做的FC游戏机简易仿真开发系统 (在CEC-I 中华学习机 或 APPLE-II 上运行)

[复制链接]
发表于 2015-2-24 21:36:50 | 显示全部楼层 |阅读模式


       这是我早年前制作的FC游戏机简易仿真开发系统,当时的条件不照现在,关于FC的资料几乎什么都没有,好在我对 Apple-IIe 电脑还比较在行,知道FC也是用6502汇编语言,所以我就用Apple-IIe的国产兼容机CEC-I 中华学习机来开始研究FC游戏机的卡带,在资料不全的情况下,用CEC-I 摸索出了FC的PPU各个端口的功能定义,在此基础上做出了这个系统,多数APU的声音端口功能也是用这系统摸索出来的。
       由于当时做PCB板比较贵,所以为了简化没有将卡带的仿真执行功能加上,但可以对CPU的PRO-ROM和PPU的CHR-ROM进行数据显示、修改编辑、代码反汇编、程序打印、图像修改、卡带转储(DUMP)等等。特别是实时反汇编功能,浏览代码时可以记住各子程序的返回地址,这样在看反汇编代码时就非常方便,不必要人工记住刚看过的子程序返回地址。我用这系统分析过无数的游戏和学习机卡带,对它们进行修改(hack)、解密和移植。特别是对于有些加密的特殊卡带,我反汇编后找到卡带硬件的端口地址,再直接对该端口地址进行赋值测试,好多这种卡带的解码IC(即 Mapper)就是这样被我解破的。
       该系统操作的非常简单,只要将要目标FC卡带插上仿真机上就可以了,仿真软件存放在软盘驱动器中,开机自动执行,卡带被DUMP的ROM数据也存在软盘中,再用CEC-I的ROM烧录卡烧写ROM。所以,当时我几乎没有用PC机就可以做事情了。
       那几年来,我一直用这系统,软件上有什么功能要改进的,我说改就改,毕竟是自己做的嘛,直到后来我得到一台北京先锋卡通公司的FC机仿真开发系统,我才慢慢放弃了它,毕竟后来是PC的时代,用Apple-II做工具终归要淘汰的,呵呵。
       毕竟年代太久了,这东西也算是古董了哦。最近回内地老家将它翻出来,本想通电试试看还能不能用,但由于天气太潮湿,怕那软盘发霉被软驱的磁头磨坏,所以还是小心为妙没有试,等天气干燥了再说。


仿真电缆接头代替简化了的FC游戏机上的6527CPU,这样就可以通过它访问CPU和PPU地址空间了。

上面的20芯排针是打印接口,下面的74LS273是FC的CPU高地址锁存器,同时也起到锁存打印数据的作用。

这是拆开的图片,那个卡带的东东可不是FC卡带哦,我是用FC卡带改的插在CEC-I 上的接口卡,它是50PIN脚的。

这就是CEC-I 上用的EPROM烧录卡(西安九龙卡),烧录速度比较快,有多种智能烧录方法,但由于最大烧录容量只有256Kbit(32KB),所以要烧写大容量的ROM就麻烦些。由于我没有CEC-I 到PC机的通讯卡,DUMP的卡带数据只好每32KB一段一段的烧片子,再将这些片子用PC机上用的All-07烧录器读出并拼成整体的一个ROM文件,然后将这个大容量的ROM烧录出来。汗!这也太麻烦了吧,但当时就这个条件。

下面简要介绍该开发系统的工作原理:

这是不带卡带仿真执行的简易电路,但可以读写访问FC游戏机的CPU和PPU全部地址空间。注:6526CPU的时钟CLK18是由CEC-I提供,而6538PPU的26MHZ时钟是有FC主板上的晶振提供。
       首先将6527的高8位地址A15~A8从CEC-I(APPLE-II)的50pin扩展槽的数据线D0~D7用C090口打入74LS237锁存器,再访问CEC-I的口地址C100就可以读写FC的6527地址空间了,CEC-I的代码如下:
          LDA        6527_ADDR_HI
          STA        $C090                             ; 将6527CPU高地址打入273锁存器
          LDX        6527_ADDR_LO              ; 获取6527CPU底地址索引
          LDA        $C100, X                         ; 读出该地址的内容


       打印接口与6527CPU高地址线共用273锁存器,可打印CEC-I学习机6502空间、FC的CPU6527空间、FC的PPU6538空间的内容,其CEC-I的打印驱动程序如下:
LP:     LDA       $C0A0                              ; 等打印机的忙信号BUSY
          BPL       LP
          LDA       OUT_DATA                       ; 获得要打印的字节
          STA       $C090                              ; 将该字节打入273锁存器为打印机接收作准备
          STA       $C800                              ; 给打印机触发信号STB
       该软件系统在CEC-I或APPLE-II上通过5.25英寸的软驱自举启动,软盘为140KB的单面单密度软盘,上有磁盘操作系统 Apple DOS3.3和我这个名为ICE65的FC开发系统软件,ICE65共有如下几个模块:
ZG/2.obj0         主控模块,DOS3.3引导后转入它执行。
LIST.obj0          实时反汇编模块 ,能自动退出子程序返回到调用地址。
EDIT.obj0          PPU CHR-ROM编辑模块。
PPU.obj0           PPU 空间访问和实用小工具模块。
NASM.obj0        汇编器模块,其实就是我改版的EDASM(文本行编辑器+6502宏汇编器)。
HYBT.obj0         为“宏源”学习机安排的专用功能模块。
HZC1.obj0         转CEC-I中华学习机汉字库为FC汉字库的实用程序。
DUMP.obj0        读卡模块,根据配置文件CFG中的mapper信息,可将卡带的PRO-ROM和CHR-ROM Dump到软盘文件中保留。如果一个软驱放不下,还可以接个一转二双驱接口盒来使用两个软驱。


==========================================================
呵呵!其他内容,后续再写。

2010-04-19
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|电玩龙资讯台 天空联盟- SKY LEAGUE

GMT+8, 2018-7-21 11:43 , Processed in 0.082733 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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