Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .thumb
- .macro blh to, reg=r3
- ldr \reg, =\to
- mov lr, \reg
- .short 0xF800
- .endm
- .equ RoutineToCall, EALiterals+0x00
- ForEachUnitInRange:
- push {r4-r7, lr}
- mov r6, r0 @ r6 is current stat
- mov r7, r1 @ r7 is unit ptr
- bl ClearRangeMap
- @ r0 = unit x
- mov r0, #0x10
- ldsb r0, [r7, r0]
- @ r1 = unit y
- mov r1, #0x11
- ldsb r1, [r7, r1]
- mov r2, #0 @ To fill with EA
- mov r3, #1 @ To fill with EA
- bl FillRangeMap
- ldr r0, =0x0202E4D4
- @ r5 = yIt
- mov r5, #2
- ldsh r5, [r0, r5]
- StartYLoop:
- sub r5, #1
- cmp r5, #0
- blt End @ end y loop
- ldr r0, =0x0202E4D4
- @ r4 = xIt
- mov r4, #0
- ldsh r4, [r0, r4]
- StartXLoop:
- sub r4, #1
- cmp r4, #0
- blt StartYLoop @ end x loop
- lsl r1, r5, #2 @ r1 = r5*sizeof(ptr)
- ldr r0, =0x0202E4E4
- ldr r0, [r0] @ pointer to range map rows
- add r0, r1
- ldr r0, [r0] @ pointer to current range row
- add r0, r4
- ldrb r0, [r0] @ current range byte (0 or 1)
- cmp r0, #0
- beq StartXLoop @ not in range
- ldr r0, =0x0202E4D8
- ldr r0, [r0] @ pointer to unit map rows
- add r0, r1
- ldr r0, [r0] @ pointer to current unit row
- add r0, r4
- ldrb r0, [r0] @ current unit byte (Allegience | unitIndex)
- cmp r0, #0
- beq StartXLoop
- blh 0x08019430 @ get unit struct ptr
- mov r2, r0 @ r2 = second unit
- mov r1, r7 @ r1 = current unit
- mov r0, r6 @ r0 = current stat
- bl RoutineToCall
- mov r6, r0 @ store modified stat
- beq StartXLoop
- .ltorg
- End:
- mov r0, r6
- pop {r4-r7, pc}
- .ltorg
- ClearRangeMap:
- push {lr}
- ldr r0, =0x0202E4E4 @ pointer to range map rows
- ldr r0, [r0]
- mov r1, #0
- blh 0x080197E4
- pop {pc}
- .ltorg
- FillRangeMap: @ r0 = x, r1 = y, r2 = min, r3 = max
- push {r4-r7, lr}
- mov r4, r2 @ r4 = min, use for later
- @ [r5, r6] = [x, y]
- mov r5, r0
- mov r6, r1
- mov r2, r3 @ range = max
- mov r3, #1 @ fill = 1
- blh 0x0801AABC, r7
- @ [r0, r1] = [x, y]
- mov r0, r5
- mov r1, r6
- mov r2, r4 @ range = min
- mov r3, #1
- neg r3, r3 @ fill = -1
- blh 0x0801AABC, r7
- pop {r4-r7, pc}
- .ltorg
- .align
- EALiterals:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement