任天堂红白机(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 小粽子
梦幻岛经典游戏站