View difference between Paste ID: 4SLMBMHr and 6ncAHbjW
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