初音✨七奈 miku_con
人如ID,本人乃Mikucon一枚~
关注数: 129 粉丝数: 652 发帖数: 17,723 关注贴吧数: 8
关于盗版ROM 0-1火棍出现条件的问题 最近经常看到有人说玩到了只能进0-1的SMB1,而且这个0-1还过不去,在第二段迷宫的下路会出现一条静止的竖直长火棍挡路。 开始,我还以为是又出现了不同版本的盗版ROM,因为我用VirtuaNES、FCEU、FCEUX模拟器测试了正版和盗版ROM的0-1,都是没有任何敌人的。原因也很简单,因为0-1的敌人指针是7EA0,是SRAM的区域,无论从中读取到的数值是00(调试版VirtuaNES)、FF(非调试版VirtuaNES)还是7E(FCEU/FCEUX),都是“一页敌人”(00或7E,而且7E还更特殊,即使能加载,也是一个“空间传送”)或“结束标志”(FF)的情况,自然不会出现敌人。FDS版ROM的水下4-4倒是会出现敌人,而且也是第二段迷宫的下路出现静止的长火棍;但是FDS的0-1却不是水下4-4,而是一个E-1类关卡(空间编号7D)…… 难道真的有一个不同版本的盗版ROM,它的0-1的敌人指针被修改了,于是出现了敌人?但是,0-1的敌人指针实际上是由7-1地形指针的低字节和3-1云上天奖励地带敌人指针的高字节组成的,所以如果0-1的敌人指针被修改了意味着什么,你懂的…… 但是,我又看到了另一种说法,说0-1的火棍在手机模拟器上才会出现…… 难道说,还有第三种处理SRAM的方式?既不是填充全0,也不是填充全1,而是有0有1的其他数值? 这还真是件令人纠结的事情……
关于SMB空间编号最高位无效的原因 (看了某个帖子后突然想到的……) 其实很简单,跟“空间传送”这个敌人有关。所有的敌人都有这样2个字节的数据:横纵坐标,敌人类型。空间传送还多一个字节,后面会给出解释。 对于所有的敌人,“敌人类型”这个字节的最高位都是表示敌人是在奇数页还是偶数页的,其余7位才是真正表示敌人类型的;同样,对于“空间传送”来说,这个最高位也是起这个作用的。那么“空间传送”的“敌人类型”数据是什么意思呢?就是传送到的目的空间的编号!所以空间编号的最高位是无效的。 再说一下“空间传送”的第3个字节的含义。这一字节包含两段数据,前3位表示空间传送生效的世界,后5位则表示目的空间的页面位置(即传送到目的空间的哪一页)。 最后顺便推测一下SMB1的关卡空间编号数据区的1-2为何会是C0。可能当初游戏开发者在设计1-2的地上过场的时候,曾经使用的不是现在自行走的方案,而是要让玩家自己操作钻入水管,进入地下场景,这样就需要在过场空间设置“空间传送”,自然就会使用C0这一代码(因为如果用40,那么敌人会出现在第一页,而SMB1第一页是不加载敌人的)。后来改成了自行走的方案,也就不需要空间传送了,但是C0这一代码仍然保留在了关卡空间编号的数据区。这也可以算是“开发遗迹”吧……
1 下一页