mirror of
https://github.com/pret/pokeemerald-jp.git
synced 2026-09-26 13:32:49 -04:00
1970 lines
34 KiB
ArmAsm
1970 lines
34 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
.text
|
|
.syntax unified
|
|
|
|
thumb_func_start ScriptMenu_Multichoice
|
|
ScriptMenu_Multichoice: @ 0x080E12C8
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #4
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r6, r1, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r5, r2, #0x18
|
|
lsls r3, r3, #0x18
|
|
lsrs r4, r3, #0x18
|
|
ldr r0, _080E1304
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E130C
|
|
ldr r0, _080E1308
|
|
movs r1, #0xff
|
|
strh r1, [r0]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r1, r6, #0
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl DrawMultichoiceMenu
|
|
movs r0, #1
|
|
b _080E130E
|
|
.align 2, 0
|
|
_080E1304: .4byte 0x080E1569
|
|
_080E1308: .4byte 0x02037290
|
|
_080E130C:
|
|
movs r0, #0
|
|
_080E130E:
|
|
add sp, #4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end ScriptMenu_Multichoice
|
|
|
|
thumb_func_start ScriptMenu_MultichoiceWithDefault
|
|
ScriptMenu_MultichoiceWithDefault: @ 0x080E1318
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #4
|
|
ldr r4, [sp, #0x1c]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov r8, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r7, r1, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r6, r2, #0x18
|
|
lsls r3, r3, #0x18
|
|
lsrs r5, r3, #0x18
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r0, _080E1360
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E1368
|
|
ldr r1, _080E1364
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
str r4, [sp]
|
|
mov r0, r8
|
|
adds r1, r7, #0
|
|
adds r2, r6, #0
|
|
adds r3, r5, #0
|
|
bl DrawMultichoiceMenu
|
|
movs r0, #1
|
|
b _080E136A
|
|
.align 2, 0
|
|
_080E1360: .4byte 0x080E1569
|
|
_080E1364: .4byte 0x02037290
|
|
_080E1368:
|
|
movs r0, #0
|
|
_080E136A:
|
|
add sp, #4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end ScriptMenu_MultichoiceWithDefault
|
|
|
|
thumb_func_start sub_080E1378
|
|
sub_080E1378: @ 0x080E1378
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
movs r5, #0
|
|
b _080E13AC
|
|
_080E1380:
|
|
cmp r1, #0xfd
|
|
bne _080E13A4
|
|
adds r4, #1
|
|
ldrb r0, [r4]
|
|
cmp r0, #1
|
|
bne _080E13AC
|
|
ldr r0, _080E13A0
|
|
ldr r0, [r0]
|
|
bl StringLength
|
|
adds r0, r5, r0
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
adds r4, #1
|
|
b _080E13AC
|
|
.align 2, 0
|
|
_080E13A0: .4byte 0x03005AF0
|
|
_080E13A4:
|
|
adds r4, #1
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
_080E13AC:
|
|
ldrb r1, [r4]
|
|
adds r0, r1, #0
|
|
cmp r0, #0xff
|
|
bne _080E1380
|
|
adds r0, r5, #0
|
|
pop {r4, r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_080E1378
|
|
|
|
thumb_func_start ScrSpecial_CreatePCMenu
|
|
ScrSpecial_CreatePCMenu: @ 0x080E13BC
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r7, r0, #0
|
|
lsls r4, r1, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r0, [r7]
|
|
bl sub_080E1378
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
movs r5, #1
|
|
cmp r5, r4
|
|
bhs _080E13F2
|
|
_080E13D4:
|
|
lsls r0, r5, #3
|
|
adds r0, r0, r7
|
|
ldr r0, [r0]
|
|
bl sub_080E1378
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r6, r0
|
|
bhs _080E13E8
|
|
adds r6, r0, #0
|
|
_080E13E8:
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
cmp r5, r4
|
|
blo _080E13D4
|
|
_080E13F2:
|
|
adds r0, r6, #0
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end ScrSpecial_CreatePCMenu
|
|
|
|
thumb_func_start DrawMultichoiceMenu
|
|
DrawMultichoiceMenu: @ 0x080E13FC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x14
|
|
adds r4, r0, #0
|
|
adds r5, r1, #0
|
|
mov sb, r2
|
|
mov sl, r3
|
|
ldr r0, [sp, #0x34]
|
|
mov r8, r0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
lsls r5, r5, #0x18
|
|
lsrs r5, r5, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
mov sb, r2
|
|
mov r0, sl
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sl, r0
|
|
mov r2, r8
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
mov r8, r2
|
|
ldr r1, _080E14C8
|
|
mov r2, sb
|
|
lsls r0, r2, #3
|
|
adds r0, r0, r1
|
|
ldrb r6, [r0, #4]
|
|
ldr r7, [r0]
|
|
adds r0, r7, #0
|
|
adds r1, r6, #0
|
|
bl ScrSpecial_CreatePCMenu
|
|
adds r2, r0, #0
|
|
lsls r2, r2, #0x18
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
adds r2, r2, r0
|
|
lsrs r2, r2, #0x18
|
|
lsls r3, r6, #0x19
|
|
lsrs r3, r3, #0x18
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
bl CreateWindowFromRect
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
movs r0, #1
|
|
movs r1, #0
|
|
bl GetFontAttribute
|
|
adds r2, r0, #0
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
movs r5, #0x10
|
|
str r5, [sp]
|
|
str r6, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #0x10]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r3, #2
|
|
bl sub_081988CC
|
|
str r5, [sp]
|
|
str r6, [sp, #4]
|
|
mov r2, r8
|
|
str r2, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
movs r3, #2
|
|
bl sub_081984B0
|
|
movs r0, #0
|
|
bl schedule_bg_copy_tilemap_to_vram
|
|
mov r0, sl
|
|
adds r1, r6, #0
|
|
adds r2, r4, #0
|
|
mov r3, sb
|
|
bl sub_080E14CC
|
|
add sp, #0x14
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E14C8: .4byte 0x08564218
|
|
thumb_func_end DrawMultichoiceMenu
|
|
|
|
thumb_func_start sub_080E14CC
|
|
sub_080E14CC: @ 0x080E14CC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov r8, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r7, r1, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
mov sb, r2
|
|
lsls r3, r3, #0x18
|
|
lsrs r4, r3, #0x18
|
|
ldr r1, _080E152C
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
movs r2, #0
|
|
ldr r6, _080E1530
|
|
ldr r5, _080E1534
|
|
movs r3, #0xc
|
|
_080E14F6:
|
|
adds r0, r2, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, r4
|
|
bne _080E1500
|
|
strb r3, [r1]
|
|
_080E1500:
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #5
|
|
bls _080E14F6
|
|
adds r0, r6, #0
|
|
movs r1, #0x50
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
ldr r1, _080E1538
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #3
|
|
adds r1, r0, r1
|
|
mov r0, r8
|
|
strh r0, [r1, #0x10]
|
|
cmp r7, #3
|
|
bls _080E153C
|
|
movs r0, #1
|
|
b _080E153E
|
|
.align 2, 0
|
|
_080E152C: .4byte 0x02039C30
|
|
_080E1530: .4byte 0x080E1569
|
|
_080E1534: .4byte 0x08564618
|
|
_080E1538: .4byte 0x03005B60
|
|
_080E153C:
|
|
movs r0, #0
|
|
_080E153E:
|
|
strh r0, [r1, #0x12]
|
|
ldr r1, _080E1564
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
mov r1, sb
|
|
strh r1, [r0, #0x14]
|
|
strh r4, [r0, #0x16]
|
|
adds r0, r4, #0
|
|
bl sub_080E1F88
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1564: .4byte 0x03005B60
|
|
thumb_func_end sub_080E14CC
|
|
|
|
thumb_func_start Task_HandleMultichoiceInput
|
|
Task_HandleMultichoiceInput: @ 0x080E1568
|
|
push {r4, r5, r6, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
lsls r0, r6, #2
|
|
adds r0, r0, r6
|
|
lsls r0, r0, #3
|
|
ldr r1, _080E1594
|
|
adds r5, r0, r1
|
|
ldr r0, _080E1598
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080E160C
|
|
ldr r1, _080E159C
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _080E15A0
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
b _080E160C
|
|
.align 2, 0
|
|
_080E1594: .4byte 0x03005B68
|
|
_080E1598: .4byte 0x02037C74
|
|
_080E159C: .4byte 0x02039C30
|
|
_080E15A0:
|
|
movs r1, #0xa
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
bne _080E15AE
|
|
bl Menu_ProcessInputNoWrap
|
|
b _080E15B2
|
|
_080E15AE:
|
|
bl Menu_ProcessInput
|
|
_080E15B2:
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
ldr r0, _080E15F0
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #0xc0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080E15C8
|
|
ldrb r0, [r5, #0xe]
|
|
bl sub_080E1F88
|
|
_080E15C8:
|
|
lsls r0, r4, #0x18
|
|
asrs r1, r0, #0x18
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _080E160C
|
|
adds r0, #1
|
|
cmp r1, r0
|
|
bne _080E15F8
|
|
movs r1, #8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
bne _080E160C
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldr r1, _080E15F4
|
|
movs r0, #0x7f
|
|
strh r0, [r1]
|
|
b _080E15FC
|
|
.align 2, 0
|
|
_080E15F0: .4byte 0x03002360
|
|
_080E15F4: .4byte 0x02037290
|
|
_080E15F8:
|
|
ldr r0, _080E1614
|
|
strh r1, [r0]
|
|
_080E15FC:
|
|
ldrb r0, [r5, #0xc]
|
|
bl ClearToTransparentAndRemoveWindow
|
|
adds r0, r6, #0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_080E160C:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1614: .4byte 0x02037290
|
|
thumb_func_end Task_HandleMultichoiceInput
|
|
|
|
thumb_func_start ScriptMenu_YesNo
|
|
ScriptMenu_YesNo: @ 0x080E1618
|
|
push {r4, lr}
|
|
ldr r4, _080E1640
|
|
adds r0, r4, #0
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E1648
|
|
ldr r1, _080E1644
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
bl DisplayYesNoMenuDefaultYes
|
|
adds r0, r4, #0
|
|
movs r1, #0x50
|
|
bl CreateTask
|
|
movs r0, #1
|
|
b _080E164A
|
|
.align 2, 0
|
|
_080E1640: .4byte 0x080E166D
|
|
_080E1644: .4byte 0x02037290
|
|
_080E1648:
|
|
movs r0, #0
|
|
_080E164A:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_YesNo
|
|
|
|
thumb_func_start IsScriptActive
|
|
IsScriptActive: @ 0x080E1650
|
|
push {lr}
|
|
ldr r0, _080E1660
|
|
ldrh r0, [r0]
|
|
cmp r0, #0xff
|
|
beq _080E1664
|
|
movs r0, #1
|
|
b _080E1666
|
|
.align 2, 0
|
|
_080E1660: .4byte 0x02037290
|
|
_080E1664:
|
|
movs r0, #0
|
|
_080E1666:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end IsScriptActive
|
|
|
|
thumb_func_start Task_HandleYesNoInput
|
|
Task_HandleYesNoInput: @ 0x080E166C
|
|
push {r4, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
ldr r1, _080E168C
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r4
|
|
lsls r0, r0, #3
|
|
adds r1, r0, r1
|
|
ldrh r2, [r1, #0xc]
|
|
movs r3, #0xc
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, #4
|
|
bgt _080E1690
|
|
adds r0, r2, #1
|
|
strh r0, [r1, #0xc]
|
|
b _080E16D4
|
|
.align 2, 0
|
|
_080E168C: .4byte 0x03005B60
|
|
_080E1690:
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, r0, #0x18
|
|
asrs r1, r0, #0x18
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _080E16B4
|
|
cmp r1, r0
|
|
bgt _080E16AC
|
|
subs r0, #1
|
|
cmp r1, r0
|
|
beq _080E16D4
|
|
b _080E16CA
|
|
_080E16AC:
|
|
cmp r1, #0
|
|
beq _080E16C4
|
|
cmp r1, #1
|
|
bne _080E16CA
|
|
_080E16B4:
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldr r1, _080E16C0
|
|
movs r0, #0
|
|
b _080E16C8
|
|
.align 2, 0
|
|
_080E16C0: .4byte 0x02037290
|
|
_080E16C4:
|
|
ldr r1, _080E16DC
|
|
movs r0, #1
|
|
_080E16C8:
|
|
strh r0, [r1]
|
|
_080E16CA:
|
|
adds r0, r4, #0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_080E16D4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E16DC: .4byte 0x02037290
|
|
thumb_func_end Task_HandleYesNoInput
|
|
|
|
thumb_func_start sp106_CreateStartMenu
|
|
sp106_CreateStartMenu: @ 0x080E16E0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x1c
|
|
ldr r4, [sp, #0x3c]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp, #0x14]
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
str r1, [sp, #0x18]
|
|
lsls r2, r2, #0x18
|
|
lsrs r5, r2, #0x18
|
|
lsls r3, r3, #0x18
|
|
lsrs r3, r3, #0x18
|
|
mov sl, r3
|
|
lsls r4, r4, #0x18
|
|
lsrs r7, r4, #0x18
|
|
ldr r0, _080E17C8
|
|
mov sb, r0
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E17D8
|
|
ldr r1, _080E17CC
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
ldr r1, _080E17D0
|
|
lsls r0, r5, #3
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
mov r8, r1
|
|
ldrb r5, [r0, #4]
|
|
mov r0, r8
|
|
adds r1, r5, #0
|
|
bl ScrSpecial_CreatePCMenu
|
|
adds r4, r0, #0
|
|
adds r4, #2
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r5, #0
|
|
adds r1, r7, #0
|
|
bl __udivsi3
|
|
adds r6, r0, #0
|
|
lsls r6, r6, #0x18
|
|
lsrs r6, r6, #0x18
|
|
mov r0, sb
|
|
movs r1, #0x50
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080E17D4
|
|
lsls r5, r0, #2
|
|
adds r5, r5, r0
|
|
lsls r5, r5, #3
|
|
adds r5, r5, r1
|
|
movs r0, #0
|
|
mov sb, r0
|
|
mov r1, sl
|
|
strh r1, [r5, #0x10]
|
|
adds r2, r4, #0
|
|
muls r2, r7, r2
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
lsls r3, r6, #0x19
|
|
lsrs r3, r3, #0x18
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x18]
|
|
bl CreateWindowFromRect
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
strh r0, [r5, #0x14]
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
ldrb r0, [r5, #0x14]
|
|
lsls r4, r4, #0x1b
|
|
lsrs r4, r4, #0x18
|
|
str r4, [sp]
|
|
movs r1, #0x10
|
|
str r1, [sp, #4]
|
|
str r7, [sp, #8]
|
|
str r6, [sp, #0xc]
|
|
mov r1, r8
|
|
str r1, [sp, #0x10]
|
|
movs r1, #1
|
|
movs r2, #8
|
|
movs r3, #2
|
|
bl sub_08198DA4
|
|
ldrb r0, [r5, #0x14]
|
|
str r4, [sp]
|
|
str r7, [sp, #4]
|
|
str r6, [sp, #8]
|
|
mov r1, sb
|
|
str r1, [sp, #0xc]
|
|
movs r1, #1
|
|
movs r2, #0
|
|
movs r3, #2
|
|
bl sub_081990E4
|
|
ldrb r0, [r5, #0x14]
|
|
movs r1, #3
|
|
bl CopyWindowToVram
|
|
movs r0, #1
|
|
b _080E17DA
|
|
.align 2, 0
|
|
_080E17C8: .4byte 0x080E17ED
|
|
_080E17CC: .4byte 0x02037290
|
|
_080E17D0: .4byte 0x08564218
|
|
_080E17D4: .4byte 0x03005B60
|
|
_080E17D8:
|
|
movs r0, #0
|
|
_080E17DA:
|
|
add sp, #0x1c
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end sp106_CreateStartMenu
|
|
|
|
thumb_func_start Task_HandleMultichoiceGridInput
|
|
Task_HandleMultichoiceGridInput: @ 0x080E17EC
|
|
push {r4, r5, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r4
|
|
lsls r0, r0, #3
|
|
ldr r1, _080E1828
|
|
adds r5, r0, r1
|
|
bl Menu_ProcessInputGridLayout
|
|
lsls r0, r0, #0x18
|
|
asrs r1, r0, #0x18
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _080E1844
|
|
adds r0, #1
|
|
cmp r1, r0
|
|
bne _080E1830
|
|
movs r1, #8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
bne _080E1844
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldr r1, _080E182C
|
|
movs r0, #0x7f
|
|
strh r0, [r1]
|
|
b _080E1834
|
|
.align 2, 0
|
|
_080E1828: .4byte 0x03005B68
|
|
_080E182C: .4byte 0x02037290
|
|
_080E1830:
|
|
ldr r0, _080E184C
|
|
strh r1, [r0]
|
|
_080E1834:
|
|
ldrb r0, [r5, #0xc]
|
|
bl ClearToTransparentAndRemoveWindow
|
|
adds r0, r4, #0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_080E1844:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E184C: .4byte 0x02037290
|
|
thumb_func_end Task_HandleMultichoiceGridInput
|
|
|
|
thumb_func_start sub_080E1850
|
|
sub_080E1850: @ 0x080E1850
|
|
push {lr}
|
|
ldr r0, _080E1870
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E1878
|
|
ldr r1, _080E1874
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
bl CreatePCMenu
|
|
movs r0, #1
|
|
b _080E187A
|
|
.align 2, 0
|
|
_080E1870: .4byte 0x080E1569
|
|
_080E1874: .4byte 0x02037290
|
|
_080E1878:
|
|
movs r0, #0
|
|
_080E187A:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end sub_080E1850
|
|
|
|
thumb_func_start CreatePCMenu
|
|
CreatePCMenu: @ 0x080E1880
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #0xc
|
|
movs r0, #1
|
|
movs r1, #0
|
|
bl GetFontAttribute
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
movs r0, #1
|
|
movs r1, #1
|
|
bl GetFontAttribute
|
|
ldr r0, _080E18BC
|
|
bl sub_080E1378
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10
|
|
ldr r0, _080E18C0
|
|
bl sub_080E1378
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r4, r0
|
|
bls _080E18C4
|
|
lsls r0, r4, #0x18
|
|
lsrs r4, r0, #0x18
|
|
b _080E18C6
|
|
.align 2, 0
|
|
_080E18BC: .4byte 0x085CACFE
|
|
_080E18C0: .4byte 0x085CACEC
|
|
_080E18C4:
|
|
movs r4, #8
|
|
_080E18C6:
|
|
ldr r0, _080E1924
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
cmp r5, #0
|
|
beq _080E1930
|
|
movs r0, #4
|
|
mov r8, r0
|
|
adds r2, r4, #4
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r3, #8
|
|
bl CreateWindowFromRect
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
adds r0, r6, #0
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
ldr r2, _080E1928
|
|
movs r0, #0x22
|
|
str r0, [sp]
|
|
movs r5, #0xff
|
|
str r5, [sp, #4]
|
|
movs r4, #0
|
|
str r4, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r3, r7, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E192C
|
|
movs r0, #0x32
|
|
str r0, [sp]
|
|
str r5, [sp, #4]
|
|
str r4, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r3, r7, #0
|
|
bl AddTextPrinterParameterized
|
|
b _080E1966
|
|
.align 2, 0
|
|
_080E1924: .4byte 0x00000864
|
|
_080E1928: .4byte 0x085CAD06
|
|
_080E192C: .4byte 0x085CAD0D
|
|
_080E1930:
|
|
movs r0, #3
|
|
mov r8, r0
|
|
adds r2, r4, #4
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r3, #6
|
|
bl CreateWindowFromRect
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
adds r0, r6, #0
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
ldr r2, _080E1990
|
|
movs r0, #0x22
|
|
str r0, [sp]
|
|
movs r0, #0xff
|
|
str r0, [sp, #4]
|
|
str r5, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r3, r7, #0
|
|
bl AddTextPrinterParameterized
|
|
_080E1966:
|
|
ldr r0, _080E1994
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
beq _080E199C
|
|
ldr r2, _080E1998
|
|
movs r0, #2
|
|
str r0, [sp]
|
|
movs r0, #0xff
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r3, r7, #0
|
|
bl AddTextPrinterParameterized
|
|
b _080E19B2
|
|
.align 2, 0
|
|
_080E1990: .4byte 0x085CAD0D
|
|
_080E1994: .4byte 0x000008AB
|
|
_080E1998: .4byte 0x085CACF5
|
|
_080E199C:
|
|
ldr r2, _080E1A00
|
|
movs r0, #2
|
|
str r0, [sp]
|
|
movs r0, #0xff
|
|
str r0, [sp, #4]
|
|
str r1, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
adds r3, r7, #0
|
|
bl AddTextPrinterParameterized
|
|
_080E19B2:
|
|
ldr r4, _080E1A04
|
|
ldr r1, _080E1A08
|
|
adds r0, r4, #0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r6, #0
|
|
adds r1, r4, #0
|
|
adds r2, r7, #0
|
|
movs r3, #0x12
|
|
bl PrintPlayerNameOnWindow
|
|
movs r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
movs r3, #2
|
|
bl sub_081984B0
|
|
adds r0, r6, #0
|
|
movs r1, #3
|
|
bl CopyWindowToVram
|
|
movs r0, #0
|
|
mov r1, r8
|
|
adds r2, r6, #0
|
|
movs r3, #1
|
|
bl sub_080E14CC
|
|
add sp, #0xc
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1A00: .4byte 0x085CACEC
|
|
_080E1A04: .4byte 0x02021C7C
|
|
_080E1A08: .4byte 0x085CACFE
|
|
thumb_func_end CreatePCMenu
|
|
|
|
thumb_func_start ScriptMenu_DisplayPCStartupPrompt
|
|
ScriptMenu_DisplayPCStartupPrompt: @ 0x080E1A0C
|
|
push {lr}
|
|
sub sp, #0x10
|
|
movs r0, #0
|
|
movs r1, #1
|
|
bl sub_08197650
|
|
ldr r2, _080E1A3C
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #2
|
|
str r0, [sp, #4]
|
|
movs r0, #1
|
|
str r0, [sp, #8]
|
|
movs r0, #3
|
|
str r0, [sp, #0xc]
|
|
movs r0, #0
|
|
movs r1, #1
|
|
movs r3, #0
|
|
bl AddTextPrinterParameterized2
|
|
add sp, #0x10
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1A3C: .4byte 0x082436CD
|
|
thumb_func_end ScriptMenu_DisplayPCStartupPrompt
|
|
|
|
thumb_func_start display_text_and_get_width_internal
|
|
display_text_and_get_width_internal: @ 0x080E1A40
|
|
push {lr}
|
|
ldr r0, _080E1A60
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E1A68
|
|
ldr r1, _080E1A64
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
bl sub_080E1A70
|
|
movs r0, #1
|
|
b _080E1A6A
|
|
.align 2, 0
|
|
_080E1A60: .4byte 0x080E1569
|
|
_080E1A64: .4byte 0x02037290
|
|
_080E1A68:
|
|
movs r0, #0
|
|
_080E1A6A:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end display_text_and_get_width_internal
|
|
|
|
thumb_func_start sub_080E1A70
|
|
sub_080E1A70: @ 0x080E1A70
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
sub sp, #0xc
|
|
movs r6, #0
|
|
movs r5, #0
|
|
movs r4, #0
|
|
ldr r3, _080E1C94
|
|
movs r2, #0xff
|
|
_080E1A84:
|
|
adds r0, r4, r3
|
|
ldrb r1, [r0]
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #6
|
|
bls _080E1A84
|
|
movs r0, #1
|
|
movs r1, #0
|
|
bl GetFontAttribute
|
|
ldr r0, _080E1C98
|
|
ldrh r1, [r0]
|
|
cmp r1, #0
|
|
bne _080E1ACE
|
|
movs r6, #6
|
|
ldr r4, _080E1C94
|
|
adds r0, r5, r4
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
movs r0, #0xe8
|
|
lsls r0, r0, #1
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #1
|
|
bne _080E1ACE
|
|
adds r0, r5, r4
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1ACE:
|
|
ldr r0, _080E1C9C
|
|
movs r1, #1
|
|
bl CheckBagHasItem
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1B30
|
|
ldr r0, _080E1CA0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1B30
|
|
ldr r2, _080E1C98
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
bne _080E1B04
|
|
movs r6, #7
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #2
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1B04:
|
|
ldrh r0, [r2]
|
|
cmp r0, #1
|
|
bne _080E1B30
|
|
movs r4, #0xd7
|
|
lsls r4, r4, #1
|
|
adds r0, r4, #0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080E1B30
|
|
movs r6, #7
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #2
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
adds r0, r4, #0
|
|
bl FlagSet
|
|
_080E1B30:
|
|
movs r0, #0xb9
|
|
lsls r0, r0, #1
|
|
movs r1, #1
|
|
bl CheckBagHasItem
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1B90
|
|
movs r0, #0x8e
|
|
lsls r0, r0, #4
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1B90
|
|
ldr r2, _080E1C98
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
bne _080E1B68
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #3
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1B68:
|
|
ldrh r0, [r2]
|
|
cmp r0, #1
|
|
bne _080E1B90
|
|
ldr r4, _080E1CA4
|
|
adds r0, r4, #0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080E1B90
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #3
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
adds r0, r4, #0
|
|
bl FlagSet
|
|
_080E1B90:
|
|
ldr r0, _080E1CA8
|
|
movs r1, #1
|
|
bl CheckBagHasItem
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1BF0
|
|
ldr r0, _080E1CAC
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1BF0
|
|
ldr r2, _080E1C98
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
bne _080E1BC6
|
|
movs r6, #8
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1BC6:
|
|
ldrh r0, [r2]
|
|
cmp r0, #1
|
|
bne _080E1BF0
|
|
ldr r4, _080E1CB0
|
|
adds r0, r4, #0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080E1BF0
|
|
movs r6, #8
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
adds r0, r4, #0
|
|
bl FlagSet
|
|
_080E1BF0:
|
|
movs r0, #0xbc
|
|
lsls r0, r0, #1
|
|
movs r1, #1
|
|
bl CheckBagHasItem
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1C54
|
|
ldr r0, _080E1CB4
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1C54
|
|
ldr r2, _080E1C98
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
bne _080E1C28
|
|
movs r6, #8
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #5
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1C28:
|
|
ldrh r0, [r2]
|
|
cmp r0, #1
|
|
bne _080E1C54
|
|
movs r4, #0xd8
|
|
lsls r4, r4, #1
|
|
adds r0, r4, #0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080E1C54
|
|
movs r6, #8
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #5
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
adds r0, r4, #0
|
|
bl FlagSet
|
|
_080E1C54:
|
|
ldr r0, _080E1C94
|
|
adds r0, r5, r0
|
|
movs r1, #6
|
|
strb r1, [r0]
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
ldr r0, _080E1C98
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
bne _080E1C7C
|
|
movs r0, #0xe8
|
|
lsls r0, r0, #1
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _080E1C7C
|
|
movs r6, #9
|
|
_080E1C7C:
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
adds r7, r5, #0
|
|
cmp r7, #7
|
|
bne _080E1CB8
|
|
ldr r1, _080E1C98
|
|
movs r0, #0xb
|
|
strh r0, [r1]
|
|
bl sub_0813A164
|
|
b _080E1D54
|
|
.align 2, 0
|
|
_080E1C94: .4byte 0x03001124
|
|
_080E1C98: .4byte 0x02037280
|
|
_080E1C9C: .4byte 0x00000113
|
|
_080E1CA0: .4byte 0x000008B3
|
|
_080E1CA4: .4byte 0x000001DB
|
|
_080E1CA8: .4byte 0x00000173
|
|
_080E1CAC: .4byte 0x000008D5
|
|
_080E1CB0: .4byte 0x000001AF
|
|
_080E1CB4: .4byte 0x000008D6
|
|
_080E1CB8:
|
|
movs r0, #0x1c
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #6
|
|
subs r1, r1, r7
|
|
lsls r1, r1, #0x19
|
|
lsrs r1, r1, #0x18
|
|
lsls r3, r7, #0x19
|
|
lsrs r3, r3, #0x18
|
|
adds r2, r6, #0
|
|
bl CreateWindowFromRect
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
adds r0, r6, #0
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
movs r5, #0
|
|
movs r4, #0
|
|
subs r0, r7, #1
|
|
mov r8, r0
|
|
ldr r1, _080E1D64
|
|
mov sb, r1
|
|
_080E1CEA:
|
|
ldr r0, _080E1D68
|
|
adds r1, r4, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
beq _080E1D1C
|
|
lsls r0, r0, #2
|
|
add r0, sb
|
|
ldr r2, [r0]
|
|
lsls r0, r5, #4
|
|
adds r0, #2
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
movs r0, #0xff
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
movs r3, #8
|
|
bl AddTextPrinterParameterized
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_080E1D1C:
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #6
|
|
bls _080E1CEA
|
|
movs r0, #0x10
|
|
str r0, [sp]
|
|
str r7, [sp, #4]
|
|
mov r1, r8
|
|
lsls r0, r1, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp, #8]
|
|
adds r0, r6, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
movs r3, #2
|
|
bl sub_081984B0
|
|
adds r0, r6, #0
|
|
movs r1, #3
|
|
bl CopyWindowToVram
|
|
movs r0, #0
|
|
adds r1, r7, #0
|
|
adds r2, r6, #0
|
|
movs r3, #8
|
|
bl sub_080E14CC
|
|
_080E1D54:
|
|
add sp, #0xc
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1D64: .4byte 0x08564620
|
|
_080E1D68: .4byte 0x03001124
|
|
thumb_func_end sub_080E1A70
|
|
|
|
thumb_func_start sub_080E1D6C
|
|
sub_080E1D6C: @ 0x080E1D6C
|
|
push {lr}
|
|
ldr r2, _080E1D84
|
|
ldrh r0, [r2]
|
|
cmp r0, #0x7f
|
|
beq _080E1D80
|
|
ldr r0, _080E1D88
|
|
ldrh r1, [r2]
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
strh r0, [r2]
|
|
_080E1D80:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E1D84: .4byte 0x02037290
|
|
_080E1D88: .4byte 0x03001124
|
|
thumb_func_end sub_080E1D6C
|
|
|
|
thumb_func_start Task_PokemonPicWindow
|
|
Task_PokemonPicWindow: @ 0x080E1D8C
|
|
push {r4, r5, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
lsls r0, r5, #2
|
|
adds r0, r0, r5
|
|
lsls r0, r0, #3
|
|
ldr r1, _080E1DB0
|
|
adds r4, r0, r1
|
|
movs r1, #8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #1
|
|
beq _080E1DEC
|
|
cmp r0, #1
|
|
bgt _080E1DB4
|
|
cmp r0, #0
|
|
beq _080E1DD2
|
|
b _080E1DEC
|
|
.align 2, 0
|
|
_080E1DB0: .4byte 0x03005B60
|
|
_080E1DB4:
|
|
cmp r0, #2
|
|
beq _080E1DBE
|
|
cmp r0, #3
|
|
beq _080E1DE0
|
|
b _080E1DEC
|
|
_080E1DBE:
|
|
movs r0, #0xc
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, #4
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r1, _080E1DDC
|
|
adds r0, r0, r1
|
|
ldrb r1, [r4, #0xc]
|
|
bl FreeResourcesAndDestroySprite
|
|
_080E1DD2:
|
|
ldrh r0, [r4, #8]
|
|
adds r0, #1
|
|
strh r0, [r4, #8]
|
|
b _080E1DEC
|
|
.align 2, 0
|
|
_080E1DDC: .4byte 0x020205AC
|
|
_080E1DE0:
|
|
ldrb r0, [r4, #0x12]
|
|
bl ClearToTransparentAndRemoveWindow
|
|
adds r0, r5, #0
|
|
bl DestroyTask
|
|
_080E1DEC:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end Task_PokemonPicWindow
|
|
|
|
thumb_func_start ScriptMenu_ShowPokemonPic
|
|
ScriptMenu_ShowPokemonPic: @ 0x080E1DF4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
mov r8, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r7, r1, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r6, r2, #0x18
|
|
ldr r4, _080E1E9C
|
|
adds r0, r4, #0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0xff
|
|
bne _080E1EAC
|
|
lsls r1, r7, #0x13
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #0xe
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #0x10
|
|
lsls r2, r6, #0x13
|
|
adds r2, r2, r0
|
|
asrs r2, r2, #0x10
|
|
mov r0, r8
|
|
movs r3, #0
|
|
bl CreateMonSprite_PicBox
|
|
adds r5, r0, #0
|
|
lsls r5, r5, #0x18
|
|
lsrs r5, r5, #0x18
|
|
adds r0, r4, #0
|
|
movs r1, #0x50
|
|
bl CreateTask
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r7, #0
|
|
adds r1, r6, #0
|
|
movs r2, #8
|
|
movs r3, #8
|
|
bl CreateWindowFromRect
|
|
ldr r1, _080E1EA0
|
|
lsls r3, r4, #2
|
|
adds r3, r3, r4
|
|
lsls r3, r3, #3
|
|
adds r3, r3, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #0
|
|
strh r0, [r3, #0x12]
|
|
strh r1, [r3, #8]
|
|
mov r0, r8
|
|
strh r0, [r3, #0xa]
|
|
strh r5, [r3, #0xc]
|
|
ldr r4, _080E1EA4
|
|
lsls r1, r5, #4
|
|
adds r1, r1, r5
|
|
lsls r1, r1, #2
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
adds r0, r1, r0
|
|
ldr r2, _080E1EA8
|
|
str r2, [r0]
|
|
adds r1, r1, r4
|
|
ldrb r2, [r1, #5]
|
|
movs r0, #0xd
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1, #5]
|
|
ldrb r0, [r3, #0x12]
|
|
movs r1, #1
|
|
bl SetStandardWindowBorderStyle
|
|
movs r0, #0
|
|
bl schedule_bg_copy_tilemap_to_vram
|
|
movs r0, #1
|
|
b _080E1EAE
|
|
.align 2, 0
|
|
_080E1E9C: .4byte 0x080E1D8D
|
|
_080E1EA0: .4byte 0x03005B60
|
|
_080E1EA4: .4byte 0x020205AC
|
|
_080E1EA8: .4byte 0x08007141
|
|
_080E1EAC:
|
|
movs r0, #0
|
|
_080E1EAE:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_ShowPokemonPic
|
|
|
|
thumb_func_start ScriptMenu_GetPicboxWaitFunc
|
|
ScriptMenu_GetPicboxWaitFunc: @ 0x080E1EB8
|
|
push {lr}
|
|
ldr r0, _080E1EDC
|
|
bl FindTaskIdByFunc
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xff
|
|
beq _080E1EE8
|
|
ldr r0, _080E1EE0
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r2
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1, #8]
|
|
adds r0, #1
|
|
strh r0, [r1, #8]
|
|
ldr r0, _080E1EE4
|
|
b _080E1EEA
|
|
.align 2, 0
|
|
_080E1EDC: .4byte 0x080E1D8D
|
|
_080E1EE0: .4byte 0x03005B60
|
|
_080E1EE4: .4byte 0x080E1EF1
|
|
_080E1EE8:
|
|
movs r0, #0
|
|
_080E1EEA:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end ScriptMenu_GetPicboxWaitFunc
|
|
|
|
thumb_func_start IsPicboxClosed
|
|
IsPicboxClosed: @ 0x080E1EF0
|
|
push {lr}
|
|
ldr r0, _080E1F04
|
|
bl FindTaskIdByFunc
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0xff
|
|
beq _080E1F08
|
|
movs r0, #0
|
|
b _080E1F0A
|
|
.align 2, 0
|
|
_080E1F04: .4byte 0x080E1D8D
|
|
_080E1F08:
|
|
movs r0, #1
|
|
_080E1F0A:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end IsPicboxClosed
|
|
|
|
thumb_func_start CreateWindowFromRect
|
|
CreateWindowFromRect: @ 0x080E1F10
|
|
push {r4, r5, lr}
|
|
sub sp, #0x20
|
|
adds r4, r0, #0
|
|
adds r5, r1, #0
|
|
lsls r4, r4, #0x18
|
|
lsls r5, r5, #0x18
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
lsls r3, r3, #0x18
|
|
lsrs r3, r3, #0x18
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
adds r4, r4, r0
|
|
lsrs r4, r4, #0x18
|
|
adds r5, r5, r0
|
|
lsrs r5, r5, #0x18
|
|
str r2, [sp]
|
|
str r3, [sp, #4]
|
|
movs r0, #0xf
|
|
str r0, [sp, #8]
|
|
movs r0, #0x5c
|
|
str r0, [sp, #0xc]
|
|
add r0, sp, #0x10
|
|
movs r1, #0
|
|
adds r2, r4, #0
|
|
adds r3, r5, #0
|
|
bl CreateWindowTemplate
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x14]
|
|
str r0, [sp, #0x18]
|
|
str r1, [sp, #0x1c]
|
|
add r0, sp, #0x18
|
|
bl AddWindow
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r4, #0
|
|
bl PutWindowTilemap
|
|
adds r0, r4, #0
|
|
add sp, #0x20
|
|
pop {r4, r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CreateWindowFromRect
|
|
|
|
thumb_func_start ClearToTransparentAndRemoveWindow
|
|
ClearToTransparentAndRemoveWindow: @ 0x080E1F6C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl ClearStdWindowAndFrameToTransparent
|
|
adds r0, r4, #0
|
|
bl RemoveWindow
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end ClearToTransparentAndRemoveWindow
|
|
|
|
thumb_func_start sub_080E1F88
|
|
sub_080E1F88: @ 0x080E1F88
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
subs r0, #0x4a
|
|
cmp r0, #5
|
|
bhi _080E2064
|
|
lsls r0, r0, #2
|
|
ldr r1, _080E1FA0
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080E1FA0: .4byte 0x080E1FA4
|
|
_080E1FA4: @ jump table
|
|
.4byte _080E2034 @ case 0
|
|
.4byte _080E1FFC @ case 1
|
|
.4byte _080E1FCC @ case 2
|
|
.4byte _080E1FBC @ case 3
|
|
.4byte _080E1FDC @ case 4
|
|
.4byte _080E1FEC @ case 5
|
|
_080E1FBC:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E1FC8
|
|
b _080E2006
|
|
.align 2, 0
|
|
_080E1FC8: .4byte 0x0856464C
|
|
_080E1FCC:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E1FD8
|
|
b _080E2006
|
|
.align 2, 0
|
|
_080E1FD8: .4byte 0x0856463C
|
|
_080E1FDC:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E1FE8
|
|
b _080E2006
|
|
.align 2, 0
|
|
_080E1FE8: .4byte 0x0856465C
|
|
_080E1FEC:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E1FF8
|
|
b _080E2006
|
|
.align 2, 0
|
|
_080E1FF8: .4byte 0x0856466C
|
|
_080E1FFC:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E2030
|
|
_080E2006:
|
|
bl Menu_GetCursorPos
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x16
|
|
adds r0, r0, r4
|
|
ldr r2, [r0]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #2
|
|
str r0, [sp, #4]
|
|
movs r0, #1
|
|
str r0, [sp, #8]
|
|
movs r0, #3
|
|
str r0, [sp, #0xc]
|
|
movs r0, #0
|
|
movs r1, #1
|
|
movs r3, #0
|
|
bl AddTextPrinterParameterized2
|
|
b _080E2064
|
|
.align 2, 0
|
|
_080E2030: .4byte 0x0856468C
|
|
_080E2034:
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _080E206C
|
|
bl Menu_GetCursorPos
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x16
|
|
adds r0, r0, r4
|
|
ldr r2, [r0]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #2
|
|
str r0, [sp, #4]
|
|
movs r0, #1
|
|
str r0, [sp, #8]
|
|
movs r0, #3
|
|
str r0, [sp, #0xc]
|
|
movs r0, #0
|
|
movs r1, #1
|
|
movs r3, #0
|
|
bl AddTextPrinterParameterized2
|
|
_080E2064:
|
|
add sp, #0x10
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E206C: .4byte 0x08564680
|
|
thumb_func_end sub_080E1F88
|
|
|
|
thumb_func_start convert_pixel_width_to_tile_width
|
|
convert_pixel_width_to_tile_width: @ 0x080E2070
|
|
push {lr}
|
|
ldr r0, _080E2090
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _080E2098
|
|
ldr r1, _080E2094
|
|
movs r0, #0xff
|
|
strh r0, [r1]
|
|
bl CreateStartMenu
|
|
movs r0, #1
|
|
b _080E209A
|
|
.align 2, 0
|
|
_080E2090: .4byte 0x080E1569
|
|
_080E2094: .4byte 0x02037290
|
|
_080E2098:
|
|
movs r0, #0
|
|
_080E209A:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
thumb_func_end convert_pixel_width_to_tile_width
|
|
|
|
thumb_func_start CreateStartMenu
|
|
CreateStartMenu: @ 0x080E20A0
|
|
push {r4, r5, r6, lr}
|
|
mov r6, sl
|
|
mov r5, sb
|
|
mov r4, r8
|
|
push {r4, r5, r6}
|
|
sub sp, #0xc
|
|
movs r0, #1
|
|
movs r1, #0
|
|
bl GetFontAttribute
|
|
adds r5, r0, #0
|
|
adds r5, #1
|
|
lsls r5, r5, #0x18
|
|
lsrs r5, r5, #0x18
|
|
movs r0, #1
|
|
movs r1, #1
|
|
bl GetFontAttribute
|
|
movs r0, #8
|
|
mov sl, r0
|
|
movs r0, #0x10
|
|
mov sb, r0
|
|
movs r0, #0x16
|
|
movs r1, #0
|
|
movs r2, #6
|
|
movs r3, #0x10
|
|
bl CreateWindowFromRect
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl SetStandardWindowBorderStyle
|
|
ldr r2, _080E21D8
|
|
movs r0, #2
|
|
str r0, [sp]
|
|
movs r0, #0xff
|
|
mov r8, r0
|
|
str r0, [sp, #4]
|
|
movs r6, #0
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21DC
|
|
movs r0, #0x12
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21E0
|
|
movs r0, #0x22
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21E4
|
|
movs r0, #0x32
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r0, _080E21E8
|
|
ldr r2, [r0]
|
|
movs r0, #0x42
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21EC
|
|
movs r0, #0x52
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21F0
|
|
movs r0, #0x62
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _080E21F4
|
|
movs r0, #0x72
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
adds r3, r5, #0
|
|
bl AddTextPrinterParameterized
|
|
mov r0, sb
|
|
str r0, [sp]
|
|
mov r0, sl
|
|
str r0, [sp, #4]
|
|
str r6, [sp, #8]
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
movs r3, #2
|
|
bl sub_081984B0
|
|
movs r0, #0
|
|
movs r1, #8
|
|
adds r2, r4, #0
|
|
movs r3, #0x56
|
|
bl sub_080E21F8
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl CopyWindowToVram
|
|
add sp, #0xc
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E21D8: .4byte 0x085CADAE
|
|
_080E21DC: .4byte 0x085CADB2
|
|
_080E21E0: .4byte 0x085CADB7
|
|
_080E21E4: .4byte 0x085CADBB
|
|
_080E21E8: .4byte 0x03005AF0
|
|
_080E21EC: .4byte 0x085CADC6
|
|
_080E21F0: .4byte 0x085CADCB
|
|
_080E21F4: .4byte 0x085CADD0
|
|
thumb_func_end CreateStartMenu
|
|
|
|
thumb_func_start sub_080E21F8
|
|
sub_080E21F8: @ 0x080E21F8
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
adds r5, r2, #0
|
|
adds r6, r3, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
lsls r5, r5, #0x18
|
|
lsrs r5, r5, #0x18
|
|
lsls r6, r6, #0x18
|
|
lsrs r6, r6, #0x18
|
|
ldr r1, _080E2238
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r0, _080E223C
|
|
movs r1, #0x50
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r2, _080E2240
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r2
|
|
movs r0, #0
|
|
strh r4, [r1, #0x10]
|
|
strh r0, [r1, #0x12]
|
|
strh r5, [r1, #0x14]
|
|
strh r6, [r1, #0x16]
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080E2238: .4byte 0x02039C30
|
|
_080E223C: .4byte 0x080E1569
|
|
_080E2240: .4byte 0x03005B60
|
|
thumb_func_end sub_080E21F8
|
|
|