当前位置:文档之家› FC(NES)修改教程

FC(NES)修改教程

FC(NES游戏修改基础教程

14 号拐角

一、序言

在童年时期,很多人或许对于 FC的回忆有许许多多,我也不例外,不过说 实在话,我在家能玩到的FC游戏非常的少,回忆起来也只有几个,坦克大战, 魂斗罗,赤色要塞,沙罗曼蛇……当然最经典的还是小时候玩的热血格斗……之 后就由于种种原因再也没有接触了,直到 PC的出现,我又重温了那些经典。

但是每每看到网上各种HACK版本,总是希望自己也能做点什么修改,所以 各种找教程,各种翻资料……可能对于 FC这种已经淘汰的游戏没有很多人关心 一样,教程的东西也像烟雾弹一般,可以忽略一样 .....................

但是对于已经进入迷途的我,似乎有种由衷的爱好般……

我教过一些人, 但是总觉得自己的方法或许不得当, 教不会, 今天写出这些 东西,希望能遇到一些有天赋的人, 如果能遇到给予我批评指出的人或许会更好。

我不能保证我 100%全对,有误的地方希望大家能更正吧。

好吧,或许大家都不喜欢看废话,于是我们开始吧……

二、基础修改

修改,当然要准备工具,这里我推荐一个非常强大的 FC模拟器一一FCEUX 系列,现在最新版本是 2.1.6 吧(在我打这篇文章的时候) ,它提供了非常齐全 完善的调试器和16进制编辑器。当然,如果要修改 FC贴图的话可以用很多FC 贴图修改器进行修改, 网上应该有很多, 这里我找不到好的东西, 大伙可以自己 找找吧,我主要是讲解游戏内容的修改,而不是贴图修改。

好吧,我们开始修改我修改到恶心的游戏——魂斗罗。 对于这一段,感谢小粽子以前的教诲。 魂斗罗很经典,可能到今天都没有人能够一命通关,对于这些头疼的玩家, 我们就给他几个选项。 1、无限命;2、无限金身;3、瞬秒敌人(不推荐修改,有 点偏高端)。

友情提示,以下16进制编辑器中,在查看菜单有 NES内存、PPU内存、ROM 文件,所以在进行修改之前, 请注意自己所在那一页, 以免修改错误导致没有相 应的效果出现。

只有NES内存和PPU内存才能右键,但是在NES内存下无法进行修改,一改 变之后数值会立即转变成为没有修改的状态,注意好自己所在页。

1、无限命: 我们在网上都能知道,魂斗罗的1P的生命值的地址是0032(如果不知道的话 就自己网上查吧,如果金手指不会用/查,那就自己学吧==)。我所点的地址就 是0032(可以看看标题栏,上面有写),很多人都知道,游戏中的很多地方都是 由大家所称的金手指,我所认识是NES内存所控制的,所以,对这些内存进行相 应的操作,就能达到相应的效果……,比如金手指锁定某个地址,网上有 0032-01-14就会锁定一定生命数不变,然后就能达到无限命的目的,这个就是 简单的对0032这个地址做相应的操作(锁定),达到相应的效果(命不改变)。

我只能说:呵呵,又废话了多了。想想,我们死了一条命,就是对 0032这 个生命值地址进行“改写”,因为是“改写”,右键0032(NES内存)这个地址之后, 我们“给地址0x0032添加写入断点”,添加之后会弹出调试器,不理它,切回游 戏画面。当然,生命值要进行“改写”,我们就英勇的去撞子弹吧,少年!

我们查一查6502大全里面会知道(不知道你可以查这篇文章的附录)

D6命令是DEC存储器单元内容减1,寻址方式是零页寻址(1) X变址(2)。

当然我们非常好理解,存储器单元内容减 1,喜闻乐见,发来贺电,就是减 一条命罢了。于是我们就是不让它执行这条命令行,自然就不会减命了。

用鼠标右键直接点击那个红框框的地方, 进入16进制编辑器(ROM文件),被

选中的就是D6,于是我们修改成EA EA

EA在6502汇编中是NOP就是无操作的意思,也就是执行这行代码的时候 --FA讲制编辑衆-编聲RA1倩转 血UMU范

文件① 編蛊⑥ 查着① 书蹩辺)W Qf)

no

co

PO

(10

to

(12

10

CO

C9

Cl

00

00

02

00

C2

00

C6

00

05

00

00

00

05 D 0 Dri 5 3 O 4

F

on 2

0 0

1 Boon 2

5

o

n o Q o n 7 o-

o n 3

o o

n 2

Q

o

n o Q on 04D厂 CD

7

o

F

clop 1

o o o Qw 7 n

称结/擀味地址(E)

给地址0x0032脈加读取斷点追)

箔地址0^0032恭加写入斷点粗)

给地址0x0032丽办臥行断点但)

馬力叫務除书赛CA)

OOOAO6O3OO 0006000000 00 00 02

00 01 00

00 DO 0

0 0A 06

06 7C

DO 0?

0C 0?

02 07 07

F0 30 00

00

IE F0 0 0

00

00

00

00

00

3C

10

02

10

Ofc 00 00 1 E

D 0 D

6

o

-y

o o o nu

o o nu o OOOOOA6O 00000200 OOO2O1A51OO1OO OOOOO29OOOOOS OOOFOO71OO2OO 000F009000000

|(图 2-1)

(图 2-2) "ICEU1 2. 1. 6-

図件⑧游找四I

翻身之后,游戏会暂停,然后调试器的第一行会显示 什么都不做,就是要傻楞两行

强调一下,输入命令要打完整,要使输入标示跳入下一个代码中才行,比如 代码原本是95,要改成85,不能只打一个8,要打完整个代码85,要不然模拟 器不承认你的修改。

之后我们切回调试器,这个时候调试器就变成了这样:

65D2调试赛

(图 2-4)

好了,再怎么死也死不完了

2、无限金身

金身,所向披靡的一种标志,一种必须的存在,一种 GOD MODE向往……

(这个作者在写小说么……扔砖头了哦! !!)不好意思,又废话了。百度一下我 就知道金身的地址是00B0,这个要想想,金身为什么会打不死(因为他是金身啊, 废话),是游戏的一种判定,读取金身这个地址内容,是金身,就不死,否则翻 身。这个思路很重要,因为要涉及断点的判定方法是读还是写。

好了,找到思路之后,我们添加 00B0的断点(NES内存)[n |07:DA03:EA

07:DA04 :El

07:DAOS:&0 HOP

HOP

RTE (图 2-3)

修改好之后双击右边的断点中的 0032,使0032之后的 EC-W--变成-C-W--

让模拟器取消对0032断点的监视(要不然会一死因为已经监视了 0032的“改写”

会再次暂停的,要恢复再双击即可),然后点运行即可

[远行] 歩入

■ ______________ J

歩出 步过

1 ________

址8行

据寻至: 0000

FC: CO5D 1撥寻兀, EG-VT— -编辑RAI篇转OaOOO

文件緒I墮〕直看① 弔签⑩ 帮助®

一添加断点之后,模拟器马上暂停,有下面两种可能

了解的我自然能看出来原理,不过不了解的也希望大家都可以试着修改, 修 改错误不会造成死机,只会造成无法玩游戏而已,而且FCEU)可以在你修改过后 撤销修改。

停留在图2-8的童鞋,请点一下运行,应该就能停在图2-9 了,然后我们看 代码。B5 BO, B5是什么,我们查一下。LDA--由存储器取数送入累加器,MR A, B5,零页X变址。零页寻址X变址没什么好讲的,不懂可以再看看(1) (2)。

由存储器取数送入累加器,也就是从 00B0这个地址读取数字送出来,然后 放入累加器A中,关于累加器A,之后会有介绍,目前就当做能寄放数字并且能 运算的东西吧。把00B0的数字送出来之后,下一行代码是 F0 12,F0我们能查 查看“如果标志位Z=1则转移,否则继续”,我用简单的方法解释一下,读取00B0 的内容放入累加器A中,如果相等则跳转。这样读下来或许感觉少了些什么, 没 错,什么相等啊?

其实在这里,如果没有给出比较数,默认情况下可以理解成为与0进行比较, 于是这句话可以理解成了: 读取00B0的内容放入累加器A中,和0进行比较, 如果相等则跳转(3)。跳转8个代码,可以自己数数看,正好到 D482的地方。 000000:

000010:

C00020:

000030:

000040:

D00050

OOOOGO: 000070 000080 000090 0000A0

ODOOBO:

OOOOCC;

OOQODO:

noociEO -

ODOOFO:

0001 010 ■

000110■ o 2 o o 8 1 o n

o o- 1

o- c o o c c c 4

8 0 0 0 3 0 0

D Irtuooooo 4

3 0 2

14

0-2000-0

30000 o-loooon ro o- o n o o o仃0 10-7

1

o o o o o o n ooonoooooDon 2 0 0 012 o o o o o n OOOO72COOO-OA o

4

o c o 1 o o- o o o A

07*UF8000D00n 40

0 0

Oft

0 0

肌 0? 27 00

00

00

00 n件 B B o o o o o n o o- o o- o o- o A

绐地址QxOOED雨加读取断点血) o O 0-0

錯地址OkODBO泵加写入斷点迪

鰭地址OxCOBO忝加执行斷点⑧

證加/移隊韦摇® tl(图 2-7)

02 B01E E4 LDV 甜(LX SOOEO =

02 E020 FO BEQ $B034

02 E022 A9 EDA #S04

02 B024 es STA 5000D =

C2 B026 AE LDA SQ01A =

02 B026 5D 52 ED EOR SB052.

X @ SED52 -#SDO

02 BD2E Au LDY 能04

02 B02D JE AND SOOOO 三 JJSB2

02 B02F FO BEQ SB033

02 B031 AO LDY #$05

02 B033 9S TYA

02 B034 B4 DA LEV $DA,X SOODA =

(图 2-8)

07 B47G1EE EO

07 D47S:Fa 09

07 D47A1A5 1A

07 D47C:29 07 07 DJ7E:D0 02

07 D^eOrDG BO

07 Dq92:E5 匚E LDA 甜Cl很 eooEO = #S00

BEQ SD4S2

LDA SD01A 二

AND 般07

BNE SD492

DEC €00B0 二 jreao

LDA SCE.X SOO匚E = Jf$OO (图 2-9) O

相关主题