(来自自己的聊天记录,未做整理)
首先bank有bank号,而bank又有两种规格,8KB的和16KB的
不管是以8K还是以16K计,编号都是由00开始。
nes文件,文件头中的PROM bank数,是以16KB为单位计的,热血足球联盟的PROM中,每个16KB bank的最后一个字节就是这个bank的编号,原版从00到06,HomeBank没有。
切bank的动作是靠写8000和8001实现的
8000是控制寄存器,8001是数据寄存器
凭印象,8000写06的话是控制8000到BFFF这16KB的前8KB,也就是8000到9FFF;写07的话是控制A000到BFFF。
8001就是写bank号
不过这个bank号应该是8KB bank的编号,编号为n的大bank中,包含的两个小bank编号就是2n和2n+1
8001写bank号,8000写06/07,就切了
我不记得是先写哪个寄存器了,我猜是后写控制寄存器吧,我觉得道理上应该是控制寄存器触发动作
另外提醒一下,加bank时给rom加到bank数为2的幂才ok,比如8个bank、16个bank这样,否则不是所有模拟器都支持
不同的mapper可能操作方法不一样
如果自己直接这样切bank的话可能会遇到问题,就是