summaryrefslogtreecommitdiff
path: root/asm/code_803C1D0.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_803C1D0.s')
-rw-r--r--asm/code_803C1D0.s663
1 files changed, 663 insertions, 0 deletions
diff --git a/asm/code_803C1D0.s b/asm/code_803C1D0.s
new file mode 100644
index 0000000..c40c6f7
--- /dev/null
+++ b/asm/code_803C1D0.s
@@ -0,0 +1,663 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_803C1D0
+sub_803C1D0:
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_803C1B4
+ adds r1, r0, 0
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r1, r0, 1
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0x6
+ bls _0803C1EC
+ movs r0, 0x6
+_0803C1EC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803C1D0
+
+ thumb_func_start sub_803C1F0
+sub_803C1F0:
+ lsls r0, 24
+ ldr r1, _0803C1FC
+ lsrs r0, 22
+ adds r0, r1
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_0803C1FC: .4byte gUnknown_80E8BF8
+ thumb_func_end sub_803C1F0
+
+ thumb_func_start sub_803C200
+sub_803C200:
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_803C1B4
+ ldr r1, _0803C218
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803C218: .4byte gUnknown_80E80A0
+ thumb_func_end sub_803C200
+
+ thumb_func_start sub_803C21C
+sub_803C21C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r6, 0x4
+ ldrb r1, [r6, 0x1]
+ bl sub_803C1D0
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r0, 0
+ str r0, [r4, 0x18]
+ movs r3, 0
+ movs r1, 0x2
+ adds r0, r4, 0
+ adds r0, 0x1E
+_0803C23E:
+ strb r3, [r0]
+ subs r0, 0x1
+ subs r1, 0x1
+ cmp r1, 0
+ bge _0803C23E
+ adds r0, r4, 0
+ adds r0, 0x20
+ movs r1, 0
+ strb r1, [r0]
+ movs r1, 0xA
+ strb r1, [r4, 0x1F]
+ ldrb r1, [r6, 0x11]
+ adds r3, r0, 0
+ cmp r1, 0x9
+ bhi _0803C354
+ lsls r0, r1, 2
+ ldr r1, _0803C268
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0803C268: .4byte _0803C26C
+ .align 2, 0
+_0803C26C:
+ .4byte _0803C294
+ .4byte _0803C2A2
+ .4byte _0803C2B4
+ .4byte _0803C2BE
+ .4byte _0803C354
+ .4byte _0803C2E0
+ .4byte _0803C2EE
+ .4byte _0803C300
+ .4byte _0803C30A
+ .4byte _0803C34A
+_0803C294:
+ movs r0, 0
+ strb r0, [r4, 0x16]
+ adds r1, r2, 0x1
+ movs r0, 0x64
+ muls r0, r1
+ str r0, [r4, 0x18]
+ b _0803C358
+_0803C2A2:
+ movs r0, 0x1
+ strb r0, [r4, 0x16]
+ adds r1, r2, 0x1
+ movs r0, 0x64
+ muls r0, r1
+ str r0, [r4, 0x18]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ b _0803C358
+_0803C2B4:
+ movs r0, 0x2
+ strb r0, [r4, 0x16]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ b _0803C358
+_0803C2BE:
+ movs r0, 0x3
+ strb r0, [r4, 0x16]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ adds r5, r6, 0x4
+ adds r7, r4, 0
+ adds r7, 0x1D
+_0803C2CC:
+ ldrb r1, [r6, 0x1]
+ adds r0, r5, 0
+ adds r2, r7, 0
+ bl sub_803C37C
+ ldrb r0, [r4, 0x1C]
+ ldrb r1, [r4, 0x1D]
+ cmp r0, r1
+ beq _0803C2CC
+ b _0803C35A
+_0803C2E0:
+ movs r0, 0
+ strb r0, [r4, 0x16]
+ adds r1, r2, 0x1
+ movs r0, 0xC8
+ muls r0, r1
+ str r0, [r4, 0x18]
+ b _0803C358
+_0803C2EE:
+ movs r0, 0x1
+ strb r0, [r4, 0x16]
+ adds r1, r2, 0x1
+ movs r0, 0xC8
+ muls r0, r1
+ str r0, [r4, 0x18]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ b _0803C358
+_0803C300:
+ movs r0, 0x2
+ strb r0, [r4, 0x16]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ b _0803C358
+_0803C30A:
+ movs r0, 0x3
+ strb r0, [r4, 0x16]
+ ldrb r0, [r6, 0x12]
+ strb r0, [r4, 0x1C]
+ adds r5, r6, 0x4
+ adds r7, r4, 0
+ adds r7, 0x1D
+ movs r0, 0x1E
+ adds r0, r4
+ mov r8, r0
+_0803C31E:
+ ldrb r1, [r6, 0x1]
+ adds r0, r5, 0
+ adds r2, r7, 0
+ bl sub_803C37C
+ ldrb r0, [r4, 0x1C]
+ ldrb r1, [r4, 0x1D]
+ cmp r0, r1
+ beq _0803C31E
+_0803C330:
+ ldrb r1, [r6, 0x1]
+ adds r0, r5, 0
+ mov r2, r8
+ bl sub_803C37C
+ ldrb r0, [r4, 0x1C]
+ ldrb r1, [r4, 0x1E]
+ cmp r0, r1
+ beq _0803C330
+ ldrb r0, [r4, 0x1D]
+ cmp r0, r1
+ beq _0803C330
+ b _0803C35A
+_0803C34A:
+ movs r0, 0x4
+ strb r0, [r4, 0x16]
+ ldrb r0, [r6, 0x13]
+ strb r0, [r3]
+ b _0803C358
+_0803C354:
+ movs r0, 0x5
+ strb r0, [r4, 0x16]
+_0803C358:
+ adds r5, r6, 0x4
+_0803C35A:
+ movs r0, 0xC
+ ldrsh r1, [r6, r0]
+ adds r0, r4, 0
+ bl sub_808D8E0
+ ldrh r0, [r6, 0xC]
+ strh r0, [r4, 0x14]
+ ldrb r1, [r6, 0x1]
+ adds r0, r5, 0
+ bl sub_803C200
+ str r0, [r4, 0x24]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_803C21C
+
+ thumb_func_start sub_803C37C
+sub_803C37C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ mov r8, r2
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_803C1B4
+ adds r7, r0, 0
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_8090910
+_0803C398:
+ movs r5, 0
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_8090910
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xEA
+ bne _0803C3BA
+ movs r0, 0
+ movs r1, 0x47
+ movs r2, 0x1
+ bl sub_8001784
+ negs r1, r0
+ orrs r1, r0
+ lsrs r5, r1, 31
+_0803C3BA:
+ cmp r4, 0xEB
+ bne _0803C3CE
+ movs r0, 0
+ movs r1, 0x47
+ movs r2, 0
+ bl sub_8001784
+ cmp r0, 0
+ beq _0803C3CE
+ movs r5, 0x1
+_0803C3CE:
+ cmp r5, 0
+ bne _0803C398
+ mov r0, r8
+ strb r4, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_803C37C
+
+ thumb_func_start sub_803C3E0
+sub_803C3E0:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x54
+ adds r7, r0, 0
+ movs r6, 0
+ ldr r5, _0803C42C
+ movs r4, 0
+ mov r8, sp
+_0803C3F2:
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C41A
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C41A
+ mov r0, r8
+ adds r0, 0x4
+ mov r8, r0
+ subs r0, 0x4
+ stm r0!, {r4}
+ adds r6, 0x1
+_0803C41A:
+ adds r5, 0x8
+ adds r4, 0x1
+ cmp r4, 0x14
+ ble _0803C3F2
+ ldr r5, _0803C42C
+ cmp r6, 0
+ bne _0803C430
+ movs r0, 0
+ b _0803C44E
+ .align 2, 0
+_0803C42C: .4byte gUnknown_80E9920
+_0803C430:
+ adds r0, r6, 0
+ bl RandomCapped
+ lsls r0, 2
+ add r0, sp
+ ldr r4, [r0]
+ lsls r0, r4, 3
+ adds r5, r0, r5
+ ldrh r0, [r5]
+ strh r0, [r7, 0xC]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r7, 0xE]
+ movs r0, 0x7
+ strb r0, [r7, 0x2]
+ movs r0, 0x1
+_0803C44E:
+ add sp, 0x54
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803C3E0
+
+ thumb_func_start sub_803C45C
+sub_803C45C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xB4
+ adds r7, r0, 0
+ movs r6, 0
+ ldr r5, _0803C4CC
+ movs r4, 0
+ mov r8, sp
+_0803C46E:
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C496
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C496
+ mov r0, r8
+ adds r0, 0x4
+ mov r8, r0
+ subs r0, 0x4
+ stm r0!, {r4}
+ adds r6, 0x1
+_0803C496:
+ adds r5, 0xC
+ adds r4, 0x1
+ cmp r4, 0x2C
+ ble _0803C46E
+ ldr r5, _0803C4CC
+ cmp r6, 0
+ beq _0803C4E0
+ adds r0, r6, 0
+ bl RandomCapped
+ lsls r0, 2
+ add r0, sp
+ ldr r4, [r0]
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r5, r0, r5
+ bl Random
+ movs r1, 0x10
+ ands r1, r0
+ cmp r1, 0
+ beq _0803C4D0
+ ldrh r0, [r5]
+ strh r0, [r7, 0xC]
+ ldrh r0, [r5, 0x2]
+ b _0803C4D6
+ .align 2, 0
+_0803C4CC: .4byte gUnknown_80E9F8C
+_0803C4D0:
+ ldrh r0, [r5, 0x2]
+ strh r0, [r7, 0xC]
+ ldrh r0, [r5]
+_0803C4D6:
+ strh r0, [r7, 0xE]
+ movs r0, 0x8
+ strb r0, [r7, 0x2]
+ movs r0, 0x1
+ b _0803C4E2
+_0803C4E0:
+ movs r0, 0
+_0803C4E2:
+ add sp, 0xB4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803C45C
+
+ thumb_func_start sub_803C4F0
+sub_803C4F0:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x18
+ adds r7, r0, 0
+ movs r6, 0
+ ldr r5, _0803C55C
+ movs r4, 0
+ mov r8, sp
+_0803C502:
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C52A
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C52A
+ mov r0, r8
+ adds r0, 0x4
+ mov r8, r0
+ subs r0, 0x4
+ stm r0!, {r4}
+ adds r6, 0x1
+_0803C52A:
+ adds r5, 0x4
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _0803C502
+ ldr r5, _0803C55C
+ cmp r6, 0
+ beq _0803C570
+ adds r0, r6, 0
+ bl RandomCapped
+ lsls r0, 2
+ add r0, sp
+ ldr r4, [r0]
+ lsls r0, r4, 2
+ adds r5, r0, r5
+ bl Random
+ movs r1, 0x10
+ ands r1, r0
+ cmp r1, 0
+ beq _0803C560
+ ldrh r0, [r5]
+ strh r0, [r7, 0xC]
+ ldrh r0, [r5, 0x2]
+ b _0803C566
+ .align 2, 0
+_0803C55C: .4byte gUnknown_80E8168
+_0803C560:
+ ldrh r0, [r5, 0x2]
+ strh r0, [r7, 0xC]
+ ldrh r0, [r5]
+_0803C566:
+ strh r0, [r7, 0xE]
+ movs r0, 0x9
+ strb r0, [r7, 0x2]
+ movs r0, 0x1
+ b _0803C572
+_0803C570:
+ movs r0, 0
+_0803C572:
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_803C4F0
+
+ thumb_func_start sub_803C580
+sub_803C580:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x54
+ adds r6, r0, 0
+ movs r7, 0
+ ldr r5, _0803C5D8
+ movs r0, 0x6
+ bl sub_80023E4
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C5D2
+ movs r4, 0
+ mov r8, sp
+_0803C59E:
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C5C6
+ ldrb r0, [r6, 0x4]
+ ldrb r1, [r5, 0x2]
+ bl sub_8091E60
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C5C6
+ mov r0, r8
+ adds r0, 0x4
+ mov r8, r0
+ subs r0, 0x4
+ stm r0!, {r4}
+ adds r7, 0x1
+_0803C5C6:
+ adds r5, 0x4
+ adds r4, 0x1
+ cmp r4, 0x14
+ ble _0803C59E
+ cmp r7, 0
+ bne _0803C5DC
+_0803C5D2:
+ movs r0, 0
+ b _0803C600
+ .align 2, 0
+_0803C5D8: .4byte gUnknown_80E8180
+_0803C5DC:
+ adds r0, r7, 0
+ bl RandomCapped
+ lsls r0, 2
+ add r0, sp
+ ldr r4, [r0]
+ lsls r1, r4, 2
+ ldr r0, _0803C60C
+ adds r5, r1, r0
+ ldrh r0, [r5]
+ strh r0, [r6, 0xC]
+ ldrh r0, [r5]
+ strh r0, [r6, 0xE]
+ ldrb r0, [r5, 0x2]
+ strb r0, [r6, 0x10]
+ movs r0, 0x5
+ strb r0, [r6, 0x2]
+ movs r0, 0x1
+_0803C600:
+ add sp, 0x54
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803C60C: .4byte gUnknown_80E8180
+ thumb_func_end sub_803C580
+
+ thumb_func_start sub_803C610
+sub_803C610:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r4, _0803C660
+ add sp, r4
+ adds r6, r0, 0
+ movs r7, 0
+ ldr r4, _0803C664
+ movs r5, 0
+ mov r8, sp
+_0803C624:
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl sub_803C110
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C64C
+ ldrb r0, [r6, 0x4]
+ ldrb r1, [r4, 0x2]
+ bl sub_8091E60
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803C64C
+ mov r0, r8
+ adds r0, 0x4
+ mov r8, r0
+ subs r0, 0x4
+ stm r0!, {r5}
+ adds r7, 0x1
+_0803C64C:
+ adds r4, 0x4
+ adds r5, 0x1
+ ldr r0, _0803C668
+ cmp r5, r0
+ ble _0803C624
+ cmp r7, 0
+ bne _0803C66C
+ movs r0, 0
+ b _0803C690
+ .align 2, 0
+_0803C660: .4byte 0xfffff9f8
+_0803C664: .4byte gUnknown_80E81D4
+_0803C668: .4byte 0x00000181
+_0803C66C:
+ adds r0, r7, 0
+ bl RandomCapped
+ lsls r0, 2
+ add r0, sp
+ ldr r5, [r0]
+ lsls r1, r5, 2
+ ldr r0, _0803C6A0
+ adds r4, r1, r0
+ ldrh r0, [r4]
+ strh r0, [r6, 0xC]
+ ldrh r0, [r4]
+ strh r0, [r6, 0xE]
+ ldrb r0, [r4, 0x2]
+ strb r0, [r6, 0x10]
+ movs r0, 0x6
+ strb r0, [r6, 0x2]
+ movs r0, 0x1
+_0803C690:
+ movs r3, 0xC1
+ lsls r3, 3
+ add sp, r3
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803C6A0: .4byte gUnknown_80E81D4
+ thumb_func_end sub_803C610
+
+ .align 2,0