summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tm_case.s878
-rw-r--r--include/list_menu.h2
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/money.h4
-rw-r--r--include/pokemon.h2
-rw-r--r--include/text_window.h2
-rw-r--r--include/window.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/tm_case.c268
-rw-r--r--src/window.c2
10 files changed, 278 insertions, 885 deletions
diff --git a/asm/tm_case.s b/asm/tm_case.s
deleted file mode 100644
index d175ace3d..000000000
--- a/asm/tm_case.s
+++ /dev/null
@@ -1,878 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8133244
-sub_8133244: @ 8133244
- push {r4,lr}
- ldr r0, _081332E0 @ =gUnknown_8463190
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x5B
- movs r2, 0xE0
- bl sub_815001C
- movs r0, 0
- movs r1, 0x64
- movs r2, 0xB0
- bl sub_814FEAC
- movs r0, 0
- movs r1, 0x78
- movs r2, 0xD0
- bl sub_814FF2C
- ldr r4, _081332E4 @ =gUnknown_841F408
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xA0
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _081332E8 @ =gUnknown_8463180
- adds r0, r4, 0
- movs r1, 0xF6
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xD6
- movs r2, 0x4
- bl LoadPalette
- movs r0, 0xC0
- movs r1, 0x1
- bl sub_8107D38
- movs r4, 0
-_081332A4:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _081332A4
- 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
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081332E0: .4byte gUnknown_8463190
-_081332E4: .4byte gUnknown_841F408
-_081332E8: .4byte gUnknown_8463180
- thumb_func_end sub_8133244
-
- thumb_func_start sub_81332EC
-sub_81332EC: @ 81332EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _08133350 @ =gUnknown_8463184
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParametrized2
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133350: .4byte gUnknown_8463184
- thumb_func_end sub_81332EC
-
- thumb_func_start sub_8133354
-sub_8133354: @ 8133354
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- movs r2, 0x5B
- movs r3, 0xE
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_8133354
-
- thumb_func_start sub_8133368
-sub_8133368: @ 8133368
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- movs r2, 0x78
- movs r3, 0xD
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_8133368
-
- thumb_func_start sub_813337C
-sub_813337C: @ 813337C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x6
- movs r2, 0x64
- movs r3, 0xB
- bl DisplayMessageAndContinueTask
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813337C
-
- thumb_func_start sub_81333C4
-sub_81333C4: @ 81333C4
- push {r4,lr}
- sub sp, 0xC
- ldr r4, _081333FC @ =gUnknown_84166D3
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r2, 0x48
- subs r2, r0
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08133400 @ =gUnknown_8463184
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081333FC: .4byte gUnknown_84166D3
-_08133400: .4byte gUnknown_8463184
- thumb_func_end sub_81333C4
-
- thumb_func_start sub_8133404
-sub_8133404: @ 8133404
- push {lr}
- movs r0, 0x4
- movs r1, 0x13
- movs r2, 0
- movs r3, 0
- bl sub_8107D68
- movs r0, 0x4
- movs r1, 0x14
- movs r2, 0
- movs r3, 0xC
- bl sub_8107D68
- movs r0, 0x4
- movs r1, 0x15
- movs r2, 0
- movs r3, 0x18
- bl sub_8107D68
- movs r0, 0x4
- movs r1, 0x16
- movs r2, 0
- movs r3, 0x24
- bl sub_8107D68
- movs r0, 0x4
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_8133404
-
- thumb_func_start sub_8133444
-sub_8133444: @ 8133444
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x28
- str r0, [sp]
- movs r0, 0x30
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- cmp r4, 0
- bne _081334A8
- movs r4, 0
- movs r5, 0
-_0813346E:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 26
- lsrs r0, 24
- str r0, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x3
- str r0, [sp, 0x10]
- movs r0, 0x5
- movs r1, 0x3
- ldr r2, _081334A4 @ =gUnknown_8416213
- movs r3, 0x7
- bl sub_81332EC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _0813346E
- movs r0, 0x5
- movs r1, 0x2
- bl CopyWindowToVram
- b _0813359A
- .align 2, 0
-_081334A4: .4byte gUnknown_8416213
-_081334A8:
- adds r0, r4, 0
- bl ItemIdToBattleMoveId
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r1, _081334D8 @ =gBattleMoves
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- adds r5, r0, r1
- ldrb r1, [r5, 0x2]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x5
- movs r2, 0
- movs r3, 0
- bl sub_8107D68
- ldrb r0, [r5, 0x1]
- cmp r0, 0x1
- bhi _081334E0
- ldr r2, _081334DC @ =gUnknown_8416213
- b _081334F0
- .align 2, 0
-_081334D8: .4byte gBattleMoves
-_081334DC: .4byte gUnknown_8416213
-_081334E0:
- ldr r4, _08133524 @ =gStringVar1
- ldrb r1, [r5, 0x1]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r2, r4, 0
-_081334F0:
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x3
- str r0, [sp, 0x10]
- movs r0, 0x5
- movs r1, 0x3
- movs r3, 0x7
- bl sub_81332EC
- ldr r2, _08133528 @ =gBattleMoves
- lsls r1, r7, 1
- adds r0, r1, r7
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x3]
- adds r6, r1, 0
- cmp r0, 0
- bne _08133530
- ldr r2, _0813352C @ =gUnknown_8416213
- b _08133540
- .align 2, 0
-_08133524: .4byte gStringVar1
-_08133528: .4byte gBattleMoves
-_0813352C: .4byte gUnknown_8416213
-_08133530:
- ldr r4, _081335A8 @ =gStringVar1
- ldrb r1, [r2, 0x3]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r2, r4, 0
-_08133540:
- movs r0, 0x18
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0xFF
- mov r8, r0
- str r0, [sp, 0xC]
- movs r0, 0x3
- mov r9, r0
- str r0, [sp, 0x10]
- movs r0, 0x5
- movs r1, 0x3
- movs r3, 0x7
- bl sub_81332EC
- ldr r5, _081335A8 @ =gStringVar1
- ldr r1, _081335AC @ =gBattleMoves
- adds r0, r6, r7
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x4]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x24
- str r0, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- mov r0, r9
- str r0, [sp, 0x10]
- movs r0, 0x5
- movs r1, 0x3
- adds r2, r5, 0
- movs r3, 0x7
- bl sub_81332EC
- movs r0, 0x5
- movs r1, 0x2
- bl CopyWindowToVram
-_0813359A:
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081335A8: .4byte gStringVar1
-_081335AC: .4byte gBattleMoves
- thumb_func_end sub_8133444
-
- thumb_func_start sub_81335B0
-sub_81335B0: @ 81335B0
- push {r4,lr}
- sub sp, 0x8
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r1, _081335DC @ =gUnknown_8E99118
- movs r2, 0x10
- str r2, [sp]
- movs r2, 0xC
- str r2, [sp, 0x4]
- adds r2, r4, 0
- bl BlitBitmapToWindow
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081335DC: .4byte gUnknown_8E99118
- thumb_func_end sub_81335B0
-
- thumb_func_start sub_81335E0
-sub_81335E0: @ 81335E0
- push {lr}
- ldr r0, _08133600 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- bl GetMoney
- adds r3, r0, 0
- movs r0, 0x8
- movs r1, 0x78
- movs r2, 0xD
- bl PrintMoneyAmountInMoneyBoxWithBorder
- pop {r0}
- bx r0
- .align 2, 0
-_08133600: .4byte gSaveBlock1Ptr
- thumb_func_end sub_81335E0
-
- thumb_func_start sub_8133604
-sub_8133604: @ 8133604
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813362C @ =gUnknown_84631E0
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x5B
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl sub_80BF5D0
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813362C: .4byte gUnknown_84631E0
- thumb_func_end sub_8133604
-
- thumb_func_start sub_8133630
-sub_8133630: @ 8133630
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _08133656
- lsls r0, r1, 3
- ldr r1, _08133660 @ =gUnknown_84631E8
- adds r0, r1
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- bl sub_8133354
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
-_08133656:
- ldrb r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133660: .4byte gUnknown_84631E8
- thumb_func_end sub_8133630
-
- thumb_func_start sub_8133664
-sub_8133664: @ 8133664
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- movs r1, 0
- bl sub_810F4D8
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0xFF
- strb r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8133664
-
- thumb_func_start sub_813368C
-sub_813368C: @ 813368C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _081336E8 @ =gUnknown_8463220
- movs r1, 0x29
- movs r2, 0x2E
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r6, 0
- beq _081336F4
- adds r5, r6, 0
- subs r5, 0x21
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- ldr r0, _081336EC @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8133714
- ldr r0, _081336F0 @ =gBattleMoves
- mov r8, r0
- adds r0, r6, 0
- bl ItemIdToBattleMoveId
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r0, [r1, 0x2]
- bl sub_8133730
- adds r0, r4, 0
- adds r1, r5, 0
- b _08133700
- .align 2, 0
-_081336E8: .4byte gUnknown_8463220
-_081336EC: .4byte gSprites
-_081336F0: .4byte gBattleMoves
-_081336F4:
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _08133710 @ =gSprites
- adds r0, r1
- movs r1, 0xFF
-_08133700:
- bl sub_8133790
- adds r0, r7, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133710: .4byte gSprites
- thumb_func_end sub_813368C
-
- thumb_func_start sub_8133714
-sub_8133714: @ 8133714
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x31
- bls _08133726
- movs r1, 0x1
- bl StartSpriteAnim
- b _0813372C
-_08133726:
- movs r1, 0
- bl StartSpriteAnim
-_0813372C:
- pop {r0}
- bx r0
- thumb_func_end sub_8133714
-
- thumb_func_start sub_8133730
-sub_8133730: @ 8133730
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xC8
- lsls r0, 1
- bl IndexOfSpritePaletteTag
- lsls r0, 28
- lsrs r5, r0, 24
- ldr r2, _08133784 @ =gUnknown_203B12C
- ldr r0, _08133788 @ =gUnknown_8463238
- lsls r4, 1
- adds r4, r0
- ldrh r1, [r4]
- lsls r1, 1
- ldr r0, [r2]
- adds r0, r1
- movs r1, 0x80
- lsls r1, 1
- adds r2, r1, 0
- adds r1, r5, 0
- orrs r1, r2
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0813378C @ =gUnknown_203B10C
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bne _0813377C
- adds r1, r5, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- movs r1, 0x4
- movs r2, 0
- bl BlendPalettes
-_0813377C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08133784: .4byte gUnknown_203B12C
-_08133788: .4byte gUnknown_8463238
-_0813378C: .4byte gUnknown_203B10C
- thumb_func_end sub_8133730
-
- thumb_func_start sub_8133790
-sub_8133790: @ 8133790
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r4, 0xFF
- bne _081337A6
- movs r6, 0x1B
- movs r1, 0x36
- movs r0, 0x14
- strh r0, [r5, 0x26]
- b _081337D8
-_081337A6:
- cmp r4, 0x31
- bls _081337B0
- adds r0, r4, 0
- subs r0, 0x32
- b _081337B4
-_081337B0:
- adds r0, r4, 0
- adds r0, 0x8
-_081337B4:
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 9
- movs r1, 0x3A
- bl __divsi3
- asrs r0, 8
- movs r1, 0x29
- subs r6, r1, r0
- lsls r0, r4, 11
- movs r1, 0x3A
- bl __divsi3
- asrs r0, 8
- adds r1, r0, 0
- adds r1, 0x2E
-_081337D8:
- strh r6, [r5, 0x20]
- strh r1, [r5, 0x22]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8133790
-
- thumb_func_start sub_81337E4
-sub_81337E4: @ 81337E4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08133808 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r0, r2, r3
- movs r4, 0
- strh r1, [r0, 0x2E]
- strh r4, [r0, 0x30]
- adds r3, 0x1C
- adds r2, r3
- ldr r0, _0813380C @ =sub_8133810
- str r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08133808: .4byte gSprites
-_0813380C: .4byte sub_8133810
- thumb_func_end sub_81337E4
-
- thumb_func_start sub_8133810
-sub_8133810: @ 8133810
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08133822
- cmp r0, 0x1
- beq _08133886
- b _081338A2
-_08133822:
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0x13
- ble _08133880
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08133890
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldr r4, _08133878 @ =gBattleMoves
- ldrh r0, [r5, 0x2E]
- bl ItemIdToBattleMoveId
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1, 0x2]
- bl sub_8133730
- ldr r2, _0813387C @ =0xfffffedf
- adds r1, r2, 0
- ldrh r0, [r5, 0x2E]
- adds r1, r0
- strh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_8133714
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_8133790
- b _081338A2
- .align 2, 0
-_08133878: .4byte gBattleMoves
-_0813387C: .4byte 0xfffffedf
-_08133880:
- adds r0, r1, 0
- adds r0, 0xA
- b _081338A0
-_08133886:
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bgt _0813389C
-_08133890:
- ldr r0, _08133898 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
- b _081338A2
- .align 2, 0
-_08133898: .4byte SpriteCallbackDummy
-_0813389C:
- adds r0, r1, 0
- subs r0, 0xA
-_081338A0:
- strh r0, [r5, 0x26]
-_081338A2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8133810
-
- thumb_func_start sub_81338A8
-sub_81338A8: @ 81338A8
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _081338F4 @ =gUnknown_203B12C
- movs r5, 0x88
- lsls r5, 2
- adds r0, r5, 0
- bl Alloc
- adds r1, r0, 0
- str r1, [r4]
- ldr r0, _081338F8 @ =gUnknown_8E84F20
- bl LZDecompressWram
- ldr r0, _081338FC @ =gUnknown_8E85068
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 2
- adds r1, r2
- bl LZDecompressWram
- ldr r0, [r4]
- adds r0, r5
- str r0, [sp]
- ldr r1, _08133900 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC8
- lsls r1, 1
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081338F4: .4byte gUnknown_203B12C
-_081338F8: .4byte gUnknown_8E84F20
-_081338FC: .4byte gUnknown_8E85068
-_08133900: .4byte 0xffff0000
- thumb_func_end sub_81338A8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/list_menu.h b/include/list_menu.h
index 56106610d..9c4960e3e 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -58,5 +58,7 @@ void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
void sub_810713C(u8, u16 *, u16 *);
u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
+void sub_8107D38(u8, u8);
+void sub_8107D68(u8, u8, u8, u8);
#endif //GUARD_LIST_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index aba8b1c0d..a04385b1d 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -24,5 +24,7 @@ void sub_80BF768(void);
void sub_80BF7C8(void);
u8 sub_80BF8E4(void);
u8 sub_80BF848(s16 * a0, u16 a1);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
+void sub_80BF5D0(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const TaskFunc *ptrs);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/money.h b/include/money.h
index 25db1b157..5bcef18d4 100644
--- a/include/money.h
+++ b/include/money.h
@@ -10,9 +10,9 @@ void AddMoney(u32* moneyPtr, u32 toAdd);
void RemoveMoney(u32* moneyPtr, u32 toSub);
bool8 IsEnoughForCostInVar0x8005(void);
void SubtractMoneyFromVar0x8005(void);
-void PrintMoneyAmountInMoneyBoxInMoneyBox(u8 windowId, int amount, u8 speed);
void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
-void PrintMoneyAmountInMoneyBoxInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount);
+void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
+void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount);
void ChangeAmountInMoneyBox(int amount);
void DrawMoneyBox(int amount, u8 x, u8 y);
void HideMoneyBox(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index c08f37b5f..c84eb4c42 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -445,6 +445,8 @@ struct BattleMove
u8 flags;
};
+extern const struct BattleMove gBattleMoves[];
+
#define FLAG_MAKES_CONTACT 0x1
#define FLAG_PROTECT_AFFECTED 0x2
#define FLAG_MAGICCOAT_AFFECTED 0x4
diff --git a/include/text_window.h b/include/text_window.h
index 72ce50efc..8a4113c62 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -20,6 +20,8 @@ void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
const u16* GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
+void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette);
void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette);
+void sub_815001C(u8 windowId, u16 tileStart, u8 palette);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/include/window.h b/include/window.h
index 2705a7895..8edaf73ae 100644
--- a/include/window.h
+++ b/include/window.h
@@ -56,7 +56,7 @@ void PutWindowTilemap(u8 windowId);
void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette);
void ClearWindowTilemap(u8 windowId);
void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
-void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height);
+void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height);
void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
diff --git a/ld_script.txt b/ld_script.txt
index 53575e49c..8e3687296 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -230,7 +230,6 @@ SECTIONS {
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);
asm/pokemon_summary_screen.o(.text);
diff --git a/src/tm_case.c b/src/tm_case.c
index 0f709afea..699fda447 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -6,6 +6,7 @@
#include "palette.h"
#include "task.h"
#include "text.h"
+#include "text_window.h"
#include "menu.h"
#include "menu_helpers.h"
#include "new_menu_helpers.h"
@@ -109,20 +110,26 @@ 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);
+void sub_8133604(u8 taskId, const TaskFunc * ptrs);
u8 sub_8133630(u8 * a0, u8 a1);
void sub_8133664(u8 * a0);
u8 sub_813368C(u16 itemId);
+void sub_8133714(struct Sprite * sprite, u8 var);
+void sub_8133730(u8 type);
+void sub_8133790(struct Sprite * sprite, u8 var);
void sub_81337E4(u8 a0, u16 itemId);
+void sub_8133810(struct Sprite * sprite);
void sub_81338A8(void);
// event scripts
+extern const u8 gUnknown_8416213[];
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_84166D3[];
extern const u8 gUnknown_84166DB[];
extern const u8 gUnknown_84166E1[];
extern const u8 gUnknown_84166FF[];
@@ -134,16 +141,25 @@ extern const u8 gUnknown_8416959[];
extern const u8 gUnknown_841C587[];
extern const u8 gUnknown_841C693[];
+extern const u16 gUnknown_841F408[];
+
// 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 TaskFunc gUnknown_8463170[];
extern const u8 gUnknown_8463178[];
extern const u8 gUnknown_846317C[];
+extern const u16 gUnknown_8463180[];
+extern const struct TextColor gUnknown_8463184[];
+extern const struct WindowTemplate gUnknown_8463190[];
+extern const struct WindowTemplate gUnknown_84631E0;
+extern const struct WindowTemplate gUnknown_84631E8[];
extern const struct CompressedSpriteSheet gUnknown_8463218;
+extern const struct SpriteTemplate gUnknown_8463220;
+extern const u16 gUnknown_8463238[];
// graphics
extern const u32 gUnknown_8E845D8[];
@@ -151,6 +167,9 @@ extern const u32 gUnknown_8E84A24[];
extern const u32 gUnknown_8E84B70[];
extern const u32 gUnknown_8E84CB0[];
extern const u32 gUnknown_8E84D20[];
+extern const u32 gUnknown_8E84F20[];
+extern const u32 gUnknown_8E85068[];
+extern const u8 gUnknown_8E99118[];
void sub_81317F8(u8 a0, void (* a1)(void), u8 a2)
{
@@ -1174,3 +1193,248 @@ void sub_8132F60(u8 taskId)
break;
}
}
+
+void sub_8133244(void)
+{
+ u8 i;
+
+ InitWindows(gUnknown_8463190);
+ DeactivateAllTextPrinters();
+ sub_815001C(0, 0x5B, 0xE0);
+ sub_814FEAC(0, 0x64, 0xB0);
+ sub_814FF2C(0, 0x78, 0xD0);
+ LoadPalette(gUnknown_841F408, 0xF0, 0x20);
+ LoadPalette(gUnknown_841F408, 0xA0, 0x20);
+ LoadPalette(gUnknown_8463180, 0xF6, 0x04);
+ LoadPalette(gUnknown_8463180, 0xD6, 0x04);
+ sub_8107D38(0xc0, 0x01);
+ for (i = 0; i < 9; i++)
+ FillWindowPixelBuffer(i, 0x00);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
+{
+ AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str);
+}
+
+void sub_8133354(u8 windowId)
+{
+ SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E);
+}
+
+void sub_8133368(u8 windowId)
+{
+ SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D);
+}
+
+void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func)
+{
+ DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+void sub_81333C4(void)
+{
+ u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0);
+ box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3);
+}
+
+void sub_8133404(void)
+{
+ sub_8107D68(4, 19, 0, 0);
+ sub_8107D68(4, 20, 0, 12);
+ sub_8107D68(4, 21, 0, 24);
+ sub_8107D68(4, 22, 0, 36);
+ CopyWindowToVram(4, 2);
+}
+
+void sub_8133444(u16 itemId)
+{
+ u8 i;
+ u16 move;
+ const u8 * str;
+
+ FillWindowPixelRect(5, 0, 0, 0, 40, 48);
+ if (itemId == ITEM_NONE)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ sub_81332EC(5, 3, gUnknown_8416213, 7, 12 * i, 0, 0, 0xFF, 3);
+ }
+ CopyWindowToVram(5, 2);
+ }
+ else
+ {
+ move = ItemIdToBattleMoveId(itemId);
+ sub_8107D68(5, gBattleMoves[move].type + 1, 0, 0);
+ if (gBattleMoves[move].power < 2)
+ str = gUnknown_8416213;
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = gStringVar1;
+ }
+ sub_81332EC(5, 3, str, 7, 12, 0, 0, 0xFF, 3);
+ if (gBattleMoves[move].accuracy == 0)
+ str = gUnknown_8416213;
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = gStringVar1;
+ }
+ sub_81332EC(5, 3, str, 7, 24, 0, 0, 0xFF, 3);
+ ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ sub_81332EC(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3);
+ CopyWindowToVram(5, 2);
+ }
+}
+
+void sub_81335B0(u8 windowId, u8 x, u8 y)
+{
+ BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12);
+}
+
+void sub_81335E0(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+void sub_8133604(u8 taskId, const TaskFunc *ptrs)
+{
+ sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs);
+}
+
+u8 sub_8133630(u8 * a0, u8 a1)
+{
+ if (*a0 == 0xFF)
+ {
+ *a0 = AddWindow(&gUnknown_84631E8[a1]);
+ sub_8133354(*a0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+ return *a0;
+}
+
+void sub_8133664(u8 * a0)
+{
+ sub_810F4D8(*a0, FALSE);
+ ClearWindowTilemap(*a0);
+ RemoveWindow(*a0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ *a0 = 0xFF;
+}
+
+u8 sub_813368C(u16 itemId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0);
+ u8 r5;
+ if (itemId == ITEM_NONE)
+ {
+ sub_8133790(&gSprites[spriteId], 0xFF);
+ return spriteId;
+ }
+ else
+ {
+ r5 = itemId - 33;
+ sub_8133714(&gSprites[spriteId], r5);
+ sub_8133730(gBattleMoves[ItemIdToBattleMoveId(itemId)].type);
+ sub_8133790(&gSprites[spriteId], r5);
+ return spriteId;
+ }
+}
+
+void sub_8133714(struct Sprite * sprite, u8 idx)
+{
+ if (idx >= 50)
+ StartSpriteAnim(sprite, 1);
+ else
+ StartSpriteAnim(sprite, 0);
+}
+
+void sub_8133730(u8 type)
+{
+ u8 palIndex = IndexOfSpritePaletteTag(400) << 4;
+ LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20);
+ if (gUnknown_203B10C.unk_04 == 4)
+ {
+ BlendPalettes(1 << (0x10 + palIndex), 4, RGB_BLACK);
+ }
+}
+
+void sub_8133790(struct Sprite * sprite, u8 var)
+{
+ s32 x, y;
+ if (var == 0xFF)
+ {
+ x = 0x1B;
+ y = 0x36;
+ sprite->pos2.y = 0x14;
+ }
+ else
+ {
+ if (var >= 50)
+ var -= 50;
+ else
+ var += 8;
+ x = 0x29 - (((0xE00 * var) / 58) >> 8);
+ y = 0x2E + (((0x800 * var) / 58) >> 8);
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+}
+
+void sub_81337E4(u8 spriteId, u16 itemId)
+{
+ gSprites[spriteId].data[0] = itemId;
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].callback = sub_8133810;
+}
+
+void sub_8133810(struct Sprite * sprite)
+{
+ switch (sprite->data[1])
+ {
+ case 0:
+ if (sprite->pos2.y >= 20)
+ {
+ if (sprite->data[0] != ITEM_NONE)
+ {
+ sprite->data[1]++;
+ sub_8133730(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type);
+ sprite->data[0] -= ITEM_TM01;
+ sub_8133714(sprite, sprite->data[0]);
+ sub_8133790(sprite, sprite->data[0]);
+ }
+ else
+ sprite->callback = SpriteCallbackDummy;
+ }
+ else
+ {
+ sprite->pos2.y += 10;
+ }
+ break;
+ case 1:
+ if (sprite->pos2.y <= 0)
+ sprite->callback = SpriteCallbackDummy;
+ else
+ sprite->pos2.y -= 10;
+ }
+}
+
+void sub_81338A8(void)
+{
+ struct SpritePalette spritePalette;
+
+ gUnknown_203B12C = Alloc(0x110 * sizeof(u16));
+ LZDecompressWram(gUnknown_8E84F20, gUnknown_203B12C);
+ LZDecompressWram(gUnknown_8E85068, gUnknown_203B12C + 0x100);
+ spritePalette.data = gUnknown_203B12C + 0x110;
+ spritePalette.tag = 400;
+ LoadSpritePalette(&spritePalette);
+}
diff --git a/src/window.c b/src/window.c
index e760fc8e4..71cfa6898 100644
--- a/src/window.c
+++ b/src/window.c
@@ -320,7 +320,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height)
}
}
-void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height)
+void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height)
{
BlitBitmapRectToWindow(windowId, pixels, 0, 0, width, height, x, y, width, height);
}