.org $37fbacc
ldr pc, Target
.org $37fbad4
Target:
.long 0x2000000
037FBACC E59FF000
037FBAD4 02000000
037FBACC E3A00005 //Disabler for reloading test script
037FBAD4 E12FFF1C
.org $2000000
ldr r0, CustomStack
stmdb r0!, {r1-r11, lr}
sub r0, #0x4
ldrb r3, [r0]
sub r1, r0, #0x4
ldr r2, [r1]
ldr r4, IOFetch
ldrh r4, [r4]
and r4, r4, #0x8
cmp r4, #0x0
bne NoIncrement
cmp r2, #0x1
beq There
add r3, #0x1
mov r2, #0x1
str r2, [r1]
b There
NoIncrement:
mov r2, #0x0
str r2, [r1]
There:
and r3, r3, #0x3
strb r3, [r0]
mov r2, #0xf30
ldr r1, Who
ldr r1, [r1]
cmp r1, r3
beq AimAtSelf
mul r0, r1, r2
mul r5, r3, r2
ldr r4, Base
add r5, r5, r4
add r4, r4, r0
ldr r8, [r4]
ldr r9, [r5]
sub r8, r9, r8
ldr r9, [r4, #0x4]
ldr r10, [r5, #0x4]
sub r9, r10, r9
ldr r10, [r4, #0x8]
ldr r3, [r5, #0x8]
sub r10, r10, r3
ldr r2, CorrectionScalarTwo
mov r0, #0x0
mov r1, #0x0
smlal r1, r0, r2, r9
lsr r1, r1, #0x10
lsl r0, r0, #0x10
add r9, r0, r1
mov r3, r8
bl Sixteen
mov r3, r9
bl Sixteen
mov r3, r10
bl Sixteen
b Seventeen
Sixteen:
and r6, r3, #0x80000000
cmp r6, #0x0
rsbne r3, r3, #0x0
orr r3, r3, #0x4000
mov r6, #0x0
Eighteen:
and r7, r3, #0x80000000
cmp r7, #0x0
bne Shift
lsl r3, r3, #0x1
add r6, #0x1
b Eighteen
Shift:
rsb r6, r6, #0x11
asr r8, r8, r6
asr r9, r9, r6
asr r10, r10, r6
bx lr
Seventeen:
cmp r8, #0x0
beq DivByZero
and r6, r8, #0x80000000
lsl r0, r10, #0x10
mov r1, r8
swi #0x90000
mul r0, r8, r8
ldr r1, CorrectionScalar
ldr r2, TestOne
mov r11, #0x6
cmp r3, r2
blt Divide
lsl r11, #0x10
eor r1, r1, r11
lsr r11, #0x10
add r11, #0x7
ldr r2, TestTwo
cmp r3, r2
blt Divide
lsl r11, #0x10
eor r1, r1, r11
lsr r11, #0x10
add r11, #0x3
ldr r2, TestThree
cmp r3, r2
blt Divide
lsl r11, #0x10
eor r1, r1, r11
Divide:
swi #0x90000
lsl r0, r0, #0x10
swi #0xd0000
cmp r6, #0x0
rsbne r0, r0, #0x0
mov r8, r0
DivByZero:
mul r0, r8, r8
mul r1, r10, r10
add r0, r0, r1
swi #0xd0000
mov r1, r9
and r6, r1, #0x80000000
cmp r6, #0x0
rsbne r1, r1, #0x0
orr r11, r0, #0x4000
mov r3, #0x0
Nineteen:
and r2, r11, #0x80000000
cmp r2, #0x0
bne Swerve
lsl r11, r11, #0x1
add r3, #0x1
b Nineteen
Swerve:
rsb r3, r3, #0x11
asr r0, r0, r3
asr r1, r1, r3
bl Arctan
and r7, r0, #0x8000
cmp r7, #0x0
eorne r0, r0, #0x8000
lsr r0, r0, #0x1
cmp r6, #0x0
rsbne r0, r0, #0x0
str r0, [r4, #0x84]
mov r0, r8
mov r1, r10
and r6, r0, #0x80000000
cmp r6, #0x0
rsbne r0, r0, #0x0
and r7, r1, #0x80000000
cmp r7, #0x0
rsbne r1, r1, #0x0
bl Arctan
and r11, r0, #0x8000
cmp r11, #0x0
eorne r0, r0, #0x8000
lsr r0, r0, #0x2
cmp r7, #0x0
rsbeq r0, r0, #0x0
str r0, [r4, #0x88]
ldr r2, [r4, #0x80]
and r3, r2, #0x80000000
cmp r6, r3
beq OldTilt
rsb r2, r2, #0x0
OldTilt:
str r2, [r4, #0x80]
AimAtSelf:
ldr r0, CustomStack
sub r0, #0x30
ldmia r0!, {r1-r11, lr}
mov r0, #0x5
ldr r12, Return
bx r12
CustomStack:
.long 0x2004000
IOFetch:
.long 0x4000130
Who:
.long 0x20d9cb8
Base:
.long 0x20da730
CorrectionScalar:
.long 0x39e28
CorrectionScalarTwo:
.long 0x5e28
TestOne:
.long 0x1186e
TestTwo:
.long 0x20867
TestThree:
.long 0x41c1b
Return:
.long 0x37fbb2c
If you want the Arctan, rip it from the AR code.
|