|
发表于 2013-2-28 16:59:30
|
显示全部楼层
zsyf 发表于 2013-2-28 15:48 
* {; i0 f8 d7 q8 S在看了银河大的《GBA游戏Romhack视频教学》后,除了用教程中所演示的恶魔城来实践相关操作外,最近还想找其 ... , T+ J$ @) y- B
C, |5 B* @% ^
我只是今天路过正好看到
, d5 ~9 l% n" _7 I所以稍微调试了下, q/ Y0 P2 Y- M" d4 W. t& w/ [
数据断点下断要下入口地址2 b5 }- h/ n6 a& A5 m- R( M
1 v! v. ?" G- G+ `- N3 x, r
所以是020030EC,而不是ED,因为对应指令的入口就是EC& U' m9 F0 d* A0 @; R3 E. w$ E
' ?% z0 a5 r1 @
至于思路...我不确定你是否看得懂* a* ^9 c! L* Y' v
找到指令后因为是参数共用的; ^1 }* E; E" A
你可以下指令断点,然后有选择性的断下,比如HP减少时的断下(因为能量减少、分数变动也会断下来)
6 e! c! j% N' L( k1 J然后执行到返回% n ^! z* I+ w6 X, `) T- i
6 c. M1 r( U8 h3 K: Y4 k
发现返回的地方的前面的语句还是参数公用语句
: J; ?/ T$ R$ J于是又选择性的再使用指令断点执行到返回& r/ F8 O% w: `$ ?; a, S8 k# R
1 A1 ]- N% A* v4 h$ \9 w/ {0 i! d
即可找到有关HP参数的函数Call,变更传递参数- W# d' }* e) M
比如HP减少时, e' q1 p( s( }/ O
传递r0寄存器给Call(也就是bl xxxxxxxx)
5 E3 N$ L6 `; b5 @: m7 }r0是一个负数
" F* P( J4 b2 x% X/ w于是我们在调用Call时
! L8 k+ L2 J1 q' e7 J0 o; u# p把r0清零2 @* A4 z. B8 z$ g# K# J
当然不好的地方是
- _2 Z3 j t" MHP虽不会减少,但也不会增加了: \5 q! n# K# R7 ~) U x4 c
这里想要只加不减就需要跳转来判断r0了' H5 V5 U* L# f9 G3 [' J6 e; E' {
2 g) V/ x- P! c( j这样就可以避开能量、分数等对那段函数的公用,而只使得HP不减少 |
|