mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-09 04:06:10 -05:00
3302 lines
62 KiB
ArmAsm
3302 lines
62 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
thumb_func_start MOD77_021D74E0
|
|
MOD77_021D74E0: ; 0x021D74E0
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F34
|
|
bl GX_DisableEngineALayers
|
|
bl GX_DisableEngineBLayers
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
ldr r1, [r2]
|
|
ldr r0, _021D75D4 ; =0xFFFFE0FF
|
|
and r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _021D75D8 ; =0x04001000
|
|
ldr r1, [r2]
|
|
and r0, r1
|
|
str r0, [r2]
|
|
mov r0, #3
|
|
mov r1, #0x32
|
|
lsl r2, r2, #7
|
|
bl CreateHeap
|
|
ldr r1, _021D75DC ; =0x0000C32C
|
|
add r0, r4, #0
|
|
mov r2, #0x32
|
|
bl OverlayManager_CreateAndGetData
|
|
ldr r2, _021D75DC ; =0x0000C32C
|
|
mov r1, #0
|
|
add r5, r0, #0
|
|
bl memset
|
|
mov r0, #0x32
|
|
str r0, [r5]
|
|
ldr r0, _021D75E0 ; =gGameLanguage
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
bne _021D753E
|
|
mov r1, #1
|
|
b _021D7540
|
|
_021D753E:
|
|
mov r1, #0
|
|
_021D7540:
|
|
ldr r0, _021D75E4 ; =0x0000C2F0
|
|
str r1, [r5, r0]
|
|
add r0, r4, #0
|
|
bl OverlayManager_GetField18
|
|
add r4, r0, #0
|
|
bl FUN_02029AFC
|
|
str r0, [r5, #4]
|
|
bl FUN_02029B38
|
|
ldr r1, _021D75E8 ; =0x0000C314
|
|
str r0, [r5, r1]
|
|
ldr r0, [r5, #4]
|
|
bl FUN_02029B3C
|
|
ldr r1, _021D75EC ; =0x0000C318
|
|
str r0, [r5, r1]
|
|
ldr r0, [r5, #4]
|
|
bl FUN_02029C00
|
|
ldr r1, _021D75F0 ; =0x0000C324
|
|
str r0, [r5, r1]
|
|
add r0, r4, #0
|
|
bl Sav2_PlayerData_GetOptionsAddr
|
|
str r0, [r5, #8]
|
|
bl MOD77_021D7C24
|
|
bl MOD77_021D7C44
|
|
ldr r0, [r5]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
bl FUN_0201B2EC
|
|
ldr r0, [r5]
|
|
bl BgConfig_Alloc
|
|
ldr r1, _021D75F4 ; =0x0000C010
|
|
str r0, [r5, r1]
|
|
bl GX_BothDispOn
|
|
bl FUN_0201BD5C
|
|
ldr r2, [r5]
|
|
mov r0, #8
|
|
mov r1, #0x40
|
|
bl ScrStrBufs_new_custom
|
|
ldr r1, _021D75F8 ; =0x0000C070
|
|
str r0, [r5, r1]
|
|
ldr r0, [r5]
|
|
bl Camera_Alloc
|
|
ldr r1, _021D75FC ; =0x0000C2CC
|
|
str r0, [r5, r1]
|
|
mov r0, #0
|
|
add r1, #0x1c
|
|
str r0, [r5, r1]
|
|
ldr r0, _021D7600 ; =gMain + 0x60
|
|
mov r1, #1
|
|
strb r1, [r0, #5]
|
|
bl GX_SwapDisplay
|
|
mov r0, #4
|
|
mov r1, #8
|
|
bl SetKeyRepeatTimers
|
|
add r0, r5, #0
|
|
bl MOD77_021D7C64
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D75D4: .word 0xFFFFE0FF
|
|
_021D75D8: .word 0x04001000
|
|
_021D75DC: .word 0x0000C32C
|
|
_021D75E0: .word gGameLanguage
|
|
_021D75E4: .word 0x0000C2F0
|
|
_021D75E8: .word 0x0000C314
|
|
_021D75EC: .word 0x0000C318
|
|
_021D75F0: .word 0x0000C324
|
|
_021D75F4: .word 0x0000C010
|
|
_021D75F8: .word 0x0000C070
|
|
_021D75FC: .word 0x0000C2CC
|
|
_021D7600: .word gMain + 0x60
|
|
thumb_func_end MOD77_021D74E0
|
|
|
|
thumb_func_start MOD77_021D7604
|
|
MOD77_021D7604: ; 0x021D7604
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r1, #0
|
|
bl OverlayManager_GetData
|
|
ldr r1, [r5]
|
|
add r4, r0, #0
|
|
mov r7, #0
|
|
cmp r1, #0x12
|
|
bls _021D761A
|
|
b _021D7B66
|
|
_021D761A:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021D7626: ; jump table
|
|
.short _021D764C - _021D7626 - 2 ; case 0
|
|
.short _021D76A8 - _021D7626 - 2 ; case 1
|
|
.short _021D76B6 - _021D7626 - 2 ; case 2
|
|
.short _021D76D6 - _021D7626 - 2 ; case 3
|
|
.short _021D76FA - _021D7626 - 2 ; case 4
|
|
.short _021D7744 - _021D7626 - 2 ; case 5
|
|
.short _021D776C - _021D7626 - 2 ; case 6
|
|
.short _021D77A2 - _021D7626 - 2 ; case 7
|
|
.short _021D77DE - _021D7626 - 2 ; case 8
|
|
.short _021D7838 - _021D7626 - 2 ; case 9
|
|
.short _021D7886 - _021D7626 - 2 ; case 10
|
|
.short _021D78DC - _021D7626 - 2 ; case 11
|
|
.short _021D78EE - _021D7626 - 2 ; case 12
|
|
.short _021D7916 - _021D7626 - 2 ; case 13
|
|
.short _021D7964 - _021D7626 - 2 ; case 14
|
|
.short _021D7A32 - _021D7626 - 2 ; case 15
|
|
.short _021D7B0E - _021D7626 - 2 ; case 16
|
|
.short _021D7B1C - _021D7626 - 2 ; case 17
|
|
.short _021D7B3E - _021D7626 - 2 ; case 18
|
|
_021D764C:
|
|
ldr r2, _021D7968 ; =0x0000013E
|
|
ldr r3, [r4]
|
|
mov r0, #1
|
|
mov r1, #0x1a
|
|
bl NewMsgDataFromNarc
|
|
ldr r1, _021D796C ; =0x0000C060
|
|
str r0, [r4, r1]
|
|
add r0, r4, #0
|
|
bl MOD77_021D8814
|
|
add r0, r4, #0
|
|
bl MOD77_021D7FAC
|
|
add r0, r7, #0
|
|
ldr r1, _021D7970 ; =0x0000C2EC
|
|
add r3, r0, #0
|
|
str r0, [r4, r1]
|
|
mov r1, #6
|
|
str r1, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
ldr r2, [r4]
|
|
str r2, [sp, #8]
|
|
add r2, r1, #0
|
|
bl FUN_0200E1D0
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GX_EngineBToggleLayers
|
|
mov r0, #8
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #8
|
|
mov r1, #1
|
|
bl GX_EngineBToggleLayers
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D76A8:
|
|
bl FUN_0200E308
|
|
cmp r0, #1
|
|
bne _021D7780
|
|
mov r0, #2
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D76B6:
|
|
add r1, r7, #0
|
|
mov r2, #1
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D7780
|
|
ldr r0, _021D7974 ; =0x0000C314
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D76D0
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D76D0:
|
|
mov r0, #0xe
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D76D6:
|
|
mov r1, #1
|
|
add r2, r1, #0
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D7780
|
|
ldr r0, _021D7978 ; =0x021D8F64
|
|
ldr r1, _021D797C ; =0x0000C024
|
|
str r0, [sp]
|
|
ldr r2, _021D7980 ; =0x021D8F18
|
|
ldr r3, _021D7984 ; =0x021D8FB4
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
bl MOD77_021D8370
|
|
mov r0, #4
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D76FA:
|
|
ldr r0, _021D7988 ; =0x0000C054
|
|
ldr r0, [r4, r0]
|
|
bl ListMenu_ProcessInput
|
|
add r6, r0, #0
|
|
sub r0, r7, #1
|
|
cmp r6, r0
|
|
beq _021D7780
|
|
add r0, r4, #0
|
|
bl MOD77_021D84D8
|
|
ldr r0, _021D798C ; =0x000005DC
|
|
bl PlaySE
|
|
add r0, r6, #2
|
|
cmp r0, #4
|
|
bhi _021D7732
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021D7728: ; jump table
|
|
.short _021D773E - _021D7728 - 2 ; case 0
|
|
.short _021D7732 - _021D7728 - 2 ; case 1
|
|
.short _021D7732 - _021D7728 - 2 ; case 2
|
|
.short _021D7738 - _021D7728 - 2 ; case 3
|
|
.short _021D773E - _021D7728 - 2 ; case 4
|
|
_021D7732:
|
|
mov r0, #0xe
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7738:
|
|
mov r0, #5
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D773E:
|
|
mov r0, #0x11
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7744:
|
|
mov r1, #2
|
|
mov r2, #1
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D7780
|
|
ldr r0, [r4]
|
|
ldr r1, _021D7990 ; =0x021D8F38
|
|
str r0, [sp]
|
|
ldr r0, _021D7994 ; =0x0000C010
|
|
ldr r2, _021D7998 ; =0x000001D9
|
|
ldr r0, [r4, r0]
|
|
mov r3, #7
|
|
bl Std_CreateYesNoMenu
|
|
ldr r1, _021D799C ; =0x0000C05C
|
|
str r0, [r4, r1]
|
|
mov r0, #6
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D776C:
|
|
ldr r0, _021D799C ; =0x0000C05C
|
|
ldr r1, [r4]
|
|
ldr r0, [r4, r0]
|
|
bl FUN_020021AC
|
|
cmp r0, #0
|
|
beq _021D7782
|
|
sub r1, r7, #2
|
|
cmp r0, r1
|
|
beq _021D779C
|
|
_021D7780:
|
|
b _021D7B66
|
|
_021D7782:
|
|
ldr r0, _021D79A0 ; =0x0000C2F0
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #1
|
|
bne _021D7796
|
|
mov r1, #0x67
|
|
add r0, #0x2c
|
|
str r1, [r4, r0]
|
|
mov r0, #9
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7796:
|
|
mov r0, #7
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D779C:
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D77A2:
|
|
mov r1, #3
|
|
mov r2, #1
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D77EE
|
|
ldr r1, _021D79A4 ; =0x0000C31C
|
|
add r0, r7, #0
|
|
str r0, [r4, r1]
|
|
bl FUN_02088DA0
|
|
add r6, r0, #0
|
|
add r0, r7, #0
|
|
bl FUN_02088DBC
|
|
mov r1, #0x99
|
|
lsl r1, r1, #2
|
|
str r1, [sp]
|
|
ldr r1, _021D797C ; =0x0000C024
|
|
str r6, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r2, _021D79A8 ; =0x021D8F20
|
|
ldr r3, _021D79AC ; =0x021D8FD4
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
bl MOD77_021D8418
|
|
mov r0, #8
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D77DE:
|
|
ldr r0, _021D7988 ; =0x0000C054
|
|
ldr r0, [r4, r0]
|
|
bl ListMenu_ProcessInput
|
|
add r6, r0, #0
|
|
sub r0, r7, #1
|
|
cmp r6, r0
|
|
bne _021D77F0
|
|
_021D77EE:
|
|
b _021D7B66
|
|
_021D77F0:
|
|
add r0, r4, #0
|
|
bl MOD77_021D84D8
|
|
ldr r0, _021D798C ; =0x000005DC
|
|
bl PlaySE
|
|
sub r0, r7, #2
|
|
cmp r6, r0
|
|
beq _021D780A
|
|
add r0, r7, #0
|
|
bl FUN_02088DA0
|
|
ldrb r6, [r0, r6]
|
|
_021D780A:
|
|
mov r0, #1
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _021D7832
|
|
ldr r0, _021D79A4 ; =0x0000C31C
|
|
str r6, [r4, r0]
|
|
ldr r0, [r4, r0]
|
|
bl MOD77_021D8F04
|
|
cmp r0, #1
|
|
bne _021D7826
|
|
mov r0, #9
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7826:
|
|
ldr r0, _021D79B0 ; =0x0000C320
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
mov r0, #0xb
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7832:
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7838:
|
|
mov r1, #4
|
|
mov r2, #1
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D792A
|
|
ldr r0, _021D79B0 ; =0x0000C320
|
|
add r1, r7, #0
|
|
str r1, [r4, r0]
|
|
sub r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02088D20
|
|
add r6, r0, #0
|
|
bl FUN_02088D4C
|
|
str r0, [sp, #0xc]
|
|
add r0, r6, #0
|
|
bl FUN_02088DA0
|
|
str r0, [sp, #0x10]
|
|
add r0, r6, #0
|
|
bl FUN_02088DBC
|
|
ldr r1, [sp, #0xc]
|
|
ldr r2, _021D79A8 ; =0x021D8F20
|
|
str r1, [sp]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r3, _021D79AC ; =0x021D8FD4
|
|
str r1, [sp, #4]
|
|
ldr r1, _021D797C ; =0x0000C024
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
bl MOD77_021D8418
|
|
mov r0, #0xa
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7886:
|
|
ldr r0, _021D7988 ; =0x0000C054
|
|
ldr r0, [r4, r0]
|
|
bl ListMenu_ProcessInput
|
|
add r6, r0, #0
|
|
sub r0, r7, #1
|
|
cmp r6, r0
|
|
beq _021D792A
|
|
add r0, r4, #0
|
|
bl MOD77_021D84D8
|
|
ldr r0, _021D798C ; =0x000005DC
|
|
bl PlaySE
|
|
sub r0, r7, #2
|
|
cmp r6, r0
|
|
beq _021D78B6
|
|
ldr r0, _021D79A4 ; =0x0000C31C
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02088D20
|
|
bl FUN_02088DA0
|
|
ldrb r6, [r0, r6]
|
|
_021D78B6:
|
|
mov r0, #1
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _021D78C8
|
|
ldr r0, _021D79B0 ; =0x0000C320
|
|
str r6, [r4, r0]
|
|
mov r0, #0xb
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D78C8:
|
|
ldr r0, _021D79A0 ; =0x0000C2F0
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #1
|
|
bne _021D78D6
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D78D6:
|
|
mov r0, #7
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D78DC:
|
|
ldr r2, _021D79A4 ; =0x0000C31C
|
|
ldr r1, [r4, r2]
|
|
add r2, r2, #4
|
|
ldr r2, [r4, r2]
|
|
bl MOD77_021D85E0
|
|
mov r0, #0xc
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D78EE:
|
|
mov r1, #5
|
|
mov r2, #1
|
|
bl MOD77_021D8294
|
|
cmp r0, #1
|
|
bne _021D792A
|
|
ldr r0, [r4]
|
|
ldr r1, _021D7990 ; =0x021D8F38
|
|
str r0, [sp]
|
|
ldr r0, _021D7994 ; =0x0000C010
|
|
ldr r2, _021D7998 ; =0x000001D9
|
|
ldr r0, [r4, r0]
|
|
mov r3, #7
|
|
bl Std_CreateYesNoMenu
|
|
ldr r1, _021D799C ; =0x0000C05C
|
|
str r0, [r4, r1]
|
|
mov r0, #0xd
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7916:
|
|
ldr r0, _021D799C ; =0x0000C05C
|
|
ldr r1, [r4]
|
|
ldr r0, [r4, r0]
|
|
bl FUN_020021AC
|
|
cmp r0, #0
|
|
beq _021D792C
|
|
sub r1, r7, #2
|
|
cmp r0, r1
|
|
beq _021D7958
|
|
_021D792A:
|
|
b _021D7B66
|
|
_021D792C:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8698
|
|
ldr r2, _021D79A4 ; =0x0000C31C
|
|
ldr r0, [r4, #4]
|
|
ldr r1, [r4, r2]
|
|
add r2, r2, #4
|
|
ldr r2, [r4, r2]
|
|
bl FUN_02029B08
|
|
ldr r0, _021D79A4 ; =0x0000C31C
|
|
add r1, r0, #0
|
|
ldr r2, [r4, r0]
|
|
sub r1, #8
|
|
str r2, [r4, r1]
|
|
add r1, r0, #4
|
|
ldr r1, [r4, r1]
|
|
sub r0, r0, #4
|
|
str r1, [r4, r0]
|
|
mov r0, #0xe
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7958:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8698
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7964:
|
|
ldr r1, _021D79A0 ; =0x0000C2F0
|
|
b _021D79B4
|
|
.align 2, 0
|
|
_021D7968: .word 0x0000013E
|
|
_021D796C: .word 0x0000C060
|
|
_021D7970: .word 0x0000C2EC
|
|
_021D7974: .word 0x0000C314
|
|
_021D7978: .word MOD77_021D8F64
|
|
_021D797C: .word 0x0000C024
|
|
_021D7980: .word MOD77_021D8F18
|
|
_021D7984: .word MOD77_021D8FB4
|
|
_021D7988: .word 0x0000C054
|
|
_021D798C: .word 0x000005DC
|
|
_021D7990: .word MOD77_021D8F38
|
|
_021D7994: .word 0x0000C010
|
|
_021D7998: .word 0x000001D9
|
|
_021D799C: .word 0x0000C05C
|
|
_021D79A0: .word 0x0000C2F0
|
|
_021D79A4: .word 0x0000C31C
|
|
_021D79A8: .word MOD77_021D8F20
|
|
_021D79AC: .word MOD77_021D8FD4
|
|
_021D79B0: .word 0x0000C320
|
|
_021D79B4:
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #1
|
|
bne _021D79CA
|
|
add r0, r1, #0
|
|
add r0, #0x34
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D79CA
|
|
add r0, r1, #4
|
|
strh r7, [r4, r0]
|
|
b _021D79D0
|
|
_021D79CA:
|
|
ldr r0, _021D7B74 ; =0x0000C2F4
|
|
mov r1, #1
|
|
strh r1, [r4, r0]
|
|
_021D79D0:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8914
|
|
add r0, r4, #0
|
|
bl MOD77_021D7DCC
|
|
add r0, r4, #0
|
|
bl MOD77_021D8970
|
|
add r0, r4, #0
|
|
bl MOD77_021D89F4
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D7B78 ; =0x0000C014
|
|
mov r2, #0
|
|
add r0, r4, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D7B7C ; =0x0000C034
|
|
ldr r2, _021D7B80 ; =0x000001D9
|
|
add r0, r4, r0
|
|
mov r1, #0
|
|
mov r3, #7
|
|
bl FUN_0200CCA4
|
|
ldr r0, _021D7B84 ; =0x0000C314
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
beq _021D7A1A
|
|
add r0, r4, #0
|
|
bl MOD77_021D8510
|
|
_021D7A1A:
|
|
add r0, r4, #0
|
|
bl MOD77_021D86B4
|
|
ldr r0, _021D7B88 ; =0x0000C328
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
mov r1, #1
|
|
sub r0, #0x40
|
|
str r1, [r4, r0]
|
|
mov r0, #0xf
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7A32:
|
|
ldr r1, _021D7B8C ; =0x0000C2D8
|
|
ldrh r6, [r4, r1]
|
|
bl MOD77_021D7E24
|
|
ldr r0, _021D7B90 ; =gMain
|
|
mov r3, #2
|
|
ldr r1, [r0, #0x48]
|
|
add r0, r1, #0
|
|
tst r0, r3
|
|
bne _021D7A4E
|
|
ldr r0, _021D7B94 ; =0x0000C2F8
|
|
ldr r2, [r4, r0]
|
|
tst r2, r3
|
|
beq _021D7A94
|
|
_021D7A4E:
|
|
ldr r0, _021D7B7C ; =0x0000C034
|
|
mov r1, #0
|
|
add r0, r4, r0
|
|
bl FUN_0200CCF8
|
|
ldr r0, _021D7B98 ; =0x000005DD
|
|
bl PlaySE
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D7B78 ; =0x0000C014
|
|
mov r2, #0
|
|
add r0, r4, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D7B84 ; =0x0000C314
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0
|
|
bne _021D7A88
|
|
mov r1, #2
|
|
sub r0, #0x2c
|
|
str r1, [r4, r0]
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7A88:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8698
|
|
mov r0, #0x11
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7A94:
|
|
lsl r2, r3, #9
|
|
tst r2, r1
|
|
beq _021D7AC0
|
|
add r2, r0, #0
|
|
add r2, #0x30
|
|
ldr r2, [r4, r2]
|
|
cmp r2, #0
|
|
bne _021D7AC0
|
|
mov r1, #1
|
|
add r0, #0x30
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
bl MOD77_021D86B4
|
|
ldr r0, _021D7B88 ; =0x0000C328
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #1
|
|
bne _021D7B66
|
|
ldr r0, _021D7B98 ; =0x000005DD
|
|
bl PlaySE
|
|
b _021D7B66
|
|
_021D7AC0:
|
|
ldr r0, _021D7B9C ; =0x00000403
|
|
tst r0, r1
|
|
beq _021D7ADA
|
|
ldr r0, _021D7B88 ; =0x0000C328
|
|
ldr r2, [r4, r0]
|
|
cmp r2, #1
|
|
bne _021D7ADA
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
bl MOD77_021D86B4
|
|
b _021D7B66
|
|
_021D7ADA:
|
|
ldr r2, _021D7B90 ; =gMain
|
|
add r0, r4, #0
|
|
ldr r2, [r2, #0x44]
|
|
bl MOD77_021D8B20
|
|
cmp r0, #1
|
|
bne _021D7AFA
|
|
ldr r0, _021D7B88 ; =0x0000C328
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #1
|
|
bne _021D7AFA
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
bl MOD77_021D86B4
|
|
_021D7AFA:
|
|
ldr r0, _021D7B8C ; =0x0000C2D8
|
|
ldrh r0, [r4, r0]
|
|
cmp r6, r0
|
|
beq _021D7B66
|
|
mov r0, #0x10
|
|
str r0, [r5]
|
|
ldr r0, _021D7B98 ; =0x000005DD
|
|
bl PlaySE
|
|
b _021D7B66
|
|
_021D7B0E:
|
|
bl MOD77_021D8CF8
|
|
cmp r0, #1
|
|
bne _021D7B66
|
|
mov r0, #0xf
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7B1C:
|
|
ldr r0, _021D7BA0 ; =0x0000C2EC
|
|
add r1, r7, #0
|
|
str r7, [r4, r0]
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4]
|
|
add r2, r7, #0
|
|
str r0, [sp, #8]
|
|
add r0, r7, #0
|
|
add r3, r7, #0
|
|
bl FUN_0200E1D0
|
|
mov r0, #0x12
|
|
str r0, [r5]
|
|
b _021D7B66
|
|
_021D7B3E:
|
|
bl FUN_0200E308
|
|
cmp r0, #1
|
|
bne _021D7B66
|
|
ldr r0, _021D7BA4 ; =0x0000C2E8
|
|
mov r1, #1
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
bl MOD77_021D8248
|
|
add r0, r4, #0
|
|
bl MOD77_021D88D0
|
|
ldr r0, _021D7BA8 ; =0x0000C060
|
|
ldr r0, [r4, r0]
|
|
bl DestroyMsgData
|
|
add r0, r7, #0
|
|
str r0, [r5]
|
|
mov r7, #1
|
|
_021D7B66:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8D84
|
|
add r0, r7, #0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7B74: .word 0x0000C2F4
|
|
_021D7B78: .word 0x0000C014
|
|
_021D7B7C: .word 0x0000C034
|
|
_021D7B80: .word 0x000001D9
|
|
_021D7B84: .word 0x0000C314
|
|
_021D7B88: .word 0x0000C328
|
|
_021D7B8C: .word 0x0000C2D8
|
|
_021D7B90: .word gMain
|
|
_021D7B94: .word 0x0000C2F8
|
|
_021D7B98: .word 0x000005DD
|
|
_021D7B9C: .word 0x00000403
|
|
_021D7BA0: .word 0x0000C2EC
|
|
_021D7BA4: .word 0x0000C2E8
|
|
_021D7BA8: .word 0x0000C060
|
|
thumb_func_end MOD77_021D7604
|
|
|
|
thumb_func_start MOD77_021D7BAC
|
|
MOD77_021D7BAC: ; 0x021D7BAC
|
|
push {r4, r5, r6, lr}
|
|
add r6, r0, #0
|
|
bl OverlayManager_GetData
|
|
add r4, r0, #0
|
|
mov r0, #4
|
|
mov r1, #0
|
|
ldr r5, [r4]
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GX_EngineBToggleLayers
|
|
mov r0, #8
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #8
|
|
mov r1, #0
|
|
bl GX_EngineBToggleLayers
|
|
ldr r0, _021D7C14 ; =0x0000C2CC
|
|
ldr r0, [r4, r0]
|
|
bl Camera_Free
|
|
ldr r0, _021D7C18 ; =0x0000C070
|
|
ldr r0, [r4, r0]
|
|
bl ScrStrBufs_delete
|
|
bl FUN_0201B398
|
|
ldr r0, _021D7C1C ; =0x0000C010
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
add r0, r6, #0
|
|
bl OverlayManager_FreeData
|
|
add r0, r5, #0
|
|
bl DestroyHeap
|
|
ldr r0, _021D7C20 ; =gMain + 0x60
|
|
mov r1, #0
|
|
strb r1, [r0, #5]
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021D7C14: .word 0x0000C2CC
|
|
_021D7C18: .word 0x0000C070
|
|
_021D7C1C: .word 0x0000C010
|
|
_021D7C20: .word gMain + 0x60
|
|
thumb_func_end MOD77_021D7BAC
|
|
|
|
thumb_func_start MOD77_021D7C24
|
|
MOD77_021D7C24: ; 0x021D7C24
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021D7C40 ; =0x021D9084
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021D7C2E:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D7C2E
|
|
add r0, sp, #0
|
|
bl GX_SetBanks
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D7C40: .word MOD77_021D9084
|
|
thumb_func_end MOD77_021D7C24
|
|
|
|
thumb_func_start MOD77_021D7C44
|
|
MOD77_021D7C44: ; 0x021D7C44
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, _021D7C60 ; =0x021D8F54
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
bl SetBothScreensModesAndDisable
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D7C60: .word MOD77_021D8F54
|
|
thumb_func_end MOD77_021D7C44
|
|
|
|
thumb_func_start MOD77_021D7C64
|
|
MOD77_021D7C64: ; 0x021D7C64
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x24
|
|
mov r2, #0
|
|
str r0, [sp, #8]
|
|
str r2, [r0, #0xc]
|
|
str r2, [sp]
|
|
add r0, sp, #0x20
|
|
str r0, [sp, #4]
|
|
ldr r3, [sp, #8]
|
|
mov r0, #0x66
|
|
ldr r3, [r3]
|
|
mov r1, #0x12
|
|
bl GfGfxLoader_LoadFromNarc_GetSizeOut
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x20]
|
|
mov r1, #6
|
|
bl _u32_div_f
|
|
add r7, r0, #0
|
|
ldr r0, [sp, #0x18]
|
|
mov r5, #1
|
|
add r4, r0, #6
|
|
cmp r7, #1
|
|
ble _021D7CCA
|
|
ldr r6, [sp, #8]
|
|
add r6, #0xc
|
|
_021D7C9A:
|
|
ldrh r0, [r4]
|
|
cmp r0, #2
|
|
beq _021D7CC2
|
|
lsl r0, r5, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #8]
|
|
mov r2, #2
|
|
mov r3, #4
|
|
add r1, r0, #0
|
|
ldrsh r2, [r4, r2]
|
|
ldrsh r3, [r4, r3]
|
|
ldr r1, [r1, #0xc]
|
|
bl MOD77_021D7D58
|
|
ldr r0, [r6]
|
|
add r0, r0, #1
|
|
str r0, [r6]
|
|
_021D7CC2:
|
|
add r5, r5, #1
|
|
add r4, r4, #6
|
|
cmp r5, r7
|
|
blt _021D7C9A
|
|
_021D7CCA:
|
|
ldr r0, [sp, #0x18]
|
|
bl FreeToHeap
|
|
mov r7, #1
|
|
bl FUN_02088D1C
|
|
str r0, [sp, #0x10]
|
|
cmp r0, #1
|
|
ble _021D7D52
|
|
ldr r6, [sp, #8]
|
|
add r6, #0xc
|
|
_021D7CE0:
|
|
add r0, r7, #0
|
|
bl FUN_02088D84
|
|
add r1, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
add r0, sp, #0x1c
|
|
str r0, [sp, #4]
|
|
ldr r3, [sp, #8]
|
|
mov r0, #0x66
|
|
ldr r3, [r3]
|
|
mov r2, #0
|
|
bl GfGfxLoader_LoadFromNarc_GetSizeOut
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x1c]
|
|
mov r5, #1
|
|
lsr r0, r0, #2
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x14]
|
|
add r4, r0, #4
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #1
|
|
ble _021D7D44
|
|
_021D7D10:
|
|
add r0, r7, #0
|
|
bl FUN_02088D68
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp]
|
|
lsl r0, r5, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #8]
|
|
mov r2, #0
|
|
mov r3, #2
|
|
add r1, r0, #0
|
|
ldrsh r2, [r4, r2]
|
|
ldrsh r3, [r4, r3]
|
|
ldr r1, [r1, #0xc]
|
|
bl MOD77_021D7D58
|
|
ldr r0, [r6]
|
|
add r5, r5, #1
|
|
add r0, r0, #1
|
|
str r0, [r6]
|
|
ldr r0, [sp, #0xc]
|
|
add r4, r4, #4
|
|
cmp r5, r0
|
|
blt _021D7D10
|
|
_021D7D44:
|
|
ldr r0, [sp, #0x14]
|
|
bl FreeToHeap
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #1
|
|
cmp r7, r0
|
|
blt _021D7CE0
|
|
_021D7D52:
|
|
add sp, #0x24
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD77_021D7C64
|
|
|
|
thumb_func_start MOD77_021D7D58
|
|
MOD77_021D7D58: ; 0x021D7D58
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x30
|
|
ldr r5, _021D7DC8 ; =0x021D903C
|
|
add r7, r2, #0
|
|
add r6, r3, #0
|
|
add r4, r0, #0
|
|
mov ip, r1
|
|
add r3, sp, #0xc
|
|
mov r2, #4
|
|
_021D7D6A:
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D7D6A
|
|
ldr r0, [r5]
|
|
mov r1, #0x30
|
|
str r0, [r3]
|
|
mov r0, ip
|
|
add r5, r0, #0
|
|
mul r5, r1
|
|
add r0, r4, r5
|
|
strh r7, [r0, #0x10]
|
|
strh r6, [r0, #0x12]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
str r7, [sp]
|
|
str r6, [sp, #4]
|
|
bl MOD77_021D8AA8
|
|
add r3, r4, r5
|
|
add r6, sp, #0xc
|
|
add r3, #0x14
|
|
mov r2, #4
|
|
_021D7D9C:
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D7D9C
|
|
ldr r0, [r6]
|
|
add r2, sp, #0x38
|
|
str r0, [r3]
|
|
ldrh r1, [r2, #0x10]
|
|
ldrh r2, [r2, #0x14]
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02029B40
|
|
add r2, r4, r5
|
|
strh r0, [r2, #0x38]
|
|
add r0, sp, #0x38
|
|
ldrh r1, [r0, #0x10]
|
|
strh r1, [r2, #0x3a]
|
|
ldrh r0, [r0, #0x14]
|
|
strh r0, [r2, #0x3c]
|
|
add sp, #0x30
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7DC8: .word MOD77_021D903C
|
|
thumb_func_end MOD77_021D7D58
|
|
|
|
thumb_func_start MOD77_021D7DCC
|
|
MOD77_021D7DCC: ; 0x021D7DCC
|
|
push {r4, r5, r6, r7}
|
|
ldr r1, [r0, #0xc]
|
|
mov r4, #0
|
|
cmp r1, #0
|
|
bls _021D7E0A
|
|
ldr r1, _021D7E10 ; =0x0000C318
|
|
add r5, r0, #0
|
|
mov r3, #3
|
|
sub r2, r1, #4
|
|
_021D7DDE:
|
|
ldrh r6, [r5, #0x3a]
|
|
ldr r7, [r0, r2]
|
|
cmp r7, r6
|
|
bne _021D7E00
|
|
ldrh r6, [r5, #0x3c]
|
|
ldr r7, [r0, r1]
|
|
cmp r7, r6
|
|
bne _021D7E00
|
|
strh r3, [r5, #0x38]
|
|
mov r6, #0x10
|
|
ldrsh r7, [r5, r6]
|
|
ldr r6, _021D7E14 ; =0x0000C2B4
|
|
str r7, [r0, r6]
|
|
mov r6, #0x12
|
|
ldrsh r7, [r5, r6]
|
|
ldr r6, _021D7E18 ; =0x0000C2B8
|
|
str r7, [r0, r6]
|
|
_021D7E00:
|
|
ldr r6, [r0, #0xc]
|
|
add r4, r4, #1
|
|
add r5, #0x30
|
|
cmp r4, r6
|
|
blo _021D7DDE
|
|
_021D7E0A:
|
|
pop {r4, r5, r6, r7}
|
|
bx lr
|
|
nop
|
|
_021D7E10: .word 0x0000C318
|
|
_021D7E14: .word 0x0000C2B4
|
|
_021D7E18: .word 0x0000C2B8
|
|
thumb_func_end MOD77_021D7DCC
|
|
|
|
thumb_func_start MOD77_021D7E1C
|
|
MOD77_021D7E1C: ; 0x021D7E1C
|
|
ldr r3, _021D7E20 ; =FUN_02088D20
|
|
bx r3
|
|
.align 2, 0
|
|
_021D7E20: .word FUN_02088D20
|
|
thumb_func_end MOD77_021D7E1C
|
|
|
|
thumb_func_start MOD77_021D7E24
|
|
MOD77_021D7E24: ; 0x021D7E24
|
|
push {r4, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
ldr r0, _021D7F2C ; =0x0000C2F8
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
ldr r1, _021D7F30 ; =gMain + 0x40
|
|
ldrh r2, [r1, #0x20]
|
|
cmp r2, #0
|
|
beq _021D7E86
|
|
ldrh r2, [r1, #0x1c]
|
|
cmp r2, #0xc8
|
|
blo _021D7E54
|
|
cmp r2, #0xf8
|
|
bhi _021D7E54
|
|
ldrh r1, [r1, #0x1e]
|
|
cmp r1, #0xa8
|
|
blo _021D7E54
|
|
cmp r1, #0xb8
|
|
bhi _021D7E54
|
|
mov r1, #2
|
|
add sp, #0x18
|
|
str r1, [r4, r0]
|
|
pop {r4, pc}
|
|
_021D7E54:
|
|
ldr r0, _021D7F34 ; =0x0000C2FC
|
|
mov r2, #0
|
|
add r1, r0, #0
|
|
str r2, [r4, r0]
|
|
add r1, #0xc
|
|
str r2, [r4, r1]
|
|
add r1, r0, #0
|
|
add r1, #0x10
|
|
str r2, [r4, r1]
|
|
add r1, r0, #0
|
|
add r1, #0x14
|
|
str r2, [r4, r1]
|
|
sub r1, r0, #4
|
|
str r2, [r4, r1]
|
|
ldr r2, _021D7F30 ; =gMain + 0x40
|
|
add r1, r0, #4
|
|
ldrh r3, [r2, #0x1c]
|
|
str r3, [r4, r1]
|
|
add r1, r0, #0
|
|
ldrh r2, [r2, #0x1e]
|
|
add r1, #8
|
|
add r0, #0x14
|
|
str r2, [r4, r1]
|
|
mov r1, #4
|
|
str r1, [r4, r0]
|
|
_021D7E86:
|
|
ldr r0, _021D7F30 ; =gMain + 0x40
|
|
ldrh r0, [r0, #0x22]
|
|
cmp r0, #0
|
|
beq _021D7F02
|
|
ldr r1, _021D7F34 ; =0x0000C2FC
|
|
ldr r2, [r4, r1]
|
|
cmp r2, #0
|
|
beq _021D7E9E
|
|
cmp r2, #1
|
|
beq _021D7EBA
|
|
add sp, #0x18
|
|
pop {r4, pc}
|
|
_021D7E9E:
|
|
add r0, r1, #0
|
|
add r0, #0x14
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021D7EAE
|
|
add r0, r2, #1
|
|
str r0, [r4, r1]
|
|
b _021D7EBA
|
|
_021D7EAE:
|
|
add r0, r1, #0
|
|
add r0, #0x14
|
|
ldr r0, [r4, r0]
|
|
add r1, #0x14
|
|
sub r0, r0, #1
|
|
str r0, [r4, r1]
|
|
_021D7EBA:
|
|
add r0, sp, #0xc
|
|
mov r1, #0xc3
|
|
str r0, [sp]
|
|
add r0, sp, #8
|
|
lsl r1, r1, #8
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, r1]
|
|
add r1, r1, #4
|
|
ldr r1, [r4, r1]
|
|
add r2, sp, #0x14
|
|
add r3, sp, #0x10
|
|
bl MOD77_021D7F3C
|
|
ldr r1, [sp, #0x14]
|
|
ldr r0, [sp, #0xc]
|
|
orr r0, r1
|
|
ldr r1, _021D7F2C ; =0x0000C2F8
|
|
str r0, [r4, r1]
|
|
add r0, r1, #0
|
|
ldr r2, [sp, #0x10]
|
|
add r0, #0x10
|
|
str r2, [r4, r0]
|
|
ldr r2, [sp, #8]
|
|
add r0, r1, #0
|
|
add r0, #0x14
|
|
str r2, [r4, r0]
|
|
add r0, r1, #0
|
|
ldr r2, _021D7F30 ; =gMain + 0x40
|
|
add r0, #8
|
|
ldrh r3, [r2, #0x1c]
|
|
add r1, #0xc
|
|
add sp, #0x18
|
|
str r3, [r4, r0]
|
|
ldrh r0, [r2, #0x1e]
|
|
str r0, [r4, r1]
|
|
pop {r4, pc}
|
|
_021D7F02:
|
|
ldr r0, _021D7F38 ; =0x0000C310
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0
|
|
beq _021D7F10
|
|
mov r1, #1
|
|
sub r0, #0x18
|
|
str r1, [r4, r0]
|
|
_021D7F10:
|
|
ldr r1, _021D7F34 ; =0x0000C2FC
|
|
mov r2, #0
|
|
add r0, r1, #0
|
|
str r2, [r4, r1]
|
|
add r0, #0xc
|
|
str r2, [r4, r0]
|
|
add r0, r1, #0
|
|
add r0, #0x10
|
|
str r2, [r4, r0]
|
|
add r1, #0x14
|
|
str r2, [r4, r1]
|
|
add sp, #0x18
|
|
pop {r4, pc}
|
|
nop
|
|
_021D7F2C: .word 0x0000C2F8
|
|
_021D7F30: .word gMain + 0x40
|
|
_021D7F34: .word 0x0000C2FC
|
|
_021D7F38: .word 0x0000C310
|
|
thumb_func_end MOD77_021D7E24
|
|
|
|
thumb_func_start MOD77_021D7F3C
|
|
MOD77_021D7F3C: ; 0x021D7F3C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov lr, r0
|
|
ldr r0, _021D7FA4 ; =gMain + 0x40
|
|
mov ip, r1
|
|
ldrh r5, [r0, #0x1c]
|
|
mov r1, #0
|
|
add r7, r2, #0
|
|
add r6, r3, #0
|
|
ldr r0, _021D7FA8 ; =0x0000FFFF
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
add r4, r1, #0
|
|
cmp r5, r0
|
|
beq _021D7F6C
|
|
mov r0, lr
|
|
sub r3, r5, r0
|
|
bpl _021D7F66
|
|
sub r0, r1, #1
|
|
eor r3, r0
|
|
mov r1, #0x10
|
|
b _021D7F6C
|
|
_021D7F66:
|
|
cmp r3, #0
|
|
ble _021D7F6C
|
|
mov r1, #0x20
|
|
_021D7F6C:
|
|
str r1, [r7]
|
|
mov r1, #0x3f
|
|
add r0, r3, #0
|
|
and r0, r1
|
|
str r0, [r6]
|
|
ldr r0, _021D7FA4 ; =gMain + 0x40
|
|
ldrh r3, [r0, #0x1e]
|
|
ldr r0, _021D7FA8 ; =0x0000FFFF
|
|
cmp r3, r0
|
|
beq _021D7F94
|
|
mov r0, ip
|
|
sub r4, r3, r0
|
|
bpl _021D7F8E
|
|
sub r1, #0x40
|
|
eor r4, r1
|
|
mov r2, #0x80
|
|
b _021D7F94
|
|
_021D7F8E:
|
|
cmp r4, #0
|
|
ble _021D7F94
|
|
mov r2, #0x40
|
|
_021D7F94:
|
|
ldr r0, [sp, #0x18]
|
|
add r1, r4, #0
|
|
str r2, [r0]
|
|
mov r0, #0x3f
|
|
and r1, r0
|
|
ldr r0, [sp, #0x1c]
|
|
str r1, [r0]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D7FA4: .word gMain + 0x40
|
|
_021D7FA8: .word 0x0000FFFF
|
|
thumb_func_end MOD77_021D7F3C
|
|
|
|
thumb_func_start MOD77_021D7FAC
|
|
MOD77_021D7FAC: ; 0x021D7FAC
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r5, r0, #0
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D820C ; =0x021D8F7C
|
|
ldr r0, [r5, r0]
|
|
mov r1, #6
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
mov r1, #6
|
|
ldr r0, [r5, r0]
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D8210 ; =0x021D8F98
|
|
ldr r0, [r5, r0]
|
|
mov r1, #7
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5]
|
|
ldr r2, _021D8208 ; =0x0000C010
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r5, r2]
|
|
mov r0, #0x81
|
|
mov r1, #5
|
|
mov r3, #7
|
|
bl GfGfxLoader_LoadCharData
|
|
mov r0, #0x80
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
mov r1, #6
|
|
str r0, [sp, #4]
|
|
mov r0, #0x81
|
|
mov r2, #4
|
|
mov r3, #0
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5]
|
|
mov r1, #7
|
|
str r0, [sp, #0xc]
|
|
ldr r2, _021D8208 ; =0x0000C010
|
|
mov r0, #0x81
|
|
ldr r2, [r5, r2]
|
|
add r3, r1, #0
|
|
bl GfGfxLoader_LoadScrnData
|
|
ldr r0, [r5, #8]
|
|
bl Options_GetFrame
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
mov r1, #6
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D8214 ; =0x000001E2
|
|
ldr r0, [r5, r0]
|
|
add r3, r1, #0
|
|
bl FUN_0200CD68
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
ldr r2, _021D8218 ; =0x000001D9
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
mov r1, #6
|
|
ldr r0, [r5, r0]
|
|
mov r3, #7
|
|
bl FUN_0200CB00
|
|
ldr r2, [r5]
|
|
mov r0, #4
|
|
mov r1, #0x80
|
|
bl FUN_02002ED0
|
|
ldr r3, [r5]
|
|
mov r0, #6
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
bl BG_ClearCharDataRange
|
|
ldr r1, _021D821C ; =0x00004753
|
|
mov r0, #6
|
|
bl BG_SetMaskColor
|
|
ldr r1, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D8220 ; =0x021D8F40
|
|
ldr r0, [r5, r1]
|
|
add r1, r1, #4
|
|
add r1, r5, r1
|
|
bl AddWindow
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8224 ; =0x0000C014
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D8224 ; =0x0000C014
|
|
ldr r2, _021D8214 ; =0x000001E2
|
|
add r0, r5, r0
|
|
mov r1, #0
|
|
mov r3, #6
|
|
bl FUN_0200D0BC
|
|
ldr r0, _021D8228 ; =0x0000C064
|
|
mov r3, #0
|
|
str r3, [r5, r0]
|
|
sub r0, #0x54
|
|
ldr r0, [r5, r0]
|
|
ldr r2, _021D820C ; =0x021D8F7C
|
|
mov r1, #2
|
|
bl InitBgFromTemplate
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
mov r1, #2
|
|
ldr r0, [r5, r0]
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D8210 ; =0x021D8F98
|
|
ldr r0, [r5, r0]
|
|
mov r1, #3
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5]
|
|
ldr r2, _021D8208 ; =0x0000C010
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r5, r2]
|
|
mov r0, #0x81
|
|
mov r1, #5
|
|
mov r3, #3
|
|
bl GfGfxLoader_LoadCharData
|
|
mov r0, #0x80
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
mov r2, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #0x81
|
|
mov r1, #6
|
|
add r3, r2, #0
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5]
|
|
ldr r2, _021D8208 ; =0x0000C010
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r5, r2]
|
|
mov r0, #0x81
|
|
mov r1, #7
|
|
mov r3, #3
|
|
bl GfGfxLoader_LoadScrnData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
ldr r2, _021D8218 ; =0x000001D9
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8208 ; =0x0000C010
|
|
mov r1, #2
|
|
ldr r0, [r5, r0]
|
|
mov r3, #7
|
|
bl FUN_0200CB00
|
|
ldr r2, [r5]
|
|
mov r0, #0
|
|
mov r1, #0x80
|
|
bl FUN_02002ED0
|
|
ldr r3, [r5]
|
|
mov r0, #2
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
bl BG_ClearCharDataRange
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl BG_SetMaskColor
|
|
ldr r1, [r5]
|
|
mov r0, #0x10
|
|
bl String_ctor
|
|
add r4, r0, #0
|
|
ldr r1, [r5]
|
|
mov r0, #2
|
|
bl FUN_02002C50
|
|
ldr r1, _021D822C ; =0x00004E56
|
|
add r0, sp, #0x10
|
|
strh r1, [r0, #6]
|
|
ldr r1, _021D8230 ; =0x00003571
|
|
mov r3, #0x82
|
|
strh r1, [r0, #4]
|
|
ldr r1, _021D8234 ; =0x0000208C
|
|
strh r1, [r0, #2]
|
|
ldr r1, _021D8238 ; =0x00007FFF
|
|
strh r1, [r0]
|
|
mov r0, #2
|
|
add r1, sp, #0x14
|
|
add r1, #2
|
|
add r2, r0, #0
|
|
bl BG_LoadPlttData
|
|
mov r0, #2
|
|
add r1, sp, #0x14
|
|
add r2, r0, #0
|
|
mov r3, #0x84
|
|
bl BG_LoadPlttData
|
|
mov r0, #2
|
|
add r1, sp, #0x10
|
|
add r1, #2
|
|
add r2, r0, #0
|
|
mov r3, #0x86
|
|
bl BG_LoadPlttData
|
|
mov r0, #2
|
|
add r1, sp, #0x10
|
|
add r2, r0, #0
|
|
mov r3, #0x9e
|
|
bl BG_LoadPlttData
|
|
ldr r1, _021D8208 ; =0x0000C010
|
|
ldr r2, _021D823C ; =0x021D8F30
|
|
ldr r0, [r5, r1]
|
|
add r1, #0x24
|
|
add r1, r5, r1
|
|
bl AddWindow
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8240 ; =0x0000C034
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D8244 ; =0x0000C060
|
|
mov r1, #0xc
|
|
ldr r0, [r5, r0]
|
|
add r2, r4, #0
|
|
bl ReadMsgDataIntoString
|
|
mov r0, #2
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
mov r3, #0x30
|
|
bl FUN_02002F40
|
|
mov r1, #0
|
|
add r3, r0, #0
|
|
str r1, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8240 ; =0x0000C034
|
|
str r1, [sp, #8]
|
|
add r0, r5, r0
|
|
mov r1, #2
|
|
add r2, r4, #0
|
|
bl AddTextPrinterParameterized
|
|
add r0, r4, #0
|
|
bl String_dtor
|
|
mov r0, #2
|
|
bl FUN_02002CF8
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021D8208: .word 0x0000C010
|
|
_021D820C: .word MOD77_021D8F7C
|
|
_021D8210: .word MOD77_021D8F98
|
|
_021D8214: .word 0x000001E2
|
|
_021D8218: .word 0x000001D9
|
|
_021D821C: .word 0x00004753
|
|
_021D8220: .word MOD77_021D8F40
|
|
_021D8224: .word 0x0000C014
|
|
_021D8228: .word 0x0000C064
|
|
_021D822C: .word 0x00004E56
|
|
_021D8230: .word 0x00003571
|
|
_021D8234: .word 0x0000208C
|
|
_021D8238: .word 0x00007FFF
|
|
_021D823C: .word MOD77_021D8F30
|
|
_021D8240: .word 0x0000C034
|
|
_021D8244: .word 0x0000C060
|
|
thumb_func_end MOD77_021D7FAC
|
|
|
|
thumb_func_start MOD77_021D8248
|
|
MOD77_021D8248: ; 0x021D8248
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D8288 ; =0x0000C034
|
|
add r0, r4, r0
|
|
bl RemoveWindow
|
|
ldr r0, _021D828C ; =0x0000C014
|
|
add r0, r4, r0
|
|
bl RemoveWindow
|
|
ldr r0, _021D8290 ; =0x0000C010
|
|
mov r1, #2
|
|
ldr r0, [r4, r0]
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, _021D8290 ; =0x0000C010
|
|
mov r1, #6
|
|
ldr r0, [r4, r0]
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, _021D8290 ; =0x0000C010
|
|
mov r1, #3
|
|
ldr r0, [r4, r0]
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, _021D8290 ; =0x0000C010
|
|
mov r1, #7
|
|
ldr r0, [r4, r0]
|
|
bl FreeBgTilemapBuffer
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8288: .word 0x0000C034
|
|
_021D828C: .word 0x0000C014
|
|
_021D8290: .word 0x0000C010
|
|
thumb_func_end MOD77_021D8248
|
|
|
|
thumb_func_start MOD77_021D8294
|
|
MOD77_021D8294: ; 0x021D8294
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
ldr r0, _021D8348 ; =0x0000C064
|
|
add r6, r1, #0
|
|
ldr r1, [r5, r0]
|
|
mov r4, #0
|
|
cmp r1, #0
|
|
beq _021D82B0
|
|
cmp r1, #1
|
|
beq _021D830A
|
|
cmp r1, #2
|
|
beq _021D832A
|
|
b _021D8340
|
|
_021D82B0:
|
|
mov r1, #0xd8
|
|
str r1, [sp]
|
|
mov r1, #0x20
|
|
sub r0, #0x50
|
|
str r1, [sp, #4]
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r2, r4, #0
|
|
add r3, r4, #0
|
|
bl FillWindowPixelRect
|
|
mov r0, #1
|
|
ldr r1, [r5]
|
|
lsl r0, r0, #0xa
|
|
bl String_ctor
|
|
ldr r2, _021D834C ; =0x0000C06C
|
|
add r1, r6, #0
|
|
str r0, [r5, r2]
|
|
add r0, r2, #0
|
|
sub r0, #0xc
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, r2]
|
|
bl ReadMsgDataIntoString
|
|
ldr r0, [r5, #8]
|
|
bl Options_GetTextFrameDelay
|
|
add r3, r4, #0
|
|
str r3, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r2, _021D8350 ; =0x0000C014
|
|
str r3, [sp, #8]
|
|
add r0, r5, r2
|
|
add r2, #0x58
|
|
ldr r2, [r5, r2]
|
|
mov r1, #1
|
|
bl AddTextPrinterParameterized
|
|
ldr r1, _021D8354 ; =0x0000C068
|
|
mov r2, #1
|
|
str r0, [r5, r1]
|
|
sub r0, r1, #4
|
|
str r2, [r5, r0]
|
|
b _021D8340
|
|
_021D830A:
|
|
add r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
bl FUN_0201BD70
|
|
cmp r0, #0
|
|
bne _021D8340
|
|
ldr r0, _021D834C ; =0x0000C06C
|
|
ldr r0, [r5, r0]
|
|
bl String_dtor
|
|
ldr r0, _021D8348 ; =0x0000C064
|
|
mov r1, #2
|
|
str r1, [r5, r0]
|
|
b _021D8340
|
|
_021D832A:
|
|
cmp r2, #0
|
|
bne _021D8338
|
|
ldr r0, _021D8358 ; =gMain
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #1
|
|
tst r0, r1
|
|
beq _021D8340
|
|
_021D8338:
|
|
ldr r0, _021D8348 ; =0x0000C064
|
|
mov r1, #0
|
|
str r1, [r5, r0]
|
|
mov r4, #1
|
|
_021D8340:
|
|
add r0, r4, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, r5, r6, pc}
|
|
nop
|
|
_021D8348: .word 0x0000C064
|
|
_021D834C: .word 0x0000C06C
|
|
_021D8350: .word 0x0000C014
|
|
_021D8354: .word 0x0000C068
|
|
_021D8358: .word gMain
|
|
thumb_func_end MOD77_021D8294
|
|
|
|
thumb_func_start MOD77_021D835C
|
|
MOD77_021D835C: ; 0x021D835C
|
|
push {r3, lr}
|
|
cmp r2, #0
|
|
bne _021D8368
|
|
ldr r0, _021D836C ; =0x000005DC
|
|
bl PlaySE
|
|
_021D8368:
|
|
pop {r3, pc}
|
|
nop
|
|
_021D836C: .word 0x000005DC
|
|
thumb_func_end MOD77_021D835C
|
|
|
|
thumb_func_start MOD77_021D8370
|
|
MOD77_021D8370: ; 0x021D8370
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x24
|
|
add r5, r0, #0
|
|
ldr r0, _021D8400 ; =0x0000C010
|
|
add r6, r3, #0
|
|
ldr r0, [r5, r0]
|
|
str r1, [sp]
|
|
bl AddWindow
|
|
ldrh r0, [r6, #0x10]
|
|
ldr r1, [r5]
|
|
bl ListMenuItems_ctor
|
|
ldr r1, _021D8404 ; =0x0000C058
|
|
mov r7, #0
|
|
str r0, [r5, r1]
|
|
ldrh r0, [r6, #0x10]
|
|
cmp r0, #0
|
|
ble _021D83B2
|
|
ldr r4, [sp, #0x38]
|
|
_021D8398:
|
|
ldr r0, _021D8404 ; =0x0000C058
|
|
ldr r1, _021D8408 ; =0x0000C060
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r5, r1]
|
|
ldr r2, [r4]
|
|
ldr r3, [r4, #4]
|
|
bl ListMenuItems_AppendFromMsgData
|
|
ldrh r0, [r6, #0x10]
|
|
add r7, r7, #1
|
|
add r4, #8
|
|
cmp r7, r0
|
|
blt _021D8398
|
|
_021D83B2:
|
|
add r3, sp, #4
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, _021D8404 ; =0x0000C058
|
|
mov r1, #0
|
|
ldr r0, [r5, r0]
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, _021D840C ; =MOD77_021D835C
|
|
str r0, [sp, #8]
|
|
ldr r3, [r5]
|
|
add r0, r2, #0
|
|
lsl r3, r3, #0x18
|
|
add r2, r1, #0
|
|
lsr r3, r3, #0x18
|
|
bl ListMenuInit
|
|
ldr r1, _021D8410 ; =0x0000C054
|
|
ldr r2, _021D8414 ; =0x000001D9
|
|
str r0, [r5, r1]
|
|
ldr r0, [sp, #0x10]
|
|
mov r1, #1
|
|
mov r3, #7
|
|
bl FUN_0200CCA4
|
|
ldr r0, [sp]
|
|
bl CopyWindowToVram
|
|
add sp, #0x24
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8400: .word 0x0000C010
|
|
_021D8404: .word 0x0000C058
|
|
_021D8408: .word 0x0000C060
|
|
_021D840C: .word MOD77_021D835C
|
|
_021D8410: .word 0x0000C054
|
|
_021D8414: .word 0x000001D9
|
|
thumb_func_end MOD77_021D8370
|
|
|
|
thumb_func_start MOD77_021D8418
|
|
MOD77_021D8418: ; 0x021D8418
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x2c
|
|
add r5, r0, #0
|
|
ldr r0, _021D84C4 ; =0x0000C010
|
|
str r1, [sp]
|
|
ldr r0, [r5, r0]
|
|
str r3, [sp, #4]
|
|
ldr r7, [sp, #0x44]
|
|
ldr r6, [sp, #0x48]
|
|
bl AddWindow
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [r5]
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
bl NewMsgDataFromNarc
|
|
str r0, [sp, #8]
|
|
ldr r1, [r5]
|
|
add r0, r6, #0
|
|
bl ListMenuItems_ctor
|
|
ldr r1, _021D84C8 ; =0x0000C058
|
|
mov r4, #0
|
|
str r0, [r5, r1]
|
|
cmp r6, #0
|
|
bls _021D8462
|
|
_021D844E:
|
|
ldr r0, _021D84C8 ; =0x0000C058
|
|
ldrb r2, [r7, r4]
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [sp, #8]
|
|
add r3, r4, #0
|
|
bl ListMenuItems_AppendFromMsgData
|
|
add r4, r4, #1
|
|
cmp r4, r6
|
|
blo _021D844E
|
|
_021D8462:
|
|
ldr r0, [sp, #8]
|
|
bl DestroyMsgData
|
|
ldr r4, [sp, #4]
|
|
add r3, sp, #0xc
|
|
ldmia r4!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
str r4, [sp, #4]
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
str r4, [sp, #4]
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
str r4, [sp, #4]
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, _021D84C8 ; =0x0000C058
|
|
mov r1, #0
|
|
ldr r0, [r5, r0]
|
|
str r4, [sp, #4]
|
|
str r0, [sp, #0xc]
|
|
add r0, sp, #0xc
|
|
strh r6, [r0, #0x10]
|
|
ldr r0, [sp]
|
|
str r0, [sp, #0x18]
|
|
ldr r0, _021D84CC ; =MOD77_021D835C
|
|
str r0, [sp, #0x10]
|
|
ldr r3, [r5]
|
|
add r0, r2, #0
|
|
lsl r3, r3, #0x18
|
|
add r2, r1, #0
|
|
lsr r3, r3, #0x18
|
|
bl ListMenuInit
|
|
ldr r1, _021D84D0 ; =0x0000C054
|
|
ldr r2, _021D84D4 ; =0x000001D9
|
|
str r0, [r5, r1]
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, #1
|
|
mov r3, #7
|
|
bl FUN_0200CCA4
|
|
ldr r0, [sp]
|
|
bl CopyWindowToVram
|
|
add sp, #0x2c
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D84C4: .word 0x0000C010
|
|
_021D84C8: .word 0x0000C058
|
|
_021D84CC: .word MOD77_021D835C
|
|
_021D84D0: .word 0x0000C054
|
|
_021D84D4: .word 0x000001D9
|
|
thumb_func_end MOD77_021D8418
|
|
|
|
thumb_func_start MOD77_021D84D8
|
|
MOD77_021D84D8: ; 0x021D84D8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D8504 ; =0x0000C024
|
|
mov r1, #0
|
|
add r0, r4, r0
|
|
bl FUN_0200CCF8
|
|
ldr r0, _021D8504 ; =0x0000C024
|
|
add r0, r4, r0
|
|
bl RemoveWindow
|
|
ldr r0, _021D8508 ; =0x0000C054
|
|
mov r1, #0
|
|
ldr r0, [r4, r0]
|
|
add r2, r1, #0
|
|
bl DestroyListMenu
|
|
ldr r0, _021D850C ; =0x0000C058
|
|
ldr r0, [r4, r0]
|
|
bl ListMenuItems_dtor
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D8504: .word 0x0000C024
|
|
_021D8508: .word 0x0000C054
|
|
_021D850C: .word 0x0000C058
|
|
thumb_func_end MOD77_021D84D8
|
|
|
|
thumb_func_start MOD77_021D8510
|
|
MOD77_021D8510: ; 0x021D8510
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
mov r0, #1
|
|
ldr r1, [r5]
|
|
lsl r0, r0, #0xa
|
|
bl String_ctor
|
|
add r4, r0, #0
|
|
mov r0, #1
|
|
ldr r1, [r5]
|
|
lsl r0, r0, #0xa
|
|
bl String_ctor
|
|
ldr r1, _021D85C4 ; =0x0000C010
|
|
add r6, r0, #0
|
|
ldr r0, [r5, r1]
|
|
add r1, #0x34
|
|
ldr r2, _021D85C8 ; =0x021D8F28
|
|
add r1, r5, r1
|
|
bl AddWindow
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x30
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D85CC ; =0x0000C044
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D85CC ; =0x0000C044
|
|
ldr r2, _021D85D0 ; =0x000001D9
|
|
add r0, r5, r0
|
|
mov r1, #0
|
|
mov r3, #7
|
|
bl FUN_0200CCA4
|
|
ldr r0, _021D85D4 ; =0x0000C070
|
|
ldr r2, _021D85D8 ; =0x0000C314
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, r2]
|
|
mov r1, #0
|
|
bl BufferCountryName
|
|
ldr r3, _021D85D8 ; =0x0000C314
|
|
ldr r0, _021D85D4 ; =0x0000C070
|
|
ldr r2, [r5, r3]
|
|
add r3, r3, #4
|
|
ldr r0, [r5, r0]
|
|
ldr r3, [r5, r3]
|
|
mov r1, #1
|
|
bl BufferCityName
|
|
ldr r0, _021D85DC ; =0x0000C060
|
|
mov r1, #0xd
|
|
ldr r0, [r5, r0]
|
|
add r2, r6, #0
|
|
bl ReadMsgDataIntoString
|
|
ldr r0, _021D85D4 ; =0x0000C070
|
|
add r1, r4, #0
|
|
ldr r0, [r5, r0]
|
|
add r2, r6, #0
|
|
bl StringExpandPlaceholders
|
|
mov r1, #0
|
|
ldr r0, _021D85CC ; =0x0000C044
|
|
str r1, [sp]
|
|
str r1, [sp, #4]
|
|
add r0, r5, r0
|
|
add r2, r4, #0
|
|
add r3, r1, #0
|
|
str r1, [sp, #8]
|
|
bl AddTextPrinterParameterized
|
|
add r0, r6, #0
|
|
bl String_dtor
|
|
add r0, r4, #0
|
|
bl String_dtor
|
|
ldr r0, _021D85CC ; =0x0000C044
|
|
add r0, r5, r0
|
|
bl CopyWindowToVram
|
|
add sp, #0xc
|
|
pop {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D85C4: .word 0x0000C010
|
|
_021D85C8: .word MOD77_021D8F28
|
|
_021D85CC: .word 0x0000C044
|
|
_021D85D0: .word 0x000001D9
|
|
_021D85D4: .word 0x0000C070
|
|
_021D85D8: .word 0x0000C314
|
|
_021D85DC: .word 0x0000C060
|
|
thumb_func_end MOD77_021D8510
|
|
|
|
thumb_func_start MOD77_021D85E0
|
|
MOD77_021D85E0: ; 0x021D85E0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
str r1, [sp, #0xc]
|
|
ldr r1, [r5]
|
|
mov r0, #0x40
|
|
add r4, r2, #0
|
|
bl String_ctor
|
|
add r7, r0, #0
|
|
ldr r1, [r5]
|
|
mov r0, #0x40
|
|
bl String_ctor
|
|
ldr r1, _021D8688 ; =0x0000C010
|
|
add r6, r0, #0
|
|
ldr r0, [r5, r1]
|
|
add r1, #0x34
|
|
ldr r2, _021D868C ; =0x021D8F28
|
|
add r1, r5, r1
|
|
bl AddWindow
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x30
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8690 ; =0x0000C044
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D8690 ; =0x0000C044
|
|
ldr r2, _021D8694 ; =0x000001D9
|
|
add r0, r5, r0
|
|
mov r1, #0
|
|
mov r3, #7
|
|
bl FUN_0200CCA4
|
|
ldr r0, [r5]
|
|
add r1, r4, #0
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0xc]
|
|
add r2, r7, #0
|
|
add r3, r6, #0
|
|
bl MOD77_021D8E9C
|
|
cmp r4, #0
|
|
beq _021D865C
|
|
mov r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
mov r1, #0
|
|
ldr r0, _021D8690 ; =0x0000C044
|
|
add r2, r6, #0
|
|
add r0, r5, r0
|
|
add r3, r1, #0
|
|
str r1, [sp, #8]
|
|
bl AddTextPrinterParameterized
|
|
_021D865C:
|
|
mov r1, #0
|
|
ldr r0, _021D8690 ; =0x0000C044
|
|
str r1, [sp]
|
|
str r1, [sp, #4]
|
|
add r0, r5, r0
|
|
add r2, r7, #0
|
|
add r3, r1, #0
|
|
str r1, [sp, #8]
|
|
bl AddTextPrinterParameterized
|
|
add r0, r6, #0
|
|
bl String_dtor
|
|
add r0, r7, #0
|
|
bl String_dtor
|
|
ldr r0, _021D8690 ; =0x0000C044
|
|
add r0, r5, r0
|
|
bl CopyWindowToVram
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8688: .word 0x0000C010
|
|
_021D868C: .word MOD77_021D8F28
|
|
_021D8690: .word 0x0000C044
|
|
_021D8694: .word 0x000001D9
|
|
thumb_func_end MOD77_021D85E0
|
|
|
|
thumb_func_start MOD77_021D8698
|
|
MOD77_021D8698: ; 0x021D8698
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D86B0 ; =0x0000C044
|
|
mov r1, #0
|
|
add r0, r4, r0
|
|
bl FUN_0200CCF8
|
|
ldr r0, _021D86B0 ; =0x0000C044
|
|
add r0, r4, r0
|
|
bl RemoveWindow
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D86B0: .word 0x0000C044
|
|
thumb_func_end MOD77_021D8698
|
|
|
|
thumb_func_start MOD77_021D86B4
|
|
MOD77_021D86B4: ; 0x021D86B4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x20
|
|
add r5, r0, #0
|
|
ldr r0, _021D8808 ; =0x0000C328
|
|
ldr r1, [r5, r0]
|
|
cmp r1, #0
|
|
bne _021D870E
|
|
mov r0, #1
|
|
ldr r1, [r5]
|
|
lsl r0, r0, #0xa
|
|
bl String_ctor
|
|
add r4, r0, #0
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x30
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D880C ; =0x0000C014
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, _021D8810 ; =0x0000C060
|
|
mov r1, #0xe
|
|
ldr r0, [r5, r0]
|
|
add r2, r4, #0
|
|
bl ReadMsgDataIntoString
|
|
mov r3, #0
|
|
ldr r0, _021D880C ; =0x0000C014
|
|
str r3, [sp]
|
|
str r3, [sp, #4]
|
|
add r0, r5, r0
|
|
mov r1, #1
|
|
add r2, r4, #0
|
|
str r3, [sp, #8]
|
|
bl AddTextPrinterParameterized
|
|
add r0, r4, #0
|
|
bl String_dtor
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D870E:
|
|
add r2, r0, #0
|
|
sub r2, #0x74
|
|
ldr r3, [r5, r2]
|
|
mov r1, #0
|
|
add r2, r3, #0
|
|
sub r2, #0x30
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add r3, #0x30
|
|
str r2, [sp, #0x18]
|
|
lsl r2, r3, #0x10
|
|
asr r2, r2, #0x10
|
|
sub r0, #0x70
|
|
str r2, [sp, #0x14]
|
|
ldr r2, [r5, r0]
|
|
str r1, [sp, #0x1c]
|
|
add r0, r2, #0
|
|
sub r0, #0x30
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add r2, #0x30
|
|
str r0, [sp, #0x10]
|
|
lsl r0, r2, #0x10
|
|
asr r0, r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bls _021D87FA
|
|
add r4, r5, #0
|
|
_021D8748:
|
|
mov r0, #0x10
|
|
ldrsh r2, [r4, r0]
|
|
ldr r0, [sp, #0x18]
|
|
cmp r2, r0
|
|
ble _021D87EC
|
|
ldr r0, [sp, #0x14]
|
|
cmp r2, r0
|
|
bge _021D87EC
|
|
mov r0, #0x12
|
|
ldrsh r2, [r4, r0]
|
|
ldr r0, [sp, #0x10]
|
|
cmp r2, r0
|
|
ble _021D87EC
|
|
ldr r0, [sp, #0xc]
|
|
cmp r2, r0
|
|
bge _021D87EC
|
|
ldrh r0, [r4, #0x38]
|
|
cmp r0, #0
|
|
beq _021D87EC
|
|
ldr r1, [r5]
|
|
mov r0, #0x40
|
|
bl String_ctor
|
|
add r7, r0, #0
|
|
ldr r1, [r5]
|
|
mov r0, #0x40
|
|
bl String_ctor
|
|
add r6, r0, #0
|
|
mov r0, #0xd8
|
|
str r0, [sp]
|
|
mov r0, #0x30
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D880C ; =0x0000C014
|
|
mov r2, #0
|
|
add r0, r5, r0
|
|
mov r1, #0xf
|
|
add r3, r2, #0
|
|
bl FillWindowPixelRect
|
|
ldr r0, [r5]
|
|
add r2, r7, #0
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #0x3a]
|
|
ldrh r1, [r4, #0x3c]
|
|
add r3, r6, #0
|
|
bl MOD77_021D8E9C
|
|
ldrh r0, [r4, #0x3c]
|
|
cmp r0, #0
|
|
beq _021D87C8
|
|
mov r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
ldr r0, _021D880C ; =0x0000C014
|
|
mov r1, #1
|
|
add r0, r5, r0
|
|
add r2, r6, #0
|
|
mov r3, #0
|
|
bl AddTextPrinterParameterized
|
|
_021D87C8:
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
ldr r0, _021D880C ; =0x0000C014
|
|
mov r1, #1
|
|
add r0, r5, r0
|
|
add r2, r7, #0
|
|
mov r3, #0
|
|
bl AddTextPrinterParameterized
|
|
add r0, r6, #0
|
|
bl String_dtor
|
|
add r0, r7, #0
|
|
bl String_dtor
|
|
mov r1, #1
|
|
_021D87EC:
|
|
ldr r0, [sp, #0x1c]
|
|
ldr r2, [r5, #0xc]
|
|
add r0, r0, #1
|
|
add r4, #0x30
|
|
str r0, [sp, #0x1c]
|
|
cmp r0, r2
|
|
blo _021D8748
|
|
_021D87FA:
|
|
cmp r1, #0
|
|
bne _021D8804
|
|
ldr r0, _021D8808 ; =0x0000C328
|
|
mov r1, #0
|
|
str r1, [r5, r0]
|
|
_021D8804:
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8808: .word 0x0000C328
|
|
_021D880C: .word 0x0000C014
|
|
_021D8810: .word 0x0000C060
|
|
thumb_func_end MOD77_021D86B4
|
|
|
|
thumb_func_start MOD77_021D8814
|
|
MOD77_021D8814: ; 0x021D8814
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r2, [r4]
|
|
mov r0, #0x81
|
|
mov r1, #0
|
|
bl AllocAndReadWholeNarcMemberByIdPair
|
|
ldr r2, _021D88B4 ; =0x0000C0CC
|
|
str r0, [r4, r2]
|
|
add r0, r2, #0
|
|
sub r1, r2, #4
|
|
sub r0, #0x58
|
|
add r0, r4, r0
|
|
add r1, r4, r1
|
|
add r2, r4, r2
|
|
bl FUN_0201B234
|
|
ldr r2, [r4]
|
|
mov r0, #0x81
|
|
mov r1, #1
|
|
bl AllocAndReadWholeNarcMemberByIdPair
|
|
ldr r2, _021D88B8 ; =0x0000C294
|
|
str r0, [r4, r2]
|
|
add r0, r2, #0
|
|
add r1, r2, #0
|
|
sub r0, #0xc8
|
|
sub r1, #0x14
|
|
add r0, r4, r0
|
|
add r1, r4, r1
|
|
add r2, r4, r2
|
|
bl FUN_0201B234
|
|
ldr r2, [r4]
|
|
mov r0, #0x81
|
|
mov r1, #2
|
|
bl AllocAndReadWholeNarcMemberByIdPair
|
|
ldr r2, _021D88BC ; =0x0000C298
|
|
str r0, [r4, r2]
|
|
add r0, r2, #0
|
|
add r1, r2, #0
|
|
sub r0, #0x78
|
|
sub r1, #0x14
|
|
add r0, r4, r0
|
|
add r1, r4, r1
|
|
add r2, r4, r2
|
|
bl FUN_0201B234
|
|
ldr r2, [r4]
|
|
mov r0, #0x81
|
|
mov r1, #3
|
|
bl AllocAndReadWholeNarcMemberByIdPair
|
|
ldr r2, _021D88C0 ; =0x0000C28C
|
|
str r0, [r4, r2]
|
|
add r1, r2, #0
|
|
ldr r0, _021D88C4 ; =0x0000C124
|
|
sub r1, #0x14
|
|
add r0, r4, r0
|
|
add r1, r4, r1
|
|
add r2, r4, r2
|
|
bl FUN_0201B234
|
|
ldr r2, [r4]
|
|
mov r0, #0x81
|
|
mov r1, #4
|
|
bl AllocAndReadWholeNarcMemberByIdPair
|
|
ldr r2, _021D88C8 ; =0x0000C290
|
|
str r0, [r4, r2]
|
|
add r1, r2, #0
|
|
ldr r0, _021D88CC ; =0x0000C178
|
|
sub r1, #0x14
|
|
add r0, r4, r0
|
|
add r1, r4, r1
|
|
add r2, r4, r2
|
|
bl FUN_0201B234
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D88B4: .word 0x0000C0CC
|
|
_021D88B8: .word 0x0000C294
|
|
_021D88BC: .word 0x0000C298
|
|
_021D88C0: .word 0x0000C28C
|
|
_021D88C4: .word 0x0000C124
|
|
_021D88C8: .word 0x0000C290
|
|
_021D88CC: .word 0x0000C178
|
|
thumb_func_end MOD77_021D8814
|
|
|
|
thumb_func_start MOD77_021D88D0
|
|
MOD77_021D88D0: ; 0x021D88D0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D8900 ; =0x0000C290
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
ldr r0, _021D8904 ; =0x0000C28C
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
ldr r0, _021D8908 ; =0x0000C298
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
ldr r0, _021D890C ; =0x0000C294
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
ldr r0, _021D8910 ; =0x0000C0CC
|
|
ldr r0, [r4, r0]
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8900: .word 0x0000C290
|
|
_021D8904: .word 0x0000C28C
|
|
_021D8908: .word 0x0000C298
|
|
_021D890C: .word 0x0000C294
|
|
_021D8910: .word 0x0000C0CC
|
|
thumb_func_end MOD77_021D88D0
|
|
|
|
thumb_func_start MOD77_021D8914
|
|
MOD77_021D8914: ; 0x021D8914
|
|
push {r4, r5}
|
|
ldr r1, _021D896C ; =0x0000C29C
|
|
mov r3, #0
|
|
str r3, [r0, r1]
|
|
add r2, r1, #4
|
|
str r3, [r0, r2]
|
|
add r2, r1, #0
|
|
add r2, #8
|
|
str r3, [r0, r2]
|
|
mov r2, #1
|
|
add r4, r1, #0
|
|
lsl r2, r2, #0xc
|
|
add r4, #0xc
|
|
str r2, [r0, r4]
|
|
add r4, r1, #0
|
|
add r4, #0x10
|
|
str r2, [r0, r4]
|
|
add r4, r1, #0
|
|
add r4, #0x14
|
|
str r2, [r0, r4]
|
|
mov r5, #0x69
|
|
add r4, r1, #0
|
|
lsl r5, r5, #6
|
|
add r4, #0x18
|
|
str r5, [r0, r4]
|
|
mov r5, #0x1f
|
|
add r4, r1, #0
|
|
lsl r5, r5, #0xa
|
|
add r4, #0x1c
|
|
str r5, [r0, r4]
|
|
add r4, r1, #0
|
|
add r4, #0x20
|
|
str r3, [r0, r4]
|
|
add r3, r1, #0
|
|
add r3, #0x24
|
|
str r2, [r0, r3]
|
|
add r3, r1, #0
|
|
add r3, #0x28
|
|
str r2, [r0, r3]
|
|
add r1, #0x2c
|
|
str r2, [r0, r1]
|
|
pop {r4, r5}
|
|
bx lr
|
|
nop
|
|
_021D896C: .word 0x0000C29C
|
|
thumb_func_end MOD77_021D8914
|
|
|
|
thumb_func_start MOD77_021D8970
|
|
MOD77_021D8970: ; 0x021D8970
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x20
|
|
ldr r6, _021D89E4 ; =0x021D8F48
|
|
add r4, r0, #0
|
|
ldmia r6!, {r0, r1}
|
|
add r5, sp, #8
|
|
add r2, r5, #0
|
|
stmia r5!, {r0, r1}
|
|
ldr r0, [r6]
|
|
add r1, r2, #0
|
|
str r0, [r5]
|
|
add r7, sp, #0x14
|
|
mov r3, #0
|
|
str r3, [r7]
|
|
str r3, [r7, #4]
|
|
str r3, [r7, #8]
|
|
ldr r0, _021D89E8 ; =0x0000C2CC
|
|
str r3, [sp]
|
|
ldr r0, [r4, r0]
|
|
ldr r2, _021D89EC ; =0x000005C1
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
bl Camera_InitWithPosAndTarget
|
|
ldr r2, _021D89E8 ; =0x0000C2CC
|
|
mov r1, #0x19
|
|
ldr r2, [r4, r2]
|
|
mov r0, #0
|
|
lsl r1, r1, #0xe
|
|
bl Camera_SetPerspectiveClippingPlane
|
|
ldr r1, _021D89E8 ; =0x0000C2CC
|
|
mov r0, #0
|
|
ldr r1, [r4, r1]
|
|
bl Camera_ApplyPerspectiveType
|
|
ldr r0, _021D89E8 ; =0x0000C2CC
|
|
ldr r0, [r4, r0]
|
|
bl Camera_SetWorkPtr
|
|
ldr r0, _021D89F0 ; =0x0000C2F4
|
|
ldrh r1, [r4, r0]
|
|
cmp r1, #0
|
|
bne _021D89D0
|
|
mov r1, #1
|
|
sub r0, #0x1c
|
|
strh r1, [r4, r0]
|
|
b _021D89D6
|
|
_021D89D0:
|
|
mov r1, #0
|
|
sub r0, #0x1c
|
|
strh r1, [r4, r0]
|
|
_021D89D6:
|
|
add r0, r4, #0
|
|
bl MOD77_021D8CF8
|
|
cmp r0, #1
|
|
bne _021D89D6
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D89E4: .word MOD77_021D8F48
|
|
_021D89E8: .word 0x0000C2CC
|
|
_021D89EC: .word 0x000005C1
|
|
_021D89F0: .word 0x0000C2F4
|
|
thumb_func_end MOD77_021D8970
|
|
|
|
thumb_func_start MOD77_021D89F4
|
|
MOD77_021D89F4: ; 0x021D89F4
|
|
push {r4, lr}
|
|
ldr r3, _021D8A28 ; =0x0000C2DC
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
str r0, [r4, r3]
|
|
add r1, r3, #4
|
|
str r0, [r4, r1]
|
|
add r1, r3, #0
|
|
ldr r2, _021D8A2C ; =0xFFFFF001
|
|
add r1, #8
|
|
str r2, [r4, r1]
|
|
ldr r1, [r4, r3]
|
|
add r2, r3, #4
|
|
add r3, #8
|
|
ldr r2, [r4, r2]
|
|
ldr r3, [r4, r3]
|
|
lsl r1, r1, #0x10
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x10
|
|
asr r1, r1, #0x10
|
|
asr r2, r2, #0x10
|
|
asr r3, r3, #0x10
|
|
bl NNS_G3dGlbLightVector
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8A28: .word 0x0000C2DC
|
|
_021D8A2C: .word 0xFFFFF001
|
|
thumb_func_end MOD77_021D89F4
|
|
|
|
thumb_func_start MOD77_021D8A30
|
|
MOD77_021D8A30: ; 0x021D8A30
|
|
push {r4, r5, lr}
|
|
sub sp, #0x24
|
|
add r4, r1, #0
|
|
ldr r1, [r4, #4]
|
|
ldr r3, _021D8AA4 ; =FX_SinCosTable_
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
asr r1, r1, #4
|
|
lsl r2, r1, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r5, r0, #0
|
|
bl MTX_RotY33_
|
|
ldr r0, [r4]
|
|
ldr r3, _021D8AA4 ; =FX_SinCosTable_
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotX33_
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
add r2, r5, #0
|
|
bl MTX_Concat33
|
|
ldr r0, [r4, #8]
|
|
ldr r3, _021D8AA4 ; =FX_SinCosTable_
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotZ33_
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
add r2, r5, #0
|
|
bl MTX_Concat33
|
|
add sp, #0x24
|
|
pop {r4, r5, pc}
|
|
nop
|
|
_021D8AA4: .word FX_SinCosTable_
|
|
thumb_func_end MOD77_021D8A30
|
|
|
|
thumb_func_start MOD77_021D8AA8
|
|
MOD77_021D8AA8: ; 0x021D8AA8
|
|
push {r4, r5, lr}
|
|
sub sp, #0x24
|
|
add r4, r1, #0
|
|
ldr r1, [r4]
|
|
ldr r3, _021D8B1C ; =FX_SinCosTable_
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
asr r1, r1, #4
|
|
lsl r2, r1, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r5, r0, #0
|
|
bl MTX_RotY33_
|
|
ldr r0, [r4, #4]
|
|
ldr r3, _021D8B1C ; =FX_SinCosTable_
|
|
neg r0, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotX33_
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
add r2, r5, #0
|
|
bl MTX_Concat33
|
|
ldr r0, [r4, #8]
|
|
ldr r3, _021D8B1C ; =FX_SinCosTable_
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
add r1, r2, #1
|
|
lsl r1, r1, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotZ33_
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
add r2, r5, #0
|
|
bl MTX_Concat33
|
|
add sp, #0x24
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_021D8B1C: .word FX_SinCosTable_
|
|
thumb_func_end MOD77_021D8AA8
|
|
|
|
thumb_func_start MOD77_021D8B20
|
|
MOD77_021D8B20: ; 0x021D8B20
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r3, r0, #0
|
|
ldr r0, _021D8CD8 ; =0x0000C2B4
|
|
add r7, r2, #0
|
|
add r4, r0, #4
|
|
ldr r4, [r3, r4]
|
|
ldr r2, [r3, r0]
|
|
lsl r4, r4, #0x10
|
|
asr r4, r4, #0x10
|
|
lsl r2, r2, #0x10
|
|
mov lr, r4
|
|
mov r4, #1
|
|
mov r6, #0
|
|
asr r2, r2, #0x10
|
|
tst r1, r4
|
|
bne _021D8B4E
|
|
add r1, r0, #0
|
|
add r1, #0x44
|
|
ldr r4, [r3, r1]
|
|
mov r1, #1
|
|
mov ip, r4
|
|
tst r1, r4
|
|
beq _021D8B72
|
|
_021D8B4E:
|
|
ldr r1, _021D8CDC ; =0x0000C2F4
|
|
ldrh r0, [r3, r1]
|
|
cmp r0, #1
|
|
bne _021D8B6E
|
|
add r0, r1, #0
|
|
sub r0, #0x1c
|
|
ldrh r0, [r3, r0]
|
|
cmp r0, #0
|
|
bne _021D8B68
|
|
mov r0, #1
|
|
sub r1, #0x1c
|
|
strh r0, [r3, r1]
|
|
b _021D8B6E
|
|
_021D8B68:
|
|
mov r0, #0
|
|
sub r1, #0x1c
|
|
strh r0, [r3, r1]
|
|
_021D8B6E:
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D8B72:
|
|
add r1, r0, #0
|
|
add r1, #0x24
|
|
ldrh r1, [r3, r1]
|
|
cmp r1, #0
|
|
bne _021D8BA4
|
|
add r1, r0, #0
|
|
add r1, #0x54
|
|
ldr r1, [r3, r1]
|
|
cmp r1, #0
|
|
bne _021D8B8E
|
|
add r0, #0x58
|
|
ldr r0, [r3, r0]
|
|
cmp r0, #0
|
|
beq _021D8B9C
|
|
_021D8B8E:
|
|
lsl r0, r1, #0x16
|
|
ldr r1, _021D8CE0 ; =0x0000C30C
|
|
lsr r0, r0, #0x10
|
|
ldr r1, [r3, r1]
|
|
lsl r1, r1, #0x16
|
|
lsr r1, r1, #0x10
|
|
b _021D8BC8
|
|
_021D8B9C:
|
|
mov r0, #1
|
|
lsl r0, r0, #9
|
|
add r1, r0, #0
|
|
b _021D8BC8
|
|
_021D8BA4:
|
|
add r1, r0, #0
|
|
add r1, #0x54
|
|
ldr r1, [r3, r1]
|
|
cmp r1, #0
|
|
bne _021D8BB6
|
|
add r0, #0x58
|
|
ldr r0, [r3, r0]
|
|
cmp r0, #0
|
|
beq _021D8BC4
|
|
_021D8BB6:
|
|
lsl r0, r1, #0x12
|
|
ldr r1, _021D8CE0 ; =0x0000C30C
|
|
lsr r0, r0, #0x10
|
|
ldr r1, [r3, r1]
|
|
lsl r1, r1, #0x12
|
|
lsr r1, r1, #0x10
|
|
b _021D8BC8
|
|
_021D8BC4:
|
|
mov r0, #0x20
|
|
add r1, r0, #0
|
|
_021D8BC8:
|
|
mov r4, #0x20
|
|
tst r4, r7
|
|
bne _021D8BD6
|
|
mov r5, ip
|
|
mov r4, #0x20
|
|
tst r4, r5
|
|
beq _021D8C02
|
|
_021D8BD6:
|
|
ldr r6, _021D8CDC ; =0x0000C2F4
|
|
ldrh r4, [r3, r6]
|
|
cmp r4, #1
|
|
bne _021D8BEC
|
|
add r4, r6, #0
|
|
sub r4, #0x3c
|
|
ldr r4, [r3, r4]
|
|
sub r6, #0x3c
|
|
add r4, r4, r0
|
|
str r4, [r3, r6]
|
|
b _021D8C00
|
|
_021D8BEC:
|
|
ldr r5, _021D8CE4 ; =0xFFFFD820
|
|
mov r4, lr
|
|
cmp r4, r5
|
|
bge _021D8C00
|
|
add r4, r6, #0
|
|
sub r4, #0x3c
|
|
ldr r4, [r3, r4]
|
|
sub r6, #0x3c
|
|
add r4, r4, r0
|
|
str r4, [r3, r6]
|
|
_021D8C00:
|
|
mov r6, #1
|
|
_021D8C02:
|
|
mov r4, #0x10
|
|
tst r4, r7
|
|
bne _021D8C12
|
|
ldr r4, _021D8CE8 ; =0x0000C2F8
|
|
ldr r5, [r3, r4]
|
|
mov r4, #0x10
|
|
tst r4, r5
|
|
beq _021D8C3E
|
|
_021D8C12:
|
|
ldr r5, _021D8CDC ; =0x0000C2F4
|
|
ldrh r4, [r3, r5]
|
|
cmp r4, #1
|
|
bne _021D8C28
|
|
add r4, r5, #0
|
|
sub r4, #0x3c
|
|
ldr r4, [r3, r4]
|
|
sub r5, #0x3c
|
|
sub r0, r4, r0
|
|
str r0, [r3, r5]
|
|
b _021D8C3C
|
|
_021D8C28:
|
|
ldr r4, _021D8CEC ; =0xFFFFCC80
|
|
mov r6, lr
|
|
cmp r6, r4
|
|
ble _021D8C3C
|
|
add r4, r5, #0
|
|
sub r4, #0x3c
|
|
ldr r4, [r3, r4]
|
|
sub r5, #0x3c
|
|
sub r0, r4, r0
|
|
str r0, [r3, r5]
|
|
_021D8C3C:
|
|
mov r6, #1
|
|
_021D8C3E:
|
|
mov r4, #0x40
|
|
add r0, r7, #0
|
|
tst r0, r4
|
|
bne _021D8C4E
|
|
ldr r0, _021D8CE8 ; =0x0000C2F8
|
|
ldr r0, [r3, r0]
|
|
tst r0, r4
|
|
beq _021D8C88
|
|
_021D8C4E:
|
|
ldr r4, _021D8CDC ; =0x0000C2F4
|
|
ldrh r0, [r3, r4]
|
|
cmp r0, #1
|
|
bne _021D8C74
|
|
mov r0, #0x3e
|
|
add r5, r2, r1
|
|
lsl r0, r0, #8
|
|
cmp r5, r0
|
|
bge _021D8C6E
|
|
add r0, r4, #0
|
|
sub r0, #0x40
|
|
ldr r0, [r3, r0]
|
|
sub r4, #0x40
|
|
add r0, r0, r1
|
|
str r0, [r3, r4]
|
|
b _021D8C86
|
|
_021D8C6E:
|
|
sub r4, #0x40
|
|
str r0, [r3, r4]
|
|
b _021D8C86
|
|
_021D8C74:
|
|
ldr r0, _021D8CF0 ; =0x00002020
|
|
cmp r2, r0
|
|
bge _021D8C86
|
|
add r0, r4, #0
|
|
sub r0, #0x40
|
|
ldr r0, [r3, r0]
|
|
sub r4, #0x40
|
|
add r0, r0, r1
|
|
str r0, [r3, r4]
|
|
_021D8C86:
|
|
mov r6, #1
|
|
_021D8C88:
|
|
mov r4, #0x80
|
|
add r0, r7, #0
|
|
tst r0, r4
|
|
bne _021D8C98
|
|
ldr r0, _021D8CE8 ; =0x0000C2F8
|
|
ldr r0, [r3, r0]
|
|
tst r0, r4
|
|
beq _021D8CD2
|
|
_021D8C98:
|
|
ldr r4, _021D8CDC ; =0x0000C2F4
|
|
ldrh r0, [r3, r4]
|
|
cmp r0, #1
|
|
bne _021D8CBC
|
|
ldr r0, _021D8CF4 ; =0xFFFFC200
|
|
sub r2, r2, r1
|
|
cmp r2, r0
|
|
ble _021D8CB6
|
|
add r0, r4, #0
|
|
sub r0, #0x40
|
|
ldr r0, [r3, r0]
|
|
sub r4, #0x40
|
|
sub r0, r0, r1
|
|
str r0, [r3, r4]
|
|
b _021D8CD0
|
|
_021D8CB6:
|
|
sub r4, #0x40
|
|
str r0, [r3, r4]
|
|
b _021D8CD0
|
|
_021D8CBC:
|
|
mov r0, #0x13
|
|
lsl r0, r0, #8
|
|
cmp r2, r0
|
|
ble _021D8CD0
|
|
add r0, r4, #0
|
|
sub r0, #0x40
|
|
ldr r0, [r3, r0]
|
|
sub r4, #0x40
|
|
sub r0, r0, r1
|
|
str r0, [r3, r4]
|
|
_021D8CD0:
|
|
mov r6, #1
|
|
_021D8CD2:
|
|
add r0, r6, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8CD8: .word 0x0000C2B4
|
|
_021D8CDC: .word 0x0000C2F4
|
|
_021D8CE0: .word 0x0000C30C
|
|
_021D8CE4: .word 0xFFFFD820
|
|
_021D8CE8: .word 0x0000C2F8
|
|
_021D8CEC: .word 0xFFFFCC80
|
|
_021D8CF0: .word 0x00002020
|
|
_021D8CF4: .word 0xFFFFC200
|
|
thumb_func_end MOD77_021D8B20
|
|
|
|
thumb_func_start MOD77_021D8CF8
|
|
MOD77_021D8CF8: ; 0x021D8CF8
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, _021D8D7C ; =0x0000C2CC
|
|
ldr r0, [r5, r0]
|
|
bl Camera_GetDistance
|
|
ldr r1, _021D8D80 ; =0x0000C2D8
|
|
mov r4, #0
|
|
ldrh r2, [r5, r1]
|
|
cmp r2, #0
|
|
beq _021D8D42
|
|
cmp r2, #1
|
|
bne _021D8D70
|
|
mov r2, #0x16
|
|
lsl r2, r2, #0xe
|
|
cmp r0, r2
|
|
ble _021D8D3A
|
|
mov r2, #2
|
|
lsl r2, r2, #0xe
|
|
sub r0, r0, r2
|
|
add r2, r1, #0
|
|
sub r2, #0x18
|
|
ldr r3, [r5, r2]
|
|
add r2, r1, #0
|
|
sub r3, #0x80
|
|
sub r2, #0x18
|
|
str r3, [r5, r2]
|
|
add r2, r1, #0
|
|
sub r2, #0x18
|
|
ldr r2, [r5, r2]
|
|
sub r1, #0x14
|
|
str r2, [r5, r1]
|
|
b _021D8D70
|
|
_021D8D3A:
|
|
mov r0, #5
|
|
lsl r0, r0, #0x10
|
|
mov r4, #1
|
|
b _021D8D70
|
|
_021D8D42:
|
|
mov r2, #0x12
|
|
lsl r2, r2, #0x10
|
|
cmp r0, r2
|
|
bge _021D8D6A
|
|
mov r2, #2
|
|
lsl r2, r2, #0xe
|
|
add r0, r0, r2
|
|
add r2, r1, #0
|
|
sub r2, #0x18
|
|
ldr r3, [r5, r2]
|
|
add r2, r1, #0
|
|
add r3, #0x80
|
|
sub r2, #0x18
|
|
str r3, [r5, r2]
|
|
add r2, r1, #0
|
|
sub r2, #0x18
|
|
ldr r2, [r5, r2]
|
|
sub r1, #0x14
|
|
str r2, [r5, r1]
|
|
b _021D8D70
|
|
_021D8D6A:
|
|
mov r0, #0x4a
|
|
lsl r0, r0, #0xe
|
|
mov r4, #1
|
|
_021D8D70:
|
|
ldr r1, _021D8D7C ; =0x0000C2CC
|
|
ldr r1, [r5, r1]
|
|
bl Camera_SetDistance
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D8D7C: .word 0x0000C2CC
|
|
_021D8D80: .word 0x0000C2D8
|
|
thumb_func_end MOD77_021D8CF8
|
|
|
|
thumb_func_start MOD77_021D8D84
|
|
MOD77_021D8D84: ; 0x021D8D84
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x70
|
|
ldr r4, _021D8E74 ; =0x021D8FF4
|
|
add r5, r0, #0
|
|
add r3, sp, #0x4c
|
|
mov r2, #4
|
|
_021D8D90:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D8D90
|
|
ldr r0, [r4]
|
|
str r0, [r3]
|
|
ldr r0, _021D8E78 ; =0x0000C2E8
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #0
|
|
beq _021D8E6E
|
|
cmp r0, #1
|
|
beq _021D8DC2
|
|
cmp r0, #2
|
|
bne _021D8E6E
|
|
bl FUN_020222AC
|
|
mov r0, #0
|
|
mov r1, #1
|
|
bl FUN_020222B4
|
|
ldr r0, _021D8E78 ; =0x0000C2E8
|
|
mov r1, #0
|
|
add sp, #0x70
|
|
str r1, [r5, r0]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D8DC2:
|
|
bl FUN_020222AC
|
|
bl Camera_PushLookAtToNNSGlb
|
|
ldr r1, _021D8E7C ; =0x0000C2B4
|
|
add r0, sp, #0x4c
|
|
add r1, r5, r1
|
|
bl MOD77_021D8A30
|
|
ldr r3, _021D8E80 ; =0x0000C29C
|
|
ldr r0, _021D8E84 ; =0x0000C074
|
|
add r1, r5, r3
|
|
add r3, #0xc
|
|
add r0, r5, r0
|
|
add r2, sp, #0x4c
|
|
add r3, r5, r3
|
|
bl FUN_0201B26C
|
|
ldr r4, _021D8E88 ; =0x021D9060
|
|
add r3, sp, #0x28
|
|
mov r2, #4
|
|
_021D8DEC:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D8DEC
|
|
ldr r0, [r4]
|
|
add r2, sp, #0x28
|
|
str r0, [r3]
|
|
ldr r3, _021D8E8C ; =0x0000C220
|
|
add r1, r3, #0
|
|
add r0, r5, r3
|
|
add r1, #0x7c
|
|
add r3, #0xa0
|
|
add r1, r5, r1
|
|
add r3, r5, r3
|
|
bl FUN_0201B26C
|
|
ldr r4, _021D8E90 ; =0x021D9018
|
|
add r3, sp, #4
|
|
mov r2, #4
|
|
_021D8E12:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D8E12
|
|
ldr r0, [r4]
|
|
mov r7, #0
|
|
str r0, [r3]
|
|
ldr r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
bls _021D8E66
|
|
ldr r0, _021D8E94 ; =0x0000C0D0
|
|
add r6, r5, #0
|
|
add r0, r5, r0
|
|
add r6, #0x14
|
|
add r4, r5, #0
|
|
str r0, [sp]
|
|
_021D8E32:
|
|
add r0, r6, #0
|
|
add r1, sp, #0x4c
|
|
add r2, sp, #4
|
|
bl MTX_Concat33
|
|
ldrh r2, [r4, #0x38]
|
|
cmp r2, #0
|
|
beq _021D8E5A
|
|
add r1, r2, #0
|
|
mov r0, #0x54
|
|
mul r1, r0
|
|
ldr r0, [sp]
|
|
ldr r3, _021D8E98 ; =0x0000C2C0
|
|
add r0, r0, r1
|
|
ldr r1, _021D8E80 ; =0x0000C29C
|
|
add r2, sp, #4
|
|
add r1, r5, r1
|
|
add r3, r5, r3
|
|
bl FUN_0201B26C
|
|
_021D8E5A:
|
|
ldr r0, [r5, #0xc]
|
|
add r7, r7, #1
|
|
add r6, #0x30
|
|
add r4, #0x30
|
|
cmp r7, r0
|
|
blo _021D8E32
|
|
_021D8E66:
|
|
mov r0, #0
|
|
mov r1, #1
|
|
bl FUN_020222B4
|
|
_021D8E6E:
|
|
add sp, #0x70
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8E74: .word MOD77_021D8FF4
|
|
_021D8E78: .word 0x0000C2E8
|
|
_021D8E7C: .word 0x0000C2B4
|
|
_021D8E80: .word 0x0000C29C
|
|
_021D8E84: .word 0x0000C074
|
|
_021D8E88: .word MOD77_021D9060
|
|
_021D8E8C: .word 0x0000C220
|
|
_021D8E90: .word MOD77_021D9018
|
|
_021D8E94: .word 0x0000C0D0
|
|
_021D8E98: .word 0x0000C2C0
|
|
thumb_func_end MOD77_021D8D84
|
|
|
|
thumb_func_start MOD77_021D8E9C
|
|
MOD77_021D8E9C: ; 0x021D8E9C
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
str r1, [sp]
|
|
add r6, r2, #0
|
|
str r3, [sp, #4]
|
|
bl MOD77_021D7E1C
|
|
ldr r7, [sp, #0x20]
|
|
mov r2, #0x99
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
lsl r2, r2, #2
|
|
add r3, r7, #0
|
|
bl NewMsgDataFromNarc
|
|
str r0, [sp, #8]
|
|
add r1, r5, #0
|
|
add r2, r6, #0
|
|
bl ReadMsgDataIntoString
|
|
ldr r0, [sp, #8]
|
|
bl DestroyMsgData
|
|
cmp r4, #0
|
|
bne _021D8EDA
|
|
mov r5, #0
|
|
mov r4, #1
|
|
str r5, [sp]
|
|
b _021D8EDC
|
|
_021D8EDA:
|
|
mov r5, #1
|
|
_021D8EDC:
|
|
add r0, r4, #0
|
|
bl FUN_02088D4C
|
|
add r2, r0, #0
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
add r3, r7, #0
|
|
bl NewMsgDataFromNarc
|
|
ldr r1, [sp]
|
|
ldr r2, [sp, #4]
|
|
add r4, r0, #0
|
|
bl ReadMsgDataIntoString
|
|
add r0, r4, #0
|
|
bl DestroyMsgData
|
|
add r0, r5, #0
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD77_021D8E9C
|
|
|
|
thumb_func_start MOD77_021D8F04
|
|
MOD77_021D8F04: ; 0x021D8F04
|
|
push {r3, lr}
|
|
bl MOD77_021D7E1C
|
|
cmp r0, #0
|
|
beq _021D8F12
|
|
mov r0, #1
|
|
pop {r3, pc}
|
|
_021D8F12:
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD77_021D8F04
|
|
|
|
.rodata
|
|
.global MOD77_021D8F18
|
|
MOD77_021D8F18: ; 0x021D8F18
|
|
.byte 0x06, 0x13, 0x0B, 0x0C, 0x06, 0x04, 0x25, 0x01
|
|
|
|
.global MOD77_021D8F20
|
|
MOD77_021D8F20: ; 0x021D8F20
|
|
.byte 0x06, 0x03, 0x02, 0x1A, 0x0E, 0x04, 0x01, 0x00
|
|
|
|
.global MOD77_021D8F28
|
|
MOD77_021D8F28: ; 0x021D8F28
|
|
.byte 0x06, 0x02, 0x01, 0x1B, 0x06, 0x04, 0xB3, 0x00
|
|
|
|
.global MOD77_021D8F30
|
|
MOD77_021D8F30: ; 0x021D8F30
|
|
.byte 0x02, 0x19, 0x15, 0x06, 0x02, 0x04, 0xCD, 0x01
|
|
|
|
.global MOD77_021D8F38
|
|
MOD77_021D8F38: ; 0x021D8F38
|
|
.byte 0x06, 0x19, 0x0D, 0x06, 0x04, 0x04, 0x55, 0x01
|
|
|
|
.global MOD77_021D8F40
|
|
MOD77_021D8F40: ; 0x021D8F40
|
|
.byte 0x06, 0x02, 0x13, 0x1B, 0x04, 0x04, 0x6D, 0x01
|
|
|
|
.global MOD77_021D8F48
|
|
MOD77_021D8F48: ; 0x021D8F48
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00
|
|
|
|
.global MOD77_021D8F54
|
|
MOD77_021D8F54: ; 0x021D8F54
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8F64
|
|
MOD77_021D8F64: ; 0x021D8F64
|
|
.byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8F7C
|
|
MOD77_021D8F7C: ; 0x021D8F7C
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8F98
|
|
MOD77_021D8F98: ; 0x021D8F98
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x0F, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8FB4
|
|
MOD77_021D8FB4: ; 0x021D8FB4
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x03, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8FD4
|
|
MOD77_021D8FD4: ; 0x021D8FD4
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x07, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global MOD77_021D8FF4
|
|
MOD77_021D8FF4: ; 0x021D8FF4
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00
|
|
|
|
.global MOD77_021D9018
|
|
MOD77_021D9018: ; 0x021D9018
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00
|
|
|
|
.global MOD77_021D903C
|
|
MOD77_021D903C: ; 0x021D903C
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00
|
|
|
|
.global MOD77_021D9060
|
|
MOD77_021D9060: ; 0x021D9060
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00
|
|
|
|
.global MOD77_021D9084
|
|
MOD77_021D9084: ; 0x021D9084
|
|
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|
|
|
|
.data
|
|
.bss
|