summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-14 15:02:59 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-04-14 15:02:59 -0400
commited4b353795e27f362ad1abd5d31ec4bf5936b9dd (patch)
tree28df43f6b7fd01b58877b1359200454eae69bb6e
parent0cb1417de441af6e688fc4784da498bb677cc888 (diff)
tm_case through sub_8131D48
-rw-r--r--asm/tm_case.s739
-rw-r--r--include/item.h4
-rw-r--r--include/list_menu.h1
-rw-r--r--include/menu_helpers.h3
-rw-r--r--ld_script.txt1
-rw-r--r--src/tm_case.c368
-rw-r--r--sym_ewram.txt25
7 files changed, 388 insertions, 753 deletions
diff --git a/asm/tm_case.s b/asm/tm_case.s
index ac58fa0a2..28662fad3 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -5,725 +5,6 @@
.text
- thumb_func_start sub_81317F8
-sub_81317F8: @ 81317F8
- push {r4-r7,lr}
- adds r7, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r6, r2, 24
- bl sub_8131A8C
- ldr r4, _08131854 @ =gUnknown_203B118
- movs r0, 0x1C
- bl Alloc
- str r0, [r4]
- movs r1, 0
- str r1, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x8]
- ldr r1, [r4]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x7]
- cmp r5, 0x5
- beq _0813182A
- ldr r0, _08131858 @ =gUnknown_203B10C
- strb r5, [r0, 0x4]
-_0813182A:
- cmp r7, 0
- beq _08131832
- ldr r0, _08131858 @ =gUnknown_203B10C
- str r7, [r0]
-_08131832:
- cmp r6, 0xFF
- beq _0813183A
- ldr r0, _08131858 @ =gUnknown_203B10C
- strb r6, [r0, 0x5]
-_0813183A:
- ldr r2, _0813185C @ =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08131860 @ =sub_8131894
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131854: .4byte gUnknown_203B118
-_08131858: .4byte gUnknown_203B10C
-_0813185C: .4byte gTextFlags
-_08131860: .4byte sub_8131894
- thumb_func_end sub_81317F8
-
- thumb_func_start sub_8131864
-sub_8131864: @ 8131864
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8131864
-
- thumb_func_start sub_8131880
-sub_8131880: @ 8131880
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8131880
-
- thumb_func_start sub_8131894
-sub_8131894: @ 8131894
- push {lr}
-_08131896:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081318BA
- bl sub_81318C0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081318BA
- bl sub_80BF708
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08131896
-_081318BA:
- pop {r0}
- bx r0
- thumb_func_end sub_8131894
-
- thumb_func_start sub_81318C0
-sub_81318C0: @ 81318C0
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _081318E0 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x12
- bls _081318D4
- b _08131A68
-_081318D4:
- lsls r0, 2
- ldr r1, _081318E4 @ =_081318E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081318E0: .4byte gMain
-_081318E4: .4byte _081318E8
- .align 2, 0
-_081318E8:
- .4byte _08131934
- .4byte _0813193E
- .4byte _08131944
- .4byte _0813194A
- .4byte _08131950
- .4byte _08131956
- .4byte _0813195C
- .4byte _08131970
- .4byte _08131976
- .4byte _08131984
- .4byte _08131990
- .4byte _0813199E
- .4byte _081319A4
- .4byte _081319AE
- .4byte _081319B4
- .4byte _08131A04
- .4byte _08131A0A
- .4byte _08131A34
- .4byte _08131A42
-_08131934:
- bl sub_80BF768
- bl clear_scheduled_bg_copies_to_vram
- b _08131A52
-_0813193E:
- bl ScanlineEffect_Stop
- b _08131A52
-_08131944:
- bl FreeAllSpritePalettes
- b _08131A52
-_0813194A:
- bl ResetPaletteFade
- b _08131A52
-_08131950:
- bl ResetSpriteData
- b _08131A52
-_08131956:
- bl ResetTasks
- b _08131A52
-_0813195C:
- bl sub_8131AB8
- ldr r0, _0813196C @ =gUnknown_203B118
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x12]
- b _08131A52
- .align 2, 0
-_0813196C: .4byte gUnknown_203B118
-_08131970:
- bl sub_8133244
- b _08131A52
-_08131976:
- bl sub_8131B20
- lsls r0, 24
- cmp r0, 0
- bne _08131982
- b _08131A80
-_08131982:
- b _08131A52
-_08131984:
- ldr r0, _0813198C @ =gUnknown_20398A4
- bl sub_809A5E4
- b _08131A52
- .align 2, 0
-_0813198C: .4byte gUnknown_20398A4
-_08131990:
- bl sub_81320BC
- bl sub_8132120
- bl sub_8132170
- b _08131A52
-_0813199E:
- bl sub_8133404
- b _08131A52
-_081319A4:
- bl sub_8131C10
- bl sub_8131C50
- b _08131A52
-_081319AE:
- bl sub_81333C4
- b _08131A52
-_081319B4:
- ldr r0, _081319C0 @ =gUnknown_203B10C
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bne _081319C8
- ldr r0, _081319C4 @ =sub_8132F20
- b _081319CA
- .align 2, 0
-_081319C0: .4byte gUnknown_203B10C
-_081319C4: .4byte sub_8132F20
-_081319C8:
- ldr r0, _081319F4 @ =sub_81322D4
-_081319CA:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081319F8 @ =gUnknown_3005E70
- ldr r2, _081319FC @ =gUnknown_203B10C
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0x8]
- bl ListMenuInit
- ldr r2, _08131A00 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x8]
- b _08131A52
- .align 2, 0
-_081319F4: .4byte sub_81322D4
-_081319F8: .4byte gUnknown_3005E70
-_081319FC: .4byte gUnknown_203B10C
-_08131A00: .4byte gTasks
-_08131A04:
- bl sub_8132018
- b _08131A52
-_08131A0A:
- ldr r0, _08131A2C @ =gUnknown_203B10C
- ldrh r1, [r0, 0x8]
- ldrh r0, [r0, 0xA]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4
- bl sub_809A798
- lsls r0, 16
- lsrs r0, 16
- bl sub_813368C
- ldr r1, _08131A30 @ =gUnknown_203B118
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- b _08131A52
- .align 2, 0
-_08131A2C: .4byte gUnknown_203B10C
-_08131A30: .4byte gUnknown_203B118
-_08131A34:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _08131A52
-_08131A42:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08131A52:
- ldr r1, _08131A64 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08131A80
- .align 2, 0
-_08131A64: .4byte gMain
-_08131A68:
- ldr r0, _08131A78 @ =sub_8131880
- bl SetVBlankCallback
- ldr r0, _08131A7C @ =sub_8131864
- bl SetMainCallback2
- movs r0, 0x1
- b _08131A82
- .align 2, 0
-_08131A78: .4byte sub_8131880
-_08131A7C: .4byte sub_8131864
-_08131A80:
- movs r0, 0
-_08131A82:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81318C0
-
- thumb_func_start sub_8131A8C
-sub_8131A8C: @ 8131A8C
- ldr r0, _08131AA4 @ =gUnknown_203B118
- movs r1, 0
- str r1, [r0]
- ldr r0, _08131AA8 @ =gUnknown_203B120
- str r1, [r0]
- ldr r0, _08131AAC @ =gUnknown_203B124
- str r1, [r0]
- ldr r0, _08131AB0 @ =gUnknown_203B128
- str r1, [r0]
- ldr r0, _08131AB4 @ =gUnknown_203B12C
- str r1, [r0]
- bx lr
- .align 2, 0
-_08131AA4: .4byte gUnknown_203B118
-_08131AA8: .4byte gUnknown_203B120
-_08131AAC: .4byte gUnknown_203B124
-_08131AB0: .4byte gUnknown_203B128
-_08131AB4: .4byte gUnknown_203B12C
- thumb_func_end sub_8131A8C
-
- thumb_func_start sub_8131AB8
-sub_8131AB8: @ 8131AB8
- push {r4,lr}
- bl sub_80BF7C8
- ldr r4, _08131B18 @ =gUnknown_203B120
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08131B1C @ =gUnknown_8463134
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r1, [r4]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08131B18: .4byte gUnknown_203B120
-_08131B1C: .4byte gUnknown_8463134
- thumb_func_end sub_8131AB8
-
- thumb_func_start sub_8131B20
-sub_8131B20: @ 8131B20
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08131B3C @ =gUnknown_203B118
- ldr r0, [r4]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bhi _08131BF8
- lsls r0, 2
- ldr r1, _08131B40 @ =_08131B44
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08131B3C: .4byte gUnknown_203B118
-_08131B40: .4byte _08131B44
- .align 2, 0
-_08131B44:
- .4byte _08131B58
- .4byte _08131B74
- .4byte _08131B94
- .4byte _08131BAC
- .4byte _08131BDC
-_08131B58:
- bl reset_temp_tile_data_buffers
- ldr r1, _08131B70 @ =gUnknown_8E845D8
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _08131BE2
- .align 2, 0
-_08131B70: .4byte gUnknown_8E845D8
-_08131B74:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08131C06
- ldr r0, _08131B8C @ =gUnknown_8E84A24
- ldr r1, _08131B90 @ =gUnknown_203B120
- ldr r1, [r1]
- bl LZDecompressWram
- b _08131BE2
- .align 2, 0
-_08131B8C: .4byte gUnknown_8E84A24
-_08131B90: .4byte gUnknown_203B120
-_08131B94:
- ldr r4, _08131BA8 @ =gUnknown_8E84B70
- movs r0, 0x1
- bl GetBgTilemapBuffer
- adds r1, r0, 0
- adds r0, r4, 0
- bl LZDecompressWram
- b _08131BE2
- .align 2, 0
-_08131BA8: .4byte gUnknown_8E84B70
-_08131BAC:
- ldr r0, _08131BC4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08131BCC
- ldr r0, _08131BC8 @ =gUnknown_8E84CB0
- movs r1, 0
- movs r2, 0x80
- bl LoadCompressedPalette
- b _08131BE2
- .align 2, 0
-_08131BC4: .4byte gSaveBlock2Ptr
-_08131BC8: .4byte gUnknown_8E84CB0
-_08131BCC:
- ldr r0, _08131BD8 @ =gUnknown_8E84D20
- movs r1, 0
- movs r2, 0x80
- bl LoadCompressedPalette
- b _08131BE2
- .align 2, 0
-_08131BD8: .4byte gUnknown_8E84D20
-_08131BDC:
- ldr r0, _08131BF0 @ =gUnknown_8463218
- bl LoadCompressedObjectPic
-_08131BE2:
- ldr r0, _08131BF4 @ =gUnknown_203B118
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- b _08131C06
- .align 2, 0
-_08131BF0: .4byte gUnknown_8463218
-_08131BF4: .4byte gUnknown_203B118
-_08131BF8:
- bl sub_81338A8
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0x12]
- movs r0, 0x1
- b _08131C08
-_08131C06:
- movs r0, 0
-_08131C08:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8131B20
-
- thumb_func_start sub_8131C10
-sub_8131C10: @ 8131C10
- push {r4,lr}
- ldr r0, _08131C40 @ =gUnknown_20398A4
- ldr r4, _08131C44 @ =gUnknown_203B124
- ldrb r0, [r0, 0x4]
- adds r0, 0x1
- lsls r0, 3
- bl Alloc
- str r0, [r4]
- ldr r4, _08131C48 @ =gUnknown_203B128
- ldr r0, _08131C4C @ =gUnknown_203B118
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r1
- bl Alloc
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08131C40: .4byte gUnknown_20398A4
-_08131C44: .4byte gUnknown_203B124
-_08131C48: .4byte gUnknown_203B128
-_08131C4C: .4byte gUnknown_203B118
- thumb_func_end sub_8131C10
-
- thumb_func_start sub_8131C50
-sub_8131C50: @ 8131C50
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08131D28 @ =gUnknown_20398A4
- mov r8, r0
- movs r6, 0
- ldr r0, _08131D2C @ =gUnknown_203B118
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r6, r0
- bcs _08131CA0
- ldr r7, _08131D30 @ =gUnknown_203B128
-_08131C68:
- lsls r5, r6, 3
- subs r4, r5, r6
- lsls r4, 2
- adds r4, r6
- ldr r0, [r7]
- adds r0, r4
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r6, 2
- adds r1, r2
- ldrh r1, [r1]
- bl sub_8131D48
- ldr r0, _08131D34 @ =gUnknown_203B124
- ldr r0, [r0]
- adds r5, r0
- ldr r0, [r7]
- adds r0, r4
- str r0, [r5]
- str r6, [r5, 0x4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _08131D2C @ =gUnknown_203B118
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r6, r0
- bcc _08131C68
-_08131CA0:
- ldr r0, _08131D34 @ =gUnknown_203B124
- ldr r3, [r0]
- lsls r0, r6, 3
- adds r0, r3
- ldr r1, _08131D38 @ =gUnknown_84166DB
- str r1, [r0]
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- ldr r2, _08131D3C @ =gUnknown_3005E70
- str r3, [r2]
- ldr r0, _08131D2C @ =gUnknown_203B118
- ldr r3, [r0]
- ldrb r0, [r3, 0x6]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r2, 0xC]
- strb r1, [r2, 0x10]
- strb r1, [r2, 0x11]
- movs r0, 0x8
- strb r0, [r2, 0x12]
- strb r1, [r2, 0x13]
- ldrb r0, [r2, 0x16]
- movs r4, 0x8
- negs r4, r4
- ands r4, r0
- movs r0, 0x39
- negs r0, r0
- ands r4, r0
- movs r0, 0x10
- orrs r4, r0
- strb r4, [r2, 0x16]
- ldrb r1, [r2, 0x14]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r5, 0x2
- orrs r0, r5
- strb r0, [r2, 0x14]
- ldrb r1, [r3, 0x5]
- strh r1, [r2, 0xE]
- ldrb r1, [r2, 0x17]
- movs r3, 0x40
- negs r3, r3
- ands r3, r1
- orrs r3, r5
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0x14]
- movs r0, 0x30
- strb r0, [r2, 0x15]
- ldr r0, _08131D40 @ =sub_8131E18
- str r0, [r2, 0x4]
- ldr r0, _08131D44 @ =sub_8131E68
- str r0, [r2, 0x8]
- movs r0, 0x3F
- ands r3, r0
- strb r3, [r2, 0x17]
- ands r4, r0
- strb r4, [r2, 0x16]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131D28: .4byte gUnknown_20398A4
-_08131D2C: .4byte gUnknown_203B118
-_08131D30: .4byte gUnknown_203B128
-_08131D34: .4byte gUnknown_203B124
-_08131D38: .4byte gUnknown_84166DB
-_08131D3C: .4byte gUnknown_3005E70
-_08131D40: .4byte sub_8131E18
-_08131D44: .4byte sub_8131E68
- thumb_func_end sub_8131C50
-
- thumb_func_start sub_8131D48
-sub_8131D48: @ 8131D48
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r5, _08131D8C @ =gStringVar4
- ldr r1, _08131D90 @ =gUnknown_84166FF
- adds r0, r5, 0
- bl StringCopy
- movs r0, 0xA9
- lsls r0, 1
- cmp r6, r0
- bls _08131DA4
- ldr r1, _08131D94 @ =gUnknown_8463178
- adds r0, r5, 0
- bl StringAppend
- ldr r1, _08131D98 @ =gUnknown_8416226
- adds r0, r5, 0
- bl StringAppend
- ldr r4, _08131D9C @ =gStringVar1
- ldr r0, _08131DA0 @ =0xfffffeae
- adds r1, r6, r0
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- b _08131DC4
- .align 2, 0
-_08131D8C: .4byte gStringVar4
-_08131D90: .4byte gUnknown_84166FF
-_08131D94: .4byte gUnknown_8463178
-_08131D98: .4byte gUnknown_8416226
-_08131D9C: .4byte gStringVar1
-_08131DA0: .4byte 0xfffffeae
-_08131DA4:
- ldr r1, _08131DFC @ =gUnknown_8416226
- adds r0, r5, 0
- bl StringAppend
- ldr r4, _08131E00 @ =gStringVar1
- ldr r0, _08131E04 @ =0xfffffee0
- adds r1, r6, r0
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
-_08131DC4:
- ldr r4, _08131E08 @ =gStringVar4
- ldr r1, _08131E0C @ =gUnknown_846317C
- adds r0, r4, 0
- bl StringAppend
- ldr r1, _08131E10 @ =gUnknown_8416703
- adds r0, r4, 0
- bl StringAppend
- adds r0, r6, 0
- bl ItemIdToBattleMoveId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- muls r1, r0
- ldr r0, _08131E14 @ =gMoveNames
- adds r1, r0
- adds r0, r4, 0
- bl StringAppend
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131DFC: .4byte gUnknown_8416226
-_08131E00: .4byte gStringVar1
-_08131E04: .4byte 0xfffffee0
-_08131E08: .4byte gStringVar4
-_08131E0C: .4byte gUnknown_846317C
-_08131E10: .4byte gUnknown_8416703
-_08131E14: .4byte gMoveNames
- thumb_func_end sub_8131D48
-
thumb_func_start sub_8131E18
sub_8131E18: @ 8131E18
push {r4-r6,lr}
@@ -996,7 +277,7 @@ sub_8132018: @ 8132018
movs r0, 0x6E
str r0, [sp, 0x4]
str r0, [sp, 0x8]
- ldr r0, _08132050 @ =gUnknown_203B116
+ ldr r0, _08132050 @ =gUnknown_203B10C + 10
str r0, [sp, 0xC]
movs r0, 0x2
movs r1, 0xA0
@@ -1011,7 +292,7 @@ sub_8132018: @ 8132018
bx r0
.align 2, 0
_0813204C: .4byte gUnknown_203B118
-_08132050: .4byte gUnknown_203B116
+_08132050: .4byte gUnknown_203B10C + 10
thumb_func_end sub_8132018
thumb_func_start sub_8132054
@@ -1321,7 +602,7 @@ sub_813226C: @ 813226C
cmp r0, 0
bne _081322CC
ldrb r0, [r2]
- ldr r4, _081322AC @ =gUnknown_203B116
+ ldr r4, _081322AC @ =gUnknown_203B10C + 10
subs r2, r4, 0x2
adds r1, r4, 0
bl sub_810713C
@@ -1335,7 +616,7 @@ sub_813226C: @ 813226C
.align 2, 0
_081322A4: .4byte gTasks+0x8
_081322A8: .4byte gPaletteFade
-_081322AC: .4byte gUnknown_203B116
+_081322AC: .4byte gUnknown_203B10C + 10
_081322B0: .4byte gUnknown_203B118
_081322B4:
adds r0, r4, 0
@@ -1383,7 +664,7 @@ sub_81322D4: @ 81322D4
bl ListMenuHandleInput
adds r5, r0, 0
ldrb r0, [r6]
- ldr r4, _08132348 @ =gUnknown_203B116
+ ldr r4, _08132348 @ =gUnknown_203B10C + 10
subs r2, r4, 0x2
adds r1, r4, 0
bl get_coro_args_x18_x1A
@@ -1407,7 +688,7 @@ sub_81322D4: @ 81322D4
.align 2, 0
_08132340: .4byte gTasks+0x8
_08132344: .4byte gPaletteFade
-_08132348: .4byte gUnknown_203B116
+_08132348: .4byte gUnknown_203B10C + 10
_0813234C: .4byte gMain
_08132350: .4byte gSpecialVar_ItemId
_08132354:
@@ -1911,7 +1192,7 @@ sub_8132780: @ 8132780
ldr r0, _081327F0 @ =gTasks+0x8
adds r5, r0
ldrb r0, [r5]
- ldr r4, _081327F4 @ =gUnknown_203B116
+ ldr r4, _081327F4 @ =gUnknown_203B10C + 10
subs r2, r4, 0x2
adds r1, r4, 0
bl sub_810713C
@@ -1947,7 +1228,7 @@ sub_8132780: @ 8132780
bx r0
.align 2, 0
_081327F0: .4byte gTasks+0x8
-_081327F4: .4byte gUnknown_203B116
+_081327F4: .4byte gUnknown_203B10C + 10
_081327F8: .4byte gUnknown_3005E70
thumb_func_end sub_8132780
@@ -2592,7 +1873,7 @@ sub_8132D34: @ 8132D34
bl sub_809C09C
mov r3, r8
ldrb r0, [r3]
- ldr r4, _08132E00 @ =gUnknown_203B116
+ ldr r4, _08132E00 @ =gUnknown_203B10C + 10
subs r2, r4, 0x2
adds r1, r4, 0
bl sub_810713C
@@ -2634,7 +1915,7 @@ sub_8132D34: @ 8132D34
_08132DF4: .4byte gTasks+0x8
_08132DF8: .4byte gSpecialVar_ItemId
_08132DFC: .4byte gSaveBlock1Ptr
-_08132E00: .4byte gUnknown_203B116
+_08132E00: .4byte gUnknown_203B10C + 10
_08132E04: .4byte gUnknown_3005E70
_08132E08: .4byte sub_8132E0C
thumb_func_end sub_8132D34
diff --git a/include/item.h b/include/item.h
index 25177cb6e..37cc6ca70 100644
--- a/include/item.h
+++ b/include/item.h
@@ -28,6 +28,7 @@ struct BagPocket
};
extern struct BagPocket gBagPockets[];
+extern struct BagPocket gUnknown_20398A4;
void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);
void CopyItemName(u16 itemId, u8 *string);
@@ -66,4 +67,7 @@ void CopyItemName(u16, u8 *);
void sub_809A824(u16 itemId);
bool8 AddBagItem(u16 itemId, u16 amount);
+void sub_809A5E4(struct BagPocket *);
+u16 sub_809A798(u8 a0, u16 a1);
+
#endif // ITEM_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 8834e5215..22be687be 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -48,6 +48,7 @@ struct ListMenu {
};
extern struct ListMenuTemplate gUnknown_03006310;
+extern struct ListMenuTemplate gUnknown_3005E70;
// Exported ROM declarations
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index b193388e5..7bfd605c4 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -18,6 +18,9 @@ void sub_812225C(u16 *, u16 *, u8, u8);
void sub_8122298(u16 *, u16 *, u8, u8, u8);
void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
bool8 sub_81221AC(void);
+bool8 sub_80BF72C(void);
bool8 sub_80BF708(void);
+void sub_80BF768(void);
+void sub_80BF7C8(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/ld_script.txt b/ld_script.txt
index 1bd106cca..53575e49c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -229,6 +229,7 @@ SECTIONS {
src/fame_checker.o(.text);
src/menu2.o(.text);
src/oak_speech.o(.text);
+ src/tm_case.o(.text);
asm/tm_case.o(.text);
asm/menu_indicators.o(.text);
asm/pokedex_area_markers.o(.text);
diff --git a/src/tm_case.c b/src/tm_case.c
new file mode 100644
index 000000000..011af5d94
--- /dev/null
+++ b/src/tm_case.c
@@ -0,0 +1,368 @@
+#include "global.h"
+#include "malloc.h"
+#include "bg.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "task.h"
+#include "text.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "list_menu.h"
+#include "item.h"
+#include "string_util.h"
+#include "party_menu.h"
+#include "data2.h"
+#include "scanline_effect.h"
+#include "constants/items.h"
+
+struct UnkStruct_203B10C
+{
+ void (* unk_00)(void);
+ u8 unk_04;
+ u8 unk_05;
+ u8 unk_06;
+ u16 unk_08;
+ u16 unk_0a;
+};
+
+struct UnkStruct_203B118
+{
+ u32 unk_00;
+ u8 unk_04;
+ u8 unk_05;
+ u8 unk_06;
+ u8 unk_07;
+ u8 unk_08;
+ u8 filler_09[9];
+ s16 unk_12;
+ u8 filler_14[8];
+};
+
+struct UnkStruct_203B11C
+{
+ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT];
+ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT];
+ u16 unk_160;
+ u16 unk_162;
+};
+
+EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {};
+EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL;
+EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL;
+EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer
+EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL;
+EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL;
+EWRAM_DATA u16 * gUnknown_203B12C = NULL;
+
+void sub_8131894(void);
+bool8 sub_81318C0(void);
+void sub_8131A8C(void);
+void sub_8131AB8(void);
+bool8 sub_8131B20(void);
+void sub_8131C10(void);
+void sub_8131C50(void);
+void sub_8131D48(u8 * dest, u16 itemId);
+void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+void sub_8131E68(u8 windowId, s32 itemId, u8 y);
+void sub_8132018(void);
+void sub_81320BC(void);
+void sub_8132120(void);
+void sub_8132170(void);
+void sub_81322D4(u8 taskId);
+void sub_8132F20(u8 taskId);
+void sub_8133244(void);
+void sub_81333C4(void);
+void sub_8133404(void);
+u8 sub_813368C(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_84166DB[];
+extern const u8 gUnknown_84166FF[];
+extern const u8 gUnknown_8463178[];
+extern const u8 gUnknown_8416226[];
+extern const u8 gUnknown_846317C[];
+extern const u8 gUnknown_8416703[];
+
+void sub_81317F8(u8 a0, void (* a1)(void), u8 a2)
+{
+ sub_8131A8C();
+ gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118));
+ gUnknown_203B118->unk_00 = 0;
+ gUnknown_203B118->unk_08 = 0xFF;
+ gUnknown_203B118->unk_07 = 0xFF;
+ if (a0 != 5)
+ gUnknown_203B10C.unk_04 = a0;
+ if (a1 != NULL)
+ gUnknown_203B10C.unk_00 = a1;
+ if (a2 != 0xFF)
+ gUnknown_203B10C.unk_05 = a2;
+ gTextFlags.flag_2 = FALSE;
+ SetMainCallback2(sub_8131894);
+}
+
+void sub_8131864(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+void sub_8131880(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8131894(void)
+{
+ while (1)
+ {
+ if (sub_80BF72C() == TRUE)
+ break;
+ if (sub_81318C0() == TRUE)
+ break;
+ if (sub_80BF708() == TRUE)
+ break;
+ }
+}
+
+bool8 sub_81318C0(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ sub_80BF768();
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 4:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 5:
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 6:
+ sub_8131AB8();
+ gUnknown_203B118->unk_12 = 0;
+ gMain.state++;
+ break;
+ case 7:
+ sub_8133244();
+ gMain.state++;
+ break;
+ case 8:
+ if (sub_8131B20())
+ gMain.state++;
+ break;
+ case 9:
+ sub_809A5E4(&gUnknown_20398A4);
+ gMain.state++;
+ break;
+ case 10:
+ sub_81320BC();
+ sub_8132120();
+ sub_8132170();
+ gMain.state++;
+ break;
+ case 11:
+ sub_8133404();
+ gMain.state++;
+ break;
+ case 12:
+ sub_8131C10();
+ sub_8131C50();
+ gMain.state++;
+ break;
+ case 13:
+ sub_81333C4();
+ gMain.state++;
+ break;
+ case 14:
+ if (gUnknown_203B10C.unk_04 == 4)
+ taskId = CreateTask(sub_8132F20, 0);
+ else
+ taskId = CreateTask(sub_81322D4, 0);
+ gTasks[taskId].data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08);
+ gMain.state++;
+ break;
+ case 15:
+ sub_8132018();
+ gMain.state++;
+ break;
+ case 16:
+ gUnknown_203B118->unk_04 = sub_813368C(sub_809A798(POCKET_TM_CASE, gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08));
+ gMain.state++;
+ break;
+ case 17:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ gMain.state++;
+ break;
+ case 18:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(sub_8131880);
+ SetMainCallback2(sub_8131864);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_8131A8C(void)
+{
+ gUnknown_203B118 = NULL;
+ gUnknown_203B120 = NULL;
+ gUnknown_203B124 = NULL;
+ gUnknown_203B128 = NULL;
+ gUnknown_203B12C = NULL;
+}
+
+void sub_8131AB8(void)
+{
+ void ** ptr;
+ sub_80BF7C8();
+ ptr = &gUnknown_203B120;
+ *ptr = AllocZeroed(0x800);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8463134, NELEMS(gUnknown_8463134));
+ SetBgTilemapBuffer(2, *ptr);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+}
+
+bool8 sub_8131B20(void)
+{
+ switch (gUnknown_203B118->unk_12)
+ {
+ case 0:
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0);
+ gUnknown_203B118->unk_12++;
+ break;
+ case 1:
+ if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ {
+ LZDecompressWram(gUnknown_8E84A24, gUnknown_203B120);
+ gUnknown_203B118->unk_12++;
+ }
+ break;
+ case 2:
+ LZDecompressWram(gUnknown_8E84B70, GetBgTilemapBuffer(1));
+ gUnknown_203B118->unk_12++;
+ break;
+ case 3:
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ LoadCompressedPalette(gUnknown_8E84CB0, 0, 0x80);
+ else
+ LoadCompressedPalette(gUnknown_8E84D20, 0, 0x80);
+ gUnknown_203B118->unk_12++;
+ break;
+ case 4:
+ LoadCompressedObjectPic(&gUnknown_8463218);
+ gUnknown_203B118->unk_12++;
+ break;
+ default:
+ sub_81338A8();
+ gUnknown_203B118->unk_12 = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_8131C10(void)
+{
+ struct BagPocket * pocket = &gUnknown_20398A4;
+ gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem));
+ gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29);
+}
+
+void sub_8131C50(void)
+{
+ struct BagPocket * pocket = &gUnknown_20398A4;
+ u16 i;
+
+ for (i = 0; i < gUnknown_203B118->unk_06; i++)
+ {
+ sub_8131D48(gUnknown_203B128[i], pocket->itemSlots[i].itemId);
+ gUnknown_203B124[i].unk_00 = gUnknown_203B128[i];
+ gUnknown_203B124[i].unk_04 = i;
+ }
+ gUnknown_203B124[i].unk_00 = gUnknown_84166DB;
+ gUnknown_203B124[i].unk_04 = -2;
+ gUnknown_3005E70.items = gUnknown_203B124;
+ gUnknown_3005E70.totalItems = gUnknown_203B118->unk_06 + 1;
+ gUnknown_3005E70.windowId = 0;
+ gUnknown_3005E70.header_X = 0;
+ gUnknown_3005E70.item_X = 8;
+ gUnknown_3005E70.cursor_X = 0;
+ gUnknown_3005E70.lettersSpacing = 0;
+ gUnknown_3005E70.itemVerticalPadding = 2;
+ gUnknown_3005E70.upText_Y = 2;
+ gUnknown_3005E70.maxShowed = gUnknown_203B118->unk_05;
+ gUnknown_3005E70.fontId = 2;
+ gUnknown_3005E70.cursorPal = 2;
+ gUnknown_3005E70.fillValue = 0;
+ gUnknown_3005E70.cursorShadowPal = 3;
+ gUnknown_3005E70.moveCursorFunc = sub_8131E18;
+ gUnknown_3005E70.itemPrintFunc = sub_8131E68;
+ gUnknown_3005E70.cursorKind = 0;
+ gUnknown_3005E70.scrollMultiple = 0;
+}
+
+void sub_8131D48(u8 * dest, u16 itemId)
+{
+ StringCopy(gStringVar4, gUnknown_84166FF);
+ if (itemId >= ITEM_HM01)
+ {
+ StringAppend(gStringVar4, gUnknown_8463178);
+ StringAppend(gStringVar4, gUnknown_8416226);
+ ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1);
+ StringAppend(gStringVar4, gStringVar1);
+ }
+ else
+ {
+ StringAppend(gStringVar4, gUnknown_8416226);
+ ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(gStringVar4, gStringVar1);
+ }
+ StringAppend(gStringVar4, gUnknown_846317C);
+ StringAppend(gStringVar4, gUnknown_8416703);
+ StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]);
+ StringCopy(dest, gStringVar4);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 36b7c991c..0d1a18e6d 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1511,30 +1511,7 @@ gUnknown_203B0EE: @ 203B0EE
.include "src/fame_checker.o"
.include "src/oak_speech.o"
-
-gUnknown_203B10C: @ 203B10C
- .space 0xA
-
-gUnknown_203B116: @ 203B116
- .space 0x2
-
-gUnknown_203B118: @ 203B118
- .space 0x4
-
-gUnknown_203B11C: @ 203B11C
- .space 0x4
-
-gUnknown_203B120: @ 203B120
- .space 0x4
-
-gUnknown_203B124: @ 203B124
- .space 0x4
-
-gUnknown_203B128: @ 203B128
- .space 0x4
-
-gUnknown_203B12C: @ 203B12C
- .space 0x4
+ .include "src/tm_case.o"
gUnknown_203B130: @ 203B130
.space 0x10