刚刚想把
static void GENPWRAP(uint32 A, uint8 V)
{
setprg8(A,V&0x3F)
}
改 成
setprg8(A, V&0x4F);
来从512K,改到640K,具体原理以后有空再解释。
然后搜了一下 0x4F,结果有惊人发现,哈哈!
// ---------------------------- Mapper 198 -------------------------------
static void M198PW(uint32 A, uint8 V)
{
if(V>=0x50) // Tenchi o Kurau II - Shokatsu Koumei Den (J) (C).nes
setprg8(A,V&0x4F);
else
setprg8(A,V);
}
void Mapper198_Init(CartInfo *info)
{
GenMMC3_Init(info, 1024, 256, 8, info->battery);
pwrap=M198PW;
info->Power=M195Power;
info->Close=M195Close;
wramsize=4096;
wramtw=(uint8*)FCEU_gmalloc(wramsize);
SetupCartPRGMapping(0x10, wramtw, wramsize, 1);
AddExState(wramtw, wramsize, 0, "WRAMTW");
}
红 色字就是吞食天地2啊。原来是mapper198阿,fceux已经做了,那代码都不用改了,惊喜!!! 可惜当我发现的时候是星期二的早晨,哈哈,早上起来搞代码果然有效率阿。可惜时间不够了,只得上班去。
在公司的时候继续看无聊的java代码。
又 下班了,一到家,吃完饭就开始hack rom,用vi -b filename, %!xxd, 将第7,8个字节0x4300改成0x63c0,就是0x04(mapper4)改成0xc6(mapper198), 然后%!xxd -r; wq;本以为应该搞定了。
结果一试,我靠Segement fault,结果又debug一下fceux,有些代码写错了,改了改,再试,结果图像出来了,感动啊,我下的那个版本还不错,战斗不闪,开始爽 喽。。。。。。。记得选项里面要设置成PAL并重启生效。
下面附上修改后的fceux源码和修改后的rom,希望有爱的同学,可以在linux上面重温一把。安装方法见里面的 INSTALL文件。
fceux: http://docs.google.com/leaf?id=0B1JTQiBNgozPZTkwNmJkMmUtNWNjZC00MjMxLTk0ZTUtOGNmMDBiZDdlZTk1&hl=en
rom: http://docs.google.com/leaf?id=0B1JTQiBNgozPMDQwNzA1OTctYmZhMS00YmVjLTgzN2MtYjhiMDU0NTc4MmMz&hl=en
接下来有空的话我会开发一个iphone的NES模拟器版本,在自己iphone上爽,希望大家到时支持。