本帖最后由 fbfiso 于 2014-2-4 20:42 编辑
) h5 R) J; a8 }4 w% ?4 N- @. u+ {% c" N- @$ x# Q9 G+ X3 c+ M
记忆是写入卡带地址空间范围内的,一般在200000H开始的地址,具体在ROM头部定义,但是光碟机每次把ROM读入内存前都会先清空然后再加载新ROM,然后把这块内存映射到MD卡带地址空间上,你即使让存档存进去,你的存档也没法永久保存,没法导出,下次载另一个游戏时存档也会被覆盖。" ^. L: a3 Q1 G, V s- M8 j
" p$ g: Z/ ~+ o }" }
唯一的办法是将主板上一部分地址线和数据线引出,并且自制外部Mapper I/O芯片,用于在卡带ROM和外部一块专门存档用的SRAM间切换,然后修改ROM内的代码,改成在存档前调用你的Mapper I/O,让存档写入到这块外部SRAM上,然后存完档后再调用Mapper I/O切换回ROM的地址空间。
3 |0 I5 R: Y. K- {8 h0 ^. O. m4 W% ~$ ^ T1 @5 ^
工作量不小。- m) F: z5 _+ u; l
, f8 }0 h0 [9 P9 ~# o
附另外一些小技巧:
* e1 _$ h/ C8 K) P! W ?因为存档一般都在200000H开始的地址,所以对于16M以下容量的带记录的卡带,你可以把存档写在16M之后的位置,然后填充卡带为24M或32M,替换原来24M或32M的游戏ROM,这样加载ROM后,可以读到你的存档(但新存档不能记录,原因上面写了),用这个方法可以把一些强化数值后的存档做到你的ROM里去。但是这种方法对16M以上的存档游戏无效,因为这些游戏(光之继承者、梦幻之星4)本身就用了特殊的Mapper I/O来切换存档的SRAM。9 Q7 r4 ~. Q1 r: t4 E+ l; L2 C3 X% E
|