SHOW:
|
|
- or go back to the newest paste.
1 | - | DIDefBonusBonusCheck: |
1 | + | DIDefCheck: |
2 | push r1 | |
3 | push r0 | |
4 | push {r2-r7} | |
5 | mov r0,0x0 | |
6 | ldr r6,=0x03003FC8 | |
7 | ldrb r6,[r6] | |
8 | cmp r6,0x0 | |
9 | beq DIDefBonusEnd | |
10 | ldr r0,=0x030013B0 ;(r5=030013D0) | |
11 | ldr r0,[r0] ;r0=UnitArray | |
12 | ldrb r0,[r0] ;r0=UnitID | |
13 | mov r2,0x5C | |
14 | mul r0,r2 | |
15 | - | ldr r2,=0x085D5B18 |
15 | + | ldr r2,=0x085D5ABC |
16 | - | add r0,r2 |
16 | + | add r0,r0,r2 |
17 | ldrb r0,[r0,0xE] ;r0=UnitRange | |
18 | mov r6,r0 | |
19 | ||
20 | ldr r0,[r5] ;r5=UnitData | |
21 | ldr r1,=0x02022690 | |
22 | sub r0,r0,r1 | |
23 | ldr r1,=0x300 | |
24 | swi 0x6 ;r0=PlayerID | |
25 | mov r2,0x3C | |
26 | mul r0,r2 | |
27 | ldr r2,=0x020232DD | |
28 | add r0,r0,r2 ;r0=COIDAddress | |
29 | ldrb r5,[r0] ;r5=COID - used later | |
30 | ldrb r1,[r0,0x1] ;r1=COStatus | |
31 | ldr r4,=0x085D66B0 | |
32 | mov r2,0x10 | |
33 | mov r3,0x04 | |
34 | mul r5,r2 ;r5=r5*0x10 | |
35 | mul r1,r3 ;r1=r1*0x04 | |
36 | add r5,r5,r4 | |
37 | add r5,r5,r1 ;r5=SkillBitAddress | |
38 | mov r2,r5 ;r2=SkillBitAddress - used later | |
39 | ldrb r5,[r5] ;r5=SkillBitNum | |
40 | ||
41 | mov r0,r6 | |
42 | cmp r0,0x01 | |
43 | bgt IndirectDefBonus | |
44 | - | ble DirectDefBonus |
44 | + | |
45 | mov r0,r5 | |
46 | mov r1,0x02 | |
47 | and r0,r1 | |
48 | cmp r0,0x00 | |
49 | beq DIDefBonusEnd | |
50 | mov r1,0x1 | |
51 | - | ldrb r2,[r2,0x1] ;r2=Bonus |
51 | + | ldsb r2,[r2,r1] ;r2=Bonus |
52 | - | mov r0,r2 ;r0=Bonus |
52 | + | |
53 | ldr r1,=DIDefBonusEnd | |
54 | bx r1 | |
55 | IndirectDefBonus: | |
56 | mov r0,r5 | |
57 | mov r1,0x04 | |
58 | and r0,r1 | |
59 | - | ldrb r2,[r2,0x1] ;r2=Bonus |
59 | + | |
60 | beq DIDefBonusEnd | |
61 | mov r1,0x1 | |
62 | ldsb r2,[r2,r1] ;r2=Bonus | |
63 | mov r0,r2 ;r0=Bonus | |
64 | ldr r1,=DIDefBonusEnd | |
65 | bx r1 | |
66 | DIDefBonusEnd: | |
67 | pop {r2-r7} | |
68 | mov r1,r0 ;move bonus to r1 | |
69 | pop r0 | |
70 | add r0,r0,r1 ;add bonus | |
71 | pop r1 |