mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-27 23:10:50 +00:00
99a038284b
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.
342 lines
5.0 KiB
ArmAsm
342 lines
5.0 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_8097FA8
|
|
sub_8097FA8:
|
|
lsls r0, 24
|
|
ldr r1, _08097FCC
|
|
ldr r3, [r1]
|
|
lsrs r1, r0, 29
|
|
lsls r1, 2
|
|
adds r3, 0x48
|
|
adds r3, r1
|
|
movs r1, 0xF8
|
|
lsls r1, 21
|
|
ands r1, r0
|
|
lsrs r1, 24
|
|
movs r2, 0x1
|
|
lsls r2, r1
|
|
ldr r0, [r3]
|
|
orrs r0, r2
|
|
str r0, [r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_08097FCC: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8097FA8
|
|
|
|
thumb_func_start sub_8097FD0
|
|
sub_8097FD0:
|
|
lsls r0, 24
|
|
ldr r1, _08097FF4
|
|
ldr r3, [r1]
|
|
lsrs r1, r0, 29
|
|
lsls r1, 2
|
|
adds r3, 0x3C
|
|
adds r3, r1
|
|
movs r1, 0xF8
|
|
lsls r1, 21
|
|
ands r1, r0
|
|
lsrs r1, 24
|
|
movs r2, 0x1
|
|
lsls r2, r1
|
|
ldr r0, [r3]
|
|
orrs r0, r2
|
|
str r0, [r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_08097FF4: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8097FD0
|
|
|
|
thumb_func_start sub_8097FF8
|
|
sub_8097FF8:
|
|
push {r4-r7,lr}
|
|
movs r4, 0
|
|
ldr r6, _08098040
|
|
movs r7, 0x1
|
|
_08098000:
|
|
ldr r5, [r6]
|
|
adds r0, r4, 0
|
|
cmp r4, 0
|
|
bge _0809800A
|
|
adds r0, 0x1F
|
|
_0809800A:
|
|
asrs r0, 5
|
|
lsls r3, r0, 2
|
|
adds r1, r5, 0
|
|
adds r1, 0x48
|
|
adds r1, r3
|
|
lsls r0, 5
|
|
subs r0, r4, r0
|
|
adds r2, r7, 0
|
|
lsls r2, r0
|
|
ldr r0, [r1]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08098030
|
|
adds r1, r5, 0
|
|
adds r1, 0x3C
|
|
adds r1, r3
|
|
ldr r0, [r1]
|
|
orrs r0, r2
|
|
str r0, [r1]
|
|
_08098030:
|
|
adds r4, 0x1
|
|
cmp r4, 0x3F
|
|
ble _08098000
|
|
bl sub_8098080
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08098040: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8097FF8
|
|
|
|
thumb_func_start sub_8098044
|
|
sub_8098044:
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
ldr r1, _0809807C
|
|
ldr r3, [r1]
|
|
lsrs r5, r0, 29
|
|
lsls r5, 2
|
|
adds r4, r3, 0
|
|
adds r4, 0x3C
|
|
adds r4, r5
|
|
movs r1, 0xF8
|
|
lsls r1, 21
|
|
ands r1, r0
|
|
lsrs r1, 24
|
|
movs r2, 0x1
|
|
lsls r2, r1
|
|
mvns r2, r2
|
|
ldr r0, [r4]
|
|
ands r0, r2
|
|
str r0, [r4]
|
|
adds r3, 0x48
|
|
adds r3, r5
|
|
ldr r0, [r3]
|
|
ands r0, r2
|
|
str r0, [r3]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809807C: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8098044
|
|
|
|
thumb_func_start sub_8098080
|
|
sub_8098080:
|
|
push {r4,lr}
|
|
movs r2, 0
|
|
ldr r4, _080980A0
|
|
movs r3, 0
|
|
_08098088:
|
|
ldr r0, [r4]
|
|
lsls r1, r2, 2
|
|
adds r0, 0x48
|
|
adds r0, r1
|
|
str r3, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x2
|
|
ble _08098088
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080980A0: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8098080
|
|
|
|
thumb_func_start sub_80980A4
|
|
sub_80980A4:
|
|
ldr r0, _080980B0
|
|
ldr r2, [r0]
|
|
ldrb r0, [r2]
|
|
movs r1, 0x1
|
|
strb r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_080980B0: .4byte gUnknown_203B498
|
|
thumb_func_end sub_80980A4
|
|
|
|
thumb_func_start sub_80980B4
|
|
sub_80980B4:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
adds r3, r1, 0
|
|
ldr r0, _080980F8
|
|
cmp r1, r0
|
|
beq _080980F4
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
beq _080980F4
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
beq _080980F4
|
|
ldr r0, _080980FC
|
|
ldr r2, [r0]
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _080980DA
|
|
adds r0, 0x1F
|
|
_080980DA:
|
|
asrs r0, 5
|
|
lsls r1, r0, 2
|
|
adds r2, 0x4
|
|
adds r2, r1
|
|
lsls r0, 5
|
|
subs r0, r3, r0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
lsls r1, r0
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
_080980F4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080980F8: .4byte 0x000001a5
|
|
_080980FC: .4byte gUnknown_203B498
|
|
thumb_func_end sub_80980B4
|
|
|
|
thumb_func_start sub_8098100
|
|
sub_8098100:
|
|
push {lr}
|
|
lsls r1, r0, 24
|
|
lsrs r3, r1, 24
|
|
cmp r3, 0x3F
|
|
bls _0809810E
|
|
movs r0, 0
|
|
b _0809812C
|
|
_0809810E:
|
|
ldr r0, _08098130
|
|
ldr r2, [r0]
|
|
lsrs r0, r1, 29
|
|
lsls r0, 2
|
|
adds r2, 0x3C
|
|
adds r2, r0
|
|
movs r0, 0x1F
|
|
ands r0, r3
|
|
movs r1, 0x1
|
|
lsls r1, r0
|
|
ldr r0, [r2]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0809812C
|
|
movs r0, 0x1
|
|
_0809812C:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08098130: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8098100
|
|
|
|
thumb_func_start sub_8098134
|
|
sub_8098134:
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
adds r3, r1, 0
|
|
ldr r0, _0809816C
|
|
ldr r2, [r0]
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _08098148
|
|
adds r0, 0x1F
|
|
_08098148:
|
|
asrs r0, 5
|
|
lsls r1, r0, 2
|
|
adds r2, 0x4
|
|
adds r2, r1
|
|
lsls r0, 5
|
|
subs r0, r3, r0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
lsls r1, r0
|
|
ldr r0, [r2]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08098166
|
|
movs r0, 0x1
|
|
_08098166:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0809816C: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8098134
|
|
|
|
thumb_func_start sub_8098170
|
|
sub_8098170:
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r0, _0809819C
|
|
ldr r2, [r0]
|
|
adds r0, r3, 0
|
|
cmp r3, 0
|
|
bge _08098180
|
|
adds r0, 0x1F
|
|
_08098180:
|
|
asrs r0, 5
|
|
lsls r1, r0, 2
|
|
adds r2, 0x54
|
|
adds r2, r1
|
|
lsls r0, 5
|
|
subs r0, r3, r0
|
|
movs r1, 0x1
|
|
lsls r1, r0
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809819C: .4byte gUnknown_203B498
|
|
thumb_func_end sub_8098170
|
|
|
|
thumb_func_start sub_80981A0
|
|
sub_80981A0:
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
cmp r3, 0x1E
|
|
ble _080981AC
|
|
movs r0, 0
|
|
b _080981D4
|
|
_080981AC:
|
|
ldr r0, _080981D8
|
|
ldr r2, [r0]
|
|
adds r1, r3, 0
|
|
cmp r3, 0
|
|
bge _080981B8
|
|
adds r1, 0x1F
|
|
_080981B8:
|
|
asrs r1, 5
|
|
lsls r0, r1, 2
|
|
adds r2, 0x54
|
|
adds r2, r0
|
|
lsls r1, 5
|
|
subs r1, r3, r1
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
ldr r2, [r2]
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080981D2
|
|
movs r2, 0x1
|
|
_080981D2:
|
|
adds r0, r2, 0
|
|
_080981D4:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080981D8: .4byte gUnknown_203B498
|
|
thumb_func_end sub_80981A0
|
|
|
|
.align 2,0
|