diff options
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | asm/money.s | 480 | ||||
-rw-r--r-- | asm/rom_80B5054.s | 1237 | ||||
-rw-r--r-- | asm/script_menu.s | 1525 | ||||
-rw-r--r-- | ld_script.txt | 4 |
5 files changed, 1630 insertions, 1626 deletions
@@ -81,9 +81,9 @@ asm/trainer_card.o \ asm/save_menu_util.o \ asm/rom_8094928.o \ asm/berry.o \ -asm/rom_80B5054.o \ -asm/naming_screen.o \ asm/script_menu.o \ +asm/naming_screen.o \ +asm/money.o \ asm/contest_effect.o \ asm/record_mixing.o \ asm/sound_check_menu.o \ @@ -130,7 +130,11 @@ asm/mystery_event_menu.o \ asm/save_failed_screen.o \ asm/rom_81473B8.o \ asm/clear_save_data_menu.o \ -asm/rom_8148B8C.o +asm/rom_8148B8C.o \ +asm/libgcnmultiboot.o \ +asm/m4a_1.o \ +asm/m4a_3.o \ +asm/libagbsyscall.o DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \ data/event_scripts.o data/battle_anim_scripts.o \ diff --git a/asm/money.s b/asm/money.s new file mode 100644 index 000000000..0d630ba52 --- /dev/null +++ b/asm/money.s @@ -0,0 +1,480 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start IsEnoughMoney +IsEnoughMoney: @ 80B79A8 + push {lr} + cmp r0, r1 + bcs _080B79B2 + movs r0, 0 + b _080B79B4 +_080B79B2: + movs r0, 0x1 +_080B79B4: + pop {r1} + bx r1 + thumb_func_end IsEnoughMoney + + thumb_func_start sub_80B79B8 +sub_80B79B8: @ 80B79B8 + push {lr} + adds r2, r0, 0 + ldr r0, [r2] + adds r1, r0, r1 + cmp r0, r1 + bls _080B79CC + ldr r0, _080B79C8 @ =0x000f423f + b _080B79D4 + .align 2, 0 +_080B79C8: .4byte 0x000f423f +_080B79CC: + str r1, [r2] + ldr r0, _080B79DC @ =0x000f423f + cmp r1, r0 + bls _080B79D6 +_080B79D4: + str r0, [r2] +_080B79D6: + pop {r0} + bx r0 + .align 2, 0 +_080B79DC: .4byte 0x000f423f + thumb_func_end sub_80B79B8 + + thumb_func_start sub_80B79E0 +sub_80B79E0: @ 80B79E0 + push {lr} + adds r2, r0, 0 + ldr r0, [r2] + cmp r0, r1 + bcs _080B79EE + movs r0, 0 + b _080B79F0 +_080B79EE: + subs r0, r1 +_080B79F0: + str r0, [r2] + pop {r0} + bx r0 + thumb_func_end sub_80B79E0 + + thumb_func_start sub_80B79F8 +sub_80B79F8: @ 80B79F8 + push {r4,lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r4, r2, 24 + ldr r0, _080B7A0C @ =0x000f423f + cmp r1, r0 + bls _080B7A10 + movs r2, 0x7 + b _080B7A46 + .align 2, 0 +_080B7A0C: .4byte 0x000f423f +_080B7A10: + ldr r0, _080B7A1C @ =0x0001869f + cmp r1, r0 + bls _080B7A20 + movs r2, 0x6 + b _080B7A46 + .align 2, 0 +_080B7A1C: .4byte 0x0001869f +_080B7A20: + ldr r0, _080B7A2C @ =0x00002710 + cmp r1, r0 + bls _080B7A30 + movs r2, 0x5 + b _080B7A46 + .align 2, 0 +_080B7A2C: .4byte 0x00002710 +_080B7A30: + ldr r0, _080B7A90 @ =0x000003e7 + movs r2, 0x4 + cmp r1, r0 + bhi _080B7A46 + movs r2, 0x3 + cmp r1, 0x63 + bhi _080B7A46 + movs r2, 0x1 + cmp r1, 0x9 + bls _080B7A46 + movs r2, 0x2 +_080B7A46: + movs r0, 0xFC + strb r0, [r3] + movs r0, 0x14 + strb r0, [r3, 0x1] + movs r0, 0x6 + strb r0, [r3, 0x2] + adds r3, 0x3 + movs r0, 0 + subs r2, r4, r2 + cmp r0, r2 + bge _080B7A6C + movs r4, 0 +_080B7A5E: + strb r4, [r3] + adds r3, 0x1 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, r2 + blt _080B7A5E +_080B7A6C: + movs r0, 0xB7 + strb r0, [r3] + adds r3, 0x1 + adds r0, r3, 0 + bl ConvertIntToDecimalString + adds r3, r0, 0 + movs r0, 0xFC + strb r0, [r3] + movs r0, 0x14 + strb r0, [r3, 0x1] + movs r0, 0 + strb r0, [r3, 0x2] + movs r0, 0xFF + strb r0, [r3, 0x3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7A90: .4byte 0x000003e7 + thumb_func_end sub_80B79F8 + + thumb_func_start sub_80B7A94 +sub_80B7A94: @ 80B7A94 + push {r4-r7,lr} + sub sp, 0x10 + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80B79F8 + mov r0, sp + bl sub_8072CA4 + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r5, 0x1 + lsls r0, 3 + cmp r2, r0 + blt _080B7ACE + mov r0, sp + adds r1, r6, 0 + adds r2, r7, 0 + bl MenuPrint + b _080B7AE4 +_080B7ACE: + adds r1, r6, 0x1 + adds r1, r5 + lsls r1, 3 + subs r1, r2 + lsls r1, 24 + lsrs r1, 24 + lsls r2, r7, 3 + mov r0, sp + movs r3, 0x1 + bl MenuPrint_PixelCoords +_080B7AE4: + add sp, 0x10 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80B7A94 + + thumb_func_start sub_80B7AEC +sub_80B7AEC: @ 80B7AEC + push {r4-r6,lr} + sub sp, 0x20 + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r6, sp + movs r0, 0xB7 + strb r0, [r6] + adds r6, 0x1 + adds r0, r6, 0 + adds r1, r3, 0 + bl ConvertIntToDecimalString + adds r6, r0, 0 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8072B4C + movs r0, 0xFC + strb r0, [r6] + movs r0, 0x14 + strb r0, [r6, 0x1] + movs r0, 0 + strb r0, [r6, 0x2] + movs r0, 0xFF + strb r0, [r6, 0x3] + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80B7AEC + + thumb_func_start sub_80B7B34 +sub_80B7B34: @ 80B7B34 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + mov r8, r0 + adds r5, r1, 0 + mov r9, r2 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r5, 24 + lsrs r5, 24 + mov r1, r9 + lsls r1, 8 + mov r9, r1 + ldr r4, _080B7BD8 @ =gDecoration10000_Gfx + adds r0, r1, r4 + lsls r6, r5, 4 + subs r6, r5 + lsls r1, r6, 6 + mov r3, r8 + adds r3, 0x1 + lsls r3, 5 + ldr r2, _080B7BDC @ =0x06008000 + adds r3, r2 + adds r1, r3 + movs r2, 0x20 + str r3, [sp] + bl CpuFastSet + adds r4, 0x80 + add r9, r4 + adds r0, r5, 0x1 + lsls r4, r0, 4 + subs r4, r0 + lsls r1, r4, 6 + ldr r3, [sp] + adds r1, r3 + mov r0, r9 + movs r2, 0x20 + bl CpuFastSet + movs r3, 0 + lsls r5, 5 + mov r0, r8 + adds r7, r5, r0 + lsls r6, 1 + adds r6, 0x1 + add r6, r8 + ldr r1, _080B7BE0 @ =0xfffff000 + adds r5, r1, 0 + ldr r0, _080B7BE4 @ =0x0600f800 + mov r12, r0 + ldr r1, _080B7BE8 @ =0x0600f840 + mov r9, r1 + lsls r4, 1 + adds r4, 0x1 + add r4, r8 +_080B7BAA: + adds r1, r7, r3 + lsls r1, 1 + mov r0, r12 + adds r2, r1, r0 + adds r0, r3, r6 + adds r0, r5 + strh r0, [r2] + add r1, r9 + adds r0, r3, r4 + adds r0, r5 + strh r0, [r1] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, 0x3 + bls _080B7BAA + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B7BD8: .4byte gDecoration10000_Gfx +_080B7BDC: .4byte 0x06008000 +_080B7BE0: .4byte 0xfffff000 +_080B7BE4: .4byte 0x0600f800 +_080B7BE8: .4byte 0x0600f840 + thumb_func_end sub_80B7B34 + + thumb_func_start sub_80B7BEC +sub_80B7BEC: @ 80B7BEC + push {r4,lr} + adds r4, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsls r3, 24 + movs r1, 0xC0 + lsls r1, 19 + adds r4, r1 + lsrs r4, 24 + movs r1, 0x80 + lsls r1, 17 + adds r3, r1 + lsrs r3, 24 + movs r1, 0x6 + adds r2, r4, 0 + bl sub_80B7A94 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80B7BEC + + thumb_func_start sub_80B7C14 +sub_80B7C14: @ 80B7C14 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, 0 + adds r3, r2, 0 + lsls r4, 24 + lsls r3, 24 + lsrs r6, r4, 24 + movs r0, 0xD0 + lsls r0, 20 + adds r4, r0 + lsrs r4, 24 + lsrs r5, r3, 24 + movs r1, 0xC0 + lsls r1, 18 + adds r3, r1 + lsrs r3, 24 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl MenuDrawTextWindow + mov r0, r8 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80B7BEC + ldr r0, _080B7C88 @ =gUnknown_083CF584 + bl LoadCompressedObjectPic + ldr r0, _080B7C8C @ =gUnknown_083CF58C + bl LoadCompressedObjectPalette + ldr r0, _080B7C90 @ =gSpriteTemplate_83CF56C + lsls r6, 19 + movs r1, 0x98 + lsls r1, 13 + adds r6, r1 + asrs r6, 16 + lsls r5, 19 + movs r1, 0xB0 + lsls r1, 12 + adds r5, r1 + asrs r5, 16 + adds r1, r6, 0 + adds r2, r5, 0 + movs r3, 0 + bl CreateSprite + ldr r1, _080B7C94 @ =gUnknown_02038734 + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7C88: .4byte gUnknown_083CF584 +_080B7C8C: .4byte gUnknown_083CF58C +_080B7C90: .4byte gSpriteTemplate_83CF56C +_080B7C94: .4byte gUnknown_02038734 + thumb_func_end sub_80B7C14 + + thumb_func_start RemoveMoneyLabelObject +RemoveMoneyLabelObject: @ 80B7C98 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080B7CDC @ =gUnknown_02038734 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080B7CE0 @ =gSprites + adds r0, r1 + bl DestroySpriteAndFreeResources + ldr r0, _080B7CE4 @ =0x00002722 + bl FreeSpritePaletteByTag + adds r2, r4, 0 + adds r2, 0xD + lsls r2, 24 + lsrs r2, 24 + adds r3, r5, 0x3 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl MenuZeroFillWindowRect + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7CDC: .4byte gUnknown_02038734 +_080B7CE0: .4byte gSprites +_080B7CE4: .4byte 0x00002722 + thumb_func_end RemoveMoneyLabelObject + + thumb_func_start sub_80B7CE8 +sub_80B7CE8: @ 80B7CE8 + push {lr} + ldr r0, _080B7D04 @ =gSaveBlock1 + movs r1, 0x92 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080B7D08 @ =gUnknown_0202E8CE + ldrh r1, [r1] + bl IsEnoughMoney + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080B7D04: .4byte gSaveBlock1 +_080B7D08: .4byte gUnknown_0202E8CE + thumb_func_end sub_80B7CE8 + + thumb_func_start sub_80B7D0C +sub_80B7D0C: @ 80B7D0C + push {lr} + ldr r0, _080B7D1C @ =gSaveBlock1 + 0x490 + ldr r1, _080B7D20 @ =gUnknown_0202E8CE + ldrh r1, [r1] + bl sub_80B79E0 + pop {r0} + bx r0 + .align 2, 0 +_080B7D1C: .4byte gSaveBlock1 + 0x490 +_080B7D20: .4byte gUnknown_0202E8CE + thumb_func_end sub_80B7D0C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_80B5054.s b/asm/rom_80B5054.s deleted file mode 100644 index 6d6c68244..000000000 --- a/asm/rom_80B5054.s +++ /dev/null @@ -1,1237 +0,0 @@ - .include "constants/gba_constants.s" - .include "constants/species_constants.s" - .include "asm/macros.s" - - .syntax unified - - .text - - thumb_func_start sub_80B5054 -sub_80B5054: @ 80B5054 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldr r0, _080B5098 @ =sub_80B52B4 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B50A4 - ldr r1, _080B509C @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - ldr r1, _080B50A0 @ =gMultichoiceLists - lsls r0, r4, 3 - adds r0, r1 - ldrb r2, [r0, 0x4] - ldr r3, [r0] - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_80B5138 - movs r0, 0x1 - b _080B50A6 - .align 2, 0 -_080B5098: .4byte sub_80B52B4 -_080B509C: .4byte gScriptResult -_080B50A0: .4byte gMultichoiceLists -_080B50A4: - movs r0, 0 -_080B50A6: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B5054 - - thumb_func_start sub_80B50B0 -sub_80B50B0: @ 80B50B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B5100 @ =sub_80B52B4 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B510C - ldr r1, _080B5104 @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - ldr r1, _080B5108 @ =gMultichoiceLists - lsls r0, r5, 3 - adds r0, r1 - ldrb r2, [r0, 0x4] - ldr r3, [r0] - str r6, [sp] - str r4, [sp, 0x4] - mov r0, r8 - adds r1, r7, 0 - bl sub_80B5138 - movs r0, 0x1 - b _080B510E - .align 2, 0 -_080B5100: .4byte sub_80B52B4 -_080B5104: .4byte gScriptResult -_080B5108: .4byte gMultichoiceLists -_080B510C: - movs r0, 0 -_080B510E: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B50B0 - - thumb_func_start GetStringWidthInTilesForScriptMenu -GetStringWidthInTilesForScriptMenu: @ 80B511C - push {lr} - adds r1, r0, 0 - ldr r0, _080B5134 @ =gWindowConfig_81E6CE4 - bl GetStringWidthGivenWindowConfig - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0x7 - lsrs r0, r1, 3 - pop {r1} - bx r1 - .align 2, 0 -_080B5134: .4byte gWindowConfig_81E6CE4 - thumb_func_end GetStringWidthInTilesForScriptMenu - - thumb_func_start sub_80B5138 -sub_80B5138: @ 80B5138 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r3 - ldr r3, [sp, 0x34] - ldr r4, [sp, 0x38] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x8] - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x10] - mov r1, r10 - ldr r0, [r1] - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r5, r0, 16 - movs r4, 0x1 - cmp r4, r8 - bcs _080B5198 -_080B517A: - lsls r0, r4, 3 - add r0, r10 - ldr r0, [r0] - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r0, 16 - cmp r5, r0 - bcs _080B518E - adds r5, r0, 0 -_080B518E: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r8 - bcc _080B517A -_080B5198: - lsls r0, r5, 24 - lsrs r7, r0, 24 - mov r1, r9 - adds r0, r7, r1 - adds r0, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1D - bls _080B51B8 - mov r0, r9 - adds r0, 0x1D - subs r0, r7 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r7, 0x1D -_080B51B8: - mov r1, r8 - lsls r0, r1, 1 - adds r0, 0x1 - ldr r1, [sp, 0x8] - lsls r4, r1, 24 - asrs r4, 24 - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - mov r0, r9 - adds r2, r7, 0 - adds r3, r4, 0 - bl MenuDrawTextWindow - mov r6, r9 - adds r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - ldr r5, [sp, 0x8] - adds r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, r8 - mov r3, r10 - bl PrintMenuItems - ldr r0, [sp, 0x10] - str r0, [sp] - mov r1, r9 - subs r0, r7, r1 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - adds r1, r6, 0 - adds r2, r5, 0 - mov r3, r8 - bl InitMenu - ldr r0, [sp, 0xC] - str r0, [sp] - mov r1, r8 - str r1, [sp, 0x4] - mov r0, r9 - ldr r1, [sp, 0x8] - adds r2, r7, 0 - adds r3, r4, 0 - bl sub_80B5230 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B5138 - - thumb_func_start sub_80B5230 -sub_80B5230: @ 80B5230 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r0, [sp, 0x1C] - mov r8, r0 - ldr r0, [sp, 0x20] - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080B5298 @ =sub_80B52B4 - movs r1, 0x50 - str r3, [sp] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B529C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r5, [r1, 0xA] - strh r6, [r1, 0xC] - ldr r3, [sp] - strh r3, [r1, 0xE] - mov r0, r8 - strh r0, [r1, 0x10] - mov r0, r9 - cmp r0, 0x3 - bls _080B52A0 - movs r0, 0x1 - b _080B52A2 - .align 2, 0 -_080B5298: .4byte sub_80B52B4 -_080B529C: .4byte gTasks -_080B52A0: - movs r0, 0 -_080B52A2: - strh r0, [r1, 0x12] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B5230 - - thumb_func_start sub_80B52B4 -sub_80B52B4: @ 80B52B4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080B52E0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B534E - ldr r2, _080B52E4 @ =gTasks - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r0, r2 - movs r2, 0x12 - ldrsh r0, [r0, r2] - adds r5, r1, 0 - cmp r0, 0 - bne _080B52E8 - bl ProcessMenuInputNoWrap - b _080B52EC - .align 2, 0 -_080B52E0: .4byte gPaletteFade -_080B52E4: .4byte gTasks -_080B52E8: - bl ProcessMenuInput -_080B52EC: - lsls r0, 24 - lsrs r0, 24 - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _080B534E - adds r0, 0x1 - cmp r1, r0 - bne _080B5328 - ldr r0, _080B5320 @ =gTasks - adds r1, r5, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x10 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080B534E - movs r0, 0x5 - bl PlaySE - ldr r1, _080B5324 @ =gScriptResult - movs r0, 0x7F - strh r0, [r1] - b _080B532C - .align 2, 0 -_080B5320: .4byte gTasks -_080B5324: .4byte gScriptResult -_080B5328: - ldr r0, _080B5354 @ =gScriptResult - strh r1, [r0] -_080B532C: - bl sub_8072DEC - ldr r0, _080B5358 @ =gTasks - adds r3, r5, r4 - lsls r3, 3 - adds r3, r0 - ldrb r0, [r3, 0x8] - ldrb r1, [r3, 0xA] - ldrb r2, [r3, 0xC] - ldrb r3, [r3, 0xE] - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_080B534E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B5354: .4byte gScriptResult -_080B5358: .4byte gTasks - thumb_func_end sub_80B52B4 - - thumb_func_start Multichoice -Multichoice: @ 80B535C - 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 r4, r2, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldr r0, _080B539C @ =sub_80B52B4 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B53A8 - ldr r1, _080B53A0 @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - ldr r1, _080B53A4 @ =gMultichoiceLists - lsls r0, r4, 3 - adds r0, r1 - ldrb r2, [r0, 0x4] - ldr r3, [r0] - str r5, [sp] - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_80B53B4 - movs r0, 0x1 - b _080B53AA - .align 2, 0 -_080B539C: .4byte sub_80B52B4 -_080B53A0: .4byte gScriptResult -_080B53A4: .4byte gMultichoiceLists -_080B53A8: - movs r0, 0 -_080B53AA: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Multichoice - - thumb_func_start sub_80B53B4 -sub_80B53B4: @ 80B53B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r7, r3, 0 - ldr r3, [sp, 0x28] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - ldr r0, [r7] - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r4, r0, 16 - movs r5, 0x1 - cmp r5, r6 - bcs _080B5408 -_080B53EA: - lsls r0, r5, 3 - adds r0, r7 - ldr r0, [r0] - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r0, 16 - cmp r4, r0 - bcs _080B53FE - adds r4, r0, 0 -_080B53FE: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r6 - bcc _080B53EA -_080B5408: - lsls r4, 24 - lsrs r4, 24 - add r4, r8 - adds r4, 0x2 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r6, 1 - adds r0, 0x1 - mov r1, r9 - lsls r5, r1, 24 - asrs r5, 24 - adds r5, r0 - lsls r5, 24 - lsrs r5, 24 - mov r0, r8 - adds r2, r6, 0 - adds r3, r7, 0 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - mov r1, r8 - subs r0, r4, r1 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - mov r2, r9 - adds r3, r6, 0 - bl InitMenu - mov r0, r10 - str r0, [sp] - str r6, [sp, 0x4] - mov r0, r8 - mov r1, r9 - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_80B5230 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B53B4 - - thumb_func_start yes_no_box -yes_no_box: @ 80B546C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r6, _080B54B4 @ =task_yes_no_maybe - adds r0, r6, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B54C0 - ldr r1, _080B54B8 @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl DisplayYesNoMenu - adds r0, r6, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B54BC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - strh r4, [r1, 0xA] - movs r0, 0x1 - b _080B54C2 - .align 2, 0 -_080B54B4: .4byte task_yes_no_maybe -_080B54B8: .4byte gScriptResult -_080B54BC: .4byte gTasks -_080B54C0: - movs r0, 0 -_080B54C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end yes_no_box - - thumb_func_start unref_sub_80B54C8 -unref_sub_80B54C8: @ 80B54C8 - push {lr} - ldr r0, _080B54D8 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0xFF - beq _080B54DC - movs r0, 0x1 - b _080B54DE - .align 2, 0 -_080B54D8: .4byte gScriptResult -_080B54DC: - movs r0, 0 -_080B54DE: - pop {r1} - bx r1 - thumb_func_end unref_sub_80B54C8 - - thumb_func_start task_yes_no_maybe -task_yes_no_maybe: @ 80B54E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080B5504 @ =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 _080B5508 - adds r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080B556A - .align 2, 0 -_080B5504: .4byte gTasks -_080B5508: - bl ProcessMenuInputNoWrap - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080B552C - cmp r1, r0 - bgt _080B5524 - subs r0, 0x1 - cmp r1, r0 - beq _080B556A - b _080B5542 -_080B5524: - cmp r1, 0 - beq _080B553C - cmp r1, 0x1 - bne _080B5542 -_080B552C: - movs r0, 0x5 - bl PlaySE - ldr r1, _080B5538 @ =gScriptResult - movs r0, 0 - b _080B5540 - .align 2, 0 -_080B5538: .4byte gScriptResult -_080B553C: - ldr r1, _080B5570 @ =gScriptResult - movs r0, 0x1 -_080B5540: - strh r0, [r1] -_080B5542: - ldr r0, _080B5574 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x8] - ldrb r1, [r1, 0xA] - adds r2, r0, 0x6 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0x5 - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_080B556A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B5570: .4byte gScriptResult -_080B5574: .4byte gTasks - thumb_func_end task_yes_no_maybe - - thumb_func_start sub_80B5578 -sub_80B5578: @ 80B5578 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r4, [sp, 0x30] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r4, 24 - lsrs r5, r4, 24 - movs r7, 0 - ldr r0, _080B55B8 @ =sub_80B5684 - mov r10, r0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B55BC - movs r0, 0 - b _080B5670 - .align 2, 0 -_080B55B8: .4byte sub_80B5684 -_080B55BC: - ldr r1, _080B5620 @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - ldr r0, _080B5624 @ =gMultichoiceLists - lsls r4, r6, 3 - adds r0, r4, r0 - ldrb r6, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r5, [sp, 0x4] - str r7, [sp, 0x8] - mov r0, r9 - mov r1, r8 - adds r2, r6, 0 - movs r3, 0 - bl sub_807274C - mov r0, r10 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r0, r6, 24 - lsrs r1, r0, 24 - lsrs r0, 25 - cmp r0, r5 - bcc _080B55FE - movs r0, 0x1 - ands r0, r6 - cmp r0, 0 - beq _080B5606 -_080B55FE: - cmp r5, 0x1 - beq _080B5606 - cmp r1, r5 - bne _080B5628 -_080B5606: - ldr r0, _080B5624 @ =gMultichoiceLists - adds r0, r4, r0 - ldrb r0, [r0, 0x4] - adds r1, r5, 0 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x1 - mov r2, r8 - lsls r1, r2, 24 - b _080B563A - .align 2, 0 -_080B5620: .4byte gScriptResult -_080B5624: .4byte gMultichoiceLists -_080B5628: - adds r0, r6, 0 - adds r1, r5, 0 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x3 - mov r3, r8 - lsls r1, r3, 24 -_080B563A: - asrs r1, 24 - adds r1, r0 - lsls r1, 24 - lsrs r7, r1, 24 - adds r0, r5, 0 - bl sub_807288C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B5680 @ =gTasks - mov r3, r10 - lsls r1, r3, 2 - add r1, r10 - lsls r1, 3 - adds r1, r2 - mov r2, r9 - strh r2, [r1, 0x8] - mov r3, r8 - strh r3, [r1, 0xA] - add r0, r9 - adds r0, 0x2 - strh r0, [r1, 0xC] - strh r7, [r1, 0xE] - mov r0, sp - ldrh r0, [r0, 0xC] - strh r0, [r1, 0x10] - movs r0, 0x1 -_080B5670: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B5680: .4byte gTasks - thumb_func_end sub_80B5578 - - thumb_func_start sub_80B5684 -sub_80B5684: @ 80B5684 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80727CC - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _080B56F4 - adds r0, 0x1 - cmp r1, r0 - bne _080B56CC - ldr r2, _080B56C4 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r2, 0x10 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0 - bne _080B56F4 - movs r0, 0x5 - bl PlaySE - ldr r1, _080B56C8 @ =gScriptResult - movs r0, 0x7F - strh r0, [r1] - b _080B56D2 - .align 2, 0 -_080B56C4: .4byte gTasks -_080B56C8: .4byte gScriptResult -_080B56CC: - ldr r0, _080B56FC @ =gScriptResult - strh r1, [r0] - lsls r4, r5, 2 -_080B56D2: - bl sub_8072DEC - ldr r0, _080B5700 @ =gTasks - adds r3, r4, r5 - lsls r3, 3 - adds r3, r0 - ldrb r0, [r3, 0x8] - ldrb r1, [r3, 0xA] - ldrb r2, [r3, 0xC] - ldrb r3, [r3, 0xE] - bl MenuZeroFillWindowRect - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts -_080B56F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B56FC: .4byte gScriptResult -_080B5700: .4byte gTasks - thumb_func_end sub_80B5684 - - thumb_func_start sp109_CreatePCMenu -sp109_CreatePCMenu: @ 80B5704 - push {lr} - ldr r0, _080B5724 @ =sub_80B52B4 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080B572C - ldr r1, _080B5728 @ =gScriptResult - movs r0, 0xFF - strh r0, [r1] - bl CreatePCMenu - movs r0, 0x1 - b _080B572E - .align 2, 0 -_080B5724: .4byte sub_80B52B4 -_080B5728: .4byte gScriptResult -_080B572C: - movs r0, 0 -_080B572E: - pop {r1} - bx r1 - thumb_func_end sp109_CreatePCMenu - - thumb_func_start CreatePCMenu -CreatePCMenu: @ 80B5734 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _080B5758 @ =gPCText_PlayersPC - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080B575C @ =gPCText_SomeonesPC - bl GetStringWidthInTilesForScriptMenu - lsls r0, 16 - lsrs r0, 16 - cmp r4, r0 - bls _080B5760 - lsls r0, r4, 24 - lsrs r5, r0, 24 - b _080B5762 - .align 2, 0 -_080B5758: .4byte gPCText_PlayersPC -_080B575C: .4byte gPCText_SomeonesPC -_080B5760: - movs r5, 0x8 -_080B5762: - ldr r0, _080B5798 @ =0x00000804 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080B57A4 - movs r7, 0x4 - adds r4, r5, 0x2 - lsls r2, r4, 24 - lsrs r2, 24 - movs r0, 0 - movs r1, 0 - movs r3, 0x9 - bl MenuDrawTextWindow - ldr r0, _080B579C @ =gPCText_HallOfFame - movs r1, 0x1 - movs r2, 0x5 - bl MenuPrint - ldr r0, _080B57A0 @ =gPCText_LogOff - movs r1, 0x1 - movs r2, 0x7 - bl MenuPrint - b _080B57C0 - .align 2, 0 -_080B5798: .4byte 0x00000804 -_080B579C: .4byte gPCText_HallOfFame -_080B57A0: .4byte gPCText_LogOff -_080B57A4: - movs r7, 0x3 - adds r4, r5, 0x2 - lsls r2, r4, 24 - lsrs r2, 24 - movs r0, 0 - movs r1, 0 - movs r3, 0x7 - bl MenuDrawTextWindow - ldr r0, _080B57DC @ =gPCText_LogOff - movs r1, 0x1 - movs r2, 0x5 - bl MenuPrint -_080B57C0: - adds r6, r4, 0 - ldr r0, _080B57E0 @ =0x0000084b - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080B57E8 - ldr r0, _080B57E4 @ =gPCText_LanettesPC - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint - b _080B57F2 - .align 2, 0 -_080B57DC: .4byte gPCText_LogOff -_080B57E0: .4byte 0x0000084b -_080B57E4: .4byte gPCText_LanettesPC -_080B57E8: - ldr r0, _080B5830 @ =gPCText_SomeonesPC - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint -_080B57F2: - ldr r0, _080B5834 @ =gPCText_PlayersPC - movs r1, 0x1 - movs r2, 0x3 - bl MenuPrint - movs r4, 0 - str r4, [sp] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - adds r3, r7, 0 - bl InitMenu - lsls r2, r6, 24 - lsrs r2, 24 - lsls r3, r7, 1 - adds r3, 0x1 - str r4, [sp] - str r7, [sp, 0x4] - movs r0, 0 - movs r1, 0 - bl sub_80B5230 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B5830: .4byte gPCText_SomeonesPC -_080B5834: .4byte gPCText_PlayersPC - thumb_func_end CreatePCMenu - - thumb_func_start sub_80B5838 -sub_80B5838: @ 80B5838 - push {lr} - bl MenuDisplayMessageBox - ldr r0, _080B584C @ =gUnknown_081A0A01 - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_080B584C: .4byte gUnknown_081A0A01 - thumb_func_end sub_80B5838 - - thumb_func_start task_picbox -task_picbox: @ 80B5850 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080B5874 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080B58BE - cmp r0, 0x1 - bgt _080B5878 - cmp r0, 0 - beq _080B5894 - b _080B58BE - .align 2, 0 -_080B5874: .4byte gTasks -_080B5878: - cmp r0, 0x2 - beq _080B5882 - cmp r0, 0x3 - beq _080B58A0 - b _080B58BE -_080B5882: - movs r0, 0xC - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080B589C @ =gSprites - adds r0, r1 - bl FreeResourcesAndDestroySprite -_080B5894: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B58BE - .align 2, 0 -_080B589C: .4byte gSprites -_080B58A0: - ldrb r2, [r4, 0xE] - adds r0, r2, 0 - ldrb r3, [r4, 0x10] - adds r1, r3, 0 - adds r2, 0x9 - lsls r2, 24 - lsrs r2, 24 - adds r3, 0xA - lsls r3, 24 - lsrs r3, 24 - bl MenuZeroFillWindowRect - adds r0, r5, 0 - bl DestroyTask -_080B58BE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end task_picbox - - thumb_func_start sub_80B58C4 -sub_80B58C4: @ 80B58C4 - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - ldr r4, _080B595C @ =task_picbox - adds r0, r4, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080B596C - adds r2, r6, 0 - adds r2, 0x9 - lsls r2, 24 - lsrs r2, 24 - adds r3, r5, 0 - adds r3, 0xA - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl MenuDrawTextWindow - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B5960 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r0, 0 - strh r0, [r4, 0x8] - strh r7, [r4, 0xA] - lsls r1, r6, 19 - movs r0, 0xA0 - lsls r0, 14 - adds r1, r0 - asrs r1, 16 - lsls r2, r5, 19 - adds r2, r0 - asrs r2, 16 - adds r0, r7, 0 - movs r3, 0 - bl CreateMonSprite_PicBox - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - strh r6, [r4, 0xE] - strh r5, [r4, 0x10] - ldr r3, _080B5964 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080B5968 @ =SpriteCallbackDummy - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _080B596E - .align 2, 0 -_080B595C: .4byte task_picbox -_080B5960: .4byte gTasks -_080B5964: .4byte gSprites -_080B5968: .4byte SpriteCallbackDummy -_080B596C: - movs r0, 0 -_080B596E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B58C4 - - thumb_func_start picbox_close -picbox_close: @ 80B5974 - push {lr} - ldr r0, _080B5998 @ =task_picbox - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080B59A4 - ldr r0, _080B599C @ =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, _080B59A0 @ =sub_80B59AC - b _080B59A6 - .align 2, 0 -_080B5998: .4byte task_picbox -_080B599C: .4byte gTasks -_080B59A0: .4byte sub_80B59AC -_080B59A4: - movs r0, 0 -_080B59A6: - pop {r1} - bx r1 - thumb_func_end picbox_close - - thumb_func_start sub_80B59AC -sub_80B59AC: @ 80B59AC - push {lr} - ldr r0, _080B59C0 @ =task_picbox - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080B59C4 - movs r0, 0 - b _080B59C6 - .align 2, 0 -_080B59C0: .4byte task_picbox -_080B59C4: - movs r0, 0x1 -_080B59C6: - pop {r1} - bx r1 - thumb_func_end sub_80B59AC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/script_menu.s b/asm/script_menu.s index 0d630ba52..6d6c68244 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -6,475 +6,1232 @@ .text - thumb_func_start IsEnoughMoney -IsEnoughMoney: @ 80B79A8 - push {lr} - cmp r0, r1 - bcs _080B79B2 + thumb_func_start sub_80B5054 +sub_80B5054: @ 80B5054 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, _080B5098 @ =sub_80B52B4 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080B50A4 + ldr r1, _080B509C @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + ldr r1, _080B50A0 @ =gMultichoiceLists + lsls r0, r4, 3 + adds r0, r1 + ldrb r2, [r0, 0x4] + ldr r3, [r0] + str r5, [sp] movs r0, 0 - b _080B79B4 -_080B79B2: + str r0, [sp, 0x4] + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_80B5138 movs r0, 0x1 -_080B79B4: - pop {r1} - bx r1 - thumb_func_end IsEnoughMoney - - thumb_func_start sub_80B79B8 -sub_80B79B8: @ 80B79B8 - push {lr} - adds r2, r0, 0 - ldr r0, [r2] - adds r1, r0, r1 - cmp r0, r1 - bls _080B79CC - ldr r0, _080B79C8 @ =0x000f423f - b _080B79D4 - .align 2, 0 -_080B79C8: .4byte 0x000f423f -_080B79CC: - str r1, [r2] - ldr r0, _080B79DC @ =0x000f423f - cmp r1, r0 - bls _080B79D6 -_080B79D4: - str r0, [r2] -_080B79D6: - pop {r0} - bx r0 + b _080B50A6 .align 2, 0 -_080B79DC: .4byte 0x000f423f - thumb_func_end sub_80B79B8 - - thumb_func_start sub_80B79E0 -sub_80B79E0: @ 80B79E0 - push {lr} - adds r2, r0, 0 - ldr r0, [r2] - cmp r0, r1 - bcs _080B79EE +_080B5098: .4byte sub_80B52B4 +_080B509C: .4byte gScriptResult +_080B50A0: .4byte gMultichoiceLists +_080B50A4: movs r0, 0 - b _080B79F0 -_080B79EE: - subs r0, r1 -_080B79F0: - str r0, [r2] - pop {r0} - bx r0 - thumb_func_end sub_80B79E0 +_080B50A6: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80B5054 - thumb_func_start sub_80B79F8 -sub_80B79F8: @ 80B79F8 - push {r4,lr} - adds r3, r0, 0 + thumb_func_start sub_80B50B0 +sub_80B50B0: @ 80B50B0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r7, r1, 24 lsls r2, 24 - lsrs r4, r2, 24 - ldr r0, _080B7A0C @ =0x000f423f - cmp r1, r0 - bls _080B7A10 - movs r2, 0x7 - b _080B7A46 - .align 2, 0 -_080B7A0C: .4byte 0x000f423f -_080B7A10: - ldr r0, _080B7A1C @ =0x0001869f - cmp r1, r0 - bls _080B7A20 - movs r2, 0x6 - b _080B7A46 - .align 2, 0 -_080B7A1C: .4byte 0x0001869f -_080B7A20: - ldr r0, _080B7A2C @ =0x00002710 - cmp r1, r0 - bls _080B7A30 - movs r2, 0x5 - b _080B7A46 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080B5100 @ =sub_80B52B4 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080B510C + ldr r1, _080B5104 @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + ldr r1, _080B5108 @ =gMultichoiceLists + lsls r0, r5, 3 + adds r0, r1 + ldrb r2, [r0, 0x4] + ldr r3, [r0] + str r6, [sp] + str r4, [sp, 0x4] + mov r0, r8 + adds r1, r7, 0 + bl sub_80B5138 + movs r0, 0x1 + b _080B510E .align 2, 0 -_080B7A2C: .4byte 0x00002710 -_080B7A30: - ldr r0, _080B7A90 @ =0x000003e7 - movs r2, 0x4 - cmp r1, r0 - bhi _080B7A46 - movs r2, 0x3 - cmp r1, 0x63 - bhi _080B7A46 - movs r2, 0x1 - cmp r1, 0x9 - bls _080B7A46 - movs r2, 0x2 -_080B7A46: - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x14 - strb r0, [r3, 0x1] - movs r0, 0x6 - strb r0, [r3, 0x2] - adds r3, 0x3 +_080B5100: .4byte sub_80B52B4 +_080B5104: .4byte gScriptResult +_080B5108: .4byte gMultichoiceLists +_080B510C: movs r0, 0 - subs r2, r4, r2 - cmp r0, r2 - bge _080B7A6C - movs r4, 0 -_080B7A5E: - strb r4, [r3] - adds r3, 0x1 - adds r0, 0x1 +_080B510E: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80B50B0 + + thumb_func_start GetStringWidthInTilesForScriptMenu +GetStringWidthInTilesForScriptMenu: @ 80B511C + push {lr} + adds r1, r0, 0 + ldr r0, _080B5134 @ =gWindowConfig_81E6CE4 + bl GetStringWidthGivenWindowConfig lsls r0, 24 lsrs r0, 24 - cmp r0, r2 - blt _080B7A5E -_080B7A6C: - movs r0, 0xB7 - strb r0, [r3] - adds r3, 0x1 - adds r0, r3, 0 - bl ConvertIntToDecimalString - adds r3, r0, 0 - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x14 - strb r0, [r3, 0x1] - movs r0, 0 - strb r0, [r3, 0x2] - movs r0, 0xFF - strb r0, [r3, 0x3] - pop {r4} - pop {r0} - bx r0 + adds r1, r0, 0x7 + lsrs r0, r1, 3 + pop {r1} + bx r1 .align 2, 0 -_080B7A90: .4byte 0x000003e7 - thumb_func_end sub_80B79F8 +_080B5134: .4byte gWindowConfig_81E6CE4 + thumb_func_end GetStringWidthInTilesForScriptMenu - thumb_func_start sub_80B7A94 -sub_80B7A94: @ 80B7A94 + thumb_func_start sub_80B5138 +sub_80B5138: @ 80B5138 push {r4-r7,lr} - sub sp, 0x10 - adds r4, r0, 0 + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r10, r3 + ldr r3, [sp, 0x34] + ldr r4, [sp, 0x38] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 lsls r1, 24 - lsrs r5, r1, 24 + lsrs r1, 24 + str r1, [sp, 0x8] lsls r2, 24 - lsrs r6, r2, 24 + lsrs r2, 24 + mov r8, r2 lsls r3, 24 - lsrs r7, r3, 24 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80B79F8 - mov r0, sp - bl sub_8072CA4 + lsrs r3, 24 + str r3, [sp, 0xC] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x10] + mov r1, r10 + ldr r0, [r1] + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r5, r0, 16 + movs r4, 0x1 + cmp r4, r8 + bcs _080B5198 +_080B517A: + lsls r0, r4, 3 + add r0, r10 + ldr r0, [r0] + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r0, 16 + cmp r5, r0 + bcs _080B518E + adds r5, r0, 0 +_080B518E: + adds r0, r4, 0x1 lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r5, 0x1 - lsls r0, 3 - cmp r2, r0 - blt _080B7ACE - mov r0, sp + lsrs r4, r0, 24 + cmp r4, r8 + bcc _080B517A +_080B5198: + lsls r0, r5, 24 + lsrs r7, r0, 24 + mov r1, r9 + adds r0, r7, r1 + adds r0, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x1D + bls _080B51B8 + mov r0, r9 + adds r0, 0x1D + subs r0, r7 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r7, 0x1D +_080B51B8: + mov r1, r8 + lsls r0, r1, 1 + adds r0, 0x1 + ldr r1, [sp, 0x8] + lsls r4, r1, 24 + asrs r4, 24 + adds r4, r0 + lsls r4, 24 + lsrs r4, 24 + mov r0, r9 + adds r2, r7, 0 + adds r3, r4, 0 + bl MenuDrawTextWindow + mov r6, r9 + adds r6, 0x1 + lsls r6, 24 + lsrs r6, 24 + ldr r5, [sp, 0x8] + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + adds r0, r6, 0 + adds r1, r5, 0 + mov r2, r8 + mov r3, r10 + bl PrintMenuItems + ldr r0, [sp, 0x10] + str r0, [sp] + mov r1, r9 + subs r0, r7, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0 adds r1, r6, 0 + adds r2, r5, 0 + mov r3, r8 + bl InitMenu + ldr r0, [sp, 0xC] + str r0, [sp] + mov r1, r8 + str r1, [sp, 0x4] + mov r0, r9 + ldr r1, [sp, 0x8] adds r2, r7, 0 - bl MenuPrint - b _080B7AE4 -_080B7ACE: - adds r1, r6, 0x1 - adds r1, r5 - lsls r1, 3 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - lsls r2, r7, 3 - mov r0, sp - movs r3, 0x1 - bl MenuPrint_PixelCoords -_080B7AE4: - add sp, 0x10 + adds r3, r4, 0 + bl sub_80B5230 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_80B7A94 + thumb_func_end sub_80B5138 - thumb_func_start sub_80B7AEC -sub_80B7AEC: @ 80B7AEC + thumb_func_start sub_80B5230 +sub_80B5230: @ 80B5230 push {r4-r6,lr} - sub sp, 0x20 - adds r3, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, [sp, 0x1C] + mov r8, r0 + ldr r0, [sp, 0x20] + mov r9, r0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 - mov r6, sp - movs r0, 0xB7 - strb r0, [r6] - adds r6, 0x1 - adds r0, r6, 0 - adds r1, r3, 0 - bl ConvertIntToDecimalString - adds r6, r0, 0 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8072B4C - movs r0, 0xFC - strb r0, [r6] - movs r0, 0x14 - strb r0, [r6, 0x1] + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _080B5298 @ =sub_80B52B4 + movs r1, 0x50 + str r3, [sp] + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B529C @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + strh r5, [r1, 0xA] + strh r6, [r1, 0xC] + ldr r3, [sp] + strh r3, [r1, 0xE] + mov r0, r8 + strh r0, [r1, 0x10] + mov r0, r9 + cmp r0, 0x3 + bls _080B52A0 + movs r0, 0x1 + b _080B52A2 + .align 2, 0 +_080B5298: .4byte sub_80B52B4 +_080B529C: .4byte gTasks +_080B52A0: movs r0, 0 - strb r0, [r6, 0x2] - movs r0, 0xFF - strb r0, [r6, 0x3] - add sp, 0x20 +_080B52A2: + strh r0, [r1, 0x12] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_80B7AEC + thumb_func_end sub_80B5230 - thumb_func_start sub_80B7B34 -sub_80B7B34: @ 80B7B34 + thumb_func_start sub_80B52B4 +sub_80B52B4: @ 80B52B4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080B52E0 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080B534E + ldr r2, _080B52E4 @ =gTasks + lsls r1, r4, 2 + adds r0, r1, r4 + lsls r0, 3 + adds r0, r2 + movs r2, 0x12 + ldrsh r0, [r0, r2] + adds r5, r1, 0 + cmp r0, 0 + bne _080B52E8 + bl ProcessMenuInputNoWrap + b _080B52EC + .align 2, 0 +_080B52E0: .4byte gPaletteFade +_080B52E4: .4byte gTasks +_080B52E8: + bl ProcessMenuInput +_080B52EC: + lsls r0, 24 + lsrs r0, 24 + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _080B534E + adds r0, 0x1 + cmp r1, r0 + bne _080B5328 + ldr r0, _080B5320 @ =gTasks + adds r1, r5, r4 + lsls r1, 3 + adds r1, r0 + movs r2, 0x10 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080B534E + movs r0, 0x5 + bl PlaySE + ldr r1, _080B5324 @ =gScriptResult + movs r0, 0x7F + strh r0, [r1] + b _080B532C + .align 2, 0 +_080B5320: .4byte gTasks +_080B5324: .4byte gScriptResult +_080B5328: + ldr r0, _080B5354 @ =gScriptResult + strh r1, [r0] +_080B532C: + bl sub_8072DEC + ldr r0, _080B5358 @ =gTasks + adds r3, r5, r4 + lsls r3, 3 + adds r3, r0 + ldrb r0, [r3, 0x8] + ldrb r1, [r3, 0xA] + ldrb r2, [r3, 0xC] + ldrb r3, [r3, 0xE] + bl MenuZeroFillWindowRect + adds r0, r4, 0 + bl DestroyTask + bl EnableBothScriptContexts +_080B534E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080B5354: .4byte gScriptResult +_080B5358: .4byte gTasks + thumb_func_end sub_80B52B4 + + thumb_func_start Multichoice +Multichoice: @ 80B535C push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} sub sp, 0x4 - mov r8, r0 - adds r5, r1, 0 - mov r9, r2 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, _080B539C @ =sub_80B52B4 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080B53A8 + ldr r1, _080B53A0 @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + ldr r1, _080B53A4 @ =gMultichoiceLists + lsls r0, r4, 3 + adds r0, r1 + ldrb r2, [r0, 0x4] + ldr r3, [r0] + str r5, [sp] + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_80B53B4 + movs r0, 0x1 + b _080B53AA + .align 2, 0 +_080B539C: .4byte sub_80B52B4 +_080B53A0: .4byte gScriptResult +_080B53A4: .4byte gMultichoiceLists +_080B53A8: + movs r0, 0 +_080B53AA: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end Multichoice + + thumb_func_start sub_80B53B4 +sub_80B53B4: @ 80B53B4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r3, 0 + ldr r3, [sp, 0x28] lsls r0, 24 lsrs r0, 24 mov r8, r0 - lsls r5, 24 - lsrs r5, 24 - mov r1, r9 - lsls r1, 8 + lsls r1, 24 + lsrs r1, 24 mov r9, r1 - ldr r4, _080B7BD8 @ =gDecoration10000_Gfx - adds r0, r1, r4 - lsls r6, r5, 4 - subs r6, r5 - lsls r1, r6, 6 - mov r3, r8 - adds r3, 0x1 - lsls r3, 5 - ldr r2, _080B7BDC @ =0x06008000 - adds r3, r2 - adds r1, r3 - movs r2, 0x20 - str r3, [sp] - bl CpuFastSet - adds r4, 0x80 - add r9, r4 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + ldr r0, [r7] + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r4, r0, 16 + movs r5, 0x1 + cmp r5, r6 + bcs _080B5408 +_080B53EA: + lsls r0, r5, 3 + adds r0, r7 + ldr r0, [r0] + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + bcs _080B53FE + adds r4, r0, 0 +_080B53FE: adds r0, r5, 0x1 - lsls r4, r0, 4 - subs r4, r0 - lsls r1, r4, 6 - ldr r3, [sp] - adds r1, r3 - mov r0, r9 - movs r2, 0x20 - bl CpuFastSet - movs r3, 0 - lsls r5, 5 - mov r0, r8 - adds r7, r5, r0 - lsls r6, 1 - adds r6, 0x1 - add r6, r8 - ldr r1, _080B7BE0 @ =0xfffff000 - adds r5, r1, 0 - ldr r0, _080B7BE4 @ =0x0600f800 - mov r12, r0 - ldr r1, _080B7BE8 @ =0x0600f840 - mov r9, r1 - lsls r4, 1 - adds r4, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _080B53EA +_080B5408: + lsls r4, 24 + lsrs r4, 24 add r4, r8 -_080B7BAA: - adds r1, r7, r3 - lsls r1, 1 - mov r0, r12 - adds r2, r1, r0 - adds r0, r3, r6 - adds r0, r5 - strh r0, [r2] - add r1, r9 - adds r0, r3, r4 - adds r0, r5 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080B7BAA - add sp, 0x4 - pop {r3,r4} + adds r4, 0x2 + lsls r4, 24 + lsrs r4, 24 + lsls r0, r6, 1 + adds r0, 0x1 + mov r1, r9 + lsls r5, r1, 24 + asrs r5, 24 + adds r5, r0 + lsls r5, 24 + lsrs r5, 24 + mov r0, r8 + adds r2, r6, 0 + adds r3, r7, 0 + bl PrintMenuItems + movs r0, 0 + str r0, [sp] + mov r1, r8 + subs r0, r4, r1 + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0 + mov r2, r9 + adds r3, r6, 0 + bl InitMenu + mov r0, r10 + str r0, [sp] + str r6, [sp, 0x4] + mov r0, r8 + mov r1, r9 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_80B5230 + add sp, 0x8 + pop {r3-r5} mov r8, r3 mov r9, r4 + mov r10, r5 pop {r4-r7} pop {r0} bx r0 + thumb_func_end sub_80B53B4 + + thumb_func_start yes_no_box +yes_no_box: @ 80B546C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r6, _080B54B4 @ =task_yes_no_maybe + adds r0, r6, 0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080B54C0 + ldr r1, _080B54B8 @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl DisplayYesNoMenu + adds r0, r6, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B54BC @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r5, [r1, 0x8] + strh r4, [r1, 0xA] + movs r0, 0x1 + b _080B54C2 .align 2, 0 -_080B7BD8: .4byte gDecoration10000_Gfx -_080B7BDC: .4byte 0x06008000 -_080B7BE0: .4byte 0xfffff000 -_080B7BE4: .4byte 0x0600f800 -_080B7BE8: .4byte 0x0600f840 - thumb_func_end sub_80B7B34 +_080B54B4: .4byte task_yes_no_maybe +_080B54B8: .4byte gScriptResult +_080B54BC: .4byte gTasks +_080B54C0: + movs r0, 0 +_080B54C2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end yes_no_box - thumb_func_start sub_80B7BEC -sub_80B7BEC: @ 80B7BEC + thumb_func_start unref_sub_80B54C8 +unref_sub_80B54C8: @ 80B54C8 + push {lr} + ldr r0, _080B54D8 @ =gScriptResult + ldrh r0, [r0] + cmp r0, 0xFF + beq _080B54DC + movs r0, 0x1 + b _080B54DE + .align 2, 0 +_080B54D8: .4byte gScriptResult +_080B54DC: + movs r0, 0 +_080B54DE: + pop {r1} + bx r1 + thumb_func_end unref_sub_80B54C8 + + thumb_func_start task_yes_no_maybe +task_yes_no_maybe: @ 80B54E4 push {r4,lr} - adds r4, r1, 0 - adds r3, r2, 0 - lsls r4, 24 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080B5504 @ =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 _080B5508 + adds r0, r2, 0x1 + strh r0, [r1, 0xC] + b _080B556A + .align 2, 0 +_080B5504: .4byte gTasks +_080B5508: + bl ProcessMenuInputNoWrap + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _080B552C + cmp r1, r0 + bgt _080B5524 + subs r0, 0x1 + cmp r1, r0 + beq _080B556A + b _080B5542 +_080B5524: + cmp r1, 0 + beq _080B553C + cmp r1, 0x1 + bne _080B5542 +_080B552C: + movs r0, 0x5 + bl PlaySE + ldr r1, _080B5538 @ =gScriptResult + movs r0, 0 + b _080B5540 + .align 2, 0 +_080B5538: .4byte gScriptResult +_080B553C: + ldr r1, _080B5570 @ =gScriptResult + movs r0, 0x1 +_080B5540: + strh r0, [r1] +_080B5542: + ldr r0, _080B5574 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrb r0, [r1, 0x8] + ldrb r1, [r1, 0xA] + adds r2, r0, 0x6 + lsls r2, 24 + lsrs r2, 24 + adds r3, r1, 0x5 lsls r3, 24 - movs r1, 0xC0 - lsls r1, 19 - adds r4, r1 - lsrs r4, 24 - movs r1, 0x80 - lsls r1, 17 - adds r3, r1 lsrs r3, 24 - movs r1, 0x6 - adds r2, r4, 0 - bl sub_80B7A94 + bl MenuZeroFillWindowRect + adds r0, r4, 0 + bl DestroyTask + bl EnableBothScriptContexts +_080B556A: pop {r4} pop {r0} bx r0 - thumb_func_end sub_80B7BEC + .align 2, 0 +_080B5570: .4byte gScriptResult +_080B5574: .4byte gTasks + thumb_func_end task_yes_no_maybe - thumb_func_start sub_80B7C14 -sub_80B7C14: @ 80B7C14 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r4, 24 + thumb_func_start sub_80B5578 +sub_80B5578: @ 80B5578 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r4, [sp, 0x30] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r2, 24 + lsrs r6, r2, 24 lsls r3, 24 - lsrs r6, r4, 24 - movs r0, 0xD0 - lsls r0, 20 - adds r4, r0 - lsrs r4, 24 - lsrs r5, r3, 24 - movs r1, 0xC0 - lsls r1, 18 - adds r3, r1 lsrs r3, 24 + str r3, [sp, 0xC] + lsls r4, 24 + lsrs r5, r4, 24 + movs r7, 0 + ldr r0, _080B55B8 @ =sub_80B5684 + mov r10, r0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080B55BC + movs r0, 0 + b _080B5670 + .align 2, 0 +_080B55B8: .4byte sub_80B5684 +_080B55BC: + ldr r1, _080B5620 @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + ldr r0, _080B5624 @ =gMultichoiceLists + lsls r4, r6, 3 + adds r0, r4, r0 + ldrb r6, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r5, [sp, 0x4] + str r7, [sp, 0x8] + mov r0, r9 + mov r1, r8 + adds r2, r6, 0 + movs r3, 0 + bl sub_807274C + mov r0, r10 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, r6, 24 + lsrs r1, r0, 24 + lsrs r0, 25 + cmp r0, r5 + bcc _080B55FE + movs r0, 0x1 + ands r0, r6 + cmp r0, 0 + beq _080B5606 +_080B55FE: + cmp r5, 0x1 + beq _080B5606 + cmp r1, r5 + bne _080B5628 +_080B5606: + ldr r0, _080B5624 @ =gMultichoiceLists + adds r0, r4, r0 + ldrb r0, [r0, 0x4] + adds r1, r5, 0 + bl __udivsi3 + lsls r0, 24 + lsrs r0, 23 + adds r0, 0x1 + mov r2, r8 + lsls r1, r2, 24 + b _080B563A + .align 2, 0 +_080B5620: .4byte gScriptResult +_080B5624: .4byte gMultichoiceLists +_080B5628: adds r0, r6, 0 adds r1, r5, 0 - adds r2, r4, 0 - bl MenuDrawTextWindow - mov r0, r8 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80B7BEC - ldr r0, _080B7C88 @ =gUnknown_083CF584 - bl LoadCompressedObjectPic - ldr r0, _080B7C8C @ =gUnknown_083CF58C - bl LoadCompressedObjectPalette - ldr r0, _080B7C90 @ =gSpriteTemplate_83CF56C - lsls r6, 19 - movs r1, 0x98 - lsls r1, 13 - adds r6, r1 - asrs r6, 16 - lsls r5, 19 - movs r1, 0xB0 - lsls r1, 12 - adds r5, r1 - asrs r5, 16 - adds r1, r6, 0 - adds r2, r5, 0 - movs r3, 0 - bl CreateSprite - ldr r1, _080B7C94 @ =gUnknown_02038734 - strb r0, [r1] - pop {r3} + bl __udivsi3 + lsls r0, 24 + lsrs r0, 23 + adds r0, 0x3 + mov r3, r8 + lsls r1, r3, 24 +_080B563A: + asrs r1, 24 + adds r1, r0 + lsls r1, 24 + lsrs r7, r1, 24 + adds r0, r5, 0 + bl sub_807288C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080B5680 @ =gTasks + mov r3, r10 + lsls r1, r3, 2 + add r1, r10 + lsls r1, 3 + adds r1, r2 + mov r2, r9 + strh r2, [r1, 0x8] + mov r3, r8 + strh r3, [r1, 0xA] + add r0, r9 + adds r0, 0x2 + strh r0, [r1, 0xC] + strh r7, [r1, 0xE] + mov r0, sp + ldrh r0, [r0, 0xC] + strh r0, [r1, 0x10] + movs r0, 0x1 +_080B5670: + add sp, 0x10 + pop {r3-r5} mov r8, r3 - pop {r4-r6} + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080B5680: .4byte gTasks + thumb_func_end sub_80B5578 + + thumb_func_start sub_80B5684 +sub_80B5684: @ 80B5684 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_80727CC + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _080B56F4 + adds r0, 0x1 + cmp r1, r0 + bne _080B56CC + ldr r2, _080B56C4 @ =gTasks + lsls r1, r5, 2 + adds r0, r1, r5 + lsls r0, 3 + adds r0, r2 + movs r2, 0x10 + ldrsh r0, [r0, r2] + adds r4, r1, 0 + cmp r0, 0 + bne _080B56F4 + movs r0, 0x5 + bl PlaySE + ldr r1, _080B56C8 @ =gScriptResult + movs r0, 0x7F + strh r0, [r1] + b _080B56D2 + .align 2, 0 +_080B56C4: .4byte gTasks +_080B56C8: .4byte gScriptResult +_080B56CC: + ldr r0, _080B56FC @ =gScriptResult + strh r1, [r0] + lsls r4, r5, 2 +_080B56D2: + bl sub_8072DEC + ldr r0, _080B5700 @ =gTasks + adds r3, r4, r5 + lsls r3, 3 + adds r3, r0 + ldrb r0, [r3, 0x8] + ldrb r1, [r3, 0xA] + ldrb r2, [r3, 0xC] + ldrb r3, [r3, 0xE] + bl MenuZeroFillWindowRect + adds r0, r5, 0 + bl DestroyTask + bl EnableBothScriptContexts +_080B56F4: + pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080B7C88: .4byte gUnknown_083CF584 -_080B7C8C: .4byte gUnknown_083CF58C -_080B7C90: .4byte gSpriteTemplate_83CF56C -_080B7C94: .4byte gUnknown_02038734 - thumb_func_end sub_80B7C14 +_080B56FC: .4byte gScriptResult +_080B5700: .4byte gTasks + thumb_func_end sub_80B5684 + + thumb_func_start sp109_CreatePCMenu +sp109_CreatePCMenu: @ 80B5704 + push {lr} + ldr r0, _080B5724 @ =sub_80B52B4 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080B572C + ldr r1, _080B5728 @ =gScriptResult + movs r0, 0xFF + strh r0, [r1] + bl CreatePCMenu + movs r0, 0x1 + b _080B572E + .align 2, 0 +_080B5724: .4byte sub_80B52B4 +_080B5728: .4byte gScriptResult +_080B572C: + movs r0, 0 +_080B572E: + pop {r1} + bx r1 + thumb_func_end sp109_CreatePCMenu - thumb_func_start RemoveMoneyLabelObject -RemoveMoneyLabelObject: @ 80B7C98 + thumb_func_start CreatePCMenu +CreatePCMenu: @ 80B5734 + push {r4-r7,lr} + sub sp, 0x8 + ldr r0, _080B5758 @ =gPCText_PlayersPC + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080B575C @ =gPCText_SomeonesPC + bl GetStringWidthInTilesForScriptMenu + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + bls _080B5760 + lsls r0, r4, 24 + lsrs r5, r0, 24 + b _080B5762 + .align 2, 0 +_080B5758: .4byte gPCText_PlayersPC +_080B575C: .4byte gPCText_SomeonesPC +_080B5760: + movs r5, 0x8 +_080B5762: + ldr r0, _080B5798 @ =0x00000804 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080B57A4 + movs r7, 0x4 + adds r4, r5, 0x2 + lsls r2, r4, 24 + lsrs r2, 24 + movs r0, 0 + movs r1, 0 + movs r3, 0x9 + bl MenuDrawTextWindow + ldr r0, _080B579C @ =gPCText_HallOfFame + movs r1, 0x1 + movs r2, 0x5 + bl MenuPrint + ldr r0, _080B57A0 @ =gPCText_LogOff + movs r1, 0x1 + movs r2, 0x7 + bl MenuPrint + b _080B57C0 + .align 2, 0 +_080B5798: .4byte 0x00000804 +_080B579C: .4byte gPCText_HallOfFame +_080B57A0: .4byte gPCText_LogOff +_080B57A4: + movs r7, 0x3 + adds r4, r5, 0x2 + lsls r2, r4, 24 + lsrs r2, 24 + movs r0, 0 + movs r1, 0 + movs r3, 0x7 + bl MenuDrawTextWindow + ldr r0, _080B57DC @ =gPCText_LogOff + movs r1, 0x1 + movs r2, 0x5 + bl MenuPrint +_080B57C0: + adds r6, r4, 0 + ldr r0, _080B57E0 @ =0x0000084b + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080B57E8 + ldr r0, _080B57E4 @ =gPCText_LanettesPC + movs r1, 0x1 + movs r2, 0x1 + bl MenuPrint + b _080B57F2 + .align 2, 0 +_080B57DC: .4byte gPCText_LogOff +_080B57E0: .4byte 0x0000084b +_080B57E4: .4byte gPCText_LanettesPC +_080B57E8: + ldr r0, _080B5830 @ =gPCText_SomeonesPC + movs r1, 0x1 + movs r2, 0x1 + bl MenuPrint +_080B57F2: + ldr r0, _080B5834 @ =gPCText_PlayersPC + movs r1, 0x1 + movs r2, 0x3 + bl MenuPrint + movs r4, 0 + str r4, [sp] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + adds r3, r7, 0 + bl InitMenu + lsls r2, r6, 24 + lsrs r2, 24 + lsls r3, r7, 1 + adds r3, 0x1 + str r4, [sp] + str r7, [sp, 0x4] + movs r0, 0 + movs r1, 0 + bl sub_80B5230 + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080B5830: .4byte gPCText_SomeonesPC +_080B5834: .4byte gPCText_PlayersPC + thumb_func_end CreatePCMenu + + thumb_func_start sub_80B5838 +sub_80B5838: @ 80B5838 + push {lr} + bl MenuDisplayMessageBox + ldr r0, _080B584C @ =gUnknown_081A0A01 + movs r1, 0x2 + movs r2, 0xF + bl MenuPrint + pop {r0} + bx r0 + .align 2, 0 +_080B584C: .4byte gUnknown_081A0A01 + thumb_func_end sub_80B5838 + + thumb_func_start task_picbox +task_picbox: @ 80B5850 push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080B7CDC @ =gUnknown_02038734 - ldrb r1, [r0] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _080B5874 @ =gTasks + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _080B58BE + cmp r0, 0x1 + bgt _080B5878 + cmp r0, 0 + beq _080B5894 + b _080B58BE + .align 2, 0 +_080B5874: .4byte gTasks +_080B5878: + cmp r0, 0x2 + beq _080B5882 + cmp r0, 0x3 + beq _080B58A0 + b _080B58BE +_080B5882: + movs r0, 0xC + ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 - ldr r1, _080B7CE0 @ =gSprites + ldr r1, _080B589C @ =gSprites adds r0, r1 - bl DestroySpriteAndFreeResources - ldr r0, _080B7CE4 @ =0x00002722 - bl FreeSpritePaletteByTag - adds r2, r4, 0 - adds r2, 0xD + bl FreeResourcesAndDestroySprite +_080B5894: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _080B58BE + .align 2, 0 +_080B589C: .4byte gSprites +_080B58A0: + ldrb r2, [r4, 0xE] + adds r0, r2, 0 + ldrb r3, [r4, 0x10] + adds r1, r3, 0 + adds r2, 0x9 lsls r2, 24 lsrs r2, 24 - adds r3, r5, 0x3 + adds r3, 0xA lsls r3, 24 lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 bl MenuZeroFillWindowRect + adds r0, r5, 0 + bl DestroyTask +_080B58BE: pop {r4,r5} pop {r0} bx r0 - .align 2, 0 -_080B7CDC: .4byte gUnknown_02038734 -_080B7CE0: .4byte gSprites -_080B7CE4: .4byte 0x00002722 - thumb_func_end RemoveMoneyLabelObject + thumb_func_end task_picbox - thumb_func_start sub_80B7CE8 -sub_80B7CE8: @ 80B7CE8 - push {lr} - ldr r0, _080B7D04 @ =gSaveBlock1 - movs r1, 0x92 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080B7D08 @ =gUnknown_0202E8CE - ldrh r1, [r1] - bl IsEnoughMoney + thumb_func_start sub_80B58C4 +sub_80B58C4: @ 80B58C4 + push {r4-r7,lr} + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + ldr r4, _080B595C @ =task_picbox + adds r0, r4, 0 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080B596C + adds r2, r6, 0 + adds r2, 0x9 + lsls r2, 24 + lsrs r2, 24 + adds r3, r5, 0 + adds r3, 0xA + lsls r3, 24 + lsrs r3, 24 + adds r0, r6, 0 + adds r1, r5, 0 + bl MenuDrawTextWindow + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080B5960 @ =gTasks + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 3 + adds r4, r1 + movs r0, 0 + strh r0, [r4, 0x8] + strh r7, [r4, 0xA] + lsls r1, r6, 19 + movs r0, 0xA0 + lsls r0, 14 + adds r1, r0 + asrs r1, 16 + lsls r2, r5, 19 + adds r2, r0 + asrs r2, 16 + adds r0, r7, 0 + movs r3, 0 + bl CreateMonSprite_PicBox lsls r0, 24 lsrs r0, 24 + strh r0, [r4, 0xC] + strh r6, [r4, 0xE] + strh r5, [r4, 0x10] + ldr r3, _080B5964 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x1C + adds r0, r1, r0 + ldr r2, _080B5968 @ =SpriteCallbackDummy + str r2, [r0] + adds r1, r3 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x5] + movs r0, 0x1 + b _080B596E + .align 2, 0 +_080B595C: .4byte task_picbox +_080B5960: .4byte gTasks +_080B5964: .4byte gSprites +_080B5968: .4byte SpriteCallbackDummy +_080B596C: + movs r0, 0 +_080B596E: + pop {r4-r7} pop {r1} bx r1 + thumb_func_end sub_80B58C4 + + thumb_func_start picbox_close +picbox_close: @ 80B5974 + push {lr} + ldr r0, _080B5998 @ =task_picbox + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080B59A4 + ldr r0, _080B599C @ =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, _080B59A0 @ =sub_80B59AC + b _080B59A6 .align 2, 0 -_080B7D04: .4byte gSaveBlock1 -_080B7D08: .4byte gUnknown_0202E8CE - thumb_func_end sub_80B7CE8 +_080B5998: .4byte task_picbox +_080B599C: .4byte gTasks +_080B59A0: .4byte sub_80B59AC +_080B59A4: + movs r0, 0 +_080B59A6: + pop {r1} + bx r1 + thumb_func_end picbox_close - thumb_func_start sub_80B7D0C -sub_80B7D0C: @ 80B7D0C + thumb_func_start sub_80B59AC +sub_80B59AC: @ 80B59AC push {lr} - ldr r0, _080B7D1C @ =gSaveBlock1 + 0x490 - ldr r1, _080B7D20 @ =gUnknown_0202E8CE - ldrh r1, [r1] - bl sub_80B79E0 - pop {r0} - bx r0 + ldr r0, _080B59C0 @ =task_picbox + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080B59C4 + movs r0, 0 + b _080B59C6 .align 2, 0 -_080B7D1C: .4byte gSaveBlock1 + 0x490 -_080B7D20: .4byte gUnknown_0202E8CE - thumb_func_end sub_80B7D0C +_080B59C0: .4byte task_picbox +_080B59C4: + movs r0, 0x1 +_080B59C6: + pop {r1} + bx r1 + thumb_func_end sub_80B59AC .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 7f2a6c8d1..c6984bff4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -103,9 +103,9 @@ SECTIONS { asm/save_menu_util.o(.text); asm/rom_8094928.o(.text); asm/berry.o(.text); - asm/rom_80B5054.o(.text); - asm/naming_screen.o(.text); asm/script_menu.o(.text); + asm/naming_screen.o(.text); + asm/money.o(.text); asm/contest_effect.o(.text); asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); |