mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-07 06:35:48 -05:00
2059 lines
34 KiB
ArmAsm
2059 lines
34 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_809C954
|
|
sub_809C954: @ 809C954
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r0, 0x1
|
|
movs r2, 0
|
|
bl GetStringWidth
|
|
adds r1, r0, 0
|
|
adds r0, r1, 0x7
|
|
cmp r0, 0
|
|
bge _0809C96A
|
|
adds r0, 0x7
|
|
_0809C96A:
|
|
lsls r0, 13
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809C954
|
|
|
|
thumb_func_start sub_809C974
|
|
sub_809C974: @ 809C974
|
|
push {r4-r7,lr}
|
|
adds r7, r0, 0
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
ldr r0, [r7]
|
|
bl sub_809C954
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0x1
|
|
cmp r5, r4
|
|
bcs _0809C9AA
|
|
_0809C98C:
|
|
lsls r0, r5, 3
|
|
adds r0, r7
|
|
ldr r0, [r0]
|
|
bl sub_809C954
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
bcs _0809C9A0
|
|
adds r6, r0, 0
|
|
_0809C9A0:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, r4
|
|
bcc _0809C98C
|
|
_0809C9AA:
|
|
adds r0, r6, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809C974
|
|
|
|
thumb_func_start ScriptMenu_Multichoice
|
|
ScriptMenu_Multichoice: @ 809C9B4
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 24
|
|
lsrs r5, r2, 24
|
|
lsls r3, 24
|
|
lsrs r4, r3, 24
|
|
ldr r0, _0809C9F0 @ =sub_809CC98
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809C9F8
|
|
ldr r0, _0809C9F4 @ =gSpecialVar_Result
|
|
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 sub_809CA64
|
|
movs r0, 0x1
|
|
b _0809C9FA
|
|
.align 2, 0
|
|
_0809C9F0: .4byte sub_809CC98
|
|
_0809C9F4: .4byte gSpecialVar_Result
|
|
_0809C9F8:
|
|
movs r0, 0
|
|
_0809C9FA:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_Multichoice
|
|
|
|
thumb_func_start ScriptMenu_MultichoiceWithDefault
|
|
ScriptMenu_MultichoiceWithDefault: @ 809CA04
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
ldr r4, [sp, 0x1C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
lsls r3, 24
|
|
lsrs r5, r3, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _0809CA4C @ =sub_809CC98
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809CA54
|
|
ldr r1, _0809CA50 @ =gSpecialVar_Result
|
|
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 sub_809CA64
|
|
movs r0, 0x1
|
|
b _0809CA56
|
|
.align 2, 0
|
|
_0809CA4C: .4byte sub_809CC98
|
|
_0809CA50: .4byte gSpecialVar_Result
|
|
_0809CA54:
|
|
movs r0, 0
|
|
_0809CA56:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_MultichoiceWithDefault
|
|
|
|
thumb_func_start sub_809CA64
|
|
sub_809CA64: @ 809CA64
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
ldr r4, [sp, 0x40]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x14]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r10, r2
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
str r3, [sp, 0x18]
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
str r4, [sp, 0x1C]
|
|
movs r0, 0x2
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _0809CAA6
|
|
ldr r0, _0809CB54 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809CBA2
|
|
_0809CAA6:
|
|
movs r0, 0x1
|
|
ldr r1, [sp, 0x18]
|
|
ands r1, r0
|
|
str r1, [sp, 0x18]
|
|
ldr r1, _0809CB58 @ =gUnknown_83E04B0
|
|
mov r2, r10
|
|
lsls r0, r2, 3
|
|
adds r0, r1
|
|
ldrb r7, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
mov r8, r0
|
|
movs r6, 0
|
|
cmp r6, r7
|
|
bge _0809CADE
|
|
mov r5, r8
|
|
adds r4, r7, 0
|
|
_0809CAC6:
|
|
ldr r1, [r5]
|
|
movs r0, 0x2
|
|
movs r2, 0
|
|
bl GetStringWidth
|
|
cmp r0, r6
|
|
ble _0809CAD6
|
|
adds r6, r0, 0
|
|
_0809CAD6:
|
|
adds r5, 0x8
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0809CAC6
|
|
_0809CADE:
|
|
adds r0, r6, 0
|
|
adds r0, 0x9
|
|
cmp r0, 0
|
|
bge _0809CAE8
|
|
adds r0, 0x7
|
|
_0809CAE8:
|
|
asrs r0, 3
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r1, r9
|
|
adds r0, r1, r5
|
|
cmp r0, 0x1C
|
|
ble _0809CB02
|
|
movs r0, 0x1C
|
|
subs r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0809CB02:
|
|
adds r0, r7, 0
|
|
bl sub_809CBB4
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r0, r9
|
|
ldr r1, [sp, 0x14]
|
|
adds r2, r5, 0
|
|
bl CreateWindowFromRect
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl SetStdWindowBorderStyle
|
|
mov r2, r10
|
|
cmp r2, 0x1E
|
|
beq _0809CB32
|
|
cmp r2, 0xD
|
|
beq _0809CB32
|
|
cmp r2, 0x29
|
|
bne _0809CB5C
|
|
_0809CB32:
|
|
movs r0, 0xE
|
|
str r0, [sp]
|
|
str r7, [sp, 0x4]
|
|
mov r0, r8
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x10]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
movs r2, 0x8
|
|
movs r3, 0x2
|
|
bl MultichoiceList_PrintItems
|
|
b _0809CB7A
|
|
.align 2, 0
|
|
_0809CB54: .4byte sub_809D6D4
|
|
_0809CB58: .4byte gUnknown_83E04B0
|
|
_0809CB5C:
|
|
movs r0, 0xE
|
|
str r0, [sp]
|
|
str r7, [sp, 0x4]
|
|
mov r1, r8
|
|
str r1, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x10]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
movs r2, 0x8
|
|
movs r3, 0x2
|
|
bl MultichoiceList_PrintItems
|
|
_0809CB7A:
|
|
movs r0, 0xE
|
|
str r0, [sp]
|
|
str r7, [sp, 0x4]
|
|
ldr r2, [sp, 0x1C]
|
|
str r2, [sp, 0x8]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl Menu_InitCursor
|
|
ldr r0, [sp, 0x18]
|
|
adds r1, r7, 0
|
|
adds r2, r5, 0
|
|
mov r3, r10
|
|
bl sub_809CC18
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0809CBA2:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_809CA64
|
|
|
|
thumb_func_start sub_809CBB4
|
|
sub_809CBB4: @ 809CBB4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x8
|
|
bhi _0809CC10
|
|
lsls r0, 2
|
|
ldr r1, _0809CBC8 @ =_0809CBCC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0809CBC8: .4byte _0809CBCC
|
|
.align 2, 0
|
|
_0809CBCC:
|
|
.4byte _0809CC10
|
|
.4byte _0809CBF0
|
|
.4byte _0809CBF4
|
|
.4byte _0809CBF8
|
|
.4byte _0809CBFC
|
|
.4byte _0809CC00
|
|
.4byte _0809CC04
|
|
.4byte _0809CC08
|
|
.4byte _0809CC0C
|
|
_0809CBF0:
|
|
movs r0, 0x2
|
|
b _0809CC12
|
|
_0809CBF4:
|
|
movs r0, 0x4
|
|
b _0809CC12
|
|
_0809CBF8:
|
|
movs r0, 0x6
|
|
b _0809CC12
|
|
_0809CBFC:
|
|
movs r0, 0x7
|
|
b _0809CC12
|
|
_0809CC00:
|
|
movs r0, 0x9
|
|
b _0809CC12
|
|
_0809CC04:
|
|
movs r0, 0xB
|
|
b _0809CC12
|
|
_0809CC08:
|
|
movs r0, 0xD
|
|
b _0809CC12
|
|
_0809CC0C:
|
|
movs r0, 0xE
|
|
b _0809CC12
|
|
_0809CC10:
|
|
movs r0, 0x1
|
|
_0809CC12:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809CBB4
|
|
|
|
thumb_func_start sub_809CC18
|
|
sub_809CC18: @ 809CC18
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
lsls r3, 24
|
|
lsrs r4, r3, 24
|
|
cmp r4, 0x27
|
|
beq _0809CC36
|
|
cmp r4, 0x2F
|
|
beq _0809CC36
|
|
cmp r4, 0x32
|
|
bne _0809CC40
|
|
_0809CC36:
|
|
ldr r1, _0809CC3C @ =gUnknown_2039988
|
|
movs r0, 0xC
|
|
b _0809CC44
|
|
.align 2, 0
|
|
_0809CC3C: .4byte gUnknown_2039988
|
|
_0809CC40:
|
|
ldr r1, _0809CC68 @ =gUnknown_2039988
|
|
movs r0, 0
|
|
_0809CC44:
|
|
strb r0, [r1]
|
|
ldr r0, _0809CC6C @ =sub_809CC98
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, _0809CC70 @ =gTasks
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
strh r6, [r1, 0x10]
|
|
cmp r5, 0x3
|
|
bls _0809CC74
|
|
movs r0, 0x1
|
|
b _0809CC76
|
|
.align 2, 0
|
|
_0809CC68: .4byte gUnknown_2039988
|
|
_0809CC6C: .4byte sub_809CC98
|
|
_0809CC70: .4byte gTasks
|
|
_0809CC74:
|
|
movs r0, 0
|
|
_0809CC76:
|
|
strh r0, [r1, 0x12]
|
|
ldr r1, _0809CC94 @ =gTasks
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r7, [r0, 0x14]
|
|
strh r4, [r0, 0x16]
|
|
adds r0, r4, 0
|
|
bl sub_809CD48
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809CC94: .4byte gTasks
|
|
thumb_func_end sub_809CC18
|
|
|
|
thumb_func_start sub_809CC98
|
|
sub_809CC98: @ 809CC98
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _0809CCC4 @ =gTasks+0x8
|
|
adds r5, r0, r1
|
|
ldr r0, _0809CCC8 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0809CD3C
|
|
ldr r1, _0809CCCC @ =gUnknown_2039988
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0809CCD0
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0809CD3C
|
|
.align 2, 0
|
|
_0809CCC4: .4byte gTasks+0x8
|
|
_0809CCC8: .4byte gPaletteFade
|
|
_0809CCCC: .4byte gUnknown_2039988
|
|
_0809CCD0:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _0809CCDE
|
|
bl Menu_ProcessInputNoWrapAround
|
|
b _0809CCE2
|
|
_0809CCDE:
|
|
bl Menu_ProcessInput
|
|
_0809CCE2:
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0809CD20 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0809CCF8
|
|
ldrb r0, [r5, 0xE]
|
|
bl sub_809CD48
|
|
_0809CCF8:
|
|
lsls r0, r4, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809CD3C
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
bne _0809CD28
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _0809CD3C
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _0809CD24 @ =gSpecialVar_Result
|
|
movs r0, 0x7F
|
|
strh r0, [r1]
|
|
b _0809CD2C
|
|
.align 2, 0
|
|
_0809CD20: .4byte gMain
|
|
_0809CD24: .4byte gSpecialVar_Result
|
|
_0809CD28:
|
|
ldr r0, _0809CD44 @ =gSpecialVar_Result
|
|
strh r1, [r0]
|
|
_0809CD2C:
|
|
ldrb r0, [r5, 0xC]
|
|
bl sub_809D6B0
|
|
adds r0, r6, 0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_0809CD3C:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809CD44: .4byte gSpecialVar_Result
|
|
thumb_func_end sub_809CC98
|
|
|
|
thumb_func_start sub_809CD48
|
|
sub_809CD48: @ 809CD48
|
|
push {r4,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
cmp r0, 0x2F
|
|
beq _0809CD78
|
|
cmp r0, 0x2F
|
|
bgt _0809CD60
|
|
cmp r0, 0x27
|
|
beq _0809CD66
|
|
b _0809CDE0
|
|
_0809CD60:
|
|
cmp r1, 0x32
|
|
beq _0809CDB0
|
|
b _0809CDE0
|
|
_0809CD66:
|
|
movs r0, 0
|
|
movs r1, 0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _0809CD74 @ =gUnknown_83E072C
|
|
b _0809CD82
|
|
.align 2, 0
|
|
_0809CD74: .4byte gUnknown_83E072C
|
|
_0809CD78:
|
|
movs r0, 0
|
|
movs r1, 0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _0809CDAC @ =gUnknown_83E0738
|
|
_0809CD82:
|
|
bl Menu_GetCursorPos
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r4
|
|
ldr r2, [r0]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
movs r3, 0
|
|
bl AddTextPrinterParameterized2
|
|
b _0809CDE0
|
|
.align 2, 0
|
|
_0809CDAC: .4byte gUnknown_83E0738
|
|
_0809CDB0:
|
|
movs r0, 0
|
|
movs r1, 0x11
|
|
bl FillWindowPixelBuffer
|
|
ldr r4, _0809CDE8 @ =gUnknown_83E0748
|
|
bl Menu_GetCursorPos
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r4
|
|
ldr r2, [r0]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
movs r3, 0
|
|
bl AddTextPrinterParameterized2
|
|
_0809CDE0:
|
|
add sp, 0x10
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809CDE8: .4byte gUnknown_83E0748
|
|
thumb_func_end sub_809CD48
|
|
|
|
thumb_func_start ScriptMenu_YesNo
|
|
ScriptMenu_YesNo: @ 809CDEC
|
|
push {r4,lr}
|
|
ldr r4, _0809CE04 @ =task_yes_no_maybe
|
|
adds r0, r4, 0
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0809CE08
|
|
movs r0, 0
|
|
b _0809CE28
|
|
.align 2, 0
|
|
_0809CE04: .4byte task_yes_no_maybe
|
|
_0809CE08:
|
|
ldr r1, _0809CE30 @ =gSpecialVar_Result
|
|
movs r0, 0xFF
|
|
strh r0, [r1]
|
|
ldr r0, _0809CE34 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809CE26
|
|
bl DisplayYesNoMenuDefaultYes
|
|
adds r0, r4, 0
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
_0809CE26:
|
|
movs r0, 0x1
|
|
_0809CE28:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0809CE30: .4byte gSpecialVar_Result
|
|
_0809CE34: .4byte sub_809D6D4
|
|
thumb_func_end ScriptMenu_YesNo
|
|
|
|
thumb_func_start sub_809CE38
|
|
sub_809CE38: @ 809CE38
|
|
push {lr}
|
|
ldr r0, _0809CE48 @ =gSpecialVar_Result
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xFF
|
|
beq _0809CE4C
|
|
movs r0, 0x1
|
|
b _0809CE4E
|
|
.align 2, 0
|
|
_0809CE48: .4byte gSpecialVar_Result
|
|
_0809CE4C:
|
|
movs r0, 0
|
|
_0809CE4E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809CE38
|
|
|
|
thumb_func_start task_yes_no_maybe
|
|
task_yes_no_maybe: @ 809CE54
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _0809CE74 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x4
|
|
bgt _0809CE78
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0xC]
|
|
b _0809CEBC
|
|
.align 2, 0
|
|
_0809CE74: .4byte gTasks
|
|
_0809CE78:
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809CE9C
|
|
cmp r1, r0
|
|
bgt _0809CE94
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
beq _0809CEBC
|
|
b _0809CEB2
|
|
_0809CE94:
|
|
cmp r1, 0
|
|
beq _0809CEAC
|
|
cmp r1, 0x1
|
|
bne _0809CEB2
|
|
_0809CE9C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _0809CEA8 @ =gSpecialVar_Result
|
|
movs r0, 0
|
|
b _0809CEB0
|
|
.align 2, 0
|
|
_0809CEA8: .4byte gSpecialVar_Result
|
|
_0809CEAC:
|
|
ldr r1, _0809CEC4 @ =gSpecialVar_Result
|
|
movs r0, 0x1
|
|
_0809CEB0:
|
|
strh r0, [r1]
|
|
_0809CEB2:
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_0809CEBC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809CEC4: .4byte gSpecialVar_Result
|
|
thumb_func_end task_yes_no_maybe
|
|
|
|
thumb_func_start ScriptMenu_MultichoiceGrid
|
|
ScriptMenu_MultichoiceGrid: @ 809CEC8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
ldr r4, [sp, 0x38]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x10]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x14]
|
|
lsls r2, 24
|
|
lsrs r5, r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r10, r3
|
|
lsls r4, 24
|
|
lsrs r7, r4, 24
|
|
ldr r0, _0809CF04 @ =sub_809CFDC
|
|
mov r9, r0
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0809CF08
|
|
movs r0, 0
|
|
b _0809CFBA
|
|
.align 2, 0
|
|
_0809CF04: .4byte sub_809CFDC
|
|
_0809CF08:
|
|
ldr r1, _0809CFCC @ =gSpecialVar_Result
|
|
movs r0, 0xFF
|
|
strh r0, [r1]
|
|
ldr r0, _0809CFD0 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809CFB8
|
|
ldr r1, _0809CFD4 @ =gUnknown_83E04B0
|
|
lsls r0, r5, 3
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
mov r8, r1
|
|
ldrb r4, [r0, 0x4]
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_809C974
|
|
adds r5, r0, 0
|
|
adds r5, 0x1
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
bl __udivsi3
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r0, r9
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _0809CFD8 @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
movs r0, 0
|
|
mov r9, r0
|
|
mov r1, r10
|
|
strh r1, [r4, 0x10]
|
|
adds r2, r5, 0
|
|
muls r2, r7
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, r6, 25
|
|
lsrs r3, 24
|
|
ldr r0, [sp, 0x10]
|
|
ldr r1, [sp, 0x14]
|
|
bl CreateWindowFromRect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x14]
|
|
movs r1, 0
|
|
bl SetStdWindowBorderStyle
|
|
ldrb r0, [r4, 0x14]
|
|
lsls r5, 27
|
|
lsrs r5, 24
|
|
str r7, [sp]
|
|
str r6, [sp, 0x4]
|
|
mov r1, r8
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0x1
|
|
adds r2, r5, 0
|
|
movs r3, 0x10
|
|
bl MultichoiceGrid_PrintItems
|
|
ldrb r0, [r4, 0x14]
|
|
str r5, [sp]
|
|
str r7, [sp, 0x4]
|
|
str r6, [sp, 0x8]
|
|
mov r1, r9
|
|
str r1, [sp, 0xC]
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl MultichoiceGrid_InitCursor
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0809CFB8:
|
|
movs r0, 0x1
|
|
_0809CFBA:
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0809CFCC: .4byte gSpecialVar_Result
|
|
_0809CFD0: .4byte sub_809D6D4
|
|
_0809CFD4: .4byte gUnknown_83E04B0
|
|
_0809CFD8: .4byte gTasks
|
|
thumb_func_end ScriptMenu_MultichoiceGrid
|
|
|
|
thumb_func_start sub_809CFDC
|
|
sub_809CFDC: @ 809CFDC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _0809D018 @ =gTasks+0x8
|
|
adds r5, r0, r1
|
|
bl Menu_ProcessInputGridLayout
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809D034
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
bne _0809D020
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _0809D034
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _0809D01C @ =gSpecialVar_Result
|
|
movs r0, 0x7F
|
|
strh r0, [r1]
|
|
b _0809D024
|
|
.align 2, 0
|
|
_0809D018: .4byte gTasks+0x8
|
|
_0809D01C: .4byte gSpecialVar_Result
|
|
_0809D020:
|
|
ldr r0, _0809D03C @ =gSpecialVar_Result
|
|
strh r1, [r0]
|
|
_0809D024:
|
|
ldrb r0, [r5, 0xC]
|
|
bl sub_809D6B0
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
_0809D034:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809D03C: .4byte gSpecialVar_Result
|
|
thumb_func_end sub_809CFDC
|
|
|
|
thumb_func_start ScrSpecial_CreatePCMenu
|
|
ScrSpecial_CreatePCMenu: @ 809D040
|
|
push {lr}
|
|
ldr r0, _0809D060 @ =sub_809CC98
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809D068
|
|
ldr r1, _0809D064 @ =gSpecialVar_Result
|
|
movs r0, 0xFF
|
|
strh r0, [r1]
|
|
bl sub_809D070
|
|
movs r0, 0x1
|
|
b _0809D06A
|
|
.align 2, 0
|
|
_0809D060: .4byte sub_809CC98
|
|
_0809D064: .4byte gSpecialVar_Result
|
|
_0809D068:
|
|
movs r0, 0
|
|
_0809D06A:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScrSpecial_CreatePCMenu
|
|
|
|
thumb_func_start sub_809D070
|
|
sub_809D070: @ 809D070
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0xC
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
bl GetMenuCursorDimensionByFont
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
bl GetFontAttribute
|
|
ldr r0, _0809D11C @ =gUnknown_8417BB6
|
|
bl sub_809C954
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xA
|
|
bgt _0809D0A0
|
|
cmp r0, 0x9
|
|
bge _0809D0AE
|
|
_0809D0A0:
|
|
ldr r0, _0809D120 @ =0x00000829
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
movs r4, 0xD
|
|
cmp r0, 0
|
|
beq _0809D0B0
|
|
_0809D0AE:
|
|
movs r4, 0xE
|
|
_0809D0B0:
|
|
ldr r0, _0809D124 @ =0x0000082c
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
beq _0809D134
|
|
movs r0, 0x5
|
|
mov r9, r0
|
|
movs r0, 0
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
movs r3, 0xA
|
|
bl CreateWindowFromRect
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl SetStdWindowBorderStyle
|
|
ldr r2, _0809D128 @ =gUnknown_8417BD3
|
|
movs r0, 0x22
|
|
str r0, [sp]
|
|
movs r5, 0xFF
|
|
str r5, [sp, 0x4]
|
|
movs r4, 0
|
|
str r4, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _0809D12C @ =gUnknown_8417BBE
|
|
movs r0, 0x32
|
|
str r0, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
ldr r2, _0809D130 @ =gUnknown_8417BCB
|
|
movs r0, 0x42
|
|
str r0, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
b _0809D1A8
|
|
.align 2, 0
|
|
_0809D11C: .4byte gUnknown_8417BB6
|
|
_0809D120: .4byte 0x00000829
|
|
_0809D124: .4byte 0x0000082c
|
|
_0809D128: .4byte gUnknown_8417BD3
|
|
_0809D12C: .4byte gUnknown_8417BBE
|
|
_0809D130: .4byte gUnknown_8417BCB
|
|
_0809D134:
|
|
ldr r1, _0809D1D0 @ =0x00000829
|
|
mov r8, r1
|
|
mov r0, r8
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
movs r1, 0x3
|
|
mov r9, r1
|
|
cmp r0, 0
|
|
beq _0809D14C
|
|
movs r0, 0x4
|
|
mov r9, r0
|
|
_0809D14C:
|
|
mov r1, r9
|
|
lsls r3, r1, 1
|
|
movs r0, 0
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl CreateWindowFromRect
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl SetStdWindowBorderStyle
|
|
mov r0, r8
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809D188
|
|
ldr r2, _0809D1D4 @ =gUnknown_8417BD3
|
|
movs r0, 0x22
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
str r5, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
_0809D188:
|
|
ldr r2, _0809D1D8 @ =gUnknown_8417BCB
|
|
mov r0, r9
|
|
subs r0, 0x1
|
|
lsls r0, 4
|
|
adds r0, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
str r5, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
_0809D1A8:
|
|
ldr r0, _0809D1DC @ =0x00000834
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0809D1E4
|
|
ldr r2, _0809D1E0 @ =gUnknown_8417BAC
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
b _0809D1FA
|
|
.align 2, 0
|
|
_0809D1D0: .4byte 0x00000829
|
|
_0809D1D4: .4byte gUnknown_8417BD3
|
|
_0809D1D8: .4byte gUnknown_8417BCB
|
|
_0809D1DC: .4byte 0x00000834
|
|
_0809D1E0: .4byte gUnknown_8417BAC
|
|
_0809D1E4:
|
|
ldr r2, _0809D248 @ =gUnknown_8417B9F
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
adds r3, r7, 0
|
|
bl AddTextPrinterParameterized
|
|
_0809D1FA:
|
|
ldr r4, _0809D24C @ =gStringVar4
|
|
ldr r1, _0809D250 @ =gUnknown_8417BB6
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
movs r3, 0x12
|
|
bl sub_812E6DC
|
|
movs r0, 0x10
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl Menu_InitCursor
|
|
movs r0, 0
|
|
mov r1, r9
|
|
adds r2, r6, 0
|
|
movs r3, 0xFF
|
|
bl sub_809CC18
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0xC
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809D248: .4byte gUnknown_8417B9F
|
|
_0809D24C: .4byte gStringVar4
|
|
_0809D250: .4byte gUnknown_8417BB6
|
|
thumb_func_end sub_809D070
|
|
|
|
thumb_func_start ScriptMenu_DisplayPCStartupPrompt
|
|
ScriptMenu_DisplayPCStartupPrompt: @ 809D254
|
|
push {lr}
|
|
sub sp, 0x10
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
bl sub_80F7768
|
|
ldr r2, _0809D284 @ =gUnknown_81A508A
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
movs r3, 0
|
|
bl AddTextPrinterParameterized2
|
|
add sp, 0x10
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809D284: .4byte gUnknown_81A508A
|
|
thumb_func_end ScriptMenu_DisplayPCStartupPrompt
|
|
|
|
thumb_func_start sub_809D288
|
|
sub_809D288: @ 809D288
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0809D2AC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0809D2E8
|
|
cmp r0, 0x1
|
|
bgt _0809D2B0
|
|
cmp r0, 0
|
|
beq _0809D2CE
|
|
b _0809D2E8
|
|
.align 2, 0
|
|
_0809D2AC: .4byte gTasks
|
|
_0809D2B0:
|
|
cmp r0, 0x2
|
|
beq _0809D2BA
|
|
cmp r0, 0x3
|
|
beq _0809D2DC
|
|
b _0809D2E8
|
|
_0809D2BA:
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0809D2D8 @ =gSprites
|
|
adds r0, r1
|
|
ldrb r1, [r4, 0xC]
|
|
bl sub_8083A5C
|
|
_0809D2CE:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0809D2E8
|
|
.align 2, 0
|
|
_0809D2D8: .4byte gSprites
|
|
_0809D2DC:
|
|
ldrb r0, [r4, 0x12]
|
|
bl sub_809D6B0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0809D2E8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_809D288
|
|
|
|
thumb_func_start ScriptMenu_ShowPokemonPic
|
|
ScriptMenu_ShowPokemonPic: @ 809D2F0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
ldr r0, _0809D318 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0809D31C
|
|
movs r0, 0x1
|
|
b _0809D3C2
|
|
.align 2, 0
|
|
_0809D318: .4byte sub_809D6D4
|
|
_0809D31C:
|
|
ldr r4, _0809D3B0 @ =sub_809D288
|
|
adds r0, r4, 0
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _0809D3C0
|
|
lsls r1, r7, 19
|
|
movs r0, 0xA0
|
|
lsls r0, 14
|
|
adds r1, r0
|
|
asrs r1, 16
|
|
lsls r2, r6, 19
|
|
adds r2, r0
|
|
asrs r2, 16
|
|
mov r0, r8
|
|
movs r3, 0
|
|
bl sub_8083970
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x8
|
|
movs r3, 0x8
|
|
bl CreateWindowFromRect
|
|
ldr r1, _0809D3B4 @ =gTasks
|
|
lsls r3, r4, 2
|
|
adds r3, r4
|
|
lsls r3, 3
|
|
adds r3, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0
|
|
strh r0, [r3, 0x12]
|
|
strh r1, [r3, 0x8]
|
|
mov r0, r8
|
|
strh r0, [r3, 0xA]
|
|
strh r5, [r3, 0xC]
|
|
ldr r4, _0809D3B8 @ =gSprites
|
|
lsls r1, r5, 4
|
|
adds r1, r5
|
|
lsls r1, 2
|
|
adds r0, r4, 0
|
|
adds r0, 0x1C
|
|
adds r0, r1, r0
|
|
ldr r2, _0809D3BC @ =SpriteCallbackDummy
|
|
str r2, [r0]
|
|
adds r1, r4
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x5]
|
|
ldrb r0, [r3, 0x12]
|
|
movs r1, 0x1
|
|
bl SetStdWindowBorderStyle
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
movs r0, 0x1
|
|
b _0809D3C2
|
|
.align 2, 0
|
|
_0809D3B0: .4byte sub_809D288
|
|
_0809D3B4: .4byte gTasks
|
|
_0809D3B8: .4byte gSprites
|
|
_0809D3BC: .4byte SpriteCallbackDummy
|
|
_0809D3C0:
|
|
movs r0, 0
|
|
_0809D3C2:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_ShowPokemonPic
|
|
|
|
thumb_func_start ScriptMenu_GetPicboxWaitFunc
|
|
ScriptMenu_GetPicboxWaitFunc: @ 809D3CC
|
|
push {lr}
|
|
ldr r0, _0809D3F0 @ =sub_809D288
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
beq _0809D3FC
|
|
ldr r0, _0809D3F4 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
ldr r0, _0809D3F8 @ =sub_809D404
|
|
b _0809D3FE
|
|
.align 2, 0
|
|
_0809D3F0: .4byte sub_809D288
|
|
_0809D3F4: .4byte gTasks
|
|
_0809D3F8: .4byte sub_809D404
|
|
_0809D3FC:
|
|
movs r0, 0
|
|
_0809D3FE:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ScriptMenu_GetPicboxWaitFunc
|
|
|
|
thumb_func_start sub_809D404
|
|
sub_809D404: @ 809D404
|
|
push {lr}
|
|
ldr r0, _0809D418 @ =sub_809D288
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _0809D41C
|
|
movs r0, 0
|
|
b _0809D41E
|
|
.align 2, 0
|
|
_0809D418: .4byte sub_809D288
|
|
_0809D41C:
|
|
movs r0, 0x1
|
|
_0809D41E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809D404
|
|
|
|
thumb_func_start sub_809D424
|
|
sub_809D424: @ 809D424
|
|
push {r4,r5,lr}
|
|
ldr r0, _0809D450 @ =sub_809D288
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0xFF
|
|
beq _0809D48C
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0809D454 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
blt _0809D48C
|
|
cmp r0, 0x2
|
|
ble _0809D458
|
|
cmp r0, 0x3
|
|
beq _0809D480
|
|
b _0809D48C
|
|
.align 2, 0
|
|
_0809D450: .4byte sub_809D288
|
|
_0809D454: .4byte gTasks
|
|
_0809D458:
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0809D47C @ =gSprites
|
|
adds r0, r1
|
|
ldrb r1, [r4, 0xC]
|
|
bl sub_8083A5C
|
|
ldrb r0, [r4, 0x12]
|
|
bl sub_809D6B0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _0809D48C
|
|
.align 2, 0
|
|
_0809D47C: .4byte gSprites
|
|
_0809D480:
|
|
ldrb r0, [r4, 0x12]
|
|
bl sub_809D6B0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0809D48C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_809D424
|
|
|
|
thumb_func_start sub_809D494
|
|
sub_809D494: @ 809D494
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _0809D4B8 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _0809D4FC
|
|
cmp r0, 0x1
|
|
bgt _0809D4BC
|
|
cmp r0, 0
|
|
beq _0809D4DE
|
|
b _0809D4FC
|
|
.align 2, 0
|
|
_0809D4B8: .4byte gTasks
|
|
_0809D4BC:
|
|
cmp r0, 0x2
|
|
beq _0809D4C6
|
|
cmp r0, 0x3
|
|
beq _0809D4F0
|
|
b _0809D4FC
|
|
_0809D4C6:
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0809D4E8 @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
ldr r0, _0809D4EC @ =0x00001b58
|
|
bl FreeSpriteTilesByTag
|
|
_0809D4DE:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _0809D4FC
|
|
.align 2, 0
|
|
_0809D4E8: .4byte gSprites
|
|
_0809D4EC: .4byte 0x00001b58
|
|
_0809D4F0:
|
|
ldrb r0, [r4, 0x12]
|
|
bl sub_809D6B0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0809D4FC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_809D494
|
|
|
|
thumb_func_start sub_809D504
|
|
sub_809D504: @ 809D504
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
ldr r0, _0809D544 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0809D5F2
|
|
ldr r0, _0809D548 @ =sub_809D494
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _0809D55C
|
|
ldr r0, _0809D54C @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x8D
|
|
bne _0809D558
|
|
ldr r0, _0809D550 @ =gUnknown_83E17C0
|
|
bl LoadSpriteSheets
|
|
ldr r0, _0809D554 @ =gUnknown_83E17A0
|
|
movs r1, 0xE8
|
|
lsls r1, 1
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
b _0809D572
|
|
.align 2, 0
|
|
_0809D544: .4byte sub_809D6D4
|
|
_0809D548: .4byte sub_809D494
|
|
_0809D54C: .4byte gSpecialVar_0x8004
|
|
_0809D550: .4byte gUnknown_83E17C0
|
|
_0809D554: .4byte gUnknown_83E17A0
|
|
_0809D558:
|
|
cmp r0, 0x8E
|
|
beq _0809D560
|
|
_0809D55C:
|
|
movs r0, 0
|
|
b _0809D5F4
|
|
_0809D560:
|
|
ldr r0, _0809D600 @ =gUnknown_83E17D0
|
|
bl LoadSpriteSheets
|
|
ldr r0, _0809D604 @ =gUnknown_83E0F80
|
|
movs r1, 0xE8
|
|
lsls r1, 1
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
_0809D572:
|
|
ldr r0, _0809D608 @ =gUnknown_83E0768
|
|
ldr r1, _0809D60C @ =gSpecialVar_0x8005
|
|
mov r8, r1
|
|
ldrh r1, [r1]
|
|
lsls r1, 19
|
|
movs r2, 0xA0
|
|
lsls r2, 14
|
|
adds r1, r2
|
|
asrs r1, 16
|
|
ldr r6, _0809D610 @ =gSpecialVar_0x8006
|
|
ldrh r2, [r6]
|
|
lsls r2, 19
|
|
movs r3, 0xA0
|
|
lsls r3, 14
|
|
adds r2, r3
|
|
asrs r2, 16
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r1, _0809D614 @ =gSprites
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r2, [r0, 0x5]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
movs r2, 0xD0
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x5]
|
|
ldr r0, _0809D618 @ =sub_809D494
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
ldrb r1, [r6]
|
|
movs r2, 0x8
|
|
movs r3, 0x8
|
|
bl CreateWindowFromRect
|
|
ldr r2, _0809D61C @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r2, 0
|
|
strh r0, [r1, 0x12]
|
|
strh r2, [r1, 0x8]
|
|
strh r5, [r1, 0xC]
|
|
movs r1, 0x1
|
|
bl SetStdWindowBorderStyle
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0809D5F2:
|
|
movs r0, 0x1
|
|
_0809D5F4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0809D600: .4byte gUnknown_83E17D0
|
|
_0809D604: .4byte gUnknown_83E0F80
|
|
_0809D608: .4byte gUnknown_83E0768
|
|
_0809D60C: .4byte gSpecialVar_0x8005
|
|
_0809D610: .4byte gSpecialVar_0x8006
|
|
_0809D614: .4byte gSprites
|
|
_0809D618: .4byte sub_809D494
|
|
_0809D61C: .4byte gTasks
|
|
thumb_func_end sub_809D504
|
|
|
|
thumb_func_start sub_809D620
|
|
sub_809D620: @ 809D620
|
|
push {lr}
|
|
ldr r0, _0809D644 @ =sub_809D494
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
beq _0809D64C
|
|
ldr r0, _0809D648 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x1
|
|
b _0809D64E
|
|
.align 2, 0
|
|
_0809D644: .4byte sub_809D494
|
|
_0809D648: .4byte gTasks
|
|
_0809D64C:
|
|
movs r0, 0
|
|
_0809D64E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809D620
|
|
|
|
thumb_func_start CreateWindowFromRect
|
|
CreateWindowFromRect: @ 809D654
|
|
push {r4,r5,lr}
|
|
sub sp, 0x20
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r4, 24
|
|
lsls r5, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
adds r4, r0
|
|
lsrs r4, 24
|
|
adds r5, r0
|
|
lsrs r5, 24
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
movs r0, 0xF
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x38
|
|
str r0, [sp, 0xC]
|
|
add r0, sp, 0x10
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
adds r3, r5, 0
|
|
bl SetWindowTemplateFields
|
|
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, 24
|
|
lsrs r4, 24
|
|
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 sub_809D6B0
|
|
sub_809D6B0: @ 809D6B0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl ClearWindowTilemap
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl ClearStdWindowAndFrameToTransparent
|
|
adds r0, r4, 0
|
|
bl RemoveWindow
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_809D6B0
|
|
|
|
thumb_func_start sub_809D6D4
|
|
sub_809D6D4: @ 809D6D4
|
|
push {lr}
|
|
ldr r0, _0809D74C @ =EventScript_1A7AE0
|
|
bl ScriptContext1_SetupScript
|
|
ldr r0, _0809D750 @ =sub_809D288
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0xFF
|
|
beq _0809D710
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r1, _0809D754 @ =gTasks+0x8
|
|
adds r2, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1
|
|
bgt _0809D710
|
|
movs r0, 0x4
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0809D758 @ =gSprites
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0x4]
|
|
bl sub_8083A5C
|
|
_0809D710:
|
|
ldr r0, _0809D75C @ =sub_809D494
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0xFF
|
|
beq _0809D748
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r1, _0809D754 @ =gTasks+0x8
|
|
adds r2, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1
|
|
bgt _0809D748
|
|
movs r0, 0x4
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0809D758 @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
ldr r0, _0809D760 @ =0x00001b58
|
|
bl FreeSpriteTilesByTag
|
|
_0809D748:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809D74C: .4byte EventScript_1A7AE0
|
|
_0809D750: .4byte sub_809D288
|
|
_0809D754: .4byte gTasks+0x8
|
|
_0809D758: .4byte gSprites
|
|
_0809D75C: .4byte sub_809D494
|
|
_0809D760: .4byte 0x00001b58
|
|
thumb_func_end sub_809D6D4
|
|
|
|
thumb_func_start sub_809D764
|
|
sub_809D764: @ 809D764
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0xC
|
|
ldr r1, _0809D7A0 @ =gSpecialVar_Result
|
|
movs r0, 0xFF
|
|
strh r0, [r1]
|
|
ldr r0, _0809D7A4 @ =sub_809D6D4
|
|
bl sub_81119D4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0809D784
|
|
b _0809D8A8
|
|
_0809D784:
|
|
ldr r0, _0809D7A8 @ =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0809D7B0
|
|
ldr r0, _0809D7AC @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
movs r4, 0x4
|
|
cmp r0, 0x4
|
|
bhi _0809D798
|
|
movs r4, 0x5
|
|
_0809D798:
|
|
movs r0, 0x5
|
|
mov r9, r0
|
|
movs r5, 0x2
|
|
b _0809D7B8
|
|
.align 2, 0
|
|
_0809D7A0: .4byte gSpecialVar_Result
|
|
_0809D7A4: .4byte sub_809D6D4
|
|
_0809D7A8: .4byte gSpecialVar_0x8005
|
|
_0809D7AC: .4byte gSpecialVar_0x8004
|
|
_0809D7B0:
|
|
movs r4, 0
|
|
movs r0, 0x6
|
|
mov r9, r0
|
|
movs r5, 0
|
|
_0809D7B8:
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
bl GetMenuCursorDimensionByFont
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
bl GetFontAttribute
|
|
mov r0, r9
|
|
lsls r3, r0, 1
|
|
movs r0, 0x11
|
|
adds r1, r5, 0
|
|
movs r2, 0xB
|
|
bl CreateWindowFromRect
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl SetStdWindowBorderStyle
|
|
movs r6, 0
|
|
mov r5, r9
|
|
subs r5, 0x2
|
|
cmp r6, r5
|
|
bge _0809D844
|
|
_0809D7F2:
|
|
ldr r0, _0809D820 @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
beq _0809D828
|
|
ldr r1, _0809D824 @ =gUnknown_83E17E0
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r0, r6, 4
|
|
adds r0, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
mov r3, r8
|
|
bl AddTextPrinterParameterized
|
|
b _0809D82E
|
|
.align 2, 0
|
|
_0809D820: .4byte gSpecialVar_0x8004
|
|
_0809D824: .4byte gUnknown_83E17E0
|
|
_0809D828:
|
|
subs r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0809D82E:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x8
|
|
bne _0809D83A
|
|
movs r4, 0
|
|
_0809D83A:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, r5
|
|
blt _0809D7F2
|
|
_0809D844:
|
|
ldr r2, _0809D8B8 @ =gUnknown_8417DED
|
|
lsls r0, r6, 4
|
|
adds r0, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r5, 0xFF
|
|
str r5, [sp, 0x4]
|
|
movs r4, 0
|
|
str r4, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
mov r3, r8
|
|
bl AddTextPrinterParameterized
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
ldr r2, _0809D8BC @ =gOtherText_Exit
|
|
lsrs r0, 20
|
|
adds r0, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
mov r3, r8
|
|
bl AddTextPrinterParameterized
|
|
movs r0, 0x10
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
str r0, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl Menu_InitCursor
|
|
movs r0, 0
|
|
mov r1, r9
|
|
adds r2, r7, 0
|
|
movs r3, 0xFF
|
|
bl sub_809CC18
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0809D8A8:
|
|
add sp, 0xC
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0809D8B8: .4byte gUnknown_8417DED
|
|
_0809D8BC: .4byte gOtherText_Exit
|
|
thumb_func_end sub_809D764
|
|
|
|
thumb_func_start sub_809D8C0
|
|
sub_809D8C0: @ 809D8C0
|
|
push {lr}
|
|
ldr r3, _0809D8EC @ =gSpecialVar_Result
|
|
ldrh r2, [r3]
|
|
adds r1, r2, 0
|
|
cmp r1, 0x7F
|
|
beq _0809D930
|
|
ldr r0, _0809D8F0 @ =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0809D924
|
|
cmp r1, 0x3
|
|
beq _0809D928
|
|
cmp r1, 0x4
|
|
beq _0809D930
|
|
cmp r1, 0
|
|
bne _0809D8F8
|
|
ldr r0, _0809D8F4 @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x4
|
|
bls _0809D904
|
|
movs r0, 0x4
|
|
b _0809D94E
|
|
.align 2, 0
|
|
_0809D8EC: .4byte gSpecialVar_Result
|
|
_0809D8F0: .4byte gSpecialVar_0x8005
|
|
_0809D8F4: .4byte gSpecialVar_0x8004
|
|
_0809D8F8:
|
|
cmp r1, 0x1
|
|
bne _0809D90C
|
|
ldr r0, _0809D908 @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x5
|
|
bls _0809D918
|
|
_0809D904:
|
|
movs r0, 0x5
|
|
b _0809D94E
|
|
.align 2, 0
|
|
_0809D908: .4byte gSpecialVar_0x8004
|
|
_0809D90C:
|
|
cmp r1, 0x2
|
|
bne _0809D94C
|
|
ldr r0, _0809D91C @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x6
|
|
bls _0809D920
|
|
_0809D918:
|
|
movs r0, 0x6
|
|
b _0809D94E
|
|
.align 2, 0
|
|
_0809D91C: .4byte gSpecialVar_0x8004
|
|
_0809D920:
|
|
movs r0, 0x7
|
|
b _0809D94E
|
|
_0809D924:
|
|
cmp r1, 0x4
|
|
bne _0809D92C
|
|
_0809D928:
|
|
movs r0, 0xFE
|
|
b _0809D94E
|
|
_0809D92C:
|
|
cmp r1, 0x5
|
|
bne _0809D934
|
|
_0809D930:
|
|
movs r0, 0x7F
|
|
b _0809D94E
|
|
_0809D934:
|
|
ldr r0, _0809D944 @ =gSpecialVar_0x8004
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bcc _0809D948
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
b _0809D94E
|
|
.align 2, 0
|
|
_0809D944: .4byte gSpecialVar_0x8004
|
|
_0809D948:
|
|
ldrh r0, [r3]
|
|
b _0809D94E
|
|
_0809D94C:
|
|
movs r0, 0
|
|
_0809D94E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_809D8C0
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|