pmd-red/asm/makuhita_dojo.s
2022-03-13 17:48:04 -07:00

909 lines
14 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start UpdateMakuhitaDialogue
UpdateMakuhitaDialogue:
push {r4,r5,lr}
sub sp, 0x18
ldr r1, _0802FFA4
ldr r0, [r1]
ldr r0, [r0, 0x8]
adds r5, r1, 0
cmp r0, 0xD
bls _0802FF9A
b _080301A0
_0802FF9A:
lsls r0, 2
ldr r1, _0802FFA8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802FFA4: .4byte gUnknown_203B318
_0802FFA8: .4byte _0802FFAC
.align 2, 0
_0802FFAC:
.4byte _0802FFE4
.4byte _08030000
.4byte _08030038
.4byte _08030050
.4byte _08030068
.4byte _08030074
.4byte _080300DC
.4byte _080300C4
.4byte _080300F4
.4byte _0803010C
.4byte _08030148
.4byte _08030174
.4byte _08030180
.4byte _080301A0
_0802FFE4:
bl sub_80301B0
ldr r2, _0802FFF8
ldr r0, _0802FFFC
ldr r5, [r0]
ldr r1, [r5, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
b _0803000E
.align 2, 0
_0802FFF8: .4byte gMakuhitaDialogue
_0802FFFC: .4byte gUnknown_203B318
_08030000:
ldr r2, _08030034
ldr r5, [r5]
ldr r1, [r5, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x4
_0803000E:
adds r0, r2
ldr r0, [r0]
ldr r2, [r5, 0x14]
adds r3, r5, 0
adds r3, 0x18
movs r4, 0
str r4, [sp]
movs r1, 0x4
str r1, [sp, 0x4]
str r4, [sp, 0x8]
ldr r1, [r5, 0x68]
str r1, [sp, 0xC]
movs r1, 0xC
str r1, [sp, 0x10]
movs r1, 0
bl sub_8014248
b _080301A0
.align 2, 0
_08030034: .4byte gMakuhitaDialogue
_08030038:
ldr r3, [r5]
movs r0, 0xD
str r0, [r3, 0xC]
ldr r2, _0803004C
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x8
b _0803015A
.align 2, 0
_0803004C: .4byte gMakuhitaDialogue
_08030050:
ldr r3, [r5]
movs r0, 0x4
str r0, [r3, 0xC]
ldr r2, _08030064
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0xC
b _0803015A
.align 2, 0
_08030064: .4byte gMakuhitaDialogue
_08030068:
movs r0, 0x3
movs r1, 0
movs r2, 0xA
bl sub_80302E8
b _080301A0
_08030074:
ldr r1, [r5]
movs r0, 0xD
str r0, [r1, 0xC]
movs r2, 0x10
ldrsh r0, [r1, r2]
bl sub_80A2740
lsls r0, 24
lsrs r0, 24
ldr r2, _080300B4
ldr r1, [sp, 0x14]
ands r1, r2
orrs r1, r0
ldr r0, _080300B8
ands r1, r0
movs r0, 0x80
lsls r0, 1
orrs r1, r0
str r1, [sp, 0x14]
ldr r0, _080300BC
add r1, sp, 0x14
bl PrintYellowDungeonNametoBuffer
ldr r2, _080300C0
ldr r3, [r5]
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x10
b _0803015A
.align 2, 0
_080300B4: .4byte 0xffffff00
_080300B8: .4byte 0xffff00ff
_080300BC: .4byte gAvailablePokemonNames
_080300C0: .4byte gMakuhitaDialogue
_080300C4:
ldr r3, [r5]
movs r0, 0xD
str r0, [r3, 0xC]
ldr r2, _080300D8
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x18
b _0803015A
.align 2, 0
_080300D8: .4byte gMakuhitaDialogue
_080300DC:
ldr r3, [r5]
movs r0, 0xD
str r0, [r3, 0xC]
ldr r2, _080300F0
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x14
b _0803015A
.align 2, 0
_080300F0: .4byte gMakuhitaDialogue
_080300F4:
ldr r3, [r5]
movs r0, 0x9
str r0, [r3, 0xC]
ldr r2, _08030108
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x1C
b _0803015A
.align 2, 0
_08030108: .4byte gMakuhitaDialogue
_0803010C:
ldr r4, _08030138
bl GetPlayerPokemonStruct
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0x6
bl PrintColoredPokeNameToBuffer
ldr r0, _0803013C
ldr r1, [r0]
movs r0, 0xB
str r0, [r1, 0xC]
movs r0, 0xCB
bl PlaySound
ldr r0, _08030140
ldr r3, _08030144
movs r1, 0
movs r2, 0
bl sub_80141B4
b _080301A0
.align 2, 0
_08030138: .4byte gPlayerName
_0803013C: .4byte gUnknown_203B318
_08030140: .4byte gUnknown_80E0778
_08030144: .4byte 0x00000101
_08030148:
ldr r3, [r5]
movs r0, 0xD
str r0, [r3, 0xC]
ldr r2, _0803016C
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x20
_0803015A:
adds r0, r2
ldr r0, [r0]
ldr r2, [r3, 0x68]
ldr r3, _08030170
movs r1, 0
bl sub_80141B4
b _080301A0
.align 2, 0
_0803016C: .4byte gMakuhitaDialogue
_08030170: .4byte 0x0000010d
_08030174:
movs r0, 0x1
movs r1, 0x49
movs r2, 0x1
bl sub_801B60C
b _080301A0
_08030180:
ldr r3, [r5]
movs r0, 0x1
str r0, [r3, 0xC]
ldr r2, _080301A8
ldr r1, [r3, 0x4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r2, 0x24
adds r0, r2
ldr r0, [r0]
ldr r2, [r3, 0x68]
ldr r3, _080301AC
movs r1, 0
bl sub_80141B4
_080301A0:
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080301A8: .4byte gMakuhitaDialogue
_080301AC: .4byte 0x0000010d
thumb_func_end UpdateMakuhitaDialogue
thumb_func_start sub_80301B0
sub_80301B0:
push {r4,lr}
ldr r4, _080301F8
ldr r1, [r4]
movs r2, 0x2
str r2, [r1, 0x14]
ldr r0, _080301FC
str r0, [r1, 0x18]
str r2, [r1, 0x1C]
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _080301D6
ldr r0, [r4]
movs r1, 0x1
negs r1, r1
str r1, [r0, 0x1C]
movs r1, 0x1
str r1, [r0, 0x14]
_080301D6:
ldr r1, [r4]
movs r2, 0x1
ldr r0, _08030200
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x3
str r0, [r1, 0x24]
ldr r0, _08030204
ldr r0, [r0]
str r0, [r1, 0x28]
str r2, [r1, 0x2C]
movs r0, 0
str r0, [r1, 0x30]
str r2, [r1, 0x34]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080301F8: .4byte gUnknown_203B318
_080301FC: .4byte gUnknown_80E07D8
_08030200: .4byte gUnknown_80D4970
_08030204: .4byte gUnknown_80D4934
thumb_func_end sub_80301B0
thumb_func_start sub_8030208
sub_8030208:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08030250
ldr r0, _08030230
ldr r1, [r0]
ldr r0, [sp]
str r0, [r1, 0x14]
ldr r0, [sp]
cmp r0, 0x2
beq _0803023A
cmp r0, 0x2
bgt _08030234
cmp r0, 0x1
beq _0803024A
b _08030250
.align 2, 0
_08030230: .4byte gUnknown_203B318
_08030234:
cmp r0, 0x3
beq _08030242
b _08030250
_0803023A:
movs r0, 0x3
bl UpdateMakuhitaState
b _08030250
_08030242:
movs r0, 0xC
bl UpdateMakuhitaState
b _08030250
_0803024A:
movs r0, 0x2
bl UpdateMakuhitaState
_08030250:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8030208
thumb_func_start sub_8030258
sub_8030258:
push {lr}
movs r0, 0x1
bl sub_80303AC
cmp r0, 0x2
beq _08030288
cmp r0, 0x2
bcc _0803029A
cmp r0, 0x3
bne _0803029A
bl sub_8030418
ldr r1, _08030284
ldr r1, [r1]
strh r0, [r1, 0x10]
bl sub_8030480
movs r0, 0x5
bl UpdateMakuhitaState
b _0803029A
.align 2, 0
_08030284: .4byte gUnknown_203B318
_08030288:
bl sub_8030480
ldr r0, _080302A0
ldr r1, [r0]
ldr r0, _080302A4
strh r0, [r1, 0x10]
movs r0, 0x1
bl UpdateMakuhitaState
_0803029A:
pop {r0}
bx r0
.align 2, 0
_080302A0: .4byte gUnknown_203B318
_080302A4: .4byte 0x0000ffff
thumb_func_end sub_8030258
thumb_func_start sub_80302A8
sub_80302A8:
push {lr}
bl sub_801B6AC
cmp r0, 0x1
bls _080302C0
cmp r0, 0x3
bhi _080302C0
bl sub_801B72C
movs r0, 0xA
bl UpdateMakuhitaState
_080302C0:
pop {r0}
bx r0
thumb_func_end sub_80302A8
thumb_func_start sub_80302C4
sub_80302C4:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _080302DC
ldr r0, _080302E4
ldr r0, [r0]
ldr r0, [r0, 0xC]
bl UpdateMakuhitaState
_080302DC:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080302E4: .4byte gUnknown_203B318
thumb_func_end sub_80302C4
thumb_func_start sub_80302E8
sub_80302E8:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _08030302
movs r0, 0
b _0803039A
_08030302:
ldr r4, _080303A4
ldr r0, [r4]
cmp r0, 0
bne _08030314
movs r0, 0xD0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_08030314:
ldr r0, [r4]
str r5, [r0, 0x64]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x6C
adds r1, r0, r1
str r1, [r0, 0x68]
adds r0, 0x6C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x64]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x6C
ldr r0, _080303A8
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r2, [r4]
ldr r1, [r2, 0x68]
adds r0, r2, 0
adds r0, 0xCC
str r0, [r1, 0x14]
cmp r6, 0
beq _08030362
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldr r0, [r6]
str r0, [r1]
_08030362:
ldr r0, [r4]
ldr r0, [r0, 0x68]
mov r1, r8
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r4]
adds r4, 0x30
bl sub_8030668
adds r1, r0, 0
adds r0, r4, 0
mov r2, r8
adds r3, r5, 0
bl sub_8013818
bl sub_80304C8
bl sub_803053C
movs r0, 0x1
_0803039A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080303A4: .4byte gUnknown_203B31C
_080303A8: .4byte gUnknown_80E0804
thumb_func_end sub_80302E8
thumb_func_start sub_80303AC
sub_80303AC:
push {r4,lr}
lsls r0, 24
cmp r0, 0
bne _080303C8
ldr r0, _080303C4
ldr r0, [r0]
adds r0, 0x30
bl sub_8013660
movs r0, 0
b _08030410
.align 2, 0
_080303C4: .4byte gUnknown_203B31C
_080303C8:
ldr r4, _080303E4
ldr r0, [r4]
adds r0, 0x30
bl GetKeyPress
cmp r0, 0x1
beq _080303E8
cmp r0, 0x2
bne _080303F2
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08030410
.align 2, 0
_080303E4: .4byte gUnknown_203B31C
_080303E8:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08030410
_080303F2:
ldr r0, [r4]
adds r0, 0x30
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _08030406
movs r0, 0
b _08030410
_08030406:
bl sub_80304C8
bl sub_803053C
movs r0, 0x1
_08030410:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80303AC
thumb_func_start sub_8030418
sub_8030418:
ldr r0, _08030440
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x4E
movs r3, 0
ldrsh r1, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r1
adds r1, r2, 0
adds r1, 0x48
movs r3, 0
ldrsh r1, [r1, r3]
adds r0, r1
lsls r0, 1
adds r0, r2, r0
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_08030440: .4byte gUnknown_203B31C
thumb_func_end sub_8030418
thumb_func_start sub_8030444
sub_8030444:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl sub_8030668
adds r1, r0, 0
ldr r5, _0803047C
ldr r0, [r5]
adds r2, r0, 0
adds r2, 0x52
strh r1, [r2]
adds r0, 0x30
bl sub_8013984
bl sub_80304C8
bl sub_803053C
cmp r4, 0
beq _08030476
ldr r0, [r5]
adds r0, 0x30
bl AddMenuCursorSprite
_08030476:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803047C: .4byte gUnknown_203B31C
thumb_func_end sub_8030444
thumb_func_start sub_8030480
sub_8030480:
push {r4,r5,lr}
ldr r4, _080304C0
ldr r2, [r4]
cmp r2, 0
beq _080304BA
ldr r0, [r2, 0x64]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x6C
ldr r0, _080304C4
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, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_080304BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080304C0: .4byte gUnknown_203B31C
_080304C4: .4byte gUnknown_80E07EC
thumb_func_end sub_8030480
thumb_func_start sub_80304C8
sub_80304C8:
push {r4,lr}
ldr r4, _08030538
ldr r0, [r4]
adds r0, 0xCC
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCD
strb r2, [r0]
ldr r0, [r4]
adds r0, 0xCE
movs r1, 0x8
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCF
strb r2, [r0]
ldr r0, [r4]
adds r0, 0x4A
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x64]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x7A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x7C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08030538: .4byte gUnknown_203B31C
thumb_func_end sub_80304C8
thumb_func_start sub_803053C
sub_803053C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x108
ldr r4, _08030658
ldr r0, [r4]
ldr r0, [r0, 0x64]
bl sub_8008C54
ldr r0, [r4]
ldr r0, [r0, 0x64]
bl sub_80073B8
ldr r2, _0803065C
ldr r0, [r4]
ldr r3, [r0, 0x64]
movs r0, 0
str r0, [sp]
movs r0, 0xA
movs r1, 0
bl xxx_call_draw_string
ldr r3, [r4]
adds r0, r3, 0
adds r0, 0xCE
ldrb r0, [r0]
lsls r0, 3
adds r0, 0x4
adds r1, r3, 0
adds r1, 0x4E
movs r5, 0
ldrsh r2, [r1, r5]
adds r2, 0x1
movs r1, 0x7
str r1, [sp]
ldr r1, [r3, 0x64]
str r1, [sp, 0x4]
movs r1, 0
movs r3, 0x2
bl sub_8012BC4
movs r0, 0
mov r9, r0
ldr r0, [r4]
adds r0, 0x4A
movs r1, 0
ldrsh r0, [r0, r1]
cmp r9, r0
bge _0803063E
mov r8, r4
_080305A2:
mov r3, r8
ldr r1, [r3]
adds r0, r1, 0
adds r0, 0x4E
movs r5, 0
ldrsh r2, [r0, r5]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r2
add r0, r9
lsls r0, 1
adds r1, r0
movs r5, 0
ldrsh r4, [r1, r5]
adds r0, r4, 0
bl sub_80A2740
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
bl sub_80A2668
adds r4, r0, 0
lsls r4, 16
asrs r4, 16
mov r1, r8
ldr r0, [r1]
adds r0, 0x30
mov r1, r9
bl sub_8013800
adds r6, r0, 0
movs r5, 0x7
adds r0, r4, 0
bl sub_809758C
lsls r0, 24
cmp r0, 0
beq _08030608
mov r3, r8
ldr r0, [r3]
ldr r3, [r0, 0x64]
movs r0, 0
str r0, [sp]
movs r0, 0x8
adds r1, r6, 0
ldr r2, _08030660
bl xxx_call_draw_string
movs r5, 0x4
_08030608:
adds r0, r7, 0
bl GetDungeonName1
adds r3, r0, 0
add r0, sp, 0x8
ldr r1, _08030664
adds r2, r5, 0
bl sprintf_2
mov r5, r8
ldr r0, [r5]
ldr r3, [r0, 0x64]
movs r0, 0
str r0, [sp]
movs r0, 0x10
adds r1, r6, 0
add r2, sp, 0x8
bl xxx_call_draw_string
movs r0, 0x1
add r9, r0
ldr r0, [r5]
adds r0, 0x4A
movs r1, 0
ldrsh r0, [r0, r1]
cmp r9, r0
blt _080305A2
_0803063E:
ldr r0, _08030658
ldr r0, [r0]
ldr r0, [r0, 0x64]
bl sub_80073E0
add sp, 0x108
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08030658: .4byte gUnknown_203B31C
_0803065C: .4byte gUnknown_80E081C
_08030660: .4byte gUnknown_80E0824
_08030664: .4byte gUnknown_80E0828
thumb_func_end sub_803053C
thumb_func_start sub_8030668
sub_8030668:
push {r4-r6,lr}
movs r6, 0
movs r5, 0
_0803066E:
lsls r0, r5, 16
asrs r4, r0, 16
adds r0, r4, 0
bl sub_8097504
lsls r0, 24
cmp r0, 0
beq _08030690
adds r0, r4, 0
bl sub_80A26CC
ldr r1, _080306A0
ldr r1, [r1]
lsls r2, r6, 1
adds r1, r2
strh r0, [r1]
adds r6, 0x1
_08030690:
adds r5, 0x1
cmp r5, 0x16
ble _0803066E
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080306A0: .4byte gUnknown_203B31C
thumb_func_end sub_8030668
thumb_func_start sub_80306A4
sub_80306A4:
movs r0, 0
bx lr
thumb_func_end sub_80306A4
.align 2,0