summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tm_case.s1442
-rw-r--r--include/menu.h2
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/money.h3
-rw-r--r--include/party_menu.h6
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--include/shop.h1
-rw-r--r--include/teachy_tv.h6
-rw-r--r--src/tm_case.c500
9 files changed, 509 insertions, 1454 deletions
diff --git a/asm/tm_case.s b/asm/tm_case.s
index b675019ab..94ae0db6c 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -5,1448 +5,6 @@
.text
- thumb_func_start sub_81322D4
-sub_81322D4: @ 81322D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _08132340 @ =gTasks+0x8
- adds r6, r0, r1
- ldr r0, _08132344 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- bne _081323C8
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081323C8
- ldrb r0, [r6]
- bl ListMenuHandleInput
- adds r5, r0, 0
- ldrb r0, [r6]
- ldr r4, _08132348 @ =gUnknown_203B10C + 10
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl get_coro_args_x18_x1A
- ldr r0, _0813234C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08132354
- adds r0, r4, 0
- subs r0, 0xA
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _08132354
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08132350 @ =gSpecialVar_ItemId
- mov r1, r8
- strh r1, [r0]
- b _08132370
- .align 2, 0
-_08132340: .4byte gTasks+0x8
-_08132344: .4byte gPaletteFade
-_08132348: .4byte gUnknown_203B10C + 10
-_0813234C: .4byte gMain
-_08132350: .4byte gSpecialVar_ItemId
-_08132354:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _08132364
- adds r0, 0x1
- cmp r5, r0
- bne _0813237C
- b _081323C8
-_08132364:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08132378 @ =gSpecialVar_ItemId
- movs r0, 0
- strh r0, [r1]
-_08132370:
- adds r0, r7, 0
- bl sub_8132230
- b _081323C8
- .align 2, 0
-_08132378: .4byte gSpecialVar_ItemId
-_0813237C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_8131F64
- bl sub_813208C
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8131F90
- strh r5, [r6, 0x2]
- lsls r4, r5, 16
- lsrs r4, 16
- movs r0, 0x4
- adds r1, r4, 0
- bl sub_809A7B4
- strh r0, [r6, 0x4]
- movs r0, 0x4
- adds r1, r4, 0
- bl sub_809A798
- ldr r1, _081323D4 @ =gSpecialVar_ItemId
- strh r0, [r1]
- ldr r0, _081323D8 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r2, _081323DC @ =gUnknown_8463140
- ldr r0, _081323E0 @ =gUnknown_203B10C
- ldrb r0, [r0, 0x4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
-_081323C8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081323D4: .4byte gSpecialVar_ItemId
-_081323D8: .4byte gTasks
-_081323DC: .4byte gUnknown_8463140
-_081323E0: .4byte gUnknown_203B10C
- thumb_func_end sub_81322D4
-
- thumb_func_start sub_81323E4
-sub_81323E4: @ 81323E4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_8131F64
- bl sub_8132018
- ldr r1, _0813240C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08132410 @ =sub_81322D4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813240C: .4byte gTasks
-_08132410: .4byte sub_81322D4
- thumb_func_end sub_81323E4
-
- thumb_func_start sub_8132414
-sub_8132414: @ 8132414
- push {r4-r7,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x2
- bl sub_8133368
- bl sub_80BF708
- lsls r0, 24
- cmp r0, 0
- bne _08132454
- bl InUnionRoom
- cmp r0, 0x1
- beq _08132454
- ldr r4, _0813244C @ =gUnknown_203B118
- ldr r0, [r4]
- adds r0, 0x7
- movs r1, 0
- bl sub_8133630
- ldr r1, [r4]
- ldr r0, _08132450 @ =gUnknown_8463168
- str r0, [r1, 0xC]
- movs r0, 0x3
- b _08132468
- .align 2, 0
-_0813244C: .4byte gUnknown_203B118
-_08132450: .4byte gUnknown_8463168
-_08132454:
- ldr r4, _0813254C @ =gUnknown_203B118
- ldr r0, [r4]
- adds r0, 0x7
- movs r1, 0x1
- bl sub_8133630
- ldr r1, [r4]
- ldr r0, _08132550 @ =gUnknown_846316B
- str r0, [r1, 0xC]
- movs r0, 0x2
-_08132468:
- strb r0, [r1, 0x10]
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _0813254C @ =gUnknown_203B118
- ldr r1, [r6]
- ldrb r2, [r1, 0x7]
- movs r5, 0
- str r5, [sp]
- str r0, [sp, 0x4]
- ldrb r0, [r1, 0x10]
- str r0, [sp, 0x8]
- ldr r0, _08132554 @ =gUnknown_8463150
- str r0, [sp, 0xC]
- ldr r0, [r1, 0xC]
- str r0, [sp, 0x10]
- adds r0, r2, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x2
- bl AddItemMenuActionTextPrinters
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r6]
- ldrb r2, [r1, 0x7]
- str r0, [sp]
- ldrb r0, [r1, 0x10]
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r2, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
- movs r0, 0x80
- lsls r0, 1
- bl Alloc
- adds r4, r0, 0
- ldr r6, _08132558 @ =gSpecialVar_ItemId
- ldrh r1, [r6]
- bl sub_8131D48
- ldr r1, _0813255C @ =gUnknown_8416301
- adds r0, r4, 0
- bl StringAppend
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x2
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_81332EC
- adds r0, r4, 0
- bl Free
- ldrh r0, [r6]
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- beq _08132528
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x2
- bl sub_81335B0
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
-_08132528:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, _08132560 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _08132564 @ =sub_8132568
- str r0, [r1]
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813254C: .4byte gUnknown_203B118
-_08132550: .4byte gUnknown_846316B
-_08132554: .4byte gUnknown_8463150
-_08132558: .4byte gSpecialVar_ItemId
-_0813255C: .4byte gUnknown_8416301
-_08132560: .4byte gTasks
-_08132564: .4byte sub_8132568
- thumb_func_end sub_8132414
-
- thumb_func_start sub_8132568
-sub_8132568: @ 8132568
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081325E0
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _081325E0
- adds r0, 0x1
- cmp r4, r0
- bne _081325C0
- movs r0, 0x5
- bl PlaySE
- ldr r2, _081325B8 @ =gUnknown_8463150
- ldr r0, _081325BC @ =gUnknown_203B118
- ldr r1, [r0]
- ldrb r0, [r1, 0x10]
- ldr r1, [r1, 0xC]
- adds r0, r1
- subs r0, 0x1
- ldrb r0, [r0]
- lsls r0, 3
- adds r2, 0x4
- adds r0, r2
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- b _081325E0
- .align 2, 0
-_081325B8: .4byte gUnknown_8463150
-_081325BC: .4byte gUnknown_203B118
-_081325C0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _081325E8 @ =gUnknown_8463150
- ldr r0, _081325EC @ =gUnknown_203B118
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
-_081325E0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081325E8: .4byte gUnknown_8463150
-_081325EC: .4byte gUnknown_203B118
- thumb_func_end sub_8132568
-
- thumb_func_start sub_81325F0
-sub_81325F0: @ 81325F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _08132634 @ =gUnknown_203B118
- ldr r0, [r5]
- adds r0, 0x7
- bl sub_8133664
- movs r0, 0x2
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _08132638
- adds r0, r4, 0
- bl sub_81326F8
- b _0813264A
- .align 2, 0
-_08132634: .4byte gUnknown_203B118
-_08132638:
- ldr r1, _08132650 @ =gUnknown_3005E98
- ldr r0, _08132654 @ =sub_8125B40
- str r0, [r1]
- ldr r1, [r5]
- ldr r0, _08132658 @ =sub_8124C8C
- str r0, [r1]
- adds r0, r4, 0
- bl sub_8132230
-_0813264A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132650: .4byte gUnknown_3005E98
-_08132654: .4byte sub_8125B40
-_08132658: .4byte sub_8124C8C
- thumb_func_end sub_81325F0
-
- thumb_func_start sub_813265C
-sub_813265C: @ 813265C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _081326D0 @ =gTasks+0x8
- adds r0, r1
- ldrh r1, [r0, 0x2]
- movs r0, 0x4
- bl sub_809A798
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r6, _081326D4 @ =gUnknown_203B118
- ldr r0, [r6]
- adds r0, 0x7
- bl sub_8133664
- movs r0, 0x2
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r4, 0
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _081326EC
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _081326D8
- adds r0, r5, 0
- bl sub_81326F8
- b _081326F2
- .align 2, 0
-_081326D0: .4byte gTasks+0x8
-_081326D4: .4byte gUnknown_203B118
-_081326D8:
- ldr r1, [r6]
- ldr r0, _081326E8 @ =sub_8126EDC
- str r0, [r1]
- adds r0, r5, 0
- bl sub_8132230
- b _081326F2
- .align 2, 0
-_081326E8: .4byte sub_8126EDC
-_081326EC:
- adds r0, r5, 0
- bl sub_8132714
-_081326F2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813265C
-
- thumb_func_start sub_81326F8
-sub_81326F8: @ 81326F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0813270C @ =gUnknown_841632A
- ldr r3, _08132710 @ =sub_8132758
- movs r1, 0x2
- bl sub_813337C
- pop {r0}
- bx r0
- .align 2, 0
-_0813270C: .4byte gUnknown_841632A
-_08132710: .4byte sub_8132758
- thumb_func_end sub_81326F8
-
- thumb_func_start sub_8132714
-sub_8132714: @ 8132714
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08132744 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _08132748 @ =gStringVar1
- bl CopyItemName
- ldr r5, _0813274C @ =gStringVar4
- ldr r1, _08132750 @ =gUnknown_841635E
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r3, _08132754 @ =sub_8132758
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl sub_813337C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132744: .4byte gSpecialVar_ItemId
-_08132748: .4byte gStringVar1
-_0813274C: .4byte gStringVar4
-_08132750: .4byte gUnknown_841635E
-_08132754: .4byte sub_8132758
- thumb_func_end sub_8132714
-
- thumb_func_start sub_8132758
-sub_8132758: @ 8132758
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813277C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08132776
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_8132780
-_08132776:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813277C: .4byte gMain
- thumb_func_end sub_8132758
-
- thumb_func_start sub_8132780
-sub_8132780: @ 8132780
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- ldr r0, _081327F0 @ =gTasks+0x8
- adds r5, r0
- ldrb r0, [r5]
- ldr r4, _081327F4 @ =gUnknown_203B10C + 10
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl sub_810713C
- ldr r0, _081327F8 @ =gUnknown_3005E70
- subs r4, 0xA
- ldrh r1, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r1, 0x1
- bl sub_8131F90
- movs r0, 0x6
- movs r1, 0
- bl sub_810F260
- movs r0, 0x6
- bl ClearWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl sub_81323E4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081327F0: .4byte gTasks+0x8
-_081327F4: .4byte gUnknown_203B10C + 10
-_081327F8: .4byte gUnknown_3005E70
- thumb_func_end sub_8132780
-
- thumb_func_start sub_81327FC
-sub_81327FC: @ 81327FC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08132860 @ =gTasks+0x8
- adds r4, r0
- ldr r0, _08132864 @ =gUnknown_203B118
- ldr r0, [r0]
- adds r0, 0x7
- bl sub_8133664
- movs r0, 0x2
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8131F90
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r5, 0
- bl sub_81323E4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132860: .4byte gTasks+0x8
-_08132864: .4byte gUnknown_203B118
- thumb_func_end sub_81327FC
-
- thumb_func_start sub_8132868
-sub_8132868: @ 8132868
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _081328A0 @ =gTasks+0x8
- adds r0, r1
- ldrh r1, [r0, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _081328AC
- ldr r0, _081328A4 @ =gUnknown_203B118
- ldr r1, [r0]
- ldr r0, _081328A8 @ =c2_8123744
- str r0, [r1]
- adds r0, r4, 0
- bl sub_8132230
- b _081328B2
- .align 2, 0
-_081328A0: .4byte gTasks+0x8
-_081328A4: .4byte gUnknown_203B118
-_081328A8: .4byte c2_8123744
-_081328AC:
- adds r0, r4, 0
- bl sub_8132714
-_081328B2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8132868
-
- thumb_func_start sub_81328B8
-sub_81328B8: @ 81328B8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _081328F0 @ =gTasks+0x8
- adds r0, r1
- ldrh r1, [r0, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_is_unique
- lsls r0, 24
- cmp r0, 0
- bne _081328FC
- ldr r0, _081328F4 @ =gUnknown_203B118
- ldr r1, [r0]
- ldr r0, _081328F8 @ =sub_808CE60
- str r0, [r1]
- adds r0, r4, 0
- bl sub_8132230
- b _08132902
- .align 2, 0
-_081328F0: .4byte gTasks+0x8
-_081328F4: .4byte gUnknown_203B118
-_081328F8: .4byte sub_808CE60
-_081328FC:
- adds r0, r4, 0
- bl sub_8132714
-_08132902:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81328B8
-
- thumb_func_start sub_8132908
-sub_8132908: @ 8132908
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08132950 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r6, _08132954 @ =gSpecialVar_ItemId
- ldrh r0, [r6]
- bl itemid_get_market_price
- lsls r0, 16
- cmp r0, 0
- bne _08132968
- ldrh r0, [r6]
- ldr r1, _08132958 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0813295C @ =gStringVar4
- ldr r1, _08132960 @ =gUnknown_84168F1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08132964 @ =sub_8132780
- adds r0, r5, 0
- adds r2, r4, 0
- bl sub_813337C
- b _081329AE
- .align 2, 0
-_08132950: .4byte gTasks+0x8
-_08132954: .4byte gSpecialVar_ItemId
-_08132958: .4byte gStringVar1
-_0813295C: .4byte gStringVar4
-_08132960: .4byte gUnknown_84168F1
-_08132964: .4byte sub_8132780
-_08132968:
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08132980
- bl sub_81335E0
- adds r0, r5, 0
- bl sub_81329C4
- b _081329AE
-_08132980:
- cmp r0, 0x63
- ble _08132988
- movs r0, 0x63
- strh r0, [r4, 0x4]
-_08132988:
- ldrh r0, [r6]
- ldr r1, _081329B4 @ =gStringVar1
- bl CopyItemName
- ldr r4, _081329B8 @ =gStringVar4
- ldr r1, _081329BC @ =gUnknown_8416911
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _081329C0 @ =sub_8132AAC
- adds r0, r7, 0
- adds r2, r4, 0
- bl sub_813337C
-_081329AE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081329B4: .4byte gStringVar1
-_081329B8: .4byte gStringVar4
-_081329BC: .4byte gUnknown_8416911
-_081329C0: .4byte sub_8132AAC
- thumb_func_end sub_8132908
-
- thumb_func_start sub_81329C4
-sub_81329C4: @ 81329C4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08132A20 @ =gTasks+0x8
- adds r4, r0
- ldr r6, _08132A24 @ =gStringVar3
- ldrh r1, [r4, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _08132A28 @ =gStringVar4
- ldr r1, _08132A2C @ =gUnknown_8416936
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08132A30 @ =sub_8132A34
- adds r0, r5, 0
- adds r2, r4, 0
- bl sub_813337C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132A20: .4byte gTasks+0x8
-_08132A24: .4byte gStringVar3
-_08132A28: .4byte gStringVar4
-_08132A2C: .4byte gUnknown_8416936
-_08132A30: .4byte sub_8132A34
- thumb_func_end sub_81329C4
-
- thumb_func_start sub_8132A34
-sub_8132A34: @ 8132A34
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08132A44 @ =gUnknown_8463170
- bl sub_8133604
- pop {r0}
- bx r0
- .align 2, 0
-_08132A44: .4byte gUnknown_8463170
- thumb_func_end sub_8132A34
-
- thumb_func_start sub_8132A48
-sub_8132A48: @ 8132A48
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08132AA8 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x8
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x6
- movs r1, 0
- bl sub_810F260
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8131F90
- adds r0, r5, 0
- bl sub_81323E4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132AA8: .4byte gTasks+0x8
- thumb_func_end sub_8132A48
-
- thumb_func_start sub_8132AAC
-sub_8132AAC: @ 8132AAC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, _08132B48 @ =gTasks+0x8
- adds r0, r4, r6
- mov r8, r0
- movs r0, 0x7
- bl sub_8133354
- ldr r0, _08132B4C @ =gStringVar1
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r5, _08132B50 @ =gStringVar4
- ldr r1, _08132B54 @ =gUnknown_84162B9
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r0, 0x7
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0x4
- bl sub_81332EC
- mov r2, r8
- ldrh r1, [r2, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r3, r8
- movs r2, 0x10
- ldrsh r1, [r3, r2]
- muls r1, r0
- movs r0, 0x1
- bl sub_8132B5C
- bl sub_81335E0
- bl sub_8132054
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- subs r6, 0x8
- adds r4, r6
- ldr r0, _08132B58 @ =sub_8132BC8
- str r0, [r4]
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132B48: .4byte gTasks+0x8
-_08132B4C: .4byte gStringVar1
-_08132B50: .4byte gStringVar4
-_08132B54: .4byte gUnknown_84162B9
-_08132B58: .4byte sub_8132BC8
- thumb_func_end sub_8132AAC
-
- thumb_func_start sub_8132B5C
-sub_8132B5C: @ 8132B5C
- push {r4-r6,lr}
- sub sp, 0x14
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x7
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _08132BBC @ =gStringVar1
- lsls r4, 16
- asrs r4, 16
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r5, _08132BC0 @ =gStringVar4
- ldr r1, _08132BC4 @ =gUnknown_84162B9
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x7
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0x4
- bl sub_81332EC
- str r4, [sp]
- movs r0, 0x7
- movs r1, 0x38
- movs r2, 0xA
- adds r3, r6, 0
- bl PrintMoneyAmount
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132BBC: .4byte gStringVar1
-_08132BC0: .4byte gStringVar4
-_08132BC4: .4byte gUnknown_84162B9
- thumb_func_end sub_8132B5C
-
- thumb_func_start sub_8132BC8
-sub_8132BC8: @ 8132BC8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08132C14 @ =gTasks+0x8
- adds r5, r0, r1
- adds r0, r5, 0
- adds r0, 0x10
- ldrh r1, [r5, 0x4]
- bl sub_80BF848
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08132C18
- movs r0, 0x10
- ldrsh r4, [r5, r0]
- ldrh r1, [r5, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- muls r1, r0
- adds r0, r4, 0
- bl sub_8132B5C
- b _08132CA6
- .align 2, 0
-_08132C14: .4byte gTasks+0x8
-_08132C18:
- ldr r0, _08132C4C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08132C50
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_813208C
- adds r0, r4, 0
- bl sub_81329C4
- b _08132CA6
- .align 2, 0
-_08132C4C: .4byte gMain
-_08132C50:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08132CA6
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x8
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x6
- movs r1, 0
- bl sub_810F260
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_813208C
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8131F90
- adds r0, r6, 0
- bl sub_81323E4
-_08132CA6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8132BC8
-
- thumb_func_start sub_8132CAC
-sub_8132CAC: @ 8132CAC
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _08132D18 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, _08132D1C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _08132D20 @ =gStringVar1
- bl CopyItemName
- ldr r6, _08132D24 @ =gStringVar3
- ldrh r1, [r4, 0x2]
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _08132D28 @ =gStringVar4
- ldr r1, _08132D2C @ =gUnknown_8416959
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _08132D30 @ =sub_8132D34
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_813337C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132D18: .4byte gTasks+0x8
-_08132D1C: .4byte gSpecialVar_ItemId
-_08132D20: .4byte gStringVar1
-_08132D24: .4byte gStringVar3
-_08132D28: .4byte gStringVar4
-_08132D2C: .4byte gUnknown_8416959
-_08132D30: .4byte sub_8132D34
- thumb_func_end sub_8132CAC
-
- thumb_func_start sub_8132D34
-sub_8132D34: @ 8132D34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r6, r0, 2
- adds r6, r0
- lsls r6, 3
- ldr r0, _08132DF4 @ =gTasks+0x8
- mov r9, r0
- adds r1, r6, 0
- add r1, r9
- mov r8, r1
- movs r0, 0xF8
- bl PlaySE
- ldr r5, _08132DF8 @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- bl RemoveBagItem
- ldr r7, _08132DFC @ =gSaveBlock1Ptr
- ldr r4, [r7]
- movs r3, 0xA4
- lsls r3, 2
- mov r10, r3
- add r4, r10
- ldrh r0, [r5]
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r8
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r1, r0
- adds r0, r4, 0
- bl AddMoney
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- movs r2, 0x2
- bl sub_809C09C
- mov r3, r8
- ldrb r0, [r3]
- ldr r4, _08132E00 @ =gUnknown_203B10C + 10
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl sub_810713C
- bl sub_81320BC
- bl sub_8132120
- bl sub_8131C50
- ldr r0, _08132E04 @ =gUnknown_3005E70
- subs r4, 0xA
- ldrh r1, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1]
- movs r1, 0x2
- bl sub_8131F90
- ldr r0, [r7]
- add r0, r10
- bl GetMoney
- adds r1, r0, 0
- movs r0, 0x8
- movs r2, 0
- bl PrintMoneyAmountInMoneyBox
- movs r2, 0x8
- negs r2, r2
- add r9, r2
- add r6, r9
- ldr r0, _08132E08 @ =sub_8132E0C
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08132DF4: .4byte gTasks+0x8
-_08132DF8: .4byte gSpecialVar_ItemId
-_08132DFC: .4byte gSaveBlock1Ptr
-_08132E00: .4byte gUnknown_203B10C + 10
-_08132E04: .4byte gUnknown_3005E70
-_08132E08: .4byte sub_8132E0C
- thumb_func_end sub_8132D34
-
- thumb_func_start sub_8132E0C
-sub_8132E0C: @ 8132E0C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08132E60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08132E26
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08132E5A
-_08132E26:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x8
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x6
- movs r1, 0
- bl sub_810F260
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- adds r0, r4, 0
- bl sub_8132780
-_08132E5A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08132E60: .4byte gMain
- thumb_func_end sub_8132E0C
-
- thumb_func_start sub_8132E64
-sub_8132E64: @ 8132E64
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r4, _08132EFC @ =gUnknown_203B11C
- movs r0, 0xB2
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4]
- ldr r5, _08132F00 @ =gSaveBlock1Ptr
- ldr r1, [r5]
- ldr r2, _08132F04 @ =0x00000464
- mov r8, r2
- add r1, r8
- movs r2, 0xE8
- bl memcpy
- ldr r0, [r4]
- adds r0, 0xE8
- ldr r1, [r5]
- movs r6, 0xEE
- lsls r6, 2
- adds r1, r6
- movs r2, 0x78
- bl memcpy
- ldr r3, [r4]
- ldr r2, _08132F08 @ =gUnknown_203B10C
- ldrh r1, [r2, 0x8]
- movs r4, 0xB0
- lsls r4, 1
- adds r0, r3, r4
- strh r1, [r0]
- ldrh r0, [r2, 0xA]
- movs r2, 0xB1
- lsls r2, 1
- adds r1, r3, r2
- strh r0, [r1]
- ldr r0, [r5]
- add r0, r8
- movs r1, 0x3A
- bl ClearItemSlots
- ldr r0, [r5]
- adds r0, r6
- movs r1, 0x1E
- bl ClearItemSlots
- bl sub_81320AC
- ldr r0, _08132F0C @ =0x00000121
- movs r1, 0x1
- bl AddBagItem
- ldr r0, _08132F10 @ =0x00000123
- movs r1, 0x1
- bl AddBagItem
- ldr r0, _08132F14 @ =0x00000129
- movs r1, 0x1
- bl AddBagItem
- ldr r0, _08132F18 @ =0x00000143
- movs r1, 0x1
- bl AddBagItem
- ldr r1, _08132F1C @ =sub_815ABFC
- movs r0, 0x4
- movs r2, 0
- bl sub_81317F8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132EFC: .4byte gUnknown_203B11C
-_08132F00: .4byte gSaveBlock1Ptr
-_08132F04: .4byte 0x00000464
-_08132F08: .4byte gUnknown_203B10C
-_08132F0C: .4byte 0x00000121
-_08132F10: .4byte 0x00000123
-_08132F14: .4byte 0x00000129
-_08132F18: .4byte 0x00000143
-_08132F1C: .4byte sub_815ABFC
- thumb_func_end sub_8132E64
-
- thumb_func_start sub_8132F20
-sub_8132F20: @ 8132F20
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r3, r1, 3
- ldr r4, _08132F54 @ =gTasks+0x8
- adds r2, r3, r4
- ldr r0, _08132F58 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08132F4E
- strh r0, [r2, 0x10]
- strh r0, [r2, 0x12]
- adds r0, r4, 0
- subs r0, 0x8
- adds r0, r3, r0
- ldr r1, _08132F5C @ =sub_8132F60
- str r1, [r0]
-_08132F4E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08132F54: .4byte gTasks+0x8
-_08132F58: .4byte gPaletteFade
-_08132F5C: .4byte sub_8132F60
- thumb_func_end sub_8132F20
-
thumb_func_start sub_8132F60
sub_8132F60: @ 8132F60
push {r4-r7,lr}
diff --git a/include/menu.h b/include/menu.h
index f26c7efde..4a5bd8a2c 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -48,5 +48,7 @@ void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
+void sub_810F260(u8 windowId, u8 a1);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 7bfd605c4..aba8b1c0d 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -22,5 +22,7 @@ bool8 sub_80BF72C(void);
bool8 sub_80BF708(void);
void sub_80BF768(void);
void sub_80BF7C8(void);
+u8 sub_80BF8E4(void);
+u8 sub_80BF848(s16 * a0, u16 a1);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/money.h b/include/money.h
index fa63e321c..25db1b157 100644
--- a/include/money.h
+++ b/include/money.h
@@ -11,12 +11,13 @@ void RemoveMoney(u32* moneyPtr, u32 toSub);
bool8 IsEnoughForCostInVar0x8005(void);
void SubtractMoneyFromVar0x8005(void);
void PrintMoneyAmountInMoneyBoxInMoneyBox(u8 windowId, int amount, u8 speed);
-void PrintMoneyAmountInMoneyBox(u8 windowId, u8 x, u8 y, int amount, u8 speed);
+void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
void PrintMoneyAmountInMoneyBoxInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount);
void ChangeAmountInMoneyBox(int amount);
void DrawMoneyBox(int amount, u8 x, u8 y);
void HideMoneyBox(void);
void AddMoneyLabelObject(u16 x, u16 y);
void RemoveMoneyLabelObject(void);
+void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed);
#endif // GUARD_MONEY_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 2e83c1496..5f7a3a68e 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -12,10 +12,16 @@ enum {
AILMENT_BRN
};
+extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
+
bool8 MonKnowsMove(struct Pokemon *, u16);
void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
u8 pokemon_ailments_get_primary(u32 status);
u16 ItemIdToBattleMoveId(u16 itemId);
+void sub_8125B40(u8 taskId, TaskFunc func);
+void sub_8124C8C(void);
+void sub_8126EDC(void);
+void c2_8123744(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 897c5a42e..f2fbe85a7 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -13,5 +13,6 @@ void CompactPartySlots(void);
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
u8 * GetBoxNamePtr(u8 boxId);
+void sub_808CE60(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/shop.h b/include/shop.h
index 1046a590a..05f5160e6 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -8,5 +8,6 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
+void sub_809C09C(u16, u16, u8);
#endif // GUARD_SHOP_H
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
new file mode 100644
index 000000000..3eeaa3a98
--- /dev/null
+++ b/include/teachy_tv.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_TEACHY_TV_H
+#define GUARD_TEACHY_TV_H
+
+void sub_815ABFC(void);
+
+#endif //GUARD_TEACHY_TV_H
diff --git a/src/tm_case.c b/src/tm_case.c
index bc91de20f..b63260aaf 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -11,6 +11,12 @@
#include "new_menu_helpers.h"
#include "list_menu.h"
#include "item.h"
+#include "item_menu.h"
+#include "link.h"
+#include "money.h"
+#include "shop.h"
+#include "teachy_tv.h"
+#include "pokemon_storage_system.h"
#include "string_util.h"
#include "party_menu.h"
#include "data2.h"
@@ -39,7 +45,8 @@ struct UnkStruct_203B118
u8 unk_07;
u8 unk_08;
u16 unk_0a;
- u8 filler_0c[6];
+ const u8 * unk_0c;
+ u8 unk_10;
s16 unk_12;
u8 filler_14[8];
};
@@ -78,34 +85,70 @@ void sub_8132120(void);
void sub_8132170(void);
void sub_813226C(u8 taskId);
void sub_81322D4(u8 taskId);
+void sub_8132568(u8 taskId);
+void sub_81326F8(u8 taskId);
+void sub_8132714(u8 taskId);
+void sub_8132758(u8 taskId);
+void sub_8132780(u8 taskId);
+void sub_81329C4(u8 taskId);
+void sub_8132A34(u8 taskId);
+void sub_8132AAC(u8 taskId);
+void sub_8132B5C(s16 quantity, s32 value);
+void sub_8132BC8(u8 taskId);
+void sub_8132D34(u8 taskId);
+void sub_8132E0C(u8 taskId);
void sub_8132F20(u8 taskId);
+void sub_8132F60(u8 taskId);
void sub_8133244(void);
void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+void sub_8133354(u8 windowId);
+void sub_8133368(u8 windowId);
+void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func);
void sub_81333C4(void);
void sub_8133404(void);
void sub_8133444(u16 itemId);
void sub_81335B0(u8 windowId, u8 x, u8 y);
+void sub_81335E0(void);
+void sub_8133604(u8 taskId, const u8 *const *ptrs);
+u8 sub_8133630(u8 * a0, u8 a1);
+void sub_8133664(u8 * a0);
u8 sub_813368C(u16 itemId);
void sub_81337E4(u8 a0, u16 itemId);
void sub_81338A8(void);
-extern const struct BgTemplate gUnknown_8463134[3];
-extern const u32 gUnknown_8E845D8[];
-extern const u32 gUnknown_8E84A24[];
-extern const u32 gUnknown_8E84B70[];
-extern const u32 gUnknown_8E84CB0[];
-extern const u32 gUnknown_8E84D20[];
-extern const struct CompressedSpriteSheet gUnknown_8463218;
-extern const u8 gUnknown_8463178[];
-extern const u8 gUnknown_846317C[];
-
+// event scripts
extern const u8 gUnknown_8416226[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gUnknown_84162B9[];
+extern const u8 gUnknown_8416301[];
+extern const u8 gUnknown_841632A[];
+extern const u8 gUnknown_841635E[];
extern const u8 gUnknown_84166DB[];
extern const u8 gUnknown_84166E1[];
extern const u8 gUnknown_84166FF[];
extern const u8 gUnknown_8416703[];
+extern const u8 gUnknown_84168F1[];
+extern const u8 gUnknown_8416911[];
+extern const u8 gUnknown_8416936[];
+extern const u8 gUnknown_8416959[];
+
+// my rodata
+extern const struct BgTemplate gUnknown_8463134[3];
+extern void (*const gUnknown_8463140[])(u8 taskId);
+extern const struct MenuAction gUnknown_8463150[];
+extern const u8 gUnknown_8463168[];
+extern const u8 gUnknown_846316B[];
+extern const u8 *const gUnknown_8463170[];
+extern const u8 gUnknown_8463178[];
+extern const u8 gUnknown_846317C[];
+extern const struct CompressedSpriteSheet gUnknown_8463218;
+
+// graphics
+extern const u32 gUnknown_8E845D8[];
+extern const u32 gUnknown_8E84A24[];
+extern const u32 gUnknown_8E84B70[];
+extern const u32 gUnknown_8E84CB0[];
+extern const u32 gUnknown_8E84D20[];
void sub_81317F8(u8 a0, void (* a1)(void), u8 a2)
{
@@ -565,3 +608,438 @@ void sub_813226C(u8 taskId)
DestroyTask(taskId);
}
}
+
+void sub_81322D4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 input;
+
+ if (!gPaletteFade.active)
+ {
+ if (sub_80BF72C() != TRUE)
+ {
+ input = ListMenuHandleInput(data[0]);
+ get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = ITEM_NONE;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ sub_8132230(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_8131F64(1);
+ sub_813208C();
+ sub_8131F90(data[0], 2);
+ data[1] = input;
+ data[2] = sub_809A7B4(POCKET_TM_CASE, input);
+ gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input);
+ gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04];
+ break;
+ }
+ }
+ }
+ }
+}
+
+void sub_81323E4(u8 taskId)
+{
+ sub_8131F64(0);
+ sub_8132018();
+ gTasks[taskId].func = sub_81322D4;
+}
+
+void sub_8132414(u8 taskId)
+{
+ u8 * strbuf;
+ sub_8133368(2);
+ if (!sub_80BF708() && InUnionRoom() != TRUE)
+ {
+ sub_8133630(&gUnknown_203B118->unk_07, 0);
+ gUnknown_203B118->unk_0c = gUnknown_8463168;
+ gUnknown_203B118->unk_10 = 3;
+ }
+ else
+ {
+ sub_8133630(&gUnknown_203B118->unk_07, 1);
+ gUnknown_203B118->unk_0c = gUnknown_846316B;
+ gUnknown_203B118->unk_10 = 2;
+ }
+ AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c);
+ ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0);
+ strbuf = Alloc(256);
+ sub_8131D48(strbuf, gSpecialVar_ItemId);
+ StringAppend(strbuf, gUnknown_8416301);
+ sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1);
+ Free(strbuf);
+ if (itemid_is_unique(gSpecialVar_ItemId))
+ {
+ sub_81335B0(2, 0, 2);
+ CopyWindowToVram(2, 2);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ gTasks[taskId].func = sub_8132568;
+}
+
+void sub_8132568(u8 taskId)
+{
+ s8 input;
+
+ if (sub_80BF72C() != TRUE)
+ {
+ input = ProcessMenuInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId);
+ break;
+ }
+ }
+}
+
+void sub_81325F0(u8 taskId)
+{
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ sub_81326F8(taskId);
+ }
+ else
+ {
+ gUnknown_3005E98 = sub_8125B40;
+ gUnknown_203B118->unk_00 = sub_8124C8C;
+ sub_8132230(taskId);
+ }
+}
+
+void sub_813265C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]);
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ if (!itemid_is_unique(itemId))
+ {
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ sub_81326F8(taskId);
+ }
+ else
+ {
+ gUnknown_203B118->unk_00 = sub_8126EDC;
+ sub_8132230(taskId);
+ }
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_81326F8(u8 taskId)
+{
+ sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758);
+}
+
+void sub_8132714(u8 taskId)
+{
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841635E);
+ sub_813337C(taskId, 2, gStringVar4, sub_8132758);
+}
+
+void sub_8132758(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_8132780(taskId);
+ }
+}
+
+void sub_8132780(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08);
+ sub_8131F90(data[0], 1);
+ sub_810F260(6, 0);
+ ClearWindowTilemap(6);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_81323E4(taskId);
+}
+
+void sub_81327FC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(0);
+ sub_8131F90(data[0], 1);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_81323E4(taskId);
+}
+
+void sub_8132868(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1])))
+ {
+ gUnknown_203B118->unk_00 = c2_8123744;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_81328B8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1])))
+ {
+ gUnknown_203B118->unk_00 = sub_808CE60;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_8132908(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (itemid_get_market_price(gSpecialVar_ItemId) == 0)
+ {
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84168F1);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780);
+ }
+ else
+ {
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ sub_81335E0();
+ sub_81329C4(taskId);
+ }
+ else
+ {
+ if (data[2] > 99)
+ data[2] = 99;
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416911);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC);
+ }
+ }
+}
+
+void sub_81329C4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416936);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34);
+}
+
+void sub_8132A34(u8 taskId)
+{
+ sub_8133604(taskId, gUnknown_8463170);
+}
+
+void sub_8132A48(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_8131F90(data[0], 1);
+ sub_81323E4(taskId);
+}
+
+void sub_8132AAC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_8133354(7);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162B9);
+ sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+ sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]);
+ sub_81335E0();
+ sub_8132054();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ gTasks[taskId].func = sub_8132BC8;
+}
+
+void sub_8132B5C(s16 quantity, s32 amount)
+{
+ FillWindowPixelBuffer(7, 0x11);
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162B9);
+ sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+ PrintMoneyAmount(7, 0x38, 0x0A, amount, 0);
+}
+
+void sub_8132BC8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (sub_80BF848(&data[8], data[2]) == 1)
+ {
+ sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(7, 0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_813208C();
+ sub_81329C4(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(7, 0);
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(3);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_813208C();
+ sub_8131F90(data[0], 1);
+ sub_81323E4(taskId);
+ }
+}
+
+void sub_8132CAC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416959);
+ sub_813337C(taskId, 2, gStringVar4, sub_8132D34);
+}
+
+void sub_8132D34(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ PlaySE(0xF8);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
+ sub_809C09C(gSpecialVar_ItemId, data[8], 2);
+ sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ sub_81320BC();
+ sub_8132120();
+ sub_8131C50();
+ data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08);
+ sub_8131F90(data[0], 2);
+ PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0);
+ gTasks[taskId].func = sub_8132E0C;
+}
+
+void sub_8132E0C(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ sub_8132780(taskId);
+ }
+}
+
+void sub_8132E64(void)
+{
+ gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C));
+ memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
+ memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
+ gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08;
+ gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a;
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM));
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems));
+ sub_81320AC();
+ AddBagItem(ITEM_TM01, 1);
+ AddBagItem(ITEM_TM03, 1);
+ AddBagItem(ITEM_TM09, 1);
+ AddBagItem(ITEM_TM35, 1);
+ sub_81317F8(4, sub_815ABFC, 0);
+}
+
+void sub_8132F20(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ data[8] = 0;
+ data[9] = 0;
+ gTasks[taskId].func = sub_8132F60;
+ }
+}