sovereignx/asm/script_menu.s

626 lines
10 KiB
ArmAsm
Raw Normal View History

2016-11-01 17:08:48 +00:00
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80E2878
sub_80E2878: @ 80E2878
push {lr}
2017-11-11 00:12:18 +00:00
ldr r2, =gSpecialVar_Result
2016-11-01 17:08:48 +00:00
ldrh r0, [r2]
cmp r0, 0x7F
beq _080E288C
2016-11-01 18:35:16 +00:00
ldr r0, =gUnknown_03001124
2016-11-01 17:08:48 +00:00
ldrh r1, [r2]
adds r1, r0
ldrb r0, [r1]
strh r0, [r2]
_080E288C:
pop {r0}
bx r0
.pool
thumb_func_end sub_80E2878
thumb_func_start task_picbox
task_picbox: @ 80E2898
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
2016-11-01 18:35:16 +00:00
ldr r1, =gTasks
2016-11-01 17:08:48 +00:00
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080E28F8
cmp r0, 0x1
bgt _080E28C0
cmp r0, 0
beq _080E28DE
b _080E28F8
.pool
_080E28C0:
cmp r0, 0x2
beq _080E28CA
cmp r0, 0x3
beq _080E28EC
b _080E28F8
_080E28CA:
movs r0, 0xC
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
2017-08-31 15:48:24 +01:00
ldr r1, =gSprites
2016-11-01 17:08:48 +00:00
adds r0, r1
ldrb r1, [r4, 0xC]
2018-05-10 09:02:33 +01:00
bl FreeResourcesAndDestroySprite
2016-11-01 17:08:48 +00:00
_080E28DE:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
b _080E28F8
.pool
_080E28EC:
ldrb r0, [r4, 0x12]
bl sub_80E2A78
adds r0, r5, 0
bl DestroyTask
_080E28F8:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end task_picbox
2017-10-12 08:06:19 +01:00
thumb_func_start ScriptMenu_ShowPokemonPic
ScriptMenu_ShowPokemonPic: @ 80E2900
2016-11-01 17:08:48 +00:00
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 r4, =task_picbox
adds r0, r4, 0
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
bne _080E29B8
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
2018-05-10 09:02:33 +01:00
bl CreateMonSprite_PicBox
2016-11-01 17:08:48 +00:00
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
2016-11-01 18:35:16 +00:00
ldr r1, =gTasks
2016-11-01 17:08:48 +00:00
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]
2017-08-31 15:48:24 +01:00
ldr r4, =gSprites
2016-11-01 17:08:48 +00:00
lsls r1, r5, 4
adds r1, r5
lsls r1, 2
adds r0, r4, 0
adds r0, 0x1C
adds r0, r1, r0
2017-09-01 22:40:13 +01:00
ldr r2, =SpriteCallbackDummy
2016-11-01 17:08:48 +00:00
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 SetStandardWindowBorderStyle
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
movs r0, 0x1
b _080E29BA
.pool
_080E29B8:
movs r0, 0
_080E29BA:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
2017-10-12 08:06:19 +01:00
thumb_func_end ScriptMenu_ShowPokemonPic
2016-11-01 17:08:48 +00:00
2017-10-12 08:06:19 +01:00
thumb_func_start ScriptMenu_GetPicboxWaitFunc
ScriptMenu_GetPicboxWaitFunc: @ 80E29C4
2016-11-01 17:08:48 +00:00
push {lr}
ldr r0, =task_picbox
bl FindTaskIdByFunc
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
beq _080E29F4
2016-11-01 18:35:16 +00:00
ldr r0, =gTasks
2016-11-01 17:08:48 +00:00
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, =sub_80E29FC
b _080E29F6
.pool
_080E29F4:
movs r0, 0
_080E29F6:
pop {r1}
bx r1
2017-10-12 08:06:19 +01:00
thumb_func_end ScriptMenu_GetPicboxWaitFunc
2016-11-01 17:08:48 +00:00
thumb_func_start sub_80E29FC
sub_80E29FC: @ 80E29FC
push {lr}
ldr r0, =task_picbox
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _080E2A14
movs r0, 0
b _080E2A16
.pool
_080E2A14:
movs r0, 0x1
_080E2A16:
pop {r1}
bx r1
thumb_func_end sub_80E29FC
thumb_func_start CreateWindowFromRect
CreateWindowFromRect: @ 80E2A1C
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, 0x64
str r0, [sp, 0xC]
add r0, sp, 0x10
movs r1, 0
adds r2, r4, 0
adds r3, r5, 0
2018-08-09 07:53:21 +01:00
bl CreateWindowTemplate
2016-11-01 17:08:48 +00:00
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_80E2A78
sub_80E2A78: @ 80E2A78
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x1
bl sub_8198070
adds r0, r4, 0
bl RemoveWindow
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E2A78
thumb_func_start sub_80E2A94
sub_80E2A94: @ 80E2A94
push {r4,lr}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
subs r0, 0x4A
cmp r0, 0x5
bhi _080E2B70
lsls r0, 2
ldr r1, =_080E2AB0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080E2AB0:
.4byte _080E2B40
.4byte _080E2B08
.4byte _080E2AD8
.4byte _080E2AC8
.4byte _080E2AE8
.4byte _080E2AF8
_080E2AC8:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BBAC
b _080E2B12
.pool
_080E2AD8:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BB9C
b _080E2B12
.pool
_080E2AE8:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BBBC
b _080E2B12
.pool
_080E2AF8:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BBCC
b _080E2B12
.pool
_080E2B08:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BBEC
_080E2B12:
bl GetMenuCursorPos
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, 0x1
movs r3, 0
bl AddTextPrinterParameterized2
2016-11-01 17:08:48 +00:00
b _080E2B70
.pool
_080E2B40:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, =gUnknown_0858BBE0
bl GetMenuCursorPos
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, 0x1
movs r3, 0
bl AddTextPrinterParameterized2
2016-11-01 17:08:48 +00:00
_080E2B70:
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E2A94
thumb_func_start sp106_CreateStartMenu
sp106_CreateStartMenu: @ 80E2B7C
push {lr}
2018-11-01 04:03:41 +00:00
ldr r0, =Task_HandleMultichoiceInput
2016-11-01 17:08:48 +00:00
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080E2BA4
2017-11-11 00:12:18 +00:00
ldr r1, =gSpecialVar_Result
2016-11-01 17:08:48 +00:00
movs r0, 0xFF
strh r0, [r1]
bl CreateStartMenu
movs r0, 0x1
b _080E2BA6
.pool
_080E2BA4:
movs r0, 0
_080E2BA6:
pop {r1}
bx r1
thumb_func_end sp106_CreateStartMenu
thumb_func_start CreateStartMenu
CreateStartMenu: @ 80E2BAC
push {r4-r6,lr}
sub sp, 0xC
movs r0, 0x15
movs r1, 0
movs r2, 0x7
movs r3, 0x12
bl CreateWindowFromRect
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
bl SetStandardWindowBorderStyle
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionPokedex
2016-11-01 17:08:48 +00:00
movs r0, 0x9
str r0, [sp]
movs r5, 0xFF
str r5, [sp, 0x4]
movs r6, 0
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionPokemon
2016-11-01 17:08:48 +00:00
movs r0, 0x19
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionBag
2016-11-01 17:08:48 +00:00
movs r0, 0x29
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionPokenav
2016-11-01 17:08:48 +00:00
movs r0, 0x39
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-01-14 19:53:20 +00:00
ldr r0, =gSaveBlock2Ptr
2016-11-01 17:08:48 +00:00
ldr r2, [r0]
movs r0, 0x49
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionSave
2016-11-01 17:08:48 +00:00
movs r0, 0x59
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionOption
2016-11-01 17:08:48 +00:00
movs r0, 0x69
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2017-09-20 20:38:05 +01:00
ldr r2, =gText_MenuOptionExit
2016-11-01 17:08:48 +00:00
movs r0, 0x79
str r0, [sp]
str r5, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r3, 0x8
bl AddTextPrinterParameterized
2016-11-01 17:08:48 +00:00
movs r0, 0x10
str r0, [sp]
movs r0, 0x8
str r0, [sp, 0x4]
str r6, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
movs r3, 0x9
bl sub_81983AC
movs r0, 0
movs r1, 0x8
adds r2, r4, 0
movs r3, 0x56
bl sub_80E2CC4
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end CreateStartMenu
thumb_func_start sub_80E2CC4
sub_80E2CC4: @ 80E2CC4
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r2, 0
adds r6, r3, 0
lsls r4, 24
lsrs r4, 24
lsls r5, 24
lsrs r5, 24
lsls r6, 24
lsrs r6, 24
2016-11-01 18:35:16 +00:00
ldr r1, =gUnknown_02039F90
2016-11-01 17:08:48 +00:00
movs r0, 0x2
strb r0, [r1]
2018-11-01 04:03:41 +00:00
ldr r0, =Task_HandleMultichoiceInput
2016-11-01 17:08:48 +00:00
movs r1, 0x50
bl CreateTask
lsls r0, 24
lsrs r0, 24
2016-11-01 18:35:16 +00:00
ldr r2, =gTasks
2016-11-01 17:08:48 +00:00
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0
strh r4, [r1, 0x10]
strh r0, [r1, 0x12]
strh r5, [r1, 0x14]
strh r6, [r1, 0x16]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E2CC4
thumb_func_start display_text_and_get_width_internal
display_text_and_get_width_internal: @ 80E2D10
push {lr}
sub sp, 0x40
adds r1, r0, 0
mov r0, sp
2017-01-14 19:53:20 +00:00
bl StringExpandPlaceholders
2016-11-01 17:08:48 +00:00
movs r0, 0x1
mov r1, sp
movs r2, 0
bl GetStringWidth
add sp, 0x40
pop {r1}
bx r1
thumb_func_end display_text_and_get_width_internal
thumb_func_start display_text_and_get_width
display_text_and_get_width: @ 80E2D2C
push {r4,lr}
adds r4, r1, 0
bl display_text_and_get_width_internal
cmp r0, r4
bge _080E2D3A
adds r0, r4, 0
_080E2D3A:
pop {r4}
pop {r1}
bx r1
thumb_func_end display_text_and_get_width
thumb_func_start convert_pixel_width_to_tile_width
convert_pixel_width_to_tile_width: @ 80E2D40
push {lr}
adds r1, r0, 0
adds r0, 0x9
cmp r0, 0
bge _080E2D4C
adds r0, 0x7
_080E2D4C:
asrs r0, 3
adds r0, 0x1
cmp r0, 0x1C
ble _080E2D56
movs r0, 0x1C
_080E2D56:
pop {r1}
bx r1
thumb_func_end convert_pixel_width_to_tile_width
thumb_func_start sub_80E2D5C
sub_80E2D5C: @ 80E2D5C
push {lr}
adds r2, r0, 0
adds r0, r2, r1
cmp r0, 0x1C
ble _080E2D70
movs r0, 0x1C
subs r2, r0, r1
cmp r2, 0
bge _080E2D70
movs r2, 0
_080E2D70:
adds r0, r2, 0
pop {r1}
bx r1
thumb_func_end sub_80E2D5C
.align 2, 0 @ Don't pad with nop.