pokeheartgold/asm/overlay_80_0223A00C.s
2024-10-01 20:12:42 -04:00

1577 lines
28 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_80_0223A00C.inc"
.include "global.inc"
.text
thumb_func_start ov80_0223A00C
ov80_0223A00C: ; 0x0223A00C
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r5, r1, #0
add r7, r2, #0
mov r1, #0x5a
mov r2, #0xfa
str r3, [sp]
ldr r0, _0223A0B4 ; =ov80_0223A144
lsl r1, r1, #2
lsl r2, r2, #2
mov r3, #0x65
bl CreateSysTaskAndEnvironment
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #0x10]
ldr r0, [sp]
str r7, [r4, #0x14]
str r0, [r4, #0x18]
ldr r0, [sp, #0x18]
add r1, sp, #8
str r0, [r4, #0x1c]
ldr r0, [sp, #0x1c]
str r0, [r4, #0x20]
mov r0, #0x18
ldrsh r0, [r1, r0]
strh r0, [r4, #0x28]
mov r0, #0x1c
ldrsh r0, [r1, r0]
mov r1, #0x65
strh r0, [r4, #0x2a]
mov r0, #0x6d
bl NARC_New
str r0, [r4, #0x24]
ldr r1, [r4, #0x20]
cmp r1, #0
beq _0223A05E
mov r0, #0
strh r0, [r1]
_0223A05E:
add r0, r4, #0
sub r1, r6, #1
add r0, #0x2c
strb r1, [r0]
mov r0, #1
bl BgGetCharPtr
mov r2, #2
add r1, r0, #0
mov r0, #0
lsl r2, r2, #0xe
bl MIi_CpuClear32
mov r2, #0
add r0, r5, #0
mov r1, #1
add r3, r2, #0
bl ScheduleSetBgPosText
add r0, r5, #0
mov r1, #1
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
add r1, r4, #0
add r1, #0x2c
ldrb r2, [r1]
mov r1, #0xc
ldr r3, _0223A0B8 ; =ov80_0223DB98
mul r1, r2
add r0, r4, #0
add r1, r3, r1
bl ov80_0223A938
ldr r0, _0223A0BC ; =ov80_0223A0EC
add r1, r4, #0
mov r2, #1
bl SysTask_CreateOnVWaitQueue
str r0, [r4, #0x34]
pop {r3, r4, r5, r6, r7, pc}
nop
_0223A0B4: .word ov80_0223A144
_0223A0B8: .word ov80_0223DB98
_0223A0BC: .word ov80_0223A0EC
thumb_func_end ov80_0223A00C
thumb_func_start ov80_0223A0C0
ov80_0223A0C0: ; 0x0223A0C0
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #5
lsl r0, r0, #6
ldr r0, [r5, r0]
add r4, r1, #0
bl SysTask_Destroy
ldr r0, [r5, #0x34]
bl SysTask_Destroy
ldr r0, [r5, #0x24]
bl NARC_Delete
ldr r1, [r5, #0xc]
mov r0, #0x65
bl FreeToHeapExplicit
add r0, r4, #0
bl DestroySysTaskAndEnvironment
pop {r3, r4, r5, pc}
thumb_func_end ov80_0223A0C0
thumb_func_start ov80_0223A0EC
ov80_0223A0EC: ; 0x0223A0EC
push {r3, r4, r5, r6}
add r0, r1, #0
ldr r1, _0223A13C ; =0x00000151
sub r2, r1, #2
ldrb r3, [r0, r2]
sub r2, r1, #3
ldrb r2, [r0, r2]
ldrb r4, [r0, r1]
lsl r3, r3, #8
lsl r5, r2, #8
add r6, r5, #0
sub r5, r1, #1
mov r2, #0xff
lsl r2, r2, #8
and r3, r2
ldrb r5, [r0, r5]
and r6, r2
orr r3, r4
orr r5, r6
ldr r6, _0223A140 ; =0x04000040
strh r5, [r6]
strh r3, [r6, #4]
add r3, r1, #4
ldrb r5, [r0, r3]
add r3, r1, #2
ldrb r4, [r0, r3]
add r3, r1, #1
ldrb r3, [r0, r3]
add r1, r1, #3
ldrb r0, [r0, r1]
lsl r3, r3, #8
and r3, r2
orr r0, r3
strh r0, [r6, #2]
lsl r0, r4, #8
and r0, r2
orr r0, r5
strh r0, [r6, #6]
pop {r3, r4, r5, r6}
bx lr
.balign 4, 0
_0223A13C: .word 0x00000151
_0223A140: .word 0x04000040
thumb_func_end ov80_0223A0EC
thumb_func_start ov80_0223A144
ov80_0223A144: ; 0x0223A144
push {r4, r5, r6, lr}
add r4, r1, #0
add r3, r4, #0
add r3, #0x2c
ldrb r6, [r3]
mov r3, #0xc
ldr r2, _0223A170 ; =ov80_0223DB98
mul r3, r6
add r5, r0, #0
add r0, r4, #0
mov r1, #0x65
add r2, r2, r3
bl ov80_0223A174
cmp r0, #1
bne _0223A16C
add r0, r4, #0
add r1, r5, #0
bl ov80_0223A0C0
_0223A16C:
pop {r4, r5, r6, pc}
nop
_0223A170: .word ov80_0223DB98
thumb_func_end ov80_0223A144
thumb_func_start ov80_0223A174
ov80_0223A174: ; 0x0223A174
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r4, r0, #0
add r6, r1, #0
ldr r1, [r4]
add r7, r2, #0
ldr r5, [r4, #0xc]
cmp r1, #0x12
bls _0223A188
b _0223A620
_0223A188:
add r2, r1, r1
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0223A194: ; jump table
.short _0223A1BA - _0223A194 - 2 ; case 0
.short _0223A410 - _0223A194 - 2 ; case 1
.short _0223A42E - _0223A194 - 2 ; case 2
.short _0223A43E - _0223A194 - 2 ; case 3
.short _0223A458 - _0223A194 - 2 ; case 4
.short _0223A468 - _0223A194 - 2 ; case 5
.short _0223A476 - _0223A194 - 2 ; case 6
.short _0223A48A - _0223A194 - 2 ; case 7
.short _0223A4A6 - _0223A194 - 2 ; case 8
.short _0223A4AC - _0223A194 - 2 ; case 9
.short _0223A4C4 - _0223A194 - 2 ; case 10
.short _0223A4D0 - _0223A194 - 2 ; case 11
.short _0223A4F4 - _0223A194 - 2 ; case 12
.short _0223A57A - _0223A194 - 2 ; case 13
.short _0223A594 - _0223A194 - 2 ; case 14
.short _0223A5A8 - _0223A194 - 2 ; case 15
.short _0223A5B8 - _0223A194 - 2 ; case 16
.short _0223A5D8 - _0223A194 - 2 ; case 17
.short _0223A5E8 - _0223A194 - 2 ; case 18
_0223A1BA:
add r0, r6, #0
mov r1, #0x94
bl AllocFromHeap
str r0, [r4, #0xc]
mov r1, #0
mov r2, #0x94
bl memset
ldr r5, [r4, #0xc]
ldr r0, [r4, #0x24]
mov r1, #2
str r0, [sp]
mov r0, #0x10
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, _0223A50C ; =0x000007D4
str r0, [sp, #0x14]
ldr r0, [r4, #0x1c]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
bl sub_0200D68C
mov r3, #0x59
add r1, r0, #0
lsl r3, r3, #2
mov r2, #1
lsl r2, r1
ldr r0, [r4, r3]
mov r1, #0x65
orr r0, r2
str r0, [r4, r3]
mov r0, #4
bl sub_02013534
str r0, [r4, #0x30]
ldr r2, _0223A510 ; =0x000002D9
mov r0, #1
mov r1, #0x1b
add r3, r6, #0
bl NewMsgDataFromNarc
ldr r1, [r7]
str r0, [sp, #0x20]
bl NewString_ReadMsgData
str r0, [sp, #0x24]
ldr r0, _0223A514 ; =0x00010200
add r1, r5, #0
str r0, [sp]
mov r3, #0
ldr r0, _0223A50C ; =0x000007D4
str r3, [sp, #4]
str r0, [sp, #8]
mov r0, #0x28
ldrsh r0, [r4, r0]
ldr r2, [sp, #0x24]
add r1, #0x7c
add r0, #0x74
str r0, [sp, #0xc]
mov r0, #0x2a
ldrsh r0, [r4, r0]
add r0, #0x58
str r0, [sp, #0x10]
str r3, [sp, #0x14]
str r3, [sp, #0x18]
add r0, r4, #0
bl ov80_0223A62C
ldr r0, [r5, #0x7c]
mov r1, #0
bl sub_020137C0
ldr r0, [sp, #0x24]
bl String_Delete
ldr r0, [sp, #0x20]
bl DestroyMsgData
ldr r0, [r4, #0x24]
mov r1, #2
str r0, [sp]
ldrb r0, [r7, #4]
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, _0223A518 ; =0x000007D2
str r0, [sp, #0x14]
ldr r0, [r4, #0x1c]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
bl sub_0200D68C
mov r3, #0x16
lsl r3, r3, #4
str r0, [r4, r3]
add r0, r3, #4
ldr r2, [r4, r3]
mov r1, #1
ldr r0, [r4, r0]
lsl r1, r2
orr r1, r0
add r0, r3, #4
str r1, [r4, r0]
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, _0223A51C ; =0x000007DA
str r0, [sp, #8]
ldrb r3, [r7, #5]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadCharResObjFromOpenNarc
mov r0, #0
str r0, [sp]
ldr r0, _0223A518 ; =0x000007D2
str r0, [sp, #4]
ldrb r3, [r7, #6]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadCellResObjFromOpenNarc
mov r0, #0
str r0, [sp]
ldr r0, _0223A518 ; =0x000007D2
str r0, [sp, #4]
ldrb r3, [r7, #7]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadAnimResObjFromOpenNarc
mov r0, #0xe
str r0, [sp]
mov r0, #0
mov r2, #0x16
str r0, [sp, #4]
lsl r2, r2, #4
ldr r2, [r4, r2]
ldr r0, [r4, #0x1c]
lsl r2, r2, #0x14
mov r1, #2
lsr r2, r2, #0x10
mov r3, #0x10
bl PaletteData_BlendPalette
ldr r0, [r4, #0x24]
mov r1, #2
str r0, [sp]
mov r0, #0x3b
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, _0223A520 ; =0x000007D3
str r0, [sp, #0x14]
ldr r0, [r4, #0x1c]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
bl sub_0200D68C
add r3, r0, #0
mov r7, #0x59
mov r0, #1
lsl r7, r7, #2
add r1, r0, #0
lsl r1, r3
ldr r2, [r4, r7]
mov r3, #0xcc
orr r1, r2
str r1, [r4, r7]
mov r1, #0
str r1, [sp]
str r0, [sp, #4]
ldr r0, _0223A524 ; =0x000007DB
str r0, [sp, #8]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadCharResObjFromOpenNarc
mov r0, #0
str r0, [sp]
ldr r0, _0223A520 ; =0x000007D3
mov r3, #0xcd
str r0, [sp, #4]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadCellResObjFromOpenNarc
mov r0, #0
str r0, [sp]
ldr r0, _0223A520 ; =0x000007D3
mov r3, #0xce
str r0, [sp, #4]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x24]
bl SpriteRenderer_LoadAnimResObjFromOpenNarc
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x18]
ldr r2, _0223A528 ; =ov80_0223DB30
bl SpriteRenderer_LoadResourcesAndCreateSprite
add r1, r5, #0
add r1, #0x90
str r0, [r1]
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
ldr r0, [r0]
bl TickSpriteAnimation1Frame
mov r0, #0x2a
ldrsh r0, [r4, r0]
cmp r0, #0
ble _0223A3AA
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
str r0, [sp, #0x1c]
b _0223A3BA
_0223A3AA:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
str r0, [sp, #0x1c]
_0223A3BA:
mov r0, #0x28
ldrsh r0, [r4, r0]
cmp r0, #0
ble _0223A3D4
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0223A3E2
_0223A3D4:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0223A3E2:
bl _ffix
add r7, r0, #0
ldr r0, [sp, #0x1c]
bl _ffix
add r5, #0x14
add r1, r5, #0
mov r2, #0x12
mov r5, #0x52
add r3, r0, #0
lsl r2, r2, #0xe
lsl r5, r5, #0xc
str r6, [sp]
add r0, r4, #0
add r2, r7, r2
add r3, r3, r5
bl ov80_0223A78C
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A410:
mov r0, #3
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0
ldr r3, _0223A52C ; =0x00007FFF
str r6, [sp, #8]
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A42E:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0223A4FC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A43E:
mov r0, #3
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r3, _0223A52C ; =0x00007FFF
str r6, [sp, #8]
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A458:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0223A4FC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A468:
mov r1, #0
bl ov80_0223AA80
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A476:
mov r0, #0x53
lsl r0, r0, #2
ldrb r0, [r4, r0]
cmp r0, #1
bne _0223A4FC
add r0, r1, #1
str r0, [r4]
mov r0, #0xa
str r0, [r5, #0x78]
b _0223A620
_0223A48A:
ldr r0, [r5, #0x78]
sub r0, r0, #1
str r0, [r5, #0x78]
bpl _0223A4FC
add r5, #0x14
add r0, r5, #0
bl ov80_0223A834
cmp r0, #1
bne _0223A4FC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A4A6:
add r0, r1, #1
str r0, [r4]
b _0223A620
_0223A4AC:
mov r2, #0x56
lsl r2, r2, #2
add r1, r5, #0
add r2, r4, r2
bl ov80_0223AB94
cmp r0, #1
bne _0223A4FC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A4C4:
mov r0, #0xa
str r0, [r5, #0x78]
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A4D0:
ldr r0, [r5, #0x78]
sub r0, r0, #1
str r0, [r5, #0x78]
bpl _0223A4FC
mov r0, #3
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r1, #0
ldr r3, _0223A52C ; =0x00007FFF
str r6, [sp, #8]
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A4F4:
bl IsPaletteFadeFinished
cmp r0, #0
bne _0223A4FE
_0223A4FC:
b _0223A620
_0223A4FE:
mov r0, #0
mov r2, #0x59
str r0, [sp]
lsl r2, r2, #2
ldr r3, [r4, r2]
ldr r2, _0223A530 ; =0x00003FFF
b _0223A534
.balign 4, 0
_0223A50C: .word 0x000007D4
_0223A510: .word 0x000002D9
_0223A514: .word 0x00010200
_0223A518: .word 0x000007D2
_0223A51C: .word 0x000007DA
_0223A520: .word 0x000007D3
_0223A524: .word 0x000007DB
_0223A528: .word ov80_0223DB30
_0223A52C: .word 0x00007FFF
_0223A530: .word 0x00003FFF
_0223A534:
ldr r0, [r4, #0x1c]
eor r2, r3
lsl r2, r2, #0x10
mov r1, #2
lsr r2, r2, #0x10
mov r3, #0xe
bl PaletteData_BlendPalettes
mov r0, #0
str r0, [sp]
mov r2, #0x16
str r0, [sp, #4]
lsl r2, r2, #4
ldr r2, [r4, r2]
ldr r0, [r4, #0x1c]
lsl r2, r2, #0x14
mov r1, #2
lsr r2, r2, #0x10
mov r3, #0x10
bl PaletteData_BlendPalette
mov r0, #0xd
mvn r0, r0
mov r1, #0x2c
mov r2, #1
bl SetBlendBrightness
ldr r0, [r5, #0x7c]
mov r1, #1
bl sub_020137C0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A57A:
mov r0, #3
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r3, _0223A628 ; =0x00007FFF
str r6, [sp, #8]
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A594:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0223A620
mov r0, #0x1a
str r0, [r5, #0x78]
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A5A8:
ldr r0, [r5, #0x78]
sub r0, r0, #1
str r0, [r5, #0x78]
bpl _0223A620
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A5B8:
mov r0, #0xf
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x65
mov r1, #0
str r0, [sp, #8]
ldr r3, _0223A628 ; =0x00007FFF
mov r0, #3
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A5D8:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0223A620
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0223A620
_0223A5E8:
ldr r1, _0223A628 ; =0x00007FFF
mov r0, #1
bl sub_0200FBF4
ldr r1, [r4, #0x20]
cmp r1, #0
beq _0223A5FA
mov r0, #1
strh r0, [r1]
_0223A5FA:
add r0, r5, #0
add r0, #0x7c
bl ov80_0223A748
ldr r0, [r4, #0x30]
bl sub_020135AC
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
bl UnkImageStruct_Delete
add r5, #0x14
add r0, r5, #0
bl ov80_0223A81C
add sp, #0x28
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0223A620:
mov r0, #0
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_0223A628: .word 0x00007FFF
thumb_func_end ov80_0223A174
thumb_func_start ov80_0223A62C
ov80_0223A62C: ; 0x0223A62C
push {r4, r5, r6, r7, lr}
sub sp, #0x7c
add r5, r1, #0
add r7, r0, #0
ldr r0, [r5]
str r2, [sp, #0x18]
str r3, [sp, #0x1c]
ldr r6, [sp, #0x9c]
ldr r4, [sp, #0xa8]
cmp r0, #0
beq _0223A646
bl GF_AssertFail
_0223A646:
ldr r0, [r7, #0x10]
cmp r4, #0
str r0, [sp, #0x24]
ldr r0, [r7, #0x18]
str r0, [sp, #0x20]
bne _0223A660
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x1c]
add r2, sp, #0x2c
add r3, sp, #0x28
bl ov80_0223A75C
b _0223A668
_0223A660:
ldrh r0, [r4, #0x12]
str r0, [sp, #0x2c]
ldrh r0, [r4, #0x10]
str r0, [sp, #0x28]
_0223A668:
cmp r4, #0
bne _0223A6A6
add r0, sp, #0x3c
bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r2, [sp, #0x28]
ldr r0, [sp, #0x24]
lsl r2, r2, #0x18
add r1, sp, #0x3c
lsr r2, r2, #0x18
mov r3, #2
bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, [sp, #0x90]
ldr r1, [sp, #0x1c]
str r0, [sp, #8]
str r3, [sp, #0xc]
str r3, [sp, #0x10]
ldr r2, [sp, #0x18]
add r0, sp, #0x3c
str r3, [sp, #0x14]
bl AddTextPrinterParameterizedWithColorAndSpacing
b _0223A6B2
_0223A6A6:
add r3, r4, #0
add r2, sp, #0x3c
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
_0223A6B2:
add r0, sp, #0x3c
mov r1, #1
mov r2, #0x65
bl sub_02013688
mov r1, #1
add r2, r1, #0
add r3, sp, #0x30
bl sub_02021AC8
ldr r0, [sp, #0xa4]
cmp r0, #1
bne _0223A6D6
ldr r1, [sp, #0x2c]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
sub r6, r6, r0
_0223A6D6:
ldr r0, [r7, #0x30]
str r0, [sp, #0x4c]
add r0, sp, #0x3c
str r0, [sp, #0x50]
ldr r0, [sp, #0x20]
bl sub_0200E2B0
str r0, [sp, #0x54]
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x98]
bl GfGfxHandler_GetPlttProxy
mov r1, #0
str r0, [sp, #0x58]
ldr r0, [sp, #0x34]
str r1, [sp, #0x5c]
str r0, [sp, #0x60]
ldr r0, [sp, #0xa0]
str r6, [sp, #0x64]
sub r0, #8
str r0, [sp, #0x68]
mov r0, #0xb
str r0, [sp, #0x70]
mov r0, #1
str r0, [sp, #0x74]
mov r0, #0x65
str r0, [sp, #0x78]
add r0, sp, #0x4c
str r1, [sp, #0x6c]
bl sub_020135D8
ldr r1, [sp, #0x94]
add r7, r0, #0
bl sub_020138E0
ldr r2, [sp, #0xa0]
add r0, r7, #0
add r1, r6, #0
sub r2, #8
bl sub_020136B4
cmp r4, #0
bne _0223A732
add r0, sp, #0x3c
bl RemoveWindow
_0223A732:
str r7, [r5]
add r3, sp, #0x30
ldmia r3!, {r0, r1}
add r2, r5, #4
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #0x2c]
strh r0, [r5, #0x10]
add sp, #0x7c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov80_0223A62C
thumb_func_start ov80_0223A748
ov80_0223A748: ; 0x0223A748
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl sub_02013660
add r0, r4, #4
bl sub_02021B5C
pop {r4, pc}
.balign 4, 0
thumb_func_end ov80_0223A748
thumb_func_start ov80_0223A75C
ov80_0223A75C: ; 0x0223A75C
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
add r6, r2, #0
add r0, r1, #0
add r1, r4, #0
mov r2, #0
add r7, r3, #0
bl FontID_String_GetWidth
add r4, r0, #0
asr r1, r4, #2
lsr r1, r1, #0x1d
add r1, r4, r1
asr r5, r1, #3
mov r1, #8
bl FX_ModS32
cmp r0, #0
beq _0223A784
add r5, r5, #1
_0223A784:
str r4, [r6]
str r5, [r7]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov80_0223A75C
thumb_func_start ov80_0223A78C
ov80_0223A78C: ; 0x0223A78C
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r6, r3, #0
mov ip, r2
ldr r3, _0223A818 ; =ov80_0223DB64
add r7, r0, #0
add r4, r1, #0
add r2, sp, #0
mov r5, #6
_0223A79E:
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
sub r5, r5, #1
bne _0223A79E
ldr r0, [r3]
add r5, r4, #0
str r0, [r2]
mov r0, ip
asr r1, r0, #0xc
add r0, sp, #0
strh r1, [r0]
asr r1, r6, #0xc
strh r1, [r0, #2]
mov r6, #0
strh r6, [r4]
strh r6, [r4, #2]
add r5, #0x14
_0223A7C0:
ldr r0, [r7, #0x14]
ldr r1, [r7, #0x18]
add r2, sp, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite
mov r1, #0
str r0, [r4, #4]
bl UnkImageStruct_SetSpriteVisibleFlag
cmp r6, #3
beq _0223A7FA
ldr r0, [r4, #4]
mov r1, #2
ldr r0, [r0]
bl Sprite_SetAffineOverwriteType
ldr r0, [r4, #4]
mov r1, #1
ldr r0, [r0]
bl Sprite_SetAnimCtrlSeq
mov r1, #2
lsl r1, r1, #0xc
add r0, r5, #0
lsr r2, r1, #1
mov r3, #6
bl ov80_0223A8C4
b _0223A808
_0223A7FA:
mov r1, #1
lsl r1, r1, #0xc
add r0, r5, #0
add r2, r1, #0
mov r3, #6
bl ov80_0223A8C4
_0223A808:
add r6, r6, #1
add r4, r4, #4
add r5, #0x14
cmp r6, #4
blt _0223A7C0
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
_0223A818: .word ov80_0223DB64
thumb_func_end ov80_0223A78C
thumb_func_start ov80_0223A81C
ov80_0223A81C: ; 0x0223A81C
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_0223A822:
ldr r0, [r5, #4]
bl UnkImageStruct_Delete
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _0223A822
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov80_0223A81C
thumb_func_start ov80_0223A834
ov80_0223A834: ; 0x0223A834
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r7, r0, #0
mov r0, #1
mov r1, #2
str r0, [sp]
ldrsh r0, [r7, r1]
cmp r0, #4
bge _0223A862
mov r0, #0
str r0, [sp]
ldrsh r0, [r7, r0]
sub r0, r0, #1
strh r0, [r7]
ldr r0, [sp]
ldrsh r0, [r7, r0]
cmp r0, #0
bgt _0223A862
mov r0, #3
strh r0, [r7]
ldrsh r0, [r7, r1]
add r0, r0, #1
strh r0, [r7, #2]
_0223A862:
mov r0, #0
str r0, [sp, #4]
mov r0, #2
ldrsh r0, [r7, r0]
cmp r0, #0
ble _0223A8BE
add r6, r7, #0
add r6, #0x14
add r4, r7, #0
add r5, r7, #0
_0223A876:
add r0, r6, #0
bl ov80_0223A8D4
ldr r1, [r4, #0x14]
str r0, [sp, #8]
add r0, sp, #0xc
add r2, r1, #0
add r3, r1, #0
bl ov80_0223A91C
ldr r0, [r5, #4]
add r1, sp, #0xc
ldr r0, [r0]
bl Sprite_SetScale
ldr r0, [r5, #4]
mov r1, #1
ldr r0, [r0]
bl Sprite_SetVisibleFlag
ldr r0, [sp, #8]
cmp r0, #0
bne _0223A8A8
mov r0, #0
str r0, [sp]
_0223A8A8:
ldr r0, [sp, #4]
add r6, #0x14
add r0, r0, #1
str r0, [sp, #4]
mov r0, #2
ldrsh r1, [r7, r0]
ldr r0, [sp, #4]
add r4, #0x14
add r5, r5, #4
cmp r0, r1
blt _0223A876
_0223A8BE:
ldr r0, [sp]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov80_0223A834
thumb_func_start ov80_0223A8C4
ov80_0223A8C4: ; 0x0223A8C4
str r1, [r0]
str r1, [r0, #4]
sub r1, r2, r1
str r1, [r0, #8]
str r3, [r0, #0x10]
mov r1, #0
str r1, [r0, #0xc]
bx lr
thumb_func_end ov80_0223A8C4
thumb_func_start ov80_0223A8D4
ov80_0223A8D4: ; 0x0223A8D4
push {r4, lr}
add r4, r0, #0
ldr r2, [r4, #0xc]
ldr r0, [r4, #8]
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [r4, #0x10]
lsl r1, r1, #0xc
bl FX_Div
ldr r1, [r4, #4]
add r0, r0, r1
str r0, [r4]
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
add r0, r0, #1
cmp r0, r1
bgt _0223A914
str r0, [r4, #0xc]
mov r0, #0
pop {r4, pc}
_0223A914:
str r1, [r4, #0xc]
mov r0, #1
pop {r4, pc}
.balign 4, 0
thumb_func_end ov80_0223A8D4
thumb_func_start ov80_0223A91C
ov80_0223A91C: ; 0x0223A91C
push {r4}
sub sp, #0xc
str r2, [sp, #4]
str r3, [sp, #8]
add r2, sp, #0
add r4, r0, #0
str r1, [sp]
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
str r0, [r4]
add sp, #0xc
pop {r4}
bx lr
thumb_func_end ov80_0223A91C
thumb_func_start ov80_0223A938
ov80_0223A938: ; 0x0223A938
push {r4, r5, r6, r7, lr}
sub sp, #0x14
mov r3, #1
lsl r3, r3, #0x1a
add r5, r0, #0
add r4, r1, #0
ldr r1, [r3]
ldr r0, _0223AA3C ; =0xFFFF1FFF
add r2, r3, #0
and r1, r0
mov r0, #6
lsl r0, r0, #0xc
orr r0, r1
str r0, [r3]
add r2, #0x48
ldrh r6, [r2]
mov r0, #0x3f
mov r1, #0x1f
bic r6, r0
orr r1, r6
mov r7, #0x20
orr r1, r7
strh r1, [r2]
ldrh r6, [r2]
ldr r1, _0223AA40 ; =0xFFFFC0FF
and r1, r6
mov r6, #0x1f
lsl r6, r6, #8
orr r6, r1
lsl r1, r7, #8
orr r1, r6
strh r1, [r2]
add r1, r3, #0
add r1, #0x4a
ldrh r2, [r1]
bic r2, r0
mov r0, #0x1d
orr r0, r2
orr r0, r7
strh r0, [r1]
add r1, r3, #0
mov r0, #0
add r1, #0x40
strh r0, [r1]
add r1, r3, #0
add r1, #0x44
strh r0, [r1]
add r1, r3, #0
add r1, #0x42
strh r0, [r1]
add r3, #0x46
strh r0, [r3]
str r0, [sp]
str r7, [sp, #4]
mov r0, #0xc0
str r0, [sp, #8]
ldrb r2, [r4, #8]
ldr r0, [r5, #0x1c]
mov r1, #0x6d
mov r3, #0x65
bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x65
str r0, [sp, #0xc]
ldrb r1, [r4, #9]
ldr r0, [r5, #0x24]
ldr r2, [r5, #0x10]
mov r3, #1
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x65
str r0, [sp, #0xc]
ldrb r1, [r4, #0xa]
ldr r0, [r5, #0x24]
ldr r2, [r5, #0x10]
mov r3, #1
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add r0, r7, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #0xc
str r0, [sp, #8]
mov r2, #0
ldr r0, [r5, #0x10]
mov r1, #1
add r3, r2, #0
bl BgTilemapRectChangePalette
ldr r0, [r5, #0x10]
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
ldrb r1, [r4, #8]
mov r0, #0x6d
add r2, sp, #0x10
mov r3, #0x65
bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp, #0x10]
add r1, r5, #0
add r2, r7, #0
ldr r0, [r0, #0xc]
add r1, #0x40
add r2, #0xe0
bl MIi_CpuCopy16
add r0, r4, #0
bl FreeToHeap
ldr r0, _0223AA44 ; =ov80_0223AA4C
ldr r2, _0223AA48 ; =0x0000044C
add r1, r5, #0
bl SysTask_CreateOnMainQueue
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_0223AA3C: .word 0xFFFF1FFF
_0223AA40: .word 0xFFFFC0FF
_0223AA44: .word ov80_0223AA4C
_0223AA48: .word 0x0000044C
thumb_func_end ov80_0223A938
thumb_func_start ov80_0223AA4C
ov80_0223AA4C: ; 0x0223AA4C
push {r3, lr}
ldr r0, [r1, #0x38]
add r0, r0, #1
str r0, [r1, #0x38]
bmi _0223AA7E
mov r2, #0
str r2, [r1, #0x38]
ldr r0, [r1, #0x3c]
add r0, r0, #1
str r0, [r1, #0x3c]
cmp r0, #8
blt _0223AA66
str r2, [r1, #0x3c]
_0223AA66:
mov r0, #0x20
str r0, [sp]
add r2, r1, #0
ldr r0, [r1, #0x1c]
ldr r1, [r1, #0x3c]
add r2, #0x40
lsl r1, r1, #5
add r1, r2, r1
mov r2, #0
mov r3, #0xc0
bl PaletteData_LoadPalette
_0223AA7E:
pop {r3, pc}
thumb_func_end ov80_0223AA4C
thumb_func_start ov80_0223AA80
ov80_0223AA80: ; 0x0223AA80
push {r3, r4, r5, lr}
add r5, r1, #0
mov r1, #0x51
lsl r1, r1, #2
add r4, r0, r1
add r0, r4, #0
mov r1, #0
mov r2, #0x14
bl MI_CpuFill8
cmp r5, #0
bne _0223AAAE
mov r0, #5
lsl r0, r0, #0xc
str r0, [r4]
str r0, [r4, #4]
mov r2, #0xfa
ldr r0, _0223AAC8 ; =ov80_0223AAD0
add r1, r4, #0
lsl r2, r2, #2
bl SysTask_CreateOnMainQueue
pop {r3, r4, r5, pc}
_0223AAAE:
mov r0, #0x2e
lsl r0, r0, #8
str r0, [r4]
mov r0, #0x72
lsl r0, r0, #8
str r0, [r4, #4]
mov r2, #0xfa
ldr r0, _0223AACC ; =ov80_0223AB34
add r1, r4, #0
lsl r2, r2, #2
bl SysTask_CreateOnMainQueue
pop {r3, r4, r5, pc}
.balign 4, 0
_0223AAC8: .word ov80_0223AAD0
_0223AACC: .word ov80_0223AB34
thumb_func_end ov80_0223AA80
thumb_func_start ov80_0223AAD0
ov80_0223AAD0: ; 0x0223AAD0
push {r3, lr}
ldrb r2, [r1, #9]
cmp r2, #0
bne _0223AB28
mov r0, #2
ldr r2, [r1]
lsl r0, r0, #0xa
sub r2, r2, r0
str r2, [r1]
ldr r2, [r1, #4]
add r0, r2, r0
str r0, [r1, #4]
mov r0, #0x2e
ldr r2, [r1]
lsl r0, r0, #8
cmp r2, r0
bgt _0223AB00
str r0, [r1]
mov r0, #0x72
lsl r0, r0, #8
str r0, [r1, #4]
ldrb r0, [r1, #9]
add r0, r0, #1
strb r0, [r1, #9]
_0223AB00:
mov r0, #0
strb r0, [r1, #0xa]
ldr r2, [r1]
asr r2, r2, #8
strb r2, [r1, #0xb]
mov r2, #0xff
strb r2, [r1, #0xc]
ldr r2, [r1, #4]
asr r2, r2, #8
strb r2, [r1, #0xd]
mov r2, #1
strb r2, [r1, #0xe]
ldr r2, [r1]
asr r2, r2, #8
strb r2, [r1, #0xf]
strb r0, [r1, #0x10]
ldr r0, [r1, #4]
asr r0, r0, #8
strb r0, [r1, #0x11]
pop {r3, pc}
_0223AB28:
mov r2, #1
strb r2, [r1, #8]
bl SysTask_Destroy
pop {r3, pc}
.balign 4, 0
thumb_func_end ov80_0223AAD0
thumb_func_start ov80_0223AB34
ov80_0223AB34: ; 0x0223AB34
push {r3, lr}
ldrb r2, [r1, #9]
cmp r2, #0
bne _0223AB88
mov r0, #2
ldr r2, [r1]
lsl r0, r0, #0xa
add r2, r2, r0
str r2, [r1]
ldr r2, [r1, #4]
sub r0, r2, r0
str r0, [r1, #4]
mov r0, #5
ldr r2, [r1]
lsl r0, r0, #0xc
cmp r2, r0
blt _0223AB60
str r0, [r1]
str r0, [r1, #4]
ldrb r0, [r1, #9]
add r0, r0, #1
strb r0, [r1, #9]
_0223AB60:
mov r0, #0
strb r0, [r1, #0xa]
ldr r2, [r1]
asr r2, r2, #8
strb r2, [r1, #0xb]
mov r2, #0xff
strb r2, [r1, #0xc]
ldr r2, [r1, #4]
asr r2, r2, #8
strb r2, [r1, #0xd]
mov r2, #1
strb r2, [r1, #0xe]
ldr r2, [r1]
asr r2, r2, #8
strb r2, [r1, #0xf]
strb r0, [r1, #0x10]
ldr r0, [r1, #4]
asr r0, r0, #8
strb r0, [r1, #0x11]
pop {r3, pc}
_0223AB88:
mov r2, #1
strb r2, [r1, #8]
bl SysTask_Destroy
pop {r3, pc}
.balign 4, 0
thumb_func_end ov80_0223AB34
thumb_func_start ov80_0223AB94
ov80_0223AB94: ; 0x0223AB94
push {r3, r4, r5, lr}
add r4, r2, #0
add r3, r0, #0
ldr r0, [r4, #4]
add r5, r1, #0
cmp r0, #0
beq _0223ABA8
cmp r0, #1
beq _0223ABE4
b _0223AC1C
_0223ABA8:
mov r1, #0x28
ldrsh r2, [r3, r1]
add r1, #0xd8
add r0, r5, #0
add r1, r2, r1
mov r2, #0x2a
ldrsh r2, [r3, r2]
add r0, #0x90
lsl r1, r1, #0x10
add r2, #0x50
lsl r2, r2, #0x10
mov r3, #2
ldr r0, [r0]
asr r1, r1, #0x10
asr r2, r2, #0x10
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add r5, #0x90
ldr r0, [r5]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #1
lsl r0, r0, #0x10
str r0, [r4]
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
b _0223AC20
_0223ABE4:
mov r0, #0xf
ldr r1, [r4]
lsl r0, r0, #8
sub r1, r1, r0
mov r0, #0xd
lsl r0, r0, #0xc
str r1, [r4]
cmp r1, r0
bgt _0223ABFE
str r0, [r4]
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
_0223ABFE:
mov r2, #0x2a
ldrsh r2, [r3, r2]
ldr r1, [r4]
add r5, #0x90
add r2, #0x50
lsl r1, r1, #8
lsl r2, r2, #0x10
mov r3, #2
ldr r0, [r5]
asr r1, r1, #0x10
asr r2, r2, #0x10
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
b _0223AC20
_0223AC1C:
mov r0, #1
pop {r3, r4, r5, pc}
_0223AC20:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end ov80_0223AB94
.rodata
ov80_0223DB30: ; 0x0223DB30
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xDA, 0x07, 0x00, 0x00, 0xD2, 0x07, 0x00, 0x00, 0xD2, 0x07, 0x00, 0x00
.byte 0xD2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov80_0223DB64: ; 0x0223DB64
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xDB, 0x07, 0x00, 0x00, 0xD3, 0x07, 0x00, 0x00
.byte 0xD3, 0x07, 0x00, 0x00, 0xD3, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov80_0223DB98: ; 0x0223DB98
.byte 0xC3, 0x02, 0x00, 0x00, 0xBA, 0xB9, 0xBB, 0xBC
.byte 0xCA, 0xC9, 0xCB, 0x00, 0xC5, 0x02, 0x00, 0x00, 0xAE, 0xAD, 0xAF, 0xB0, 0xC1, 0xC0, 0xC2, 0x00
.byte 0xC5, 0x02, 0x00, 0x00, 0xAE, 0xAD, 0xAF, 0xB0, 0xC1, 0xC0, 0xC2, 0x00, 0xC7, 0x02, 0x00, 0x00
.byte 0xAA, 0xA9, 0xAB, 0xAC, 0xBE, 0xBD, 0xBF, 0x00, 0xC4, 0x02, 0x00, 0x00, 0xB6, 0xB5, 0xB7, 0xB8
.byte 0xC7, 0xC6, 0xC8, 0x00, 0xC6, 0x02, 0x00, 0x00, 0xB2, 0xB1, 0xB3, 0xB4, 0xC4, 0xC3, 0xC5, 0x00