BRUNIA
太阳月光流星剑!
级别: 火花会员
编号: 23892
精华: 2
发帖: 408
威望: 10 点
配偶: 单身
火 花 币: 32952 HHB
注册时间:2004-09-08
最后登陆:2014-08-08
|
GBAFE乱数地址以及圣魔特技破解!
最近看了几篇乱数的文章蠢蠢欲动,特别是军师前辈的研究分析,以及中断后乱数不变的特性证明了乱数表一定存在于内存中,故很有兴趣查找之。不过由于其排列方式未知,在搜索中遇到了点小麻烦: 苍天啊!47 66 60 46 77 70 61 29 19 26 89 93 23 32 49 25 08 …… 鬼知道他们是怎么排列的!我搜了近1个小时一无所获,正要放弃时又看了一遍军师的贴子,果然……
GBAFE乱数表地址 0 1 2 3 4 5 03000000 AB,CD,EF,GH,IJ,KL
ABCD,EFGH,IJKL(三个4位16进制数,共48bit)就是系统当前使用的3个乱数,即乱数表。 每个乱数的值在0-FFFF内,是指已经消耗掉的乱数,如果遇到需要消耗乱数的程序,则通过调用计算程序,利用表中3个乱数算出新乱数,将其乘以100/65536,得出一个0-100之间的数,用于随机判定;然后其写入ABCD的位置,IJKL(最旧)被去除,新乱数表诞生。
这也与“乱数表周期的最大值是2^48”吻合。 ---------------------------------------------------- 附送无敌BT金手指: 03000000:00000000 03000004:00000000 效果:所有随机事件全部发生(招招命中、必杀、贯通等,升级7点成长);请不要在刚读好ROM时就使用,请在章节进入大地图后使用,否则容易不断重起。 ---------------------------------------------------- 有了这个,烈火、圣魔特技破解就容易多了: 本人调出了瞬杀、贯通、大盾、必中的程序:
1、烈火瞬杀 080292EE 1C1A mov r2,r3 080292F0 326C add r2,6Ch 080292F2 2032 mov r0,32h---->R0赋值32H(50),以和乱数比较来判定瞬杀 080292F4 8010 strh r0,[r2]
2、圣魔瞬杀 0802AC8A 1C1A mov r2,r3 0802AC8C 326C add r2,6Ch 0802AC8E 2032 mov r0,32h---->R0赋值32H(50),以和乱数比较来判定瞬杀 0802AC90 8010 strh r0,[r2]
3、圣魔贯通 0802B216 6850 ldr r0,[r2,4h] 0802B218 7900 ldrb r0,[r0,4h]---->R0得出当前人物职业代码 0802B21A 2824 cmp r0,24h --->代码大于24则跳过贯通判定程序 0802B21C DC15 bgt 802B24Ah 0802B21E 2823 cmp r0,23h --->代码小于23则跳过贯通判定程序 0802B220 DB13 blt 802B24Ah 0802B222 2008 mov r0,8h --->到这里,只有代码是23或24(翼龙)才进行贯通判定程序 0802B224 5610 ldsb r0,[r2,r0] --->R0读取当前人物等级,以和乱数比较来判定贯通
4、圣魔大盾 0802B2B2 6870 ldr r0,[r6,4h] 0802B2B4 7901 ldrb r1,[r0,4h]---->R1得出当前人物职业代码 0802B2B6 290C cmp r1,0Ch --->代码大于0C则跳过大盾判定程序 0802B2B8 DC16 bgt 802B2E8h 0802B2BA 290B cmp r1,0Bh --->代码小于0B则跳过大盾判定程序 0802B2BC DB14 blt 802B2E8h 0802B2BE 2008 mov r0,8h --->到这里,只有代码是B或C(将军)才进行大盾判定程序 0802B2C0 5628 ldsb r0,[r5,r0]--->R0读取对手等级,以和乱数比较来判定大盾
5、圣魔必中 0802B192 6860 ldr r0,[r4,4h] 0802B194 7900 ldrb r0,[r0,4h]---->R0得出当前人物职业代码 0802B196 281C cmp r0,1Ch --->代码大于1C则跳过必中判定程序 0802B198 DC1E bgt 802B1D8h 0802B19A 281B cmp r0,1Bh --->代码小于1B则跳过必中判定程序 0802B19C DB1C blt 802B1D8h 0802B19E 1C20 mov r0,r4--->到这里,只有代码是1B或1C(狙击手)才进行必中判定程序 0802B1A0 3048 add r0,48h 0802B1A2 8800 ldrh r0,[r0] ---->R0得出当前人物所持武器代码及耐久 0802B1A4 F7ECF876 bl 8017294h 0802B1A8 2837 cmp r0,37h --->武器代码大于37则跳过必中判定程序 0802B1AA DC01 bgt 802B1B0h 0802B1AC 2835 cmp r0,35h --->武器代码小于35则跳过必中判定程序 0802B1AE DA13 bge 802B1D8h 0802B1B0 2008 mov r0,8h--->到这里,武器代码不是35,36,37(巨弩)才进行必中判定程序 0802B1B2 5620 ldsb r0,[r4,r0]--->R0读取自己等级,以和乱数比较来判定必中
---------------------------------------------
特技静态修改列表:(补丁就懒得做了^ ^) _________________________________________________________________
发动职业 发动条件 _________________________________________________________________
烈火瞬杀 000292F2:64(必杀时必然发动) 000292F2:XX(必杀时有xx%的几率发动) _________________________________________________________________
圣魔瞬杀 0002AC8E:64(必杀时必然发动) 0002AC8E:XX(必杀时有xx%的几率发动) __________________________________________________________________
圣魔贯通 0002B21A:XX 0002B224:64; 0002B21E:YY 0002B225:20(命中时必然发动) 职业代码为YY-XX间的拥有贯通特技 (端点包含, 全职业:XX=7F,YY=01) 0002B222:XX XX=9(发动率:自己经验%) XX=13(发动率:自己最大HP%) XX=14(发动率:自己现在HP%) XX=15(发动率:自己力%) XX=16(发动率:自己技%) XX=17(发动率:自己速%) XX=18(发动率:自己守备%) XX=19(发动率:自己魔防%) XX=1A(发动率:自己幸运%) __________________________________________________________________
圣魔大盾 0002B2B6:XX 0002B2C0:64;0002B2C1:20 0002B2BA:YY (对手命中时必然发动) 职业代码为YY-XX间的拥有大盾特技 (端点包含, 全职业:XX=7F,YY=01) 0002B2C0:30;0002B2BE:XX (XX数值的含义同上表) __________________________________________________________________
圣魔必中 0002B196:XX 0002B1B2:64;0002B1B3:20 0002B19A:YY (必然发动) 职业代码为YY-XX间的拥有必中特技 (端点包含, 全职业:XX=7F,YY=01) 0002B1B0:XX (XX数值的含义同上表) __________________________________________________________________
special thanks: 希罗、worse&better
没有两位前辈的指导便没有此贴!
|
|
[楼 主]
|
Posted:2011-08-30 01:40| |
顶端
| |