(本文由oldmantvg.net @Xenoblade原创,欢迎随便转载)
魂斗罗30条命的秘籍相信大家再熟悉不过了,在标题画面依次输入上上下下左右左右等按键再开始游戏,即可由原来的3条命变成30条命。但方向键后面的是BA,还是AB,又或是BABA,ABAB等按键顺序一直众说纷纭。这里通过介绍30条命秘籍的具体原理来解答大家的疑惑。
(本文使用的大家最熟悉的魂斗罗美版+Mesen模拟器进行演示)
一、输入按键在内存的表示方法
1P玩家的具体输入是对应内存中的$00F1这个地址,由两位数的十六进制代码表示,换算成二进制即为0000 0000,每一位数字代表一个按键。0代表没有按,1代表被按下,具体对应如下图。此处隐藏内容请回复后再查看。
二、30条命秘籍的正确形式
在PRG ROM中的$1C351这个位置储存了30条命的按键顺序,可以通过Mesen模拟器的内存查看器找到,数值是08 08 04 04 02 01 02 01 40 80,按照上面的换算方法可以得出是“上 上 下 下 左 右 左 右 B A”,一共10个按键。此处隐藏内容请回复后再查看。
三、怎样判断是否开启秘籍
内存里有两个地址和30条命秘籍有关,一个是$003F,用来检测秘籍的输入,默认是00;一个是$0024,用来表示秘籍是否开启,默认也是00。
游戏启动后,系统开始检测1P玩家的输入,每一次按顺序正确按键,$003F的数值就会+1,比如按完“上”键后,数值就会从00变成01,按完“上上下下”后,数值就会变成04,以此类推。当正确输入全部10个按键后,数值应为0A,即十进制的10。
当系统检测到$003F的数值变为0A时,$0024的数值就会从00变成01,此时30条命秘籍成功。
(所以按完BA后30条命秘籍就成功了,后面再按任何键也不会有影响,这就是BABA能成功的原因)
如果没有按照正确顺序按键,则$003F直接变为FF且不再变化,$0024的数值仍然是00,秘籍失败。
(所以AB、ABAB、ABBA等秘籍是不能生效的)
下面两张图分别是秘籍成功和失败时的内存数值(绿色框成功,红色框失败):
此处隐藏内容请回复后再查看。
四、补充
还有一些细节由于涉及到汇编语言,在此仅作介绍,不说明具体的代码实现了:
1.游戏启动后直接按选择和开始键是不影响输入秘籍的,当按其他键时才会检测按键顺序。
比如先按了选择键选择双人游戏,再输入30条命秘籍也可以成功。
2.进入演示画面后,$003F数值会重置为00,系统会重新进入检测按键顺序状态。
比如按的太慢了,还没按完已经进入了演示画面,此时需要在演示画面结束后再重新输入秘籍。
3.一旦秘籍开启成功,即$0024的数值变成01后,即使进入了演示画面数值也不会改变,因此是不用再重新输入一遍秘籍的。