admin管理员组文章数量:1568308
2024年7月26日发(作者:)
然后查找原来的切PRG程序,原来的为STA $8000 STY $A000机器码8D 00 80
8C 00 A0:
修改为JSR $FFE3机器码20 E3 FF:
接下来把原来的命名表镜像方式也改一下,查找STA $9000机器码8D 00 90:
一共找到2处,都改为STA $A000机器码8D 00 A0:
然后保存文件:
接下来用FCEUX打开rom:
发现是花屏,这当然了,到这里只完成了PRG和命名表镜像的转换,CHR还没有
转,所以是花屏.
接下来转CHR:
删除前面的断点,添加一个B000- EFFF的写断点:
结果如下:
这里写入B000-CFFF是将CHR映射到图形表的0000-0FFF,转换成mapper4的
上页1KB*4可以这样写:
LDA #$82
STA $8000
LDA $07F7
STA $8001
LDA #$83
STA $8000
LDA $07F8
STA $8001
LDA #$84
STA $8000
LDA $07F9
STA $8001
LDA #$85
STA $8000
LDA $07FA
STA $8001
编译后机器码为:
A9 82 8D 00 80 AD F7 07 8D 01 80 A9 83 8D 00 80 AD F8 07 8D 01 80 A9 84 8D
00 80 AD F9 07 8D 01 80 A9 85 8D 00 80 AD FA 07 8D 01 80 A9 80 8D 00 80 AD FB 07
8D 01 80
写入D000-EFFF是将CHR映射到图形表的1000-1FFF,转换成mapper4的上页
2KB*2可以这样写:
LDA #$80
STA $8000
LDA $07FB
STA $8001
LDA #$81
STA $8000
LDA $07FD
STA $8001
编译后机器码为:
A9 80 8D 00 80 AD FB 07 8D 01 80 A9 81 8D 00 80 AD FD 07 8D 01 80
然后把上面两段程序写上去覆盖原来的切CHR程序:
多出的未覆盖的用NOP覆盖:
由于这个游戏使用了SRAM,那么应该找个地方开启SRAM,鄙人测试后发现,
使用SRAM的程序
是在CHR切换之后才执行的,这里鄙人为了方便就把SRAM启用程序写在
CHR切换程序的后面吧,反正这里刚刚好有空间,开启SRAM的程序写法很简单,可
以这样写:
LDA #$80
STA $A001
编译后机器码为:
A9 80 8D 01 A0
把SRAM启用程序加上去:
然后保存文件:
然后取消原来的断点,单击运行:
发现标题显示正常了:
进入游戏,发现这里有个些地方是花屏:
这是什么原因呢?鄙人猜是某段程序调用CHR切换时不是从CHR切换程序开
始调用,而是CHR切换程序的某个部分,已知CHR程序是C212-C280:
添加一个C212-C280的执行断点:
结果发现有一处比较奇怪:
这里写入07FE的数据后跳转到C246,原来的C246是什么呢?
找个原版未转换的rom来看看就知道了:
这下子就知道C246是什么了,这里就是跳转到切换CHR的下页,由于鄙人刚
刚把原切CHR的程序修改成了mapper的切CHR程序,原来跳转的位置肯定不正
确,轻则花屏,重则死机,修改一下让其跳转到切下页的程序位置就行了,回到转换
mapper的这个rom的调试器,查看一下:
得知切换CHR下页的程序地址是C23E,回到十六进制编辑器,把跳转改成JMP
$C23E机器码4C 3E C2:
然后双击取消断点,单击运行:
之后运行效果如下:
用VirtuaNES_Plus_160123打开效果如下:
版权声明:本文标题:FC红白机MAPPER转换教程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1721932201a905872.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论