无聊之士
全控
级别: 火花会员
编号: 49952
精华: 5
发帖: 432
威望: 25 点
配偶: 单身
火 花 币: 4092 HHB
注册时间:2006-02-10
最后登陆:2024-06-28
|
圣魔攻击部分判定
研究了一通圣魔,攻击判定基本全分析出了,等我连击判定试验成立了在放出BT修改................这下面的必中和大盾以及贯通几率我作了调整,附加了死生,入口地址,死生程序具体去参看我自己做的技能去~ ======================================================================= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ======================================================================= 0802a380 BL 0802AE40h<----------!!!就这一个转移下面就包含了多少转移。。。 ======================== =========================================================================================================================== 0802AE40 B570 push r4-r6,lr 0802AE42 B082 add sp,-8h 0802AE44 F7FF bl 0802AE00h --------------------------------------------------- =================================================== 0802AE00 B5F0 push r4-r7,lr 0802AE02 4F0C ldr r7,=0203A5E8h 0802AE04 480C ldr r0,=0203A604h 0802AE06 4684 mov r12,r0 0802AE08 4D0C ldr r5,=FFF80000h 0802AE0A 2607 mov r6,7h 0802AE0C 2400 mov r4,0h 0802AE0E 1C3A add r2,r7,0h 0802AE10 2306 mov r3,6h<-----------循环体循环数据录入 0802AE12 6810 ldr r0,[r2,0h]<-----------循环体开始 0802AE14 4028 and r0,r5 0802AE16 6010 str r0,[r2,0h] 0802AE18 7891 ldrb r1,[r2,2h] 0802AE1A 1C30 add r0,r6,0h 0802AE1C 4008 and r0,r1 0802AE1E 7090 strb r0,[r2,2h] 0802AE20 70D4 strb r4,[r2,3h] 0802AE22 3204 add r2,4h 0802AE24 3B01 sub r3,1h 0802AE26 2B00 cmp r3,0h 0802AE28 DAF3 bge 0802AE12h<-----------循环体判定 0802AE2A 4660 mov r0,r12 0802AE2C 6007 str r7,[r0,0h]《----------注意,这里r7=0203a5e8,r0=0203a604 0802AE2E BCF0 pop r4-r7 0802AE30 BC01 pop r0 0802AE32 4700 bx r0 ==================================================== ---------------------------------------------------- 0802AE48 AC01 add r4,sp,4h 0802AE4A 4668 mov r0,sp 0802AE4C 1C21 add r1,r4,0h 0802AE4E F000 bl 0802AEECh ------------------------------------------------------- ======================================================= 0802AEEC 4A02 ldr r2,=0203A4E8h 0802AEEE 6002 str r2,[r0,0h]《----------注意,这里r2=0203a4e8,r0=03007d5c=sp,估计对主动被动方规划指针 0802AEF0 4802 ldr r0,=0203A568h 0802AEF2 6008 str r0,[r1,0h]《----------注意,这里r0=0203a568,r1=03007d60=sp+4h, 0802AEF4 4770 bx lr ======================================================= ------------------------------------------------------- 0802AE52 4E24 ldr r6,=0203A604h 0802AE54 6833 ldr r3,[r6,0h] 0802AE56 6819 ldr r1,[r3,0h] 0802AE58 0209 lsl r1,r1,08h 0802AE5A 0EC9 lsr r1,r1,1Bh 0802AE5C 2001 mov r0,1h 0802AE5E 4301 orr r1,r0 0802AE60 00C9 lsl r1,r1,03h 0802AE62 789A ldrb r2,[r3,2h] 0802AE64 2007 mov r0,7h 0802AE66 4010 and r0,r2 0802AE68 4308 orr r0,r1 0802AE6A 7098 strb r0,[r3,2h] 0802AE6C 9800 ldr r0,[sp,0h]<-----r0赋地址 0802AE6E 9901 ldr r1,[sp,4h]<-----r1赋地址 0802AE70 F000 bl 0802AF88h<------------到这里0802AFE6后 bl 0802AF88h程序才执行完了 0802AE74 0600 lsl r0,r0,18h 0802AE76 2800 cmp r0,0h 0802AE78 D122 bne 0802AEC0h〈----------估计是判定对方武器数量是不是0,是就跳出攻击 0802AE7A 6833 ldr r3,[r6,0h] 0802AE7C 681A ldr r2,[r3,0h] 0802AE7E 0351 lsl r1,r2,0Dh 0802AE80 0B49 lsr r1,r1,0Dh 0802AE82 2008 mov r0,8h 0802AE84 4301 orr r1,r0 0802AE86 4D18 ldr r5,=FFF80000h 0802AE88 1C28 add r0,r5,0h 0802AE8A 4010 and r0,r2 0802AE8C 4308 orr r0,r1 0802AE8E 6018 str r0,[r3,0h] 0802AE90 9801 ldr r0,[sp,4h] 0802AE92 9900 ldr r1,[sp,0h] 0802AE94 F000 bl 0802AF88h〈----再次执行,敌人反击开始判定 0802AE98 0600 lsl r0,r0,18h 0802AE9A 2800 cmp r0,0h 0802AE9C D110 bne 0802AEC0h〈----------估计是判定自己武器数量是不是0,是就跳出攻击 0802AE9E 4668 mov r0,sp〈---------调出两方指针 0802AEA0 1C21 add r1,r4,0h〈---------调出两方指针 0802AEA2 F000 bl 0802AF00h〈---------是否追击计算 0802AEA6 0600 lsl r0,r0,18h 0802AEA8 2800 cmp r0,0h 0802AEAA D009 beq 0802AEC0h〈---------查看追击是否成立 0802AEAC 6832 ldr r2,[r6,0h] 0802AEAE 6810 ldr r0,[r2,0h] 0802AEB0 4028 and r0,r5 0802AEB2 2104 mov r1,4h 0802AEB4 4308 orr r0,r1 0802AEB6 6010 str r0,[r2,0h] 0802AEB8 9800 ldr r0,[sp,0h] 0802AEBA 9901 ldr r1,[sp,4h] 0802AEBC F000 bl 0802AF88h 0802AEC0 4808 ldr r0,=0203A604h 0802AEC2 6803 ldr r3,[r0,0h] 0802AEC4 6819 ldr r1,[r3,0h] 0802AEC6 0209 lsl r1,r1,08h 0802AEC8 0EC9 lsr r1,r1,1Bh 0802AECA 2010 mov r0,10h 0802AECC 4301 orr r1,r0 0802AECE 00C9 lsl r1,r1,03h 0802AED0 789A ldrb r2,[r3,2h] 0802AED2 2007 mov r0,7h 0802AED4 4010 and r0,r2 0802AED6 4308 orr r0,r1 0802AED8 7098 strb r0,[r3,2h] 0802AEDA B002 add sp,8h 0802AEDC BC70 pop r4-r6 0802AEDE BC01 pop r0 0802AEE0 4700 bx r0〈------------------------攻击判定结束了,返回0802a380h的下一步,由这里可以看出0802a380h附近有数据初
始化计算 ----------------------------------------------------------------------------------------------------------------------------- ============================================================================================================================= 攻击判定子程序系列 ============================================================================================================================= 0802AF88 B5F0 push r4-r7,lr 0802AF8A 4647 mov r7,r8 0802AF8C B480 push r7<-----r4-r8数据保护 0802AF8E 1C06 add r6,r0,0h<-----r0地址给r6 0802AF90 4688 mov r8,r1<-----r1地址给r8 0802AF92 3048 add r0,48h<-----r0地址偏移48h 0802AF94 8800 ldrh r0,[r0,0h]<-----读出当前武器代码,不能攻击的读出值为0. 0802AF96 2800 cmp r0,0h 0802AF98 D102 bne 0802AFA0h<-----有攻击武器的转移 0802AF9A E01F b 0802AFDCh<-----没有攻击武器的转移 0802AF9C 2001 mov r0,1h 0802AF9E E01E b 0802AFDEh 0802AFA0 4811 ldr r0,=0203A604h<-----有攻击武器的转移到这里 0802AFA2 6800 ldr r0,[r0,0h] 0802AFA4 8807 ldrh r7,[r0,0h] 0802AFA6 1C30 add r0,r6,0h 0802AFA8 F000 bl 0802AFF0h<-----武器双攻处理进入 ============================================================================================================================= 武器双攻处理进入----->> 0802AFF0 B510 push r4,lr《----保护R4值 0802AFF2 2401 mov r4,1h 0802AFF4 F000 bl 0802B004h〈-----0802B004h武器双攻处理
0802AFF8 4084 lsl r4,r0〈-----武器双攻处理完毕后返回处,对r4进行加乘,双攻r4=1*2,不是就r4=1*1 0802AFFA 1C20 add r0,r4,0h〈-----r4的价值还给r0,便于r4出栈处理 0802AFFC BC10 pop r4 0802AFFE BC02 pop r1 0802B000 4708 bx r1〈-----0802BFF0h处理武器双攻彻底结束,返回!
0802B002 0000 lsl r0,r0,00h<-----暂时没看出用途
0802B004 B500 push lr《----保护标志位 0802B006 6CC0 ldr r0,[r0,4Ch]<-----读出当前r0地址偏移4ch的值,具体为武器的特殊属性值 0802B008 2120 mov r1,20h<-----取当前r1值为20H,很明显是判定是不是双攻!!!X:1不可出售 2双攻 4魔法剑 8远程魔法/弩
车 Y:1可用武器 3魔法武器 4杖 8持久无限 0802B00A 4008 and r0,r1<-----求与20h,是双攻R0就不等于0而等于20。。。。。 0802B00C 2800 cmp r0,0h 0802B00E D011 beq 0802B034h<-----不是双攻就转移 0802B010 4806 ldr r0,=0203A604h<-----双攻后续不知明处理 0802B012 6803 ldr r3,[r0,0h] 0802B014 681A ldr r2,[r3,0h] 0802B016 0351 lsl r1,r2,0Dh 0802B018 0B49 lsr r1,r1,0Dh 0802B01A 2010 mov r0,10h 0802B01C 4301 orr r1,r0 0802B01E 4804 ldr r0,=FFF80000h 0802B020 4010 and r0,r2 0802B022 4308 orr r0,r1 0802B024 6018 str r0,[r3,0h]<-----双攻后续不知明处理完毕,改变了数据 0802B026 2001 mov r0,1h<-----是双攻就+1次 0802B028 E005 b 0802B036h<-----越过不是双攻就+0次那一条 0802B02A 0000 lsl r0,r0,00h <-----暂时没看出用途 0802B02C A604 add r6,pc,10h (=0802B040h)<-----暂时没看出用途 0802B02E 0203 lsl r3,r0,08h<-----暂时没看出用途 0802B030 0000 lsl r0,r0,00h<-----暂时没看出用途 0802B032 FFF8 blh 0FF0h<-----暂时没看出用途 0802B034 2000 mov r0,0h<-----不是双攻就+0次 0802B036 BC02 pop r1 0802B038 4708 bx r1〈-----0802B004h处理完毕,返回0802AFF4h! ============================================================================================================================= 0802AFAC 1C05 add r5,r0,0h<-----武器双攻处理完毕返回,是否双攻数据给r5 0802AFAE 2400 mov r4,0h 0802AFB0 42AC cmp r4,r5<-----是否双攻数据与0比较,决定攻击次数开始 0802AFB2 DA13 bge 0802AFDCh<-----r5>=r4则转移,这里如果转移,主动攻击方丢失第一次攻击,如果连续两次则卡住 0802AFB4 480C ldr r0,=0203A604h 0802AFB6 6803 ldr r3,[r0,0h] 0802AFB8 681A ldr r2,[r3,0h] 0802AFBA 0351 lsl r1,r2,0Dh 0802AFBC 0B49 lsr r1,r1,0Dh 0802AFBE 4339 orr r1,r7 0802AFC0 480A ldr r0,=FFF80000h 0802AFC2 4010 and r0,r2 0802AFC4 4308 orr r0,r1 0802AFC6 6018 str r0,[r3,0h] 0802AFC8 1C30 add r0,r6,0h 0802AFCA 4641 mov r1,r8 0802AFCC F000 bl 0802B784h〈-----数据判定入口,里面有不少BL,攻击系列判定结束于0802B86E 4708 bx r1<------------到
这里,0802afcc bl 802b784h程序才执行完了 0802AFD0 0600 lsl r0,r0,18h 0802AFD2 2800 cmp r0,0h 0802AFD4 D1E2 bne 0802AF9Ch〈---------追击的转双攻处理前面 0802AFD6 3401 add r4,1h 0802AFD8 42AC cmp r4,r5 0802AFDA DBEB blt 0802AFB4h〈--------双攻第二次攻击返回双攻处理后面 0802AFDC 2000 mov r0,0h 0802AFDE BC08 pop r3 0802AFE0 4698 mov r8,r3 0802AFE2 BCF0 pop r4-r7 0802AFE4 BC02 pop r1 0802AFE6 4708 bx r1<------------到这里,0802AE70 F000 bl 0802AF88h程序才执行完了 --------------------------------- 0802AFE8 A604 add r6,pc,10h (=0802AFFCh) 0802AFEA 0203 lsl r3,r0,08h 0802AFEC 0000 lsl r0,r0,00h 0802AFEE FFF8 blh 0FF0h ---------------------------------
----------------------------------------------------------------------------------------------------------------------------- 数据判定系列,包括攻击,技能,攻击伤害,攻击后附加状态都在这里面BL很多 0802B784 B570 push r4-r6,lr 0802B786 1C04 add r4,r0,0h 0802B788 1C0D add r5,r1,0h 0802B78A 4E24 ldr r6,=0203A568h 0802B78C 42B4 cmp r4,r6 0802B78E D10C bne 0802B7AAh<----如果相等自己的攻击变成敌人的,如果敌人杀不死你,那结果还是敌人伤HP
0802B790 4823 ldr r0,=0203A604h 0802B792 6803 ldr r3,[r0,0h] 0802B794 6819 ldr r1,[r3,0h] 0802B796 0209 lsl r1,r1,08h 0802B798 0EC9 lsr r1,r1,1Bh 0802B79A 2008 mov r0,8h 0802B79C 4301 orr r1,r0 0802B79E 00C9 lsl r1,r1,03h 0802B7A0 789A ldrb r2,[r3,2h] 0802B7A2 2007 mov r0,7h 0802B7A4 4010 and r0,r2 0802B7A6 4308 orr r0,r1 0802B7A8 7098 strb r0,[r3,2h]
0802B7AA 1C20 add r0,r4,0h 0802B7AC 1C29 add r1,r5,0h 0802B7AE F7FF bl 0802B134h<-----攻击处理数据汇总 ----------------------------------------------------------------------------------------------------------------------------- ============================================================================================================================= 攻击处理数据汇总-----》 0802B134 1C03 add r3,r0,0h 0802B136 4A0A ldr r2,=0203A4D0h 0802B138 305A add r0,5Ah 0802B13A 8800 ldrh r0,[r0,0h]<-----自己的攻击 0802B13C 80D0 strh r0,[r2,6h] 0802B13E 315C add r1,5Ch 0802B140 8808 ldrh r0,[r1,0h]<-----敌人的守备 0802B142 8110 strh r0,[r2,8h] 0802B144 1C18 add r0,r3,0h 0802B146 3064 add r0,64h 0802B148 8800 ldrh r0,[r0,0h]<-----实际的命中,不超过64h=100 0802B14A 8150 strh r0,[r2,Ah] 0802B14C 1C18 add r0,r3,0h 0802B14E 306A add r0,6Ah 0802B150 8800 ldrh r0,[r0,0h]<-----实际必杀,不超过64h=100 0802B152 8190 strh r0,[r2,Ch] 0802B154 1C18 add r0,r3,0h 0802B156 306C add r0,6Ch 0802B158 8800 ldrh r0,[r0,0h]<-----???? 0802B15A 81D0 strh r0,[r2,Eh] 0802B15C 4770 bx lr《-------执行完毕,返回0802B7AE的下一条0802B7B2处 ============================================================================================================================= ----------------------------------------------------------------------------------------------------------------------------- 0802B7B2 1C20 add r0,r4,0h 0802B7B4 1C29 add r1,r5,0h 0802B7B6 F7FF bl 0802B4CCh ----------------------------------------------------------------------------------------------------------------------------- ============================================================================================================================= 0802B4CC B530 push r4,r5,lr 0802B4CE 1C02 add r2,r0,0h 0802B4D0 1C0B add r3,r1,0h 0802B4D2 6810 ldr r0,[r2,0h] 0802B4D4 6851 ldr r1,[r2,4h] 0802B4D6 6A80 ldr r0,[r0,28h] 0802B4D8 6A89 ldr r1,[r1,28h] 0802B4DA 4308 orr r0,r1 0802B4DC 21C0 mov r1,C0h 0802B4DE 03C9 lsl r1,r1,0Fh 0802B4E0 4008 and r0,r1 0802B4E2 2800 cmp r0,0h 0802B4E4 D02C beq 0802B540h 0802B4E6 4C18 ldr r4,=0203A4D0h 0802B4E8 78A1 ldrb r1,[r4,2h] 0802B4EA 2901 cmp r1,1h 0802B4EC D128 bne 0802B540h 0802B4EE 4D17 ldr r5,=0203A604h 0802B4F0 6828 ldr r0,[r5,0h] 0802B4F2 6800 ldr r0,[r0,0h] 0802B4F4 0200 lsl r0,r0,08h 0802B4F6 0EC0 lsr r0,r0,1Bh 0802B4F8 4008 and r0,r1 0802B4FA 2800 cmp r0,0h 0802B4FC D020 beq 0802B540h 0802B4FE 1C10 add r0,r2,0h 0802B500 3030 add r0,30h 0802B502 7801 ldrb r1,[r0,0h] 0802B504 200F mov r0,Fh 0802B506 4008 and r0,r1 0802B508 2804 cmp r0,4h 0802B50A D019 beq 0802B540h 0802B50C 8821 ldrh r1,[r4,0h] 0802B50E 2020 mov r0,20h 0802B510 4008 and r0,r1 0802B512 2800 cmp r0,0h 0802B514 D114 bne 0802B540h 0802B516 1C10 add r0,r2,0h 0802B518 1C19 add r1,r3,0h 0802B51A F7FF bl 0802B03Ch 0802B51E 0600 lsl r0,r0,18h 0802B520 2800 cmp r0,0h 0802B522 D00D beq 0802B540h 0802B524 682B ldr r3,[r5,0h] 0802B526 681A ldr r2,[r3,0h] 0802B528 0351 lsl r1,r2,0Dh 0802B52A 0B49 lsr r1,r1,0Dh 0802B52C 2080 mov r0,80h 0802B52E 00C0 lsl r0,r0,03h 0802B530 4301 orr r1,r0 0802B532 4807 ldr r0,=FFF80000h 0802B534 4010 and r0,r2 0802B536 4308 orr r0,r1 0802B538 6018 str r0,[r3,0h] 0802B53A 2064 mov r0,64h 0802B53C 81A0 strh r0,[r4,Ch] 0802B53E 8160 strh r0,[r4,Ah] 0802B540 BC30 pop r4,r5 0802B542 BC01 pop r0 0802B544 4700 bx r0 ============================================================================================================================= ----------------------------------------------------------------------------------------------------------------------------- 0802B7BA 1C20 add r0,r4,0h 0802B7BC 1C29 add r1,r5,0h 0802B7BE F7FF bl 0802B344h<------技能,攻击数据处理,有伤害,必中,必杀,贯通大盾等的处理 ----------------------------------------------------------------------------------------------------------------------------- ============================================================================================================================= 0802B344 B5F0 push r4-r7,lr 0802B346 4657 mov r7,r10 0802B348 464E mov r6,r9 0802B34A 4645 mov r5,r8 0802B34C B4E0 push r5-r7 0802B34E 1C07 add r7,r0,0h 0802B350 4688 mov r8,r1 0802B352 4C11 ldr r4,=0203A4D0h 0802B354 2000 mov r0,0h 0802B356 80A0 strh r0,[r4,4h] 0802B358 1C38 add r0,r7,0h 0802B35A F7FF bl 0802B164h〈---------------必中处理 ======================================= 技能---必中 0802B164 B570 push r4-r6,lr 0802B166 1C04 add r4,r0,0h 0802B168 4E1D ldr r6,=0203A604h 0802B16A 6830 ldr r0,[r6,0h] 0802B16C 6800 ldr r0,[r0,0h] 0802B16E 0340 lsl r0,r0,0Dh 0802B170 0B41 lsr r1,r0,0Dh 0802B172 2580 mov r5,80h 0802B174 01ED lsl r5,r5,07h 0802B176 1C08 add r0,r1,0h 0802B178 4028 and r0,r5 0802B17A 2800 cmp r0,0h 0802B17C D12C bne 0802B1D8h 0802B17E 2080 mov r0,80h 0802B180 0240 lsl r0,r0,09h 0802B182 4008 and r0,r1 0802B184 2800 cmp r0,0h 0802B186 D127 bne 0802B1D8h 0802B188 2080 mov r0,80h 0802B18A 0200 lsl r0,r0,08h 0802B18C 4001 and r1,r0 0802B18E 2900 cmp r1,0h 0802B190 D122 bne 0802B1D8h 0802B192 6860 ldr r0,[r4,4h] 0802B194 7900 ldrb r0,[r0,4h]---->R0得出当前人物职业代码 0802B196 281C cmp r0,1Ch 0802B198 DC1E bgt 0802B1D8h--->代码大于1c则跳过必中判定程序 0802B19A 281B cmp r0,1Bh 0802B19C DB1C blt 0802B1D8h--->代码小于1b则跳过必中判定程序 0802B19E 1C20 add r0,r4,0h 0802B1A0 3048 add r0,48h 0802B1A2 8800 ldrh r0,[r0,0h] 0802B1A4 F7EC bl 08017294h 0802B1A8 2834 cmp r0,34h 0802B1AA DA15 bge 0802B1D8h--->武器代码大于34则跳过必中判定程序34为长弓 0802B1AC 2008 mov r0,8h 0802B1AE 5620 ldrh r0,[r4,r0]---->R0得出当前人物级别 0802B1B0 1C01 add r1,r0,0h 0802B1B2 0080 lsl r0,r0,02h---->当前人物级别*4 0802B1B4 1840 add r0,r0,r1---->当前人物级别*5 0802B1B6 2108 mov r1,8h 0802B1B8 5659 ldrh r1,[r3,r1]---->R0得出当前敌人级别 0802B1BA 1A40 sub r0,r0,r1---->级别*5-敌人级别 0802B1BC 0840 lsr r0,r0,01h---->(级别*5-敌人级别)/2 0802B1BE F7FF bl 0802A490h---->单个乱数判定必中,成立必然有r0=1 0802B1C2 2801 cmp r0,1h 0802B1C4 D108 bne 0802B1D8h---->判定必中不成立则转移 0802B1C6 6833 ldr r3,[r6,0h]---->必中成立显示程序处理开始 0802B1C8 681A ldr r2,[r3,0h] 0802B1CA 0351 lsl r1,r2,0Dh 0802B1CC 0B49 lsr r1,r1,0Dh 0802B1CE 4329 orr r1,r5 0802B1D0 4804 ldr r0,=FFF80000h 0802B1D2 4010 and r0,r2 0802B1D4 4308 orr r0,r1 0802B1D6 6018 str r0,[r3,0h] 0802B1D8 BC70 pop r4-r6---->必中不成立转移到这里 0802B1DA BC01 pop r0 0802B1DC 4700 bx r0 =================================== 命中判定
0802B35A F7FF bl 0802B164h----》跳向必中等 0802B35E 4D0F ldr r5,=0203A604h----》将必中成立处理的结果读出 0802B360 6828 ldr r0,[r5,0h] 0802B362 6800 ldr r0,[r0,0h] 0802B364 0340 lsl r0,r0,0Dh 0802B366 0B40 lsr r0,r0,0Dh------》必中成立必然有R0=00004000h否则处理为00000000h 0802B368 2180 mov r1,80h 0802B36A 01C9 lsl r1,r1,07h------》R1=00004000h 0802B36C 4008 and r0,r1 0802B36E 2800 cmp r0,0h 0802B370 D118 bne 0802B3A4h----》必中成立跳走 0802B372 8960 ldrh r0,[r4,Ah]----->读人物命中率 0802B374 2101 mov r1,1h 0802B376 F7FF bl 0802A4C0h----->命中率乱数判定,两乱数平均,与bl 0802A490h不同 0802B37A 0600 lsl r0,r0,18h----->命中判定成立必然有r0不等于0 0802B37C 2800 cmp r0,0h 0802B37E D111 bne 0802B3A4h----->命中判定成立跳走,否则处理MiSS动画开始 0802B380 682B ldr r3,[r5,0h] 0802B382 681A ldr r2,[r3,0h] 0802B384 0351 lsl r1,r2,0Dh 0802B386 0B49 lsr r1,r1,0Dh 0802B388 2002 mov r0,2h 0802B38A 4301 orr r1,r0 0802B38C 4804 ldr r0,=FFF80000h 0802B38E 4010 and r0,r2 0802B390 4308 orr r0,r1----->R0=00080012h 0802B392 6018 str r0,[r3,0h] 0802B394 E08D b 0802B4B2h----->MiSS动画处理完毕
0802B4B2 BC38 pop r3-r5 0802B4B4 4698 mov r8,r3 0802B4B6 46A1 mov r9,r4 0802B4B8 46AA mov r10,r5 0802B4BA BCF0 pop r4-r7 0802B4BC BC01 pop r0-----》r0=0802B7c3h实际跳到0802B7c2h 0802B4BE 4700 bx r0
0802B3A4 4D2A ldr r5,=0203A4D0h----->命中判定成立跳到处 0802B3A6 2106 mov r1,6h 0802B3A8 5E68 ldsh r0,[r5,r1] 0802B3AA 4681 mov r9,r0 0802B3AC 2008 mov r0,8h 0802B3AE 5E2C ldsh r4,[r5,r0] 0802B3B0 1C38 add r0,r7,0h 0802B3B2 4641 mov r1,r8 0802B3B4 F7FF bl 0802B258h---------》大盾判定 ========================================================== 大盾判定 0802B258 B5F0 push r4-r7,lr---------》大盾判定前置处理 0802B25A 4647 mov r7,r8 0802B25C B480 push r7 0802B25E 1C05 add r5,r0,0h 0802B260 1C0E add r6,r1,0h 0802B262 4C24 ldr r4,=0203A604h 0802B264 6820 ldr r0,[r4,0h] 0802B266 6800 ldr r0,[r0,0h] 0802B268 0340 lsl r0,r0,0Dh 0802B26A 0B41 lsr r1,r0,0Dh 0802B26C 2702 mov r7,2h 0802B26E 1C08 add r0,r1,0h 0802B270 4038 and r0,r7 0802B272 2800 cmp r0,0h 0802B274 D138 bne 0802B2E8h 0802B276 2080 mov r0,80h 0802B278 01C0 lsl r0,r0,07h 0802B27A 4008 and r0,r1 0802B27C 2800 cmp r0,0h 0802B27E D133 bne 0802B2E8h 0802B280 2080 mov r0,80h 0802B282 0240 lsl r0,r0,09h 0802B284 4008 and r0,r1 0802B286 2800 cmp r0,0h 0802B288 D12E bne 0802B2E8h 0802B28A 2080 mov r0,80h 0802B28C 0200 lsl r0,r0,08h 0802B28E 4680 mov r8,r0 0802B290 4001 and r1,r0 0802B292 2900 cmp r1,0h 0802B294 D128 bne 0802B2E8h 0802B296 1C28 add r0,r5,0h 0802B298 3048 add r0,48h 0802B29A 8800 ldrh r0,[r0,0h] 0802B29C F7EC bl 080174CCh 0802B2A0 2801 cmp r0,1h 0802B2A2 D021 beq 0802B2E8h 0802B2A4 6820 ldr r0,[r4,0h] 0802B2A6 6800 ldr r0,[r0,0h] 0802B2A8 0340 lsl r0,r0,0Dh 0802B2AA 0B40 lsr r0,r0,0Dh 0802B2AC 4038 and r0,r7 0802B2AE 2800 cmp r0,0h 0802B2B0 D11A bne 0802B2E8h---------》大盾判定前置处理完毕
0802B2B2 6870 ldr r0,[r6,4h]---------》大盾判定,读当前人物地址 0802B2B4 7901 ldrb r1,[r0,4h]---->R0得出当前人物职业代码 0802B2B6 290C cmp r1,Ch 0802B2B8 DC16 bgt 0802B2E8h 0802B2BA 290B cmp r1,Bh 0802B2BC DB14 blt 0802B2E8h 0802B2BE 2008 mov r0,8h 0802B2C0 5628 ldrh r0,[r5,r0]<---读级别 0802B2C2 2117 mov r1,17h 0802B2C4 5671 ldrh r1,[r6,r1]<---读守备 0802B2C6 0040 lsl r0,r0,01h<---级别*2 0802B2C8 0849 lsr r1,r1,01h<---守备/2 0802B2CA 1840 add r0,r0,r1<---<---级别*2+守备/2 0802B2CC F7FF bl 0802A490h<----当前值与乱数比较区段,成立则必然有RO=1 0802B2D0 2801 cmp r0,1h 0802B2D2 D109 bne 0802B2E8h---->判定大盾不成立则转移 0802B2D4 6823 ldr r3,[r4,0h]---->大盾成立显示程序处理开始 0802B2D6 681A ldr r2,[r3,0h] 0802B2D8 0351 lsl r1,r2,0Dh 0802B2DA 0B49 lsr r1,r1,0Dh 0802B2DC 4640 mov r0,r8 0802B2DE 4301 orr r1,r0 0802B2E0 4805 ldr r0,=FFF80000h 0802B2E2 4010 and r0,r2 0802B2E4 4308 orr r0,r1 0802B2E6 6018 str r0,[r3,0h] 0802B2E8 BC08 pop r3---->大盾不成立转移到这里 0802B2EA 4698 mov r8,r3 0802B2EC BCF0 pop r4-r7 0802B2EE BC01 pop r0 0802B2F0 4700 bx r0---------》大盾判定完毕,跳向0802B3B4的下一条 =============================================================================== 0802B3B8 4E26 ldr r6,=0203A604h---------》大盾判定完毕后返回该处继续 0802B3BA 6830 ldr r0,[r6,0h] 0802B3BC 6800 ldr r0,[r0,0h] 0802B3BE 0340 lsl r0,r0,0Dh 0802B3C0 0B40 lsr r0,r0,0Dh 0802B3C2 2180 mov r1,80h 0802B3C4 0209 lsl r1,r1,08h 0802B3C6 468A mov r10,r1 0802B3C8 4008 and r0,r1 0802B3CA 2800 cmp r0,0h 0802B3CC D103 bne 0802B3D6h 0802B3CE 1C38 add r0,r7,0h 0802B3D0 4641 mov r1,r8 0802B3D2 F7FF bl 0802B1E8h---------》贯通判定 ================================================================================ 贯通判定 0802B1E8 B530 push r4,r5,lr---------》贯通判定前置处理 0802B1EA 1C02 add r2,r0,0h 0802B1EC 4D18 ldr r5,=0203A604h 0802B1EE 6828 ldr r0,[r5,0h] 0802B1F0 6800 ldr r0,[r0,0h] 0802B1F2 0340 lsl r0,r0,0Dh 0802B1F4 0B41 lsr r1,r0,0Dh 0802B1F6 2080 mov r0,80h 0802B1F8 01C0 lsl r0,r0,07h 0802B1FA 4008 and r0,r1 0802B1FC 2800 cmp r0,0h 0802B1FE D124 bne 0802B24Ah 0802B200 2480 mov r4,80h 0802B202 0264 lsl r4,r4,09h 0802B204 1C08 add r0,r1,0h 0802B206 4020 and r0,r4 0802B208 2800 cmp r0,0h 0802B20A D11E bne 0802B24Ah 0802B20C 2080 mov r0,80h 0802B20E 0200 lsl r0,r0,08h 0802B210 4001 and r1,r0 0802B212 2900 cmp r1,0h 0802B214 D119 bne 0802B24Ah---------》贯通判定前置处理完毕
0802B216 6850 ldr r0,[r2,4h]---------》贯通判定,读当前人物地址 0802B218 7900 ldrb r0,[r0,4h]---->R0得出当前人物职业代码 0802B21A 2824 cmp r0,24h 0802B21C DC15 bgt 0802B24Ah--->代码大于24则跳过贯通判定程序beq 0802B226h<---代码等于24则跳到贯通判定程序 0802B21E 2823 cmp r0,23h 0802B220 DB13 blt 0802B24Ah --->代码小于23则跳过贯通判定程序beq 0802B226h<---代码等于23则跳到贯通判定程序 0802B222 2014 mov r0,14h --->到这里,只有代码是23或24(翼龙)才进入-->14h代表读力量 cmp r0,XXh 0002B222:XX XX=9(发动率:自己经验% XX=12(发动率:自己最大HP%) XX=13(发动率:自己现在HP%) XX=14(发动率:自己力%) XX=15(发动率:自己技%) XX=16(发动率:自己速%) XX=17(发动率:自己守备%) XX=18(发动率:自己魔防%) XX=19(发动率:自己幸运%) XX=1Ah代表读体格 0802B224 5610 ldSB r0,[r2,r0]--->R0读取当前人物等级,以和乱数比较来判定贯通bne 0802B24ah<---代码等于XX则跳到贯通判定程
序 0802B226 0400 lsl r0,r0,10h--->无用,可以作修改mov r1,1Ah <---1Ah代表读体格 0802B228 0C00 lsr r0,r0,10h--->无用,可以作修改ldrh r1,[r2,r0] 0802B22A 2100 mov r1,0h --->无用,可以作修改mov r0,14h 0802B22C F7FF bl 0802A490h ldrh r0,[r2,r0] 0802B230 0600 lsl r0,r0,18h ADD r0,r1 0802B232 1600 asr r0,r0,18h bl 0802A490h <-----推移判定0802b21ch-D003 2823 D001 2822 D111 211A
5651 2014 5610 1840 F7FF F92E-0802b230h 0802B234 2801 cmp r0,1h 0802B236 D108 bne 0802B24Ah 0802B238 682B ldr r3,[r5,0h] 0802B23A 681A ldr r2,[r3,0h] 0802B23C 0351 lsl r1,r2,0Dh 0802B23E 0B49 lsr r1,r1,0Dh 0802B240 4321 orr r1,r4 0802B242 4804 ldr r0,=FFF80000h 0802B244 4010 and r0,r2 0802B246 4308 orr r0,r1 0802B248 6018 str r0,[r3,0h] 0802B24A BC30 pop r4,r5---->贯通不成立转移到这里 0802B24C BC01 pop r0 0802B24E 4700 bx r0--------》贯通判定完毕,跳向0802B3d2的下一条 ============================================================================ 0802B3D6 6832 ldr r2,[r6,0h]---------》贯通判定完毕后返回该处继续 0802B3D8 6810 ldr r0,[r2,0h] 0802B3DA 0340 lsl r0,r0,0Dh 0802B3DC 0B40 lsr r0,r0,0Dh 0802B3DE 2180 mov r1,80h 0802B3E0 0249 lsl r1,r1,09h 0802B3E2 4008 and r0,r1 0802B3E4 2800 cmp r0,0h 0802B3E6 D000 beq 0802B3EAh《---大盾发动必然成立,也就是说跳过0802B3E8 0802B3E8 2400 mov r4,0h 0802B3EA 4649 mov r1,r9 0802B3EC 1B08 sub r0,r1,r4 0802B3EE 80A8 strh r0,[r5,4h]《-----大盾发动则因为跳过0802B3E8而使得数据有所变化 0802B3F0 6810 ldr r0,[r2,0h] 0802B3F2 0340 lsl r0,r0,0Dh 0802B3F4 0B40 lsr r0,r0,0Dh 0802B3F6 4651 mov r1,r10 0802B3F8 4008 and r0,r1 0802B3FA 2800 cmp r0,0h 0802B3FC D001 beq 0802B402h《-----大盾发动则使上面的处理不相等而不跳转 0802B3FE 2000 mov r0,0h 0802B400 80A8 strh r0,[r5,4h]《-----大盾发动则使伤害为零 -------------------------------------------- 必杀判定 0802B402 89A8 ldrh r0,[r5,Ch]<----读取当前必杀值 0802B404 2100 mov r1,0h 0802B406 F7FF bl 0802A490h<----当前必杀值与乱数比较区段,成立则必然有RO=1 0802B40A 1C04 add r4,r0,0h 0802B40C 2C01 cmp r4,1h 0802B40E F379 bl 083A4A00h《----加入技能死生/天圣技能判定 0802B412 1C38 add r0,r7,0h 0802B414 4641 mov r1,r8 0802B416 F7FF bl 0802B2FCh〈-------瞬杀判定
================================================== 瞬杀判定 0802B2FC B500 push lr 0802B2FE 6848 ldr r0,[r1,4h] 0802B300 7900 ldrb r0,[r0,4h] 0802B302 2866 cmp r0,66h 0802B304 D008 beq 0802B318h〈------职业判定,不是该职业的人跳过该判定 0802B306 4805 ldr r0,=0203A4D0h 0802B308 89C0 ldrh r0,[r0,Eh] 0802B30A 2100 mov r1,0h 0802B30C F7FF bl 0802A490h<----当前值与乱数比较区段,成立则必然有RO=1 0802B310 0600 lsl r0,r0,18h 0802B312 1600 asr r0,r0,18h 0802B314 2801 cmp r0,1h 0802B316 D003 beq 0802B320h 0802B318 2000 mov r0,0h 0802B31A E002 b 0802B322h 0802B31C A4D0 add r4,pc,340h (=0802B660h) 0802B31E 0203 lsl r3,r0,08h 0802B320 2001 mov r0,1h 0802B322 BC02 pop r1 0802B324 4708 bx r1 ===============================================
0802B41A 0600 lsl r0,r0,18h 0802B41C 2800 cmp r0,0h 0802B41E D01F beq 0802B460h〈-----瞬杀判定不成立转移 0802B420 6834 ldr r4,[r6,0h]〈-----瞬杀判定成立图象处理 0802B422 6823 ldr r3,[r4,0h] 0802B424 0359 lsl r1,r3,0Dh 0802B426 0B49 lsr r1,r1,0Dh 0802B428 2080 mov r0,80h 0802B42A 0100 lsl r0,r0,04h 0802B42C 4301 orr r1,r0 0802B42E 4A0A ldr r2,=FFF80000h 0802B430 1C10 add r0,r2,0h 0802B432 4018 and r0,r3 0802B434 4308 orr r0,r1 0802B436 6020 str r0,[r4,0h] 0802B438 207F mov r0,7Fh〈------------攻击伤害最大 0802B43A 80A8 strh r0,[r5,4h] 0802B43C 6823 ldr r3,[r4,0h] 0802B43E 0358 lsl r0,r3,0Dh 0802B440 0B40 lsr r0,r0,0Dh 0802B442 4906 ldr r1,=FFFF7FFFh 0802B444 4008 and r0,r1 0802B446 401A and r2,r3 0802B448 4302 orr r2,r0 0802B44A 6022 str r2,[r4,0h] 0802B44C E018 b 0802B480h ------------------------------------------ 0802B460 6833 ldr r3,[r6,0h]〈-----必杀判定成立图象处理 0802B462 681A ldr r2,[r3,0h] 0802B464 0351 lsl r1,r2,0Dh 0802B466 0B49 lsr r1,r1,0Dh 0802B468 4321 orr r1,r4 0802B46A 4815 ldr r0,=0007FFFFh 0802B46C 4001 and r1,r0 0802B46E 4815 ldr r0,=FFF80000h 0802B470 4010 and r0,r2 0802B472 4308 orr r0,r1 0802B474 6018 str r0,[r3,0h]《--R3所在地址数据控制必杀显示 0802B476 2004 mov r0,4h 0802B478 5E29 ldsh r1,[r5,r0]<----读取当前伤害,r5+4所在地址数据决定实际伤害 0802B47A 0048 lsl r0,r1,01h<----伤害2倍 0802B47C 1840 add r0,r0,r1<----伤害3倍 0802B47E 80A8 strh r0,[r5,4h]<----当前伤害存入该地址
0802B480 4C11 ldr r4,=0203A4D0h 0802B482 2104 mov r1,4h 0802B484 5E60 ldsh r0,[r4,r1]<----读取实际伤害 0802B486 2877 cmp r0,77h<----实际伤害与119比较 0802B488 DD01 ble 0802B48Eh<----实际伤害大于119不转移 0802B48A 2077 mov r0,77h<----实际伤害取119 0802B48C 80A0 strh r0,[r4,4h]<----存入该地址为实际伤害119/127,避免秒BoSS 0802B48E 2104 mov r1,4h<----实际伤害小于119转移该处 0802B490 5E60 ldsh r0,[r4,r1] 0802B492 2800 cmp r0,1h<----实际伤害与0比较 0802B494 DA01 bge 0802B49Ah<----实际伤害大于等于0转移 0802B496 2000 mov r0,0h 0802B498 80A0 strh r0,[r4,4h]《----否则伤害强制为0 0802B49A 1C38 add r0,r7,0h 0802B49C 4641 mov r1,r8 0802B49E F7FF bl 0802B328h〈-----对武器又处理了一次 0802B4A2 2104 mov r1,4h 0802B4A4 5E60 ldsh r0,[r4,r1] 0802B4A6 2800 cmp r0,0h<----实际伤害与0比较 0802B4A8 D003 beq 0802B4B2h<----等于0转移0802B4B2显示NODAMIGE 0802B4AA 1C39 add r1,r7,0h<----不等于0转移则[R7+7C]所在地址存入1 0802B4AC 317C add r1,7Ch 0802B4AE 2001 mov r0,1h 0802B4B0 7008 strb r0,[r1,0h]
0802B4B2 BC38 pop r3-r5 0802B4B4 4698 mov r8,r3 0802B4B6 46A1 mov r9,r4 0802B4B8 46AA mov r10,r5 0802B4BA BCF0 pop r4-r7 0802B4BC BC01 pop r0 0802B4BE 4700 bx r0 ============================================================================================================================= ----------------------------------------------------------------------------------------------------------------------------- 0802B7C2 1C20 add r0,r4,0h 0802B7C4 1C29 add r1,r5,0h 0802B7C6 F7FF bl 0802B554h<-----攻击数据处理进入,一直要执行到0802B774才返回,数据加减程序,其中有HP减 ----------------------------------------------------------------------------------------------------------------------------- ============================================================================================================================= 0802B554 B5F0 push r4-r7,lr 0802B556 1C05 add r5,r0,0h 0802B558 1C0C add r4,r1,0h 0802B55A 1C29 add r1,r5,0h 0802B55C 317B add r1,7Bh 0802B55E 7808 ldrb r0,[r1,0h] 0802B560 3001 add r0,1h 0802B562 7008 strb r0,[r1,0h] 0802B564 4E0B ldr r6,=0203A604h 0802B566 6830 ldr r0,[r6,0h] 0802B568 6800 ldr r0,[r0,0h] 0802B56A 0340 lsl r0,r0,0Dh 0802B56C 0B40 lsr r0,r0,0Dh 0802B56E 2102 mov r1,2h 0802B570 4008 and r0,r1 0802B572 2800 cmp r0,0h 0802B574 D000 beq 0802B578h 0802B576 E0DC b 0802B732h 0802B578 6860 ldr r0,[r4,4h] 0802B57A 7900 ldrb r0,[r0,4h] 0802B57C 1C2F add r7,r5,0h 0802B57E 3748 add r7,48h 0802B580 2866 cmp r0,66h 0802B582 D032 beq 0802B5EAh 0802B584 8838 ldrh r0,[r7,0h]《--------读出武器 0802B586 F7EB bl 080174CCh ------------------------------------------------------------------------------------------------------------------------ ======================================================================================================================== 080174CCh小程序,现在估计于很多技能武器处理的控制都有关!!!
080174CC 21FF mov r1,FFh 080174CE 4008 and r0,r1<----保留后8位000000XX 080174D0 00C1 lsl r1,r0,03h<----ff*8倍 080174D2 1809 add r1,r1,r0<----9倍 080174D4 0089 lsl r1,r1,02h<----36倍 080174D6 4802 ldr r0,=0885E068h《-----读取基数 080174D8 1809 add r1,r1,r0<----r0的36倍偏移基数 080174DA 7FC8 ldrb r0,[r1,1Fh]<----读取r0的36倍偏移基数+1Fh的地址数据 080174DC 4770 bx lr/r14------》程序数据处理完毕,退出到入口 ======================================================================================================================== ------------------------------------------------------------------------------------------------------------------------
0802B58A 2801 cmp r0,1h 0802B58C D004 beq 0802B598h<---昏睡状态附加处理只这里等于还不行,战斗不显示,估计还有后续处理 0802B58E 2803 cmp r0,3h 0802B590 D020 beq 0802B5D4h<---------其他处理,估计也是状态处理,不过现在不知道 0802B592 E02A b 0802B5EAh<---------不等于1也不等于3,转移下去 0802B594 A604 add r6,pc,10h (=0802B5A8h) 0802B596 0203 lsl r3,r0,08h
0802B598 1C21 add r1,r4,0h<---------状态附加处理 0802B59A 316F add r1,6Fh 0802B59C 7008 strb r0,[r1,0h]<---------状态改变,如果r0=1中毒;2睡觉;3沉默;4混乱;5攻击。。。;6守备。。。;7必杀。。
。;8回避。。。;9生病?A正常的样子;B石化!!!C未知状态五回合;D还是石化;E未知状态五回合;F攻击时候显示中状态,但是一查看
人物就死机 0802B59E 6833 ldr r3,[r6,0h] 0802B5A0 681A ldr r2,[r3,0h] 0802B5A2 0351 lsl r1,r2,0Dh 0802B5A4 0B49 lsr r1,r1,0Dh 0802B5A6 2040 mov r0,40h 0802B5A8 4301 orr r1,r0 0802B5AA 4809 ldr r0,=FFF80000h 0802B5AC 4010 and r0,r2 0802B5AE 4308 orr r0,r1 0802B5B0 6018 str r0,[r3,0h] 0802B5B2 1C20 add r0,r4,0h 0802B5B4 3030 add r0,30h 0802B5B6 7800 ldrb r0,[r0,0h] 0802B5B8 210F mov r1,Fh 0802B5BA 4001 and r1,r0 0802B5BC 290B cmp r1,Bh 0802B5BE D001 beq 0802B5C4h 0802B5C0 290D cmp r1,Dh 0802B5C2 D112 bne 0802B5EAh 0802B5C4 68E0 ldr r0,[r4,Ch]<---------0802B5BE跳来 0802B5C6 2103 mov r1,3h 0802B5C8 4249 neg r1,r1 0802B5CA 4008 and r0,r1 0802B5CC 60E0 str r0,[r4,Ch] 0802B5CE E00C b 0802B5EAh《-------读武器,强制开始诅咒相关处理 0802B5D0 0000 lsl r0,r0,00h《--无效 0802B5D2 FFF8 blh 0FF0h《--无效
0802B5D4 6833 ldr r3,[r6,0h]<---------0802B590跳来,也许是一种武器的特殊状态处理 0802B5D6 681A ldr r2,[r3,0h] 0802B5D8 0351 lsl r1,r2,0Dh 0802B5DA 0B49 lsr r1,r1,0Dh 0802B5DC 2080 mov r0,80h 0802B5DE 0080 lsl r0,r0,02h 0802B5E0 4301 orr r1,r0 0802B5E2 4815 ldr r0,=FFF80000h 0802B5E4 4010 and r0,r2 0802B5E6 4308 orr r0,r1 0802B5E8 6018 str r0,[r3,0h]
0802B5EA 8838 ldrh r0,[r7,0h]《-------读武器,诅咒处理开始 0802B5EC F7EB bl 080174CCh〈-------处理武器 0802B5F0 2804 cmp r0,4h<-----是否有诅咒 0802B5F2 D127 bne 0802B644h《-----没有诅咒转移 0802B5F4 2119 mov r1,19h 0802B5F6 5669 ldrh r1,[r5,r1]《---读自己LUCK 0802B5F8 201F mov r0,1Fh 0802B5FA 1A40 sub r0,r0,r1〈----(31-LUCK)%发动诅咒 0802B5FC 0400 lsl r0,r0,10h 0802B5FE 0C00 lsr r0,r0,10h 0802B600 2100 mov r1,0h 0802B602 F7FE bl 0802A490h<-----------诅咒判定 0802B606 0600 lsl r0,r0,18h 0802B608 2800 cmp r0,0h 0802B60A D01B beq 0802B644h《-----诅咒判定失败转移 0802B60C 480B ldr r0,=0203A604h〈---诅咒发动,数据处理开始 0802B60E 6803 ldr r3,[r0,0h] 0802B610 681A ldr r2,[r3,0h] 0802B612 0351 lsl r1,r2,0Dh 0802B614 0B49 lsr r1,r1,0Dh 0802B616 2080 mov r0,80h 0802B618 4301 orr r1,r0 0802B61A 4807 ldr r0,=FFF80000h 0802B61C 4010 and r0,r2 0802B61E 4308 orr r0,r1 0802B620 6018 str r0,[r3,0h] 0802B622 4807 ldr r0,=0203A4D0h 0802B624 7901 ldrb r1,[r0,4h]〈---读出自己对敌人伤害 [203a4d0h+4H]=自己对敌人伤害 0802B626 7CE8 ldrb r0,[r5,13h]〈---读出自己HP,r5=203a4e8 0802B628 1A40 sub r0,r0,r1〈----自己HP-伤害 0802B62A 74E8 strb r0,[r5,13h]〈----存入当前HP,这种算法不好,有可能HP倒长,应该先判定是否小于0。 0802B62C 0600 lsl r0,r0,18h 0802B62E 2800 cmp r0,0h 0802B630 DA19 bge 0802B666h 0802B632 2000 mov r0,0h 0802B634 74E8 strb r0,[r5,13h] 0802B636 E016 b 0802B666h〈---诅咒发动,数据处理完毕,强制跳过敌人减HP程序
0802B638 0000 lsl r0,r0,00h 0802B63A FFF8 blh 0FF0h《--------------无效 0802B63C A604 add r6,pc,10h (=0802B650h) 0802B63E 0203 lsl r3,r0,08h 0802B640 A4D0 add r4,pc,340h (=0802B984h) 0802B642 0203 lsl r3,r0,08h
0802B644 491E ldr r1,=0203A4D0h 0802B646 2213 mov r2,13h 0802B648 56A2 ldrh r2,[r4,r2]〈---读出敌人HP,r5=203a4e8 0802B64A 2304 mov r3,4h 0802B64C 5EC8 ldsh r0,[r1,r3]〈---读出自己对敌人伤害 [203a4d0h+4H]=自己对敌人伤害 0802B64E 4290 cmp r0,r2《-----比较自己的伤害与敌人HP 0802B650 DD00 ble 0802B654h〈--------自己的伤害<敌人HP就转移 0802B652 808A strh r2,[r1,4h]《-------自己的伤害>敌人HP就存入伤害数据用于显示,同时伤害达到敌人HP的数据。。。 0802B654 7909 ldrb r1,[r1,4h]《----再次读出伤害,如果上一条执行了,伤害也就改了,否则就没改 0802B656 7CE0 ldrb r0,[r4,13h] 0802B658 1A40 sub r0,r0,r1 0802B65A 74E0 strb r0,[r4,13h] 0802B65C 0600 lsl r0,r0,18h 0802B65E 2800 cmp r0,0h 0802B660 DA01 bge 0802B666h 0802B662 2000 mov r0,0h 0802B664 74E0 strb r0,[r4,13h]〈------敌人减HP程序数据处理完毕 ----------------------------------------------------------------------------------------------------- 0802B666 8838 ldrh r0,[r7,0h]《-------读武器处理开始 0802B668 F7EB bl 080174CCh〈----------处理武器 0802B66C F379 bl 083A4AE8h〈----------自己加的程序武器吸血处理开始成立就执行0802B670吸血程序,否则跳到0802B6A2 0802B670 4813 ldr r0,=0203A4D0h〈------吸血处理开始! 0802B672 7900 ldrb r0,[r0,4h] 0802B674 7CE9 ldrb r1,[r5,13h] 0802B676 1840 add r0,r0,r1 0802B678 74E8 strb r0,[r5,13h] 0802B67A 0600 lsl r0,r0,18h 0802B67C 1600 asr r0,r0,18h 0802B67E 7CAA ldrb r2,[r5,12h] 0802B680 2112 mov r1,12h 0802B682 5669 ldrh r1,[r5,r1] 0802B684 4288 cmp r0,r1 0802B686 DD00 ble 0802B68Ah 0802B688 74EA strb r2,[r5,13h] 0802B68A 480E ldr r0,=0203A604h 0802B68C 6803 ldr r3,[r0,0h] 0802B68E 681A ldr r2,[r3,0h] 0802B690 0351 lsl r1,r2,0Dh 0802B692 0B49 lsr r1,r1,0Dh 0802B694 2080 mov r0,80h 0802B696 0040 lsl r0,r0,01h 0802B698 4301 orr r1,r0 0802B69A 480B ldr r0,=FFF80000h 0802B69C 4010 and r0,r2 0802B69E 4308 orr r0,r1 0802B6A0 6018 str r0,[r3,0h]《-------吸血处理完毕后
0802B6A2 8838 ldrh r0,[r7,0h]《-------跳过吸血处理或者吸血处理完毕后就在这,继续处理武器 0802B6A4 F7EB bl 080174CCh〈----武器处理 0802B6A8 2805 cmp r0,5h 0802B6AA D142 bne 0802B732h〈----如果等于,那么主动方攻击一次后,结束战斗,同时被攻击方不能行动,状态为石化。。。!!! 0802B6AC 4807 ldr r0,=0202BCECh 0802B6AE 7BC0 ldrb r0,[r0,Fh] 0802B6B0 2840 cmp r0,40h 0802B6B2 D024 beq 0802B6FEh 0802B6B4 2840 cmp r0,40h 0802B6B6 DC0B bgt 0802B6D0h 0802B6B8 2800 cmp r0,0h 0802B6BA D00C beq 0802B6D6h〈-----石化处理进入地址 0802B6BC E02D b 0802B71Ah --------------------------------------------------------------------- ==================================================== 未知程序 0802B6BE 0000 lsl r0,r0,00h 0802B6C0 A4D0 add r4,pc,340h (=0802BA04h) 0802B6C2 0203 lsl r3,r0,08h 0802B6C4 A604 add r6,pc,10h (=0802B6D8h) 0802B6C6 0203 lsl r3,r0,08h 0802B6C8 0000 lsl r0,r0,00h 0802B6CA FFF8 blh 0FF0h 0802B6CC BCEC pop r2,r3,r5-r7 0802B6CE 0202 lsl r2,r0,08h ============================================== ----------------------------------------------- 0802B6D0 2880 cmp r0,80h《-----石化处理分离 0802B6D2 D00A beq 0802B6EAh 0802B6D4 E021 b 0802B71Ah 0802B6D6 200B mov r0,Bh〈-----石化处理 0802B6D8 5620 ldrh r0,[r4,r0] 0802B6DA 21C0 mov r1,C0h 0802B6DC 4008 and r0,r1 0802B6DE 2800 cmp r0,0h 0802B6E0 D117 bne 0802B712h 0802B6E2 1C21 add r1,r4,0h 0802B6E4 316F add r1,6Fh 0802B6E6 200D mov r0,Dh 0802B6E8 E016 b 0802B718h 0802B6EA 200B mov r0,Bh 0802B6EC 5620 ldrh r0,[r4,r0] 0802B6EE 21C0 mov r1,C0h 0802B6F0 4008 and r0,r1 0802B6F2 2880 cmp r0,80h 0802B6F4 D10D bne 0802B712h 0802B6F6 1C21 add r1,r4,0h 0802B6F8 316F add r1,6Fh 0802B6FA 200D mov r0,Dh 0802B6FC E00C b 0802B718h ------------------------------------------------------ 0802B6FE 200B mov r0,Bh 0802B700 5620 ldrh r0,[r4,r0] 0802B702 21C0 mov r1,C0h 0802B704 4008 and r0,r1 0802B706 2840 cmp r0,40h 0802B708 D103 bne 0802B712h 0802B70A 1C21 add r1,r4,0h 0802B70C 316F add r1,6Fh 0802B70E 200D mov r0,Dh 0802B710 E002 b 0802B718h 0802B712 1C21 add r1,r4,0h 0802B714 316F add r1,6Fh 0802B716 200B mov r0,Bh 0802B718 7008 strb r0,[r1,0h]
0802B71A 4817 ldr r0,=0203A604h 0802B71C 6803 ldr r3,[r0,0h] 0802B71E 681A ldr r2,[r3,0h] 0802B720 0351 lsl r1,r2,0Dh 0802B722 0B49 lsr r1,r1,0Dh 0802B724 2080 mov r0,80h 0802B726 0180 lsl r0,r0,06h 0802B728 4301 orr r1,r0 0802B72A 4814 ldr r0,=FFF80000h 0802B72C 4010 and r0,r2 0802B72E 4308 orr r0,r1 0802B730 6018 str r0,[r3,0h]〈-----------石化处理完毕,反击不可能
0802B732 4A11 ldr r2,=0203A604h 0802B734 6811 ldr r1,[r2,0h] 0802B736 4812 ldr r0,=0203A4D0h 0802B738 8880 ldrh r0,[r0,4h] 0802B73A 70C8 strb r0,[r1,3h] 0802B73C 6810 ldr r0,[r2,0h] 0802B73E 6800 ldr r0,[r0,0h] 0802B740 0340 lsl r0,r0,0Dh 0802B742 0B40 lsr r0,r0,0Dh 0802B744 2102 mov r1,2h 0802B746 4008 and r0,r1 0802B748 2800 cmp r0,0h 0802B74A D004 beq 0802B756h 0802B74C 6CE8 ldr r0,[r5,4Ch] 0802B74E 2182 mov r1,82h 0802B750 4008 and r0,r1 0802B752 2800 cmp r0,0h 0802B754 D00C beq 0802B770h 0802B756 1C2C add r4,r5,0h 0802B758 3448 add r4,48h 0802B75A 8820 ldrh r0,[r4,0h] 0802B75C F7EB bl 08016894h《------------将141c代码改成了131c<-----推测武器耐久性减1成立 0802B760 8020 strh r0,[r4,0h]《---------当前武器耐久性存入r4=0203a530 0802B762 0400 lsl r0,r0,10h 0802B764 2800 cmp r0,0h 0802B766 D103 bne 0802B770h<-------如果等于0,显示该武器坏掉了。。。 0802B768 1C29 add r1,r5,0h<-------显示该武器坏掉了程序开始。 0802B76A 317D add r1,7Dh 0802B76C 2001 mov r0,1h 0802B76E 7008 strb r0,[r1,0h] 0802B770 BCF0 pop r4-r7 0802B772 BC01 pop r0 0802B774 4700 bx r0-------终于返回了。。。。。。返回0802B7C6的下一步 ============================================================================================================================= ----------------------------------------------------------------------------------------------------------------------------- 0802B7C6 F7FF bl 0802B554h<-----攻击数据处理进入,一直要执行到0802B774才返回,数据加减程序,其中有HP减 0802B7CA 2013 mov r0,13h 0802B7CC 5620 ldrh r0,[r4,r0] 0802B7CE 2800 cmp r0,0h 0802B7D0 D003 beq 0802B7DAh 0802B7D2 2013 mov r0,13h 0802B7D4 5628 ldrh r0,[r5,r0] 0802B7D6 2800 cmp r0,0h 0802B7D8 D124 bne 0802B824h 0802B7DA 1C21 add r1,r4,0h 0802B7DC 317B add r1,7Bh 0802B7DE 7808 ldrb r0,[r1,0h] 0802B7E0 3001 add r0,1h 0802B7E2 7008 strb r0,[r1,0h] 0802B7E4 4C0E ldr r4,=0203A604h 0802B7E6 6822 ldr r2,[r4,0h] 0802B7E8 6811 ldr r1,[r2,0h] 0802B7EA 0209 lsl r1,r1,08h 0802B7EC 0EC9 lsr r1,r1,1Bh 0802B7EE 2002 mov r0,2h 0802B7F0 4301 orr r1,r0 0802B7F2 00C9 lsl r1,r1,03h 0802B7F4 7893 ldrb r3,[r2,2h] 0802B7F6 2507 mov r5,7h 0802B7F8 1C28 add r0,r5,0h 0802B7FA 4018 and r0,r3 0802B7FC 4308 orr r0,r1 0802B7FE 7090 strb r0,[r2,2h] 0802B800 2013 mov r0,13h 0802B802 5630 ldrh r0,[r6,r0] 0802B804 2800 cmp r0,0h 0802B806 D123 bne 0802B850h 0802B808 6823 ldr r3,[r4,0h] 0802B80A 6819 ldr r1,[r3,0h] 0802B80C 0209 lsl r1,r1,08h 0802B80E 0EC9 lsr r1,r1,1Bh 0802B810 2004 mov r0,4h 0802B812 4301 orr r1,r0 0802B814 00C9 lsl r1,r1,03h 0802B816 789A ldrb r2,[r3,2h] 0802B818 1C28 add r0,r5,0h 0802B81A E016 b 0802B84Ah 0802B81C A568 add r5,pc,1A0h (=0802B9C0h) 0802B81E 0203 lsl r3,r0,08h 0802B820 A604 add r6,pc,10h (=0802B834h) 0802B822 0203 lsl r3,r0,08h 0802B824 1C28 add r0,r5,0h 0802B826 306F add r0,6Fh 0802B828 7800 ldrb r0,[r0,0h] 0802B82A 0600 lsl r0,r0,18h 0802B82C 1600 asr r0,r0,18h 0802B82E 280B cmp r0,Bh 0802B830 D001 beq 0802B836h 0802B832 280D cmp r0,Dh 0802B834 D114 bne 0802B860h 0802B836 4C09 ldr r4,=0203A604h 0802B838 6823 ldr r3,[r4,0h] 0802B83A 6819 ldr r1,[r3,0h] 0802B83C 0209 lsl r1,r1,08h 0802B83E 0EC9 lsr r1,r1,1Bh 0802B840 2002 mov r0,2h 0802B842 4301 orr r1,r0 0802B844 00C9 lsl r1,r1,03h 0802B846 789A ldrb r2,[r3,2h] 0802B848 2007 mov r0,7h 0802B84A 4010 and r0,r2 0802B84C 4308 orr r0,r1 0802B84E 7098 strb r0,[r3,2h] 0802B850 6820 ldr r0,[r4,0h] 0802B852 3004 add r0,4h 0802B854 6020 str r0,[r4,0h] 0802B856 2001 mov r0,1h 0802B858 E007 b 0802B86Ah 0802B85A 0000 lsl r0,r0,00h 0802B85C A604 add r6,pc,10h (=0802B870h) 0802B85E 0203 lsl r3,r0,08h 0802B860 4903 ldr r1,=0203A604h 0802B862 6808 ldr r0,[r1,0h] 0802B864 3004 add r0,4h 0802B866 6008 str r0,[r1,0h] 0802B868 2000 mov r0,0h 0802B86A BC70 pop r4-r6 0802B86C BC02 pop r1 0802B86E 4708 bx r1<------------到这里,0802afcc bl 802b784h程序才执行完了 ============================================================================================================================= ----------------------------------------------------------------------------------------------------------------------------- 追击判定,主程序在顶上,这里只写个入口 0802AE9E 4668 mov r0,sp〈---------调出两方指针 0802AEA0 1C21 add r1,r4,0h〈---------调出两方指针 0802AEA2 F000 bl 0802AF00h〈---------是否追击计算 ----------------------------------------------------- 追击计算开始 0802AF00 B5F0 push r4-r7,lr 0802AF02 1C04 add r4,r0,0h 0802AF04 1C0F add r7,r1,0h 0802AF06 480B ldr r0,=0203A568h<------给出敌人基地址 0802AF08 1C02 add r2,r0,0h 0802AF0A 325E add r2,5Eh<------偏移5e 0802AF0C 2300 mov r3,0h 0802AF0E 5ED1 ldsh r1,[r2,r3]<------读出敌人攻击速度 0802AF10 1C06 add r6,r0,0h 0802AF12 29FA cmp r1,FAh 0802AF14 DC34 bgt 0802AF80h<------敌人攻击速度大于FAh就转移 0802AF16 4808 ldr r0,=0203A4E8h<------给出自己基地址 0802AF18 1C01 add r1,r0,0h 0802AF1A 315E add r1,5Eh<------偏移5e 0802AF1C 2500 mov r5,0h 0802AF1E 5F4B ldsh r3,[r1,r5]<------读出自己攻击速度 0802AF20 2100 mov r1,0h 0802AF22 5E52 ldsh r2,[r2,r1]<------再次读出敌人攻击速度 0802AF24 1A99 sub r1,r3,r2<------自己攻击速度-敌人攻击速度 0802AF26 1C05 add r5,r0,0h 0802AF28 2900 cmp r1,0h 0802AF2A DB07 blt 0802AF3Ch<------小于0转移,就是不能自己不能追击,但是敌人是否追击还不一定 0802AF2C 2903 cmp r1,3h 0802AF2E DD27 ble 0802AF80h<------大于0而小于3转移,就是不能自己不能追击,敌人不能追击 0802AF30 E007 b 0802AF42h<------大于3转移,自己能追击,敌人不能追击
0802AF32 0000 lsl r0,r0,00h《---------------------未知 0802AF34 A568 add r5,pc,1A0h (=0802B0D8h) 0802AF36 0203 lsl r3,r0,08h 0802AF38 A4E8 add r4,pc,3A0h (=0802B2DCh) 0802AF3A 0203 lsl r3,r0,08h《---------------------未知
0802AF3C 1AD0 sub r0,r2,r3<------敌人攻击速度-自己攻击速度 0802AF3E 2803 cmp r0,3h 0802AF40 DD1E ble 0802AF80h<------小于3转移,就是敌人也不能追击 0802AF42 1C28 add r0,r5,0h 0802AF44 305E add r0,5Eh 0802AF46 1C32 add r2,r6,0h 0802AF48 325E add r2,5Eh 0802AF4A 2300 mov r3,0h 0802AF4C 5EC1 ldsh r1,[r0,r3]<------读出自己攻击速度 0802AF4E 2300 mov r3,0h 0802AF50 5ED0 ldsh r0,[r2,r3]<------读出敌人攻击速度 0802AF52 4281 cmp r1,r0 0802AF54 DD02 ble 0802AF5Ch〈-----谁大谁追击 0802AF56 6025 str r5,[r4,0h]〈-----! 0802AF58 603E str r6,[r7,0h]〈-----! 0802AF5A E001 b 0802AF60h 0802AF5C 6026 str r6,[r4,0h]〈-----!! 0802AF5E 603D str r5,[r7,0h]〈-----!!
0802AF60 6820 ldr r0,[r4,0h] 0802AF62 304A add r0,4Ah 0802AF64 8800 ldrh r0,[r0,0h] 0802AF66 F7EC bl 080174CCh〈------武器处理? 0802AF6A 2803 cmp r0,3h 0802AF6C D008 beq 0802AF80h 0802AF6E 6820 ldr r0,[r4,0h] 0802AF70 3048 add r0,48h 0802AF72 8800 ldrh r0,[r0,0h] 0802AF74 F7EC bl 08017294h〈------武器处理
0802AF78 28B5 cmp r0,B5h 0802AF7A D001 beq 0802AF80h〈-----与B5比较,奇怪 0802AF7C 2001 mov r0,1h 0802AF7E E000 b 0802AF82h 0802AF80 2000 mov r0,0h 0802AF82 BCF0 pop r4-r7 0802AF84 BC02 pop r1 0802AF86 4708 bx r1〈----------追击计算完毕
------------------------------------------- 敌人减HP程序r4=203a568,r7=203a530
0802B644 491E ldr r1,=0203A4D0h《-----赋基址 0802B646 2213 mov r2,13h《-----偏移13H 0802B648 56A2 ldrh r2,[r4,r2]<----读得对手HP 0802B64A 2304 mov r3,4h《-----偏移4H 0802B64C 5EC8 ldsh r0,[r1,r3]<----读得自己对敌人实际伤害 0802B64E 4290 cmp r0,r2<----比较对手HP剩余与伤害大小 0802B650 DD00 ble 0802B654h《-----实际伤害小于等于(有符号) 现有HP转移0802B654》 0802B652 808A strh r2,[r1,4h]《-----实际伤害大于现有HP,存入伤害?
》0802B654 7909 ldrb r1,[r1,4h]<----读得自己对敌人实际伤害 0802B656 7CE0 ldrb r0,[r4,13h]<----读得对手HP 0802B658 1A40 sub r0,r0,r1〈----得出对手剩余HP 0802B65A 74E0 strb r0,[r4,13h]〈----存入对手剩余HP 0802B65C 0600 lsl r0,r0,18h 0802B65E 2800 cmp r0,0h〈----移位对手剩余HP后与0作比较 0802B660 DA01 bge 0802B666h〈----移位对手剩余HP大于等于0则转移》 0802B662 2000 mov r0,0h 0802B664 74E0 strb r0,[r4,13h]〈----否则将0存入敌人HP所指示位置
》0802B666 8838 ldrh r0,[r7,0h]<----读得r7所在地址数据,这里是00001417,估计是前面处理的数据 0802B668 F7EB bl 080174CCh ---------------------------------------------------------------------------------------------------------------------------- 080174CCh小程序,现在估计于很多技能的控制都有关!!!
080174CC 21FF mov r1,FFh 080174CE 4008 and r0,r1<----保留后8位000000XX 080174D0 00C1 lsl r1,r0,03h<----ff*8倍? 080174D2 1809 add r1,r1,r0<----? 080174D4 0089 lsl r1,r1,02h<----和的4倍? 080174D6 4802 ldr r0,=0885E068h《-----读取武器基数 080174D8 1809 add r1,r1,r0 080174DA 7FC8 ldrb r0,[r1,1Fh] 080174DC 4770 bx lr------》程序数据处理完毕,退出到入口下一步0802B66c ----------------------------------------------------------------------------------------------------------------------------- 自己+HP程序,r4=203a568,r5=203a4e8,r7=203a530自己r7=203a570敌人
0802B66C 2802 cmp r0,2h《---小程序内对r0的处理后续,r0=2则判定是吸血魔法,从这里可以做出天圣技 0802B66E D118 bne 0802B6A2h-----》r0不等于2就跳过25条判定。。。。。。。。 0802B670 4813 ldr r0,=0203A4D0h《-----赋基址 0802B672 7900 ldrb r0,[r0,4h]<----读得自己对敌人实际伤害 0802B674 7CE9 ldrb r1,[r5,13h]<----读得自己HP 0802B676 1840 add r0,r0,r1〈----HP与伤害相加 0802B678 74E8 strb r0,[r5,13h]〈----HP与伤害相加存入自己HP地址 0802B67A 0600 lsl r0,r0,18h 0802B67C 1600 asr r0,r0,18h 0802B67E 7CAA ldrb r2,[r5,12h] 0802B680 2112 mov r1,12h 0802B682 5669 ldrh r1,[r5,r1] 0802B684 4288 cmp r0,r1〈-----现有HP与最大HP比较,看是否溢出 0802B686 DD00 ble 0802B68Ah〈-----没溢出转移 0802B688 74EA strb r2,[r5,13h]〈-----溢出,重新把最大HP存入人物HP地址
0802B68A 480E ldr r0,=0203A604h《-----r0赋值,可以用mov r0,r6暂时替代不知道是否可以。 0802B68C 6803 ldr r3,[r0,0h]〈-----+HP数据处理显示 0802B68E 681A ldr r2,[r3,0h]〈-----+HP数据处理显示 0802B690 0351 lsl r1,r2,0Dh〈-----+HP数据处理显示 0802B692 0B49 lsr r1,r1,0Dh〈-----+HP数据处理显示 0802B694 2080 mov r0,80h〈-----+HP数据处理显示 0802B696 0040 lsl r0,r0,01h〈-----+HP数据处理显示 0802B698 4301 orr r1,r0〈-----+HP数据处理显示 0802B69A 480B ldr r0,=FFF80000h〈-----+HP数据处理显示 0802B69C 4010 and r0,r2〈-----+HP数据处理显示 0802B69E 4308 orr r0,r1〈-----+HP数据处理显示 0802B6A0 6018 str r0,[r3,0h]〈-----+HP数据处理显示
0802B6A2 8838 ldrh r0,[r7,0h] 0802B6A4 F7EB bl 080174CCh
----------------------------------------------------------------------------------------------------------------------------
[ 此贴被无聊之士在2007-06-12 09:55重新编辑 ]
|
姓:郑 名:长春 号:无聊之士! 欢迎到网络U盘地址:http://zhengchangchun.ys168.com/ 来~ 个人空间http://i.cn.yahoo.com/zhengchangchun2003
|
[楼 主]
|
Posted:2007-06-09 19:26| |
顶端
| |