» 您尚未 登录   注册 | 社区银行 | 社区婚姻 | 社区成就 | 帮助 | 社区 | 无图版


火花天龙剑 -> 火炎之纹章 -> 火花学园 -> SFC游戏的HACK讲解(一)
 XML   RSS 2.0   WAP 

本页主题: SFC游戏的HACK讲解(一) 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
Werther

头衔:依然火星时代!依然火星时代!
该用户目前不在线
级别: 火花会员
编号: 8033
精华: 0
发帖: 479
威望: 0 点
配偶: 单身
火 花 币: 2 HHB
注册时间:2003-06-05
最后登陆:2024-09-24
查看作者资料 发送短消息 引用回复这个帖子
SFC游戏的HACK讲解(一)

文:Werther


我们说:玩游戏一定要修改

关于SFC游戏的HACK教程,当年狼组的成员们做了相当部分教程,我也是得益于这些教程进入了SFC的HACK世界。虽然我接触这方面的东东不久,也就一年多把,去年七月刚毕业时,什么都不懂就开始了《圣战的系谱》的HACK,估计是太空虚了吧~~刚毕业的家伙~~
电脑里存有忘了到底在哪和什么时候下的狼组汉化教程包(好象是找纹迷汉化版时搜索到的顺便下了,下了就丢一边了,因为不懂~~=_=b),那是在国内可找到的唯一的SFC硬件资料和汉化方面齐全的资料集。
走狗屎运了我!哈~~ ,更走运的是能联系上前狼组ASM HACKER 的 ALAN YANG,由于他的帮忙使我对SNES汇编了解的更多。
这些东东,也许有人看,也许没人看。也许有意义,也许没意义,反正自己被人说没脑也不是一回,做事不考虑值不值得。因为一想值不值得,最后肯定是不值得~铁定会放弃。
跟已经有的那些汉化教程有点类似,但也不太同。因为我不是讲汉化~~
在讲解过程我可能有些说错的请不吝赐教~
OK~开始吧~
我们先来做个实际点东东`~在我看来做这些东东是很有趣的~白天无论做什么`一到晚上就做这些相当满足捏~~这是乐趣`~趁自己还没把注意力移到别的什么上~写点东西先~
我们来改《圣战的系谱》的剑士的移动力~ROM里的$39488:06改为09
剑士的移动由6变为了9(之后再告诉你最大值为什么只能是9,其实最大值是9+3=0C)


另一个是《不可思议的迷宫2风来之西林》~ROM地址$0296A2:0F改为FF
那么西林在游戏开始其HP由原来的15(0F)变更为255(FF)


噫~~相当神奇~~这是怎么做到的捏? [s:2] 为什么是改这个数字捏?~
这正是本讲座的要告诉你的。
在正式开始讲解之前捏,同学们需要准备一些工具。
在以后的课堂里都会用到这些工具,能很方便的帮我们分析SFC的游戏运行状况。
介绍下这些工具,这些工具捏,都可以在这里下到,
http://www.rayfile.com/zh-cn/files/e126b547-9481-11dd-b3c0-0014221b798a/
而且我还附带一些相当有价值的SNES相关的资料`例如yoshi的SNES硬件资料,狼组一些成员翻译的SNES硬件和65816的资料~~很有价值的~
其实大多SNES资料都可以到这里下到~~http://www.romhacking.net/docs/

1) DOS版的ZSNES,有两个版本我们是需要的,
一个是ZSNES v1.10 (DOS port),一个是ZSNES v1.51 (DOS port)
v1.10的的ZSNES模拟器可以DUMP出SFC的显存,v1.51捏可以DUMP出游戏的运行代码。其实只要v1.51就可以了,因为它的存档.zst里也包含有显存和内存的区域。
官方站:http://zsnes.zophar.net/archives.html
2) TLP,这个捏,很多人都叫它精灵查看器,因为可以直接查看SPRITE而得名。我们一般用它来查看显存的变化。如果你手上有CrystalTile2也可以。
3) 当然少不了一个十六进制的编辑器了,WinHex和UltraEdit随便哪个都可以。
4) 一个Hex2SNES,是个SNES游戏地址和ROM内地址相转换的小工具。
5) 最后一个,asmdev,这个是我们写SNES汇编代码用的。偶而我们还会用到有个叫HexCmp的文件比较的工具。
即使你有些工具不太会用也没关系,讲解过程也会包括这些工具的使用~

DOS版的ZSNES的使用:
DOS版的ZSNES都要在DOS环境下使用的,解压后我是放到这个目录F:\GAME\ZSNES110和F:\GAME\ZSNES151,你也可以在其他目录下`
ZSNES110放V1.10的可DUMP显存的ZSNES模拟器,ZSNES151放V1.51版的可DUMP游戏运行程序的模拟器。
V1.10和V1.51版的程序目录是基本一样的,ZSNES.EXE是主要程序~、其他的TXT文档是作者的说明,也有如何使用Debugger功能的说明~

我们拿个游戏来实验下~《不可思议的迷宫2风来之西林》~为了简洁我把它命名为FNS.smc并放到ZSNES110目录下
然后开始》运行》CMD
-d -dd 是进入带Debugger的命令,因为习惯了,所以有时候即使不进行Debugger也加进这个命令了=_=b

回车进入后会提示LOAD文件successfully,然后摁键盘的Any Key 继续就可以了~
进入如下界面

这个便是Debugger的界面~在ZSNESV1.10我们不用理会它,摁F1开始游戏~~
在游戏中摁下X键调出菜单来~

然后再摁F1返回Debugger界面,再摁ESC退出整个游戏~~
这时候就会在ZSNES110的目录下生成一个vram.dat的文件,这个便是SFC的显存了,只有64KB($0000~$FFFF)~
下面我们用TLP打开这个文件~分别以Game Boy模式和SNES模式查看这个显存~就会发现一些SPRITE和一些字模的样子的东东,这些便是刚才我们退出游戏的那个画面中的所有可以看的见的显示在显示屏幕上的数据

64KB的显存除了放菜单字模,还有地图、角色头像、菜单框架等SPRITE,对于一些较复杂和出色的游戏来说显存是很捉襟见肘了,SFC游戏的显存是经过合理的计算的,这一区域放什么,那一区域放什么。
而在显存里看到的东东捏,都是经过解压后(如果原数据是压缩的)存在在显存里的,这很方便我们来反向的找到ROM里的压缩数据。以下是《圣战的系谱》在大地图上调出部队、物品、状况菜单时的显存状况~可以在VRAM的地址$8000处看到解压后的菜单字库,这样来写个小程序来做码表就很了然了~

下面我们来使用ZSNES v1.51 来DUMP出游戏的运行程序~
进入方式跟上面的ZSNES v1.10一样~只是有一点不同就是进入到Debugger界面后要摁键盘的1键,目的是忽略声音的处理程序~那些我们不需要,除非你要这方面的HACK~界面如下

那些008002 CLC之类的就是游戏的运行程序,而在期间夹插的如ffc0/cd MOV  X,#$ef的就是声音的处理程序~
界面下方那些就是Debugger的命令说明,这些都可以在作者的说明文档里有说明,简单说明如下:
在ALAN的某篇文章里有提到~我直接拖过来了`~懒=_=b
1 : 打开/关闭声音处理器的指令显示
    因为我们不关心声音部分的程序,所以一进来就可以关闭它。按一下“1”键关闭,再按则打开。
    要是你不关闭,显示会很混乱的
回车: 单步执行一条指令
    最常用的指令
T : 连续执行n条指令
    按下“T”键后,还要输入一个十进制数字,比如1000,然后程序会自动执行1000条指令后停下来。
B : 设置断点
    按下“B”键后,还要输入一个16进制地址,比如863E4A,然后程序会自动执行,直到当前地址等于863E4A时才停下来。注意:如果你输入的地址永远也不会被执行到,程序就会一直运行下去。
C : 右上角的指令计数器清零
    这个还是很有用的,在每次取出存盘进度时,都要清零一下
L :开始DUMP游戏的运行程序
M : 修改内存中的数值
    按下“M”键后,输入一个16进制地址回车,会显示这个地址里的当前数值。你还可以修改它。按ESC则不修改。
F1 : 切换游戏界面和debug界面
    按一下F1,游戏会正常运行,就像你平时玩游戏一样。再按下F1,游戏会暂停,切换回debug界面
F2 : 即时存盘
F4 : 取出即时存盘的记录
    这两个跟正常游戏时的功能完全一样
ESC : 退出
    退出ZSNES,回到DOS窗口
以下指令是和我们关系不大的,可以不计:
S : 设置声音处理器断点。和我们无关
A : 修改声音处理器内存的数值。和我们无关
D : dump出声音处理器的指令/数据。和我们无关
W : Break at signal (Used only by the programmers)
2 : 打开/关闭65816的指令显示。这是我们要看的东西,可别关闭!

下面我们来DUMP下游戏的运行程序~~还是拿《不可思议的迷宫2风来之西林》来做例子~
在如下状况下什么都不操作
F1进入Debugger模式,然后摁“L”键开始了DUMP游戏程序~大约几秒就可以了,我10秒就DUMP了39MB的数据,看个人的电脑状况了~上次分析《圣战的系谱》的菜单时试过要2分半才DUMP出500MB的数据来分析~

摁ESC停止DUMP后会在ZSNES151目录下会生成一个这样debug.log的文件,我们用UltraEdit来打开,因为UltraEdit可以打开没有大小限制的文件,而且打开也比其他的软件来快~可不能用记事本来打开debug.log,如果很大的话会死的很惨~
内容如下:

蓝线就是游戏的执行程序的地址,而在“[]”里的就是对应的执行程序要操作的地址,这个地址我们称为“真实地址”
debug.log里的程序是绝对正确的~(至少目前为止我没发现有错误)
下面我们来说下Hex2SNES的使用方法~~Hex2SNES的界面如下:

Type of Rom是SFC游戏ROM的类型,分LOROM和HIROM,还有内存RAM和.zst存档的地址转换以及显存VRAM和.zst存档的地址转换,Include $200H的Header表示有无ROM的头档。下方的左边是Hex Address即ROM的地址,右边是SNES地址~可以在这两者互换。我们来举例来说明使用~还是《不可思议的迷宫2风来之西林》的程序
就这个809747 LDA $4211
809747 LDA $4211   [004211] A:0000 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:26 e
80974a BPL $9768   [809768] A:00c0 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:a4 e
80974c STZ $0a       [00000a] A:00c0 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:a4 e
80974e LDA $08       [000008] A:00c0 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:a4 e
809750 LSR A                   A:0029 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
809751 BCC $975d   [80975d] A:0014 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:25 e
809753 DEC $08       [000008] A:0014 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:25 e
809755 LSR A                   A:0014 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:25 e
809756 STA $23       [000023] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
809758 BCC $976b   [80976b] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
80976b INC $0a       [00000a] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
80976d LSR $23       [000023] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
80976f BCC $9775     [809775] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
809775 LDA $0b       [00000b] A:000a X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:24 e
809777 STA $420c     [00420c] A:00f2 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:a4 e
80977a PHB             A:00f2 X:0000 Y:0000 S:1ef2 DB:00 D:0000 P:a4 e
地址809747就是SNES地址,这个地址是执行游戏程序LDA $4211的,我们来看下它在ROM的什么位置
先确定《不可思议的迷宫2风来之西林》的ROM信息~
File: fns.smc Header: Yes
FURAI NO SIREN         TYPE:NORMAL  
INTERLEAVED:No           CHKSUM:OK
VIDEO:NTSC   BANK:Hi   CRC32:AF5703EE
这从哪里来?只要用ZSNESV1.51执行了一个游戏,然后退出,就会在根目录下生成rominfo.txt这个文件,里面就又ROM的基本信息了~~
《不可思议的迷宫2风来之西林》是Hi -ROM而且 Header: Yes有头档
那么$809747的ROM地址就得出了~$009947就是$809747的ROM地址~很奇怪,在Hex2SNES里为什么是$C09747捏?
这个问题我也不太懂~~像《圣战的系谱》因是HIROM也是,$800000=$C00000,$900000=$D00000这样的。

这样我们在十六进制器里打开《不可思议的迷宫2风来之西林》的ROM在地址$009947就会发现如此数据:AD 11 42
AD查65816指令手册得知正是 LDA 而11 41高低位互换也是#$4111,就是LDA $4211了~这就是Hex2SNES的使用方法。
看下asmdev,界面如下:

File:就是保存和打开SFC游戏ROM的菜单
Edit:可以把A或X寄存器设置为16位或8位下察看
View:可以看ROM的基本信息和在HEX编辑下的编码
GO:有Find查找代码,GoTo跳转到某一地址等功能菜单
Labels:设置一些标记什么的
Dump:下有个Code是来DUMP源程序用的~Start Dump是从这个地址开始DUMP~# of lines to dump是DUMP多少条程序~
DUMP的源程序格式如下:
C09747:         AD1142      LDA $4211
C0974A:         101C        BPL $1C
C0974C:         640A        STZ $0A
C0974E:         A508        LDA $08
C09750:         4A           LSR a
C09751:         900A        BCC $975D
C09753:         C608        DEC $08
C09755:         4A           LSR a
C09756:         8523         STA $23
C09758:         9011        BCC $976B
有些捏DUMP的源程序会跟ZSNES模拟器DUMP出来的程序有些出入~~~一般都以ZSNES导出的为准~asmdev来DUMP程序不同的就是A或X寄存器的位是16位或8位下DUMP~看游戏运行的程序可以判断这段程序A或X寄存器是在什么位下运行的~

KO~完~在进入第二讲前,如果没有SNES汇编基础的同学捏,可以先了解下SNES的一些简单的汇编指令和说明~~待续................


[ 此贴被Werther在2008-10-07 23:48重新编辑 ]


长江后浪推前浪,前浪死在沙滩上。
[楼 主] | Posted:2008-10-07 23:42| 顶端
lincutt

头衔:FE & TO FansFE & TO Fans
该用户目前不在线
级别: 火花会员
编号: 20280
精华: 1
发帖: 456
威望: 0 点
配偶: 单身
火 花 币: 18274 HHB
注册时间:2004-06-30
最后登陆:2018-12-12
查看作者资料 发送短消息 引用回复这个帖子


Werther兄开始写Hack教程了!!!
想学的赶紧进来学习下
顶!


[1 楼] | Posted:2008-10-08 00:12| 顶端
maxumi

头衔:(马克思+怪蜀黍)/2(马克思+怪蜀黍)/2
该用户目前不在线
级别: 火花会员
编号: 53152
精华: 2
发帖: 669
威望: 10 点
配偶: 单身
火 花 币: 12970 HHB
注册时间:2006-04-24
最后登陆:2022-02-08
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


我靠 这个很好很强大!

跟踪手柄的方法赞一个

SNES GRAPHICS INFO FILE再赞一个

776解压缩算法和我分析的一样~XD

其他的貌似都看过   - -

那个地址转换器貌似还是Lunar Address好用,ZSNES无法模拟ExLoRom真是遗憾……另外,为什么用TLP而不用YY-CHR?貌似TLP不怎么好用- -|||

776字库是先全部读到VRAM里再显示的,但是VRAM大小有限,难以扩充字库,有没有什么好方法来扩充一下字库?


[ 此贴被maxumi在2008-10-08 10:36重新编辑 ]


广告:火焰之纹章多拉基亚776猥琐版
多拉基亚776和谐补丁系列
[2 楼] | Posted:2008-10-08 10:24| 顶端
有角幻也

该用户目前不在线
级别: 火花会员
编号: 22612
精华: 6
发帖: 321
威望: 30 点
配偶: 单身
火 花 币: 34420 HHB
注册时间:2004-08-16
最后登陆:2019-11-20
艾雷布的骑士(I)游戏王国的浪人(I)
查看作者资料 发送短消息 引用回复这个帖子


那么$809747的ROM地址就得出了~$009947就是$809747的ROM地址~很奇怪,在Hex2SNES里为什么是$C09747捏?
这个问题我也不太懂~~像《圣战的系谱》因是HIROM也是,$800000=$C00000,$900000=$D00000这样的。

这个我好像明白

所有Windows的进程内存都是从40000开始的

调用内存的时候40000以前的和11C00000以后的是无法直接调用到的

[3 楼] | Posted:2008-10-08 12:37| 顶端
有角幻也

该用户目前不在线
级别: 火花会员
编号: 22612
精华: 6
发帖: 321
威望: 30 点
配偶: 单身
火 花 币: 34420 HHB
注册时间:2004-08-16
最后登陆:2019-11-20
艾雷布的骑士(I)游戏王国的浪人(I)
查看作者资料 发送短消息 引用回复这个帖子


我现在特别想Hack NDS 游戏

不知道该怎么Debug

要是有个这教程就好了

[4 楼] | Posted:2008-10-08 12:41| 顶端
雷扎特瓦雷斯



该用户目前不在线
级别: 火花会员
编号: 59191
精华: 0
发帖: 91
威望: 0 点
配偶: 单身
火 花 币: 23982 HHB
注册时间:2006-08-17
最后登陆:2017-05-29
查看作者资料 发送短消息 引用回复这个帖子


看得我两眼昏花……~~~~@_@

男人只有到了一切都结束的时候才流泪……
[5 楼] | Posted:2008-10-08 12:46| 顶端
lincutt

头衔:FE & TO FansFE & TO Fans
该用户目前不在线
级别: 火花会员
编号: 20280
精华: 1
发帖: 456
威望: 0 点
配偶: 单身
火 花 币: 18274 HHB
注册时间:2004-06-30
最后登陆:2018-12-12
查看作者资料 发送短消息 引用回复这个帖子


NO$GBA貌似有带Debugger的版本
但目前还没找到...


[6 楼] | Posted:2008-10-08 13:19| 顶端
大天使

该用户目前不在线
级别: 火花会员
编号: 406
精华: 0
发帖: 1361
威望: 0 点
配偶: 单身
火 花 币: 33648 HHB
注册时间:2002-12-03
最后登陆:2022-08-24
查看作者资料 发送短消息 引用回复这个帖子


SFC上的机战4 一直想改其剑切 盾防的发动概率, 它的发动概率是 等级除以16 分1-8个级别
剑切L1 L2 L3 L4 L5 L6 L7 L8 盾防L1 L2 L3 L4 L5 L6 L7 L8
不知道能否用上面这个方法查到

[7 楼] | Posted:2008-10-08 14:50| 顶端
有角幻也

该用户目前不在线
级别: 火花会员
编号: 22612
精华: 6
发帖: 321
威望: 30 点
配偶: 单身
火 花 币: 34420 HHB
注册时间:2004-08-16
最后登陆:2019-11-20
艾雷布的骑士(I)游戏王国的浪人(I)
查看作者资料 发送短消息 引用回复这个帖子


下面是引用大天使于2008-10-08 14:50发表的:
SFC上的机战4 一直想改其剑切 盾防的发动概率, 它的发动概率是 等级除以16 分1-8个级别
剑切L1 L2 L3 L4 L5 L6 L7 L8 盾防L1 L2 L3 L4 L5 L6 L7 L8
不知道能否用上面这个方法查到


理论应该可以
Debug发动时刻
可以多挂载一个战斗时对体力值的步进监视


不过4代好像最高lv是5?

[8 楼] | Posted:2008-10-08 16:47| 顶端
大天使

该用户目前不在线
级别: 火花会员
编号: 406
精华: 0
发帖: 1361
威望: 0 点
配偶: 单身
火 花 币: 33648 HHB
注册时间:2002-12-03
最后登陆:2022-08-24
查看作者资料 发送短消息 引用回复这个帖子


是LV8 不过游戏设定中只用到了LV5
8/16=50% 实在很低,对我方来说,之后几作最高LV9 也不过是56%概率 实在太低了
个人设想是 L9/15+(双方计量差)=最终发动率

[9 楼] | Posted:2008-10-08 16:52| 顶端
maxumi

头衔:(马克思+怪蜀黍)/2(马克思+怪蜀黍)/2
该用户目前不在线
级别: 火花会员
编号: 53152
精华: 2
发帖: 669
威望: 10 点
配偶: 单身
火 花 币: 12970 HHB
注册时间:2006-04-24
最后登陆:2022-02-08
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


下面是引用有角幻也于2008-10-08 12:37发表的:
那么$809747的ROM地址就得出了~$009947就是$809747的ROM地址~很奇怪,在Hex2SNES里为什么是$C09747捏?
这个问题我也不太懂~~像《圣战的系谱》因是HIROM也是,$800000=$C00000,$900000=$D00000这样的。

这个我好像明白

.......


貌似有009947=409947=809947=C09947,Lunar Address会把这4个动态地址全转换成009947这个静态地址……

系谱ROM是32Mbit的,从000000到3FFFFF正好是32Mbit,也许是因为这个所以重复了循环了?


广告:火焰之纹章多拉基亚776猥琐版
多拉基亚776和谐补丁系列
[10 楼] | Posted:2008-10-10 08:43| 顶端
mana10000



该用户目前不在线
级别: 火花会员
编号: 92743
精华: 0
发帖: 12
威望: 0 点
配偶: 单身
火 花 币: 17096 HHB
注册时间:2008-08-19
最后登陆:2016-10-25
查看作者资料 发送短消息 引用回复这个帖子


直接改ROM   一勞永逸的修改是最好的
有無SFC的文件工具   能像CrystalTile BM那樣可以看清楚整個文件目錄?

要不然有些數值很難找   例如勇者鬥惡龍3的魔法
以前用UE做地毯式修改也改不出來

[11 楼] | Posted:2008-10-11 01:19| 顶端
Werther

头衔:依然火星时代!依然火星时代!
该用户目前不在线
级别: 火花会员
编号: 8033
精华: 0
发帖: 479
威望: 0 点
配偶: 单身
火 花 币: 2 HHB
注册时间:2003-06-05
最后登陆:2024-09-24
查看作者资料 发送短消息 引用回复这个帖子


下面是引用lincutt于2008-10-08 00:12发表的:
Werther兄开始写Hack教程了!!!
想学的赶紧进来学习下
顶!

.............怎么感觉很熟悉你???难...难道是因为使用了皇帝的头?

下面是引用maxumi于2008-10-08 10:24发表的:
那个地址转换器貌似还是Lunar Address好用,ZSNES无法模拟ExLoRom真是遗憾……另外,为什么用TLP而不用YY-CHR?貌似TLP不怎么好用- -|||

776字库是先全部读到VRAM里再显示的,但是VRAM大小有限,难以扩充字库,有没有什么好方法来扩充一下字库?
.......

工具这种东西,每个人使用感觉不同而已,我一直使用TLP,感觉很好用~~~
776的小字库,理论上可以扩容,但多出来的汉字要自己写个处理程序,776有些字就是这样干的~
而在系谱里被大量使用,因为系谱的小字库比776的还小些,使用的汉字却多些,你可以自己分析下写屏程序就知道怎么回事了,很多是根据情况来使用汉字的~~~系谱里进入部队页和进入物品、设置页的小字库写到VRAM里的都不一样^_^

下面是引用有角幻也于2008-10-08 12:37发表的:
那么$809747的ROM地址就得出了~$009947就是$809747的ROM地址~很奇怪,在Hex2SNES里为什么是$C09747捏?
这个问题我也不太懂~~像《圣战的系谱》因是HIROM也是,$800000=$C00000,$900000=$D00000这样的。

这个我好像明白

所有Windows的进程内存都是从40000开始的

调用内存的时候40000以前的和11C00000以后的是无法直接调用到的

.......


。。。。。。。。。是吗!!!没仔细深究过~~哈哈`~

下面是引用有角幻也于2008-10-08 12:41发表的:
我现在特别想Hack NDS 游戏

不知道该怎么Debug

要是有个这教程就好了

有写教程的时间,还不如去睡几天懒觉,这是问一个做过NDS破解游戏的家伙说的`~~=_=
就是吃力不讨好的意思~~哦哦~~

下面是引用大天使于2008-10-08 14:50发表的:
SFC上的机战4 一直想改其剑切 盾防的发动概率, 它的发动概率是 等级除以16 分1-8个级别
剑切L1 L2 L3 L4 L5 L6 L7 L8 盾防L1 L2 L3 L4 L5 L6 L7 L8
不知道能否用上面这个方法查到

没研究过SFC上的机战4,应该可以的吧~~只要在其发动的时间段里DUMP些程序出来应该可以分析的到`~~~~

下面是引用mana10000于2008-10-11 01:19发表的:
直接改ROM   一勞永逸的修改是最好的
有無SFC的文件工具   能像CrystalTile BM那樣可以看清楚整個文件目錄?

要不然有些數值很難找   例如勇者鬥惡龍3的魔法
以前用UE做地毯式修改也改不出來

我不太信奉“一勞永逸”的东西.......[s:2] ,有时候反而更劳累......


长江后浪推前浪,前浪死在沙滩上。
[12 楼] | Posted:2008-10-12 22:43| 顶端
gamehe



该用户目前不在线
级别: 注册会员
编号: 51109
精华: 0
发帖: 9
威望: 0 点
配偶: 单身
火 花 币: 23876 HHB
注册时间:2006-03-07
最后登陆:2017-10-13
查看作者资料 发送短消息 引用回复这个帖子


- -0 不知道LZ修改用的什么软件。。。。
[13 楼] | Posted:2008-10-14 16:30| 顶端
xbox



该用户目前不在线
级别: 注册会员
编号: 95630
精华: 0
发帖: 3
威望: 0 点
配偶: 单身
火 花 币: 17083 HHB
注册时间:2008-12-22
最后登陆:2009-01-31
查看作者资料 发送短消息 引用回复这个帖子
求学 SFC游戏修改

我最近修改了SFC版的终极真人快打3(美版),我已经按照楼主讲的方法找到了ZSNES模拟器(体力无限)地址是7E36D4 A6,然后用HEx2snes转换成ROM地址是$00 42E7(RAM-ZSNES转换的),后又用HI-ROM转换得到的地址是SNES地址是C0 40E7;但是怎么改体力照减,想这类的游戏是怎么改的呀!麻烦能不能给个教成啊!我的QQ:879430967望楼主给予小弟一些指教-----谢谢---谢谢--


[ 此贴被xbox在2008-12-22 12:19重新编辑 ]

[14 楼] | Posted:2008-12-22 12:06| 顶端
Werther

头衔:依然火星时代!依然火星时代!
该用户目前不在线
级别: 火花会员
编号: 8033
精华: 0
发帖: 479
威望: 0 点
配偶: 单身
火 花 币: 2 HHB
注册时间:2003-06-05
最后登陆:2024-09-24
查看作者资料 发送短消息 引用回复这个帖子
Re:求学 SFC游戏修改

下面是引用xbox于2008-12-22 12:06发表的求学 SFC游戏修改:
我最近修改了SFC版的终极真人快打3(美版),我已经按照楼主讲的方法找到了ZSNES模拟器(体力无限)地址是7E36D4 A6,然后用HEx2snes转换成ROM地址是$00 42E7(RAM-ZSNES转换的),后又用HI-ROM转换得到的地址是SNES地址是C0 40E7;但是怎么改体力照减,想这类的游戏是怎么改的呀!麻烦能不能给个教成啊!我的QQ:879430967望楼主给予小弟一些指教-----谢谢---谢谢--


SO~SORRY~没什么时间来~才看到你短信息看到~
咳~

既然你找到了这个值是控制己方角色的HP值,那就进一步找到它的读取程序就可以改了~
格斗游戏处理HP是比较复杂的,手柄的输入处理、攻击方式的处理、还有命中等!
但我们不太需要全部弄懂,我们又不是专业的游戏设计师。
简单的HACK方法:
你已经知道了控制己方角色的HP值的内存地址是7E36D4:A6
这并不要做其他~
第一步你在敌人准备攻击你前摁下F1返回Debugger模式,
然后摁L键开始导出游戏的运行程序~(大概判断到敌人已经攻击你后停止导出)

这样程序肯定会去LOAD这个内存值,并进行了攻击命中等判断后更新这个值~

我们搜索$7E36D4会有以下结果:
88c66b RTL             A:a225 X:1251 Y:0008 S:1ff9 DB:7e D:0300 P:80 e
85a226 LDA $ec9a   [7eec9a] A:a225 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:80 e
85a229 BEQ $a25a   [85a25a] A:0000 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:02 e
85a25a LDA $36d4   [7e36d4] A:0000 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:02 e
85a25d BEQ $a27b   [85a27b] A:00a6 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a25f LDA $3898   [7e3898] A:00a6 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a262 BEQ $a27b   [85a27b] A:008d X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a264 LDA $3bd2   [7e3bd2] A:008d X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a267 BEQ $a21f   [85a21f] A:0001 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a269 DEC $2a     [00032a] A:0001 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a26b BNE $a21f   [85a21f] A:0001 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a21f LDA #$03           A:0001 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e
85a222 JSL $88c637         A:0003 X:1251 Y:0008 S:1ffc DB:7e D:0300 P:00 e


87e8af STA $0c     [00060c] A:257f X:0004 Y:0002 S:1ff5 DB:7e D:0600 P:00 e
87e8b1 LDA $36d4   [7e36d4] A:257f X:0004 Y:0002 S:1ff5 DB:7e D:0600 P:00 e
87e8b4 LDX #$0094         A:00a6 X:0004 Y:0002 S:1ff5 DB:7e D:0600 P:00 e
87e8b7 JSL $84feee         A:00a6 X:0094 Y:0002 S:1ff5 DB:7e D:0600 P:00 e

我们会在85a25a LDA $36d4和87e8b1 LDA $36d4这里找到程序读取这个内存值。

我们可以尝试这样修改:

C5A25A:            ADD436                  LDA $36D4
C5A25D:            F01C                  BEQ $A27B
改为
C5A25A:            A9A6                  LDA #$A6
C5A25C:            EA                  NOP
C5A25D:            F01C                  BEQ $A27B

C7E8B1:            ADD436                  LDA $36D4
C7E8B4:            A294                  LDX #$94
改为
C7E8B1:            A9A6                  LDA #$A6
C7E8B3:            EA                  NOP
C7E8B4:            A294                  LDX #$94

这样除非时间到,己方的HP是不减少的!
没有太多时间更深入的了解,你自己可以琢磨琢磨~~SORRY~

如果只改第一处的话,显示HP的数值减少依然,但己方即使没有了HP游戏也不结束~所以两处一起改~


长江后浪推前浪,前浪死在沙滩上。
[15 楼] | Posted:2009-01-04 10:14| 顶端
xbox



该用户目前不在线
级别: 注册会员
编号: 95630
精华: 0
发帖: 3
威望: 0 点
配偶: 单身
火 花 币: 17083 HHB
注册时间:2008-12-22
最后登陆:2009-01-31
查看作者资料 发送短消息 引用回复这个帖子
SFC游戏修改

楼主真是高手,我按照你的方法成功修改了SFC真人快打3,但是我在按照你的要求去修改SFC超级大金刚3(日版)时只在EC中找到生命值地址(7E05DB 05),想先用zsnes151在DOS运行游戏后在主角在遇敌前或后都按F1回DOS Debugger模式按L键,前后我用Debugger了500M的Debugge文件,当在找7E05DB 05这个地址,用UltraEdit始终找不到这个地址,但在Debugger模式中按M输入这个地址却能找到生命数值,还有我在EC中找不到主角大星星无敌地址和下小母星星无敌的地址,是不是在EC中找到的地址和zsnes151 中Debugger出地址有分歧啊,65816手工修改代码可对照此表,我看的是有点半知半解!我在修改HACK游戏中找到了乐趣,所以再次打扰楼主,只能说不好意思了。希望楼主能加我的QQ:879430967


[ 此贴被xbox在2009-01-08 16:15重新编辑 ]

[16 楼] | Posted:2009-01-08 15:51| 顶端
xbox



该用户目前不在线
级别: 注册会员
编号: 95630
精华: 0
发帖: 3
威望: 0 点
配偶: 单身
火 花 币: 17083 HHB
注册时间:2008-12-22
最后登陆:2009-01-31
查看作者资料 发送短消息 引用回复这个帖子


我想把他修改成命不减 和 主角和第二主角无敌 ,在您有时间的话请详细写一下教程,在下不胜感激。这个是ROM地址:   ftp://free1:KnCbVKVE@ftp.99inet.com/Roms&Games/Console/Nintendo%20Super%20Family%20Computer(SFC,SNES)/Roms/No-Intro/Super%20Donkey%20Kong%203%20-%20Nazo%20no%20Krems-tou%20(J)%20(v1.1).zip


(中文名字:超级大金刚3 日版)

我的邮箱是 xieyingchun222@163.com


[ 此贴被xbox在2009-01-13 12:42重新编辑 ]

[17 楼] | Posted:2009-01-08 17:51| 顶端

火花天龙剑 -> 火花学园




Powered by PHPWind v3.0.1 Code © 2003-05 PHPWind
辽ICP备05016763号
Gzip enabled

You can contact us