pmd-red/asm/code_801DCC4.s
Seth Barberee eaa141c612
Keep on keepin on (#38)
* end of may dump of work

* move save text to src

* decomp a little more
2021-05-23 16:19:35 -05:00

834 lines
13 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_801E198
sub_801E198:
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _0801E210
movs r0, 0xAC
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
stm r0!, {r5}
bl sub_801317C
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x44]
adds r0, r1, 0
adds r0, 0x4C
str r0, [r1, 0x48]
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x44]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x4C
ldr r0, _0801E214
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldr r0, [r4]
ldr r0, [r0, 0x48]
movs r1, 0x1
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x10
ldr r3, [r1, 0x44]
movs r1, 0x1
movs r2, 0x1
bl sub_8013818
bl nullsub_38
bl CreateOptionsMenu
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0801E210: .4byte gUnknown_203B260
_0801E214: .4byte gUnknown_80DC03C
thumb_func_end sub_801E198
thumb_func_start sub_801E218
sub_801E218:
push {r4,lr}
movs r4, 0
bl sub_8012AE8
cmp r0, 0x2
beq _0801E238
cmp r0, 0x2
bgt _0801E22E
cmp r0, 0x1
beq _0801E242
b _0801E294
_0801E22E:
cmp r0, 0x9
beq _0801E24C
cmp r0, 0xA
beq _0801E26C
b _0801E294
_0801E238:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E2BE
_0801E242:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E2BE
_0801E24C:
ldr r0, _0801E264
ldr r1, [r0]
movs r2, 0x28
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0801E294
ldr r1, [r1]
ldrb r0, [r1, 0x8]
cmp r0, 0
bne _0801E268
movs r0, 0x2
b _0801E28A
.align 2, 0
_0801E264: .4byte gUnknown_203B260
_0801E268:
subs r0, 0x1
b _0801E28A
_0801E26C:
ldr r0, _0801E284
ldr r1, [r0]
movs r2, 0x28
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0801E294
ldr r1, [r1]
ldrb r0, [r1, 0x8]
cmp r0, 0x1
bls _0801E288
strb r4, [r1, 0x8]
b _0801E28C
.align 2, 0
_0801E284: .4byte gUnknown_203B260
_0801E288:
adds r0, 0x1
_0801E28A:
strb r0, [r1, 0x8]
_0801E28C:
movs r0, 0x3
bl PlayMenuSoundEffect
movs r4, 0x1
_0801E294:
ldr r0, _0801E2B8
ldr r0, [r0]
adds r0, 0x10
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0801E2AA
cmp r4, 0x1
bne _0801E2BC
_0801E2AA:
bl nullsub_38
bl CreateOptionsMenu
movs r0, 0x1
b _0801E2BE
.align 2, 0
_0801E2B8: .4byte gUnknown_203B260
_0801E2BC:
movs r0, 0
_0801E2BE:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801E218
thumb_func_start sub_801E2C4
sub_801E2C4:
push {r4,r5,lr}
ldr r4, _0801E304
ldr r2, [r4]
cmp r2, 0
beq _0801E2FE
ldr r0, [r2, 0x44]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4C
ldr r0, _0801E308
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801E2FE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E304: .4byte gUnknown_203B260
_0801E308: .4byte gUnknown_80DC020
thumb_func_end sub_801E2C4
thumb_func_start nullsub_38
nullsub_38:
bx lr
thumb_func_end nullsub_38
thumb_func_start CreateOptionsMenu
CreateOptionsMenu:
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0801E368
ldr r0, [r5]
ldr r0, [r0, 0x44]
bl sub_8008C54
ldr r0, [r5]
ldr r0, [r0, 0x44]
bl sub_80073B8
ldr r2, _0801E36C
ldr r0, [r5]
ldr r3, [r0, 0x44]
movs r4, 0
str r4, [sp]
movs r0, 0x10
movs r1, 0
bl xxx_call_draw_string
ldr r0, [r5]
adds r0, 0x10
movs r1, 0
bl sub_8013800
adds r6, r0, 0
ldr r2, _0801E370
ldr r0, [r5]
ldr r3, [r0, 0x44]
str r4, [sp]
movs r0, 0x8
adds r1, r6, 0
bl xxx_call_draw_string
ldr r0, [r5]
ldr r0, [r0]
ldrb r0, [r0, 0x8]
cmp r0, 0x1
beq _0801E384
cmp r0, 0x1
bgt _0801E374
cmp r0, 0
beq _0801E37A
b _0801E3D6
.align 2, 0
_0801E368: .4byte gUnknown_203B260
_0801E36C: .4byte gWindowBGTitle
_0801E370: .4byte gUnknown_80DC064
_0801E374:
cmp r0, 0x2
beq _0801E3B0
b _0801E3D6
_0801E37A:
ldr r0, _0801E380
b _0801E386
.align 2, 0
_0801E380: .4byte gWindowBGBlueString
_0801E384:
ldr r0, _0801E3AC
_0801E386:
bl sub_8008ED0
adds r4, r0, 0
ldr r1, [r5]
ldr r0, [r1, 0x44]
ldr r1, [r1]
ldrb r2, [r1, 0x8]
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, 0x50
adds r2, r6, 0
adds r2, 0xA
movs r3, 0x7
str r3, [sp]
adds r3, r4, 0
bl sub_80078A4
b _0801E3D6
.align 2, 0
_0801E3AC: .4byte gWindowBGRedString
_0801E3B0:
ldr r0, _0801E3E8
bl sub_8008ED0
adds r4, r0, 0
ldr r1, [r5]
ldr r0, [r1, 0x44]
ldr r1, [r1]
ldrb r2, [r1, 0x8]
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, 0x50
adds r2, r6, 0
adds r2, 0xA
movs r3, 0x7
str r3, [sp]
adds r3, r4, 0
bl sub_80078A4
_0801E3D6:
ldr r0, _0801E3EC
ldr r0, [r0]
ldr r0, [r0, 0x44]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E3E8: .4byte gWindowBGGreenString
_0801E3EC: .4byte gUnknown_203B260
thumb_func_end CreateOptionsMenu
thumb_func_start sub_801E3F0
sub_801E3F0:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _0801E46C
ldr r0, [r4]
cmp r0, 0
bne _0801E406
movs r0, 0x9C
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_0801E406:
ldr r0, [r4]
str r5, [r0, 0x34]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x3C
adds r1, r0, r1
str r1, [r0, 0x38]
adds r0, 0x3C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _0801E470
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r4]
ldr r0, [r0, 0x38]
movs r1, 0xA
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x5
movs r2, 0xA
adds r3, r5, 0
bl sub_8013818
bl sub_801E594
bl sub_801E5E8
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0801E46C: .4byte gUnknown_203B264
_0801E470: .4byte gUnknown_80DC0BC
thumb_func_end sub_801E3F0
thumb_func_start sub_801E474
sub_801E474:
push {lr}
lsls r0, 24
cmp r0, 0
bne _0801E48C
ldr r0, _0801E488
ldr r0, [r0]
bl sub_8013660
movs r0, 0
b _0801E4EE
.align 2, 0
_0801E488: .4byte gUnknown_203B264
_0801E48C:
ldr r0, _0801E4A4
ldr r0, [r0]
bl GetKeyPress
cmp r0, 0x2
beq _0801E4AE
cmp r0, 0x2
bgt _0801E4A8
cmp r0, 0x1
beq _0801E4B8
b _0801E4CC
.align 2, 0
_0801E4A4: .4byte gUnknown_203B264
_0801E4A8:
cmp r0, 0x4
beq _0801E4C2
b _0801E4CC
_0801E4AE:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E4EE
_0801E4B8:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E4EE
_0801E4C2:
movs r0, 0x4
bl PlayMenuSoundEffect
movs r0, 0x4
b _0801E4EE
_0801E4CC:
ldr r0, _0801E4E0
ldr r0, [r0]
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0801E4E4
movs r0, 0
b _0801E4EE
.align 2, 0
_0801E4E0: .4byte gUnknown_203B264
_0801E4E4:
bl sub_801E594
bl sub_801E5E8
movs r0, 0x1
_0801E4EE:
pop {r1}
bx r1
thumb_func_end sub_801E474
thumb_func_start sub_801E4F4
sub_801E4F4:
ldr r0, _0801E50C
ldr r1, [r0]
movs r0, 0x1E
ldrsh r2, [r1, r0]
movs r3, 0x1C
ldrsh r0, [r1, r3]
muls r0, r2
movs r2, 0x18
ldrsh r1, [r1, r2]
adds r0, r1
bx lr
.align 2, 0
_0801E50C: .4byte gUnknown_203B264
thumb_func_end sub_801E4F4
thumb_func_start sub_801E510
sub_801E510:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ResetUnusedInputStruct
ldr r5, _0801E548
ldr r0, [r5]
adds r0, 0x3C
movs r1, 0
movs r2, 0
bl sub_800641C
ldr r0, [r5]
bl sub_8013984
bl sub_801E594
bl sub_801E5E8
cmp r4, 0
beq _0801E542
ldr r0, [r5]
bl AddMenuCursorSprite
_0801E542:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E548: .4byte gUnknown_203B264
thumb_func_end sub_801E510
thumb_func_start sub_801E54C
sub_801E54C:
push {r4,r5,lr}
ldr r4, _0801E58C
ldr r2, [r4]
cmp r2, 0
beq _0801E586
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0801E590
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801E586:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E58C: .4byte gUnknown_203B264
_0801E590: .4byte gUnknown_80DC0A0
thumb_func_end sub_801E54C
thumb_func_start sub_801E594
sub_801E594:
push {r4,lr}
ldr r4, _0801E5E4
ldr r0, [r4]
movs r1, 0x1A
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x34]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x34]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x4C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801E5E4: .4byte gUnknown_203B264
thumb_func_end sub_801E594
thumb_func_start sub_801E5E8
sub_801E5E8:
push {r4-r6,lr}
sub sp, 0x4
ldr r4, _0801E64C
ldr r0, [r4]
ldr r0, [r0, 0x34]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r2, _0801E650
ldr r0, [r4]
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
movs r0, 0x10
movs r1, 0
bl xxx_call_draw_string
movs r5, 0
adds r6, r4, 0
ldr r4, _0801E654
_0801E616:
ldr r0, [r6]
adds r1, r5, 0
bl sub_8013800
adds r1, r0, 0
ldr r2, [r4]
ldr r0, [r6]
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
movs r0, 0xA
bl xxx_call_draw_string
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
ble _0801E616
ldr r0, _0801E64C
ldr r0, [r0]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E64C: .4byte gUnknown_203B264
_0801E650: .4byte gUnknown_80DC0D4
_0801E654: .4byte gUnknown_80DAA98
thumb_func_end sub_801E5E8
thumb_func_start sub_801E658
sub_801E658:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _0801E6C4
movs r0, 0xA0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
movs r1, 0
str r1, [r0, 0x34]
adds r1, r0, 0
adds r1, 0x3C
str r1, [r0, 0x38]
adds r0, r1, 0
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _0801E6C8
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r4]
ldr r1, [r0, 0x38]
adds r0, 0x9C
str r0, [r1, 0x14]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
ldr r3, [r0, 0x34]
movs r1, 0x5
movs r2, 0x1
bl sub_8013818
ldr r0, [r4]
strh r5, [r0, 0x1E]
bl sub_801E714
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0801E6C4: .4byte gUnknown_203B268
_0801E6C8: .4byte gUnknown_80DC0FC
thumb_func_end sub_801E658
thumb_func_start sub_801E6CC
sub_801E6CC:
push {r4,lr}
ldr r4, _0801E6E8
ldr r0, [r4]
bl GetKeyPress
cmp r0, 0x1
beq _0801E6EC
cmp r0, 0x2
bne _0801E6F6
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E70C
.align 2, 0
_0801E6E8: .4byte gUnknown_203B268
_0801E6EC:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E70C
_0801E6F6:
ldr r0, [r4]
bl sub_8013938
lsls r0, 24
cmp r0, 0
bne _0801E706
movs r0, 0
b _0801E70C
_0801E706:
bl sub_801E714
movs r0, 0x1
_0801E70C:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801E6CC
thumb_func_start sub_801E714
sub_801E714:
push {lr}
bl sub_801E76C
bl sub_801E7AC
pop {r0}
bx r0
thumb_func_end sub_801E714
thumb_func_start sub_801E724
sub_801E724:
push {r4,r5,lr}
ldr r4, _0801E764
ldr r2, [r4]
cmp r2, 0
beq _0801E75E
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0801E768
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801E75E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E764: .4byte gUnknown_203B268
_0801E768: .4byte gUnknown_80DC0E4
thumb_func_end sub_801E724
thumb_func_start sub_801E76C
sub_801E76C:
push {r4,lr}
ldr r4, _0801E7A8
ldr r0, [r4]
ldrh r1, [r0, 0x20]
adds r0, 0x9C
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
ldrh r1, [r0, 0x1E]
adds r0, 0x9D
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9E
movs r1, 0xF
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9F
strb r2, [r0]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0801E7A8: .4byte gUnknown_203B268
thumb_func_end sub_801E76C
thumb_func_start sub_801E7AC
sub_801E7AC:
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0801E804
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r3, [r5]
movs r0, 0x1E
ldrsh r1, [r3, r0]
lsls r1, 3
adds r0, r1, 0
adds r0, 0x10
ldr r4, _0801E808
adds r1, r4
ldr r2, [r1]
ldr r3, [r3, 0x34]
movs r6, 0
str r6, [sp]
movs r1, 0
bl xxx_call_draw_string
ldr r1, [r5]
movs r2, 0x1E
ldrsh r0, [r1, r2]
lsls r0, 3
adds r4, 0x4
adds r0, r4
ldr r2, [r0]
ldr r3, [r1, 0x34]
str r6, [sp]
movs r0, 0xA
movs r1, 0x14
bl xxx_call_draw_string
ldr r0, [r5]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E804: .4byte gUnknown_203B268
_0801E808: .4byte gUnknown_80DAA98
thumb_func_end sub_801E7AC
.align 2,0