diff options
Diffstat (limited to 'asm/script_menu.s')
-rw-r--r-- | asm/script_menu.s | 1525 |
1 files changed, 1141 insertions, 384 deletions
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. |