pmd-red/asm/code_803C1D0.s
mid-kid 99a038284b Translate all .include to #include
This decision was made to reduce the complexity of using .include whilst
juggling with tools/scaninc and tools/preproc:
- tools/scaninc doesn't apply the proper search rules for .include (it
  assumes #include behavior). In particular, it doesn't consider paths
  starting from $PWD, and doesn't scan the included files as a result.
- .include had to be processed before #include by preproc in many cases,
  as code was being included that had to be preprocessed by CPP (think
  of #define). This contradicts standard GCC behavior.

To make include paths consistent across the asm/ data/ and src/
directories, the following files were moved:
- constants/ → include/asm/constants/
- asm/macros/ → include/asm/macros/
- asm/macros.inc → include/asm/macros.inc
- include/macros/m4a.inc → include/asm/macros/m4a.inc

As part of the necessary changes for this to work, the scaninc method in
the makefile was improved to generate .d files that don't choke when
files are missing.
2021-12-20 16:29:12 +01:00

664 lines
9.8 KiB
ArmAsm

#include "asm/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 CopyYellowSpeciesNametoBuffer
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 xxx_bit_lut_lookup_8091E50
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 xxx_bit_lut_lookup_8091E50
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