diff options
Diffstat (limited to 'asm/save_menu_util.s')
-rw-r--r-- | asm/save_menu_util.s | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s new file mode 100644 index 000000000..8c9b2bec4 --- /dev/null +++ b/asm/save_menu_util.s @@ -0,0 +1,457 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_80945C0 +sub_80945C0: @ 80945C0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + movs r6, 0xC + bl sub_809473C + lsls r0, 24 + cmp r0, 0 + beq _080945D8 + movs r6, 0xD +_080945D8: + ldr r0, _08094658 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0809465C + lsls r0, r5, 24 + lsrs r0, 24 + lsls r1, r4, 24 + lsrs r1, 24 + adds r2, r5, r6 + lsls r2, 24 + lsrs r2, 24 + adds r3, r4, 0 + adds r3, 0xB + lsls r3, 24 + lsrs r3, 24 + bl MenuDrawTextWindow + lsls r0, r5, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r5, r0, 16 + asrs r0, 16 + lsls r1, r4, 16 + movs r2, 0x80 + lsls r2, 9 + adds r1, r2 + lsrs r4, r1, 16 + asrs r1, 16 + bl sub_8094778 + lsls r5, 16 + asrs r5, 16 + lsls r1, r4, 16 + asrs r4, r1, 16 + movs r0, 0x80 + lsls r0, 10 + adds r1, r0 + asrs r1, 16 + adds r0, r5, 0 + bl sub_8094740 + adds r1, r4, 0x4 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + bl sub_80947B0 + adds r1, r4, 0x6 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + bl sub_80947F8 + adds r4, 0x8 + lsls r4, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094844 + b _080946C2 + .align 2, 0 +_08094658: .4byte 0x00000801 +_0809465C: + lsls r0, r5, 24 + lsrs r0, 24 + lsls r1, r4, 24 + lsrs r1, 24 + adds r2, r5, r6 + lsls r2, 24 + lsrs r2, 24 + adds r3, r4, 0 + adds r3, 0x9 + lsls r3, 24 + lsrs r3, 24 + bl MenuDrawTextWindow + lsls r0, r5, 16 + movs r1, 0x80 + lsls r1, 9 + adds r0, r1 + lsrs r5, r0, 16 + asrs r0, 16 + lsls r1, r4, 16 + movs r2, 0x80 + lsls r2, 9 + adds r1, r2 + lsrs r4, r1, 16 + asrs r1, 16 + bl sub_8094778 + lsls r5, 16 + asrs r5, 16 + lsls r1, r4, 16 + asrs r4, r1, 16 + movs r0, 0x80 + lsls r0, 10 + adds r1, r0 + asrs r1, 16 + adds r0, r5, 0 + bl sub_8094740 + adds r1, r4, 0x4 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + bl sub_80947B0 + adds r4, 0x6 + lsls r4, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094844 +_080946C2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80945C0 + + thumb_func_start sub_80946C8 +sub_80946C8: @ 80946C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r4, r0, 16 + adds r7, r4, 0 + lsls r1, 16 + lsrs r5, r1, 16 + mov r8, r5 + movs r6, 0xC + bl sub_809473C + lsls r0, 24 + cmp r0, 0 + beq _080946E8 + movs r6, 0xD +_080946E8: + ldr r0, _08094710 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _08094714 + lsls r0, r4, 24 + lsrs r0, 24 + lsls r1, r5, 24 + lsrs r1, 24 + adds r2, r4, r6 + lsls r2, 24 + lsrs r2, 24 + adds r3, r5, 0 + adds r3, 0xB + lsls r3, 24 + lsrs r3, 24 + bl MenuZeroFillWindowRect + b _08094730 + .align 2, 0 +_08094710: .4byte 0x00000801 +_08094714: + lsls r0, r7, 24 + lsrs r0, 24 + mov r2, r8 + lsls r1, r2, 24 + lsrs r1, 24 + adds r2, r7, r6 + lsls r2, 24 + lsrs r2, 24 + mov r3, r8 + adds r3, 0x9 + lsls r3, 24 + lsrs r3, 24 + bl MenuZeroFillWindowRect +_08094730: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80946C8 + + thumb_func_start sub_809473C +sub_809473C: @ 809473C + movs r0, 0x1 + bx lr + thumb_func_end sub_809473C + + thumb_func_start sub_8094740 +sub_8094740: @ 8094740 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08094770 + lsls r1, r4, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + adds r2, r5, 0 + bl MenuPrint + ldr r0, _08094774 + adds r4, 0xC + lsls r4, 24 + lsrs r4, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8072B4C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08094770: .4byte gOtherText_Player +_08094774: .4byte gSaveBlock2 + thumb_func_end sub_8094740 + + thumb_func_start sub_8094778 +sub_8094778: @ 8094778 + push {r4,r5,lr} + sub sp, 0x20 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _080947AC + ldrb r1, [r0, 0x14] + mov r0, sp + bl sub_80FBFF8 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl MenuPrint + add sp, 0x20 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080947AC: .4byte gMapHeader + thumb_func_end sub_8094778 + + thumb_func_start sub_80947B0 +sub_80947B0: @ 80947B0 + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _080947F4 + lsls r1, r4, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + adds r2, r5, 0 + bl MenuPrint + bl GetBadgeCount + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + bl ConvertIntToDecimalString + adds r4, 0xC + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8072B4C + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080947F4: .4byte gOtherText_Badges + thumb_func_end sub_80947B0 + + thumb_func_start sub_80947F8 +sub_80947F8: @ 80947F8 + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08094840 + lsls r1, r4, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + adds r2, r5, 0 + bl MenuPrint + bl GetPokedexSeenCount + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r0, sp + movs r2, 0x1 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + adds r4, 0xC + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8072B4C + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08094840: .4byte gOtherText_Pokedex + thumb_func_end sub_80947F8 + + thumb_func_start sub_8094844 +sub_8094844: @ 8094844 + push {r4,r5,lr} + sub sp, 0x10 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, _08094888 + lsls r1, r4, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + adds r2, r5, 0 + bl MenuPrint + ldr r0, _0809488C + ldrh r1, [r0, 0xE] + ldrb r2, [r0, 0x10] + mov r0, sp + movs r3, 0x1 + bl FormatPlayTime + adds r4, 0xC + lsls r4, 24 + lsrs r4, 24 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8072B4C + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08094888: .4byte gOtherText_PlayTime +_0809488C: .4byte gSaveBlock2 + thumb_func_end sub_8094844 + + thumb_func_start GetBadgeCount +GetBadgeCount: @ 8094890 + push {r4,r5,lr} + movs r5, 0 + ldr r4, _080948BC +_08094896: + lsls r0, r4, 16 + lsrs r0, 16 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080948AA + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_080948AA: + adds r4, 0x1 + ldr r0, _080948C0 + cmp r4, r0 + ble _08094896 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080948BC: .4byte 0x00000807 +_080948C0: .4byte 0x0000080e + thumb_func_end GetBadgeCount + + thumb_func_start GetPokedexSeenCount +GetPokedexSeenCount: @ 80948C4 + push {lr} + bl sub_806912C + cmp r0, 0 + beq _080948D6 + movs r0, 0x1 + bl pokedex_count + b _080948DC +_080948D6: + movs r0, 0x1 + bl sub_8090F68 +_080948DC: + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end GetPokedexSeenCount + + thumb_func_start FormatPlayTime +FormatPlayTime: @ 80948E4 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r3, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r4, 16 + lsrs r4, 16 + bl ConvertIntToDecimalString + adds r5, r0, 0 + movs r0, 0 + strb r0, [r5] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0 + beq _0809490E + movs r0, 0xF0 + strb r0, [r5, 0x1] + b _08094910 +_0809490E: + strb r4, [r5, 0x1] +_08094910: + movs r0, 0 + strb r0, [r5, 0x2] + adds r5, 0x3 + adds r0, r5, 0 + adds r1, r6, 0 + movs r2, 0x2 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end FormatPlayTime + + .align 2, 0 @ Don't pad with nop. |