任天堂红白机(FC/NES)游戏修改

很多新手看到 FC HACK,都会有兴趣吧,我也一样,看到了有HACK ROM,也会想要是自己会做HACK多好。 摸索了一阵,偶也学会了一点点简单HACK。
当然HACK这东西,是需要很大耐心的,更要自己多尝试!
与其在一边大喊:“HACK好难啊,HACK好复杂啊,教程看了头晕啊”,还不如自己多动动手。
今天我就来写一个最最最简单的基础HACK教程,相信你如果有耐心看完,一定能学会的。
编程方面的东西我懂的不是太多,我只用最通俗易懂的方式,让大家能学会。
如果有专业术语等的语言错误,也请大家纠正。
首先我们需要一些工具
[带有DEBUG调试功能的FC模拟器] fcdebug 或者 FCEU-0.98.13-pre-Debug(貌似这两个一样的,只是版本问题)
[6502(FC汇编语言)] 6502汇编大奥秘(用于查看指令,便于修改,本次教程几乎用不到,有兴趣研究指令和代码的可以多看看。但是这还是必备工具哦))
最后用于修改ROM内部的工具UltraEdit32,这是必须品哦
----------------------------------------------------------------------
首先,我们打开FCE,FCE也是FC模拟器的一种。当然我们用的是带DEBUG(调试)功能的FCE
使用VNES的DEBUG调试时,机器配置不好的就狂卡,偶的机子也卡。所以在某人要求之下。我换一种调试器给大家讲解。

我用魂斗罗1来做一个命不减的HACK教程教大家
我们先去EC里找该游戏作弊码,EC里的作弊码是这样的

[P1 生命数]
ON=0032,200

这样我们就知道魂1的生命的地址是32,就可以使用它来当“断点”。FCE的调试器和VNES不一样,不需要用“[0032]”这样的标准格式,直接把“32”输入当断点就可以了,具体怎么弄?别急,慢慢往下看~



首先我们打开FCE,使用“OPEN”打开游戏ROM,就象你玩游戏那样~~



游戏运行后,先开始游戏,这时候先暂停游戏。



我们点“NES”→“Debugger...”



出来一个大窗口,请看右下角,看到这个框吗。
先在我这个位置输入“32”,这样“32”就做为一个“中断处”,也就是这个地址有所变化时,程序中止,这样我们就能找到该指令了。
之后在Write上打个勾,为什么这么做呢?因为我们要做命不减嘛,打个比方,你死了一条命,命数就减了1
这就表明程序对“命数”做了一个“写操作”(Write的意思就是“写”嘛),这样说应该能明白吧。
我们这样一设置,在你的游戏人物死了一次后,也就是说被写入了一次操作后,程序会自己中断。之后就好办事了



按一下“Add”,之后左边就出现这样的字符,不必管它。
这时我们可以切换窗口,继续进行游戏了。



进入游戏,让你的人去死一次...



这时候程序就会停止,游戏中断了。出来了这么个窗口。一下子看了眼晕吧。
别心急哦,慢慢来。
先看看最上面一行。



第1行这样显示
看到了吗? 是“32”哦,说明我们指令找对了。32就是我们之前输入的生命数的地址嘛

想知道D6这条命令的意思,可以去看看6502汇编大全,就知道了~
关于该指令的详细说明和意思,不知道也可以。因为我们这是简单HACK,不懂也不要紧
我们只需要知道,人死了后,就会执行这条指令,也就是让游戏里的命减了一条,对吧?
修改原理也很简单,只要让这条指令不执行就好了嘛!

现在进入正轨~~

最前面的“d939”就是这条指令在RAM中的具体位置了,我们要去RAM中找到这个位置。

点一下“Memory...”



出来的窗口就是RAM窗口了,根据“d939”这位置,我们找到了~!

看第一行,就是这里了,我选中的就是我们最初找到的指令 D6 32



我们把这一整行通通选中,然后复制一下。这样好方便我们寻找到这个“D6 32”



打开UltraEdit32这个软件,用这个软件来打开你的游戏ROM



就象这样,游戏ROM打开了。



之后我们用CTRL+F,搜索一下,把刚才复制的那一串数字粘贴进去,然后查找一下~



找到了,被我用深蓝色选中的这行

看到了吗,D6 32 我们准备动手来改这条指令

改之前,还是老规矩,先按一下键盘上的INSERT,把插入方式改为“覆盖”

如图

接下来我们就把 D6 32 改为 EA EA(记得要大写哦)

请大家把 EA 这条指令牢记,EA是NOP指令,意思是不执行任何操作。

也许有人问,为什么是把 D6 32 通通改为 EA EA呢,而不是单单把D6这个指令改为EA?32只是地址不是命令,干吗也要一起改?
呵呵~因为嘛,D6 32 是一条完整指令嘛,换句话说就是一句完整的话,要改他,当然也要完整得改拉~~
当然除了EA指令,还有别的改法,我这里就只告诉大家这最简单的了。

改别的游戏,EA指令也是很实用的。大家自己可以去试试。

注意:修改的时候,往往会碰到一个问题,那就是不能修改。那是因为你的游戏ROM的属性可能是“只读”。如果碰到不能修改,请对游戏ROM(比如魂斗罗1)点右键→“属性”,把“只读”的勾去掉,这样就能修改了。



最后一步,修改好后,点“文件”→“另存为”,保存你修改好的游戏ROM,名字随便,比如“魂斗罗命不减XXXXX”

之后就是测试ROM了,我习惯性得打开我常用的模拟器VNES来运行游戏,当然你用FCE直接重新打开游戏ROM也可以。只是我喜欢用VNES来玩游戏。



我试着去死了几次,命一直都没减。哈哈~HACK成功了~!

魂斗罗1P和2P生命使用同一指令的,所以你改好后,1P和2P都是无限命了。
怎么样,你学会了吗?
不如自己也试试吧,改改看魂斗罗2代
魂2的生命数地址经查EC得知是 53
用我说的方法试试看吧,祝你成功

注:此教程中,我使用魂斗罗1的生命数地址“32”来做断点。并不代表其他游戏都是用32做断点。
每个游戏数据都不同。前面我已经提到过,可以先到EC里找到想改的游戏的作弊码,这里面有相应的地址。如果EC里没有,也可以自己用EC的搜索功能或者用金山游侠来搜索。

以上均为最基础最简单HACK,如果想学习中级和高级HACK,要靠自己钻研了~多看看6502汇编大奥秘吧,只有理解了指令的含义,才能学习更高级的HACK。

本文内容转载自模拟999
--Writted by 小粽子

梦幻岛经典游戏站