maxzhou88 发表于 2015-2-24 21:36:50

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



http://hiphotos.baidu.com/maxzhou88/pic/item/58dec866eaab2c1caa184c7d.jpg       这是我早年前制作的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做工具终归要淘汰的,呵呵。       毕竟年代太久了,这东西也算是古董了哦。最近回内地老家将它翻出来,本想通电试试看还能不能用,但由于天气太潮湿,怕那软盘发霉被软驱的磁头磨坏,所以还是小心为妙没有试,等天气干燥了再说。
http://hiphotos.baidu.com/maxzhou88/pic/item/1dfd2e8f7c8cb1d6f11f3651.jpg
仿真电缆接头代替简化了的FC游戏机上的6527CPU,这样就可以通过它访问CPU和PPU地址空间了。
http://hiphotos.baidu.com/maxzhou88/pic/item/62770eee02c61f112cf53452.jpg
上面的20芯排针是打印接口,下面的74LS273是FC的CPU高地址锁存器,同时也起到锁存打印数据的作用。
http://hiphotos.baidu.com/maxzhou88/pic/item/3a09b234854126035ab5f553.jpg
这是拆开的图片,那个卡带的东东可不是FC卡带哦,我是用FC卡带改的插在CEC-I 上的接口卡,它是50PIN脚的。http://hiphotos.baidu.com/maxzhou88/pic/item/7f000ddd69378b0c5982ddb4.jpg
这就是CEC-I 上用的EPROM烧录卡(西安九龙卡),烧录速度比较快,有多种智能烧录方法,但由于最大烧录容量只有256Kbit(32KB),所以要烧写大容量的ROM就麻烦些。由于我没有CEC-I 到PC机的通讯卡,DUMP的卡带数据只好每32KB一段一段的烧片子,再将这些片子用PC机上用的All-07烧录器读出并拼成整体的一个ROM文件,然后将这个大容量的ROM烧录出来。汗!这也太麻烦了吧,但当时就这个条件。

下面简要介绍该开发系统的工作原理:http://hiphotos.baidu.com/maxzhou88/pic/item/7acd6a1f9b6e5acce0fe0bc1.jpg
这是不带卡带仿真执行的简易电路,但可以读写访问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
页: [1]
查看完整版本: 我早年做的FC游戏机简易仿真开发系统 (在CEC-I 中华学习机 或 APPLE-II 上运行)