diff options
Diffstat (limited to 'asm/script_menu.s')
-rw-r--r-- | asm/script_menu.s | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/asm/script_menu.s b/asm/script_menu.s new file mode 100644 index 000000000..0d630ba52 --- /dev/null +++ b/asm/script_menu.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. |