diff options
-rw-r--r-- | asm/tm_case.s | 878 | ||||
-rw-r--r-- | include/list_menu.h | 2 | ||||
-rw-r--r-- | include/menu_helpers.h | 2 | ||||
-rw-r--r-- | include/money.h | 4 | ||||
-rw-r--r-- | include/pokemon.h | 2 | ||||
-rw-r--r-- | include/text_window.h | 2 | ||||
-rw-r--r-- | include/window.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/tm_case.c | 268 | ||||
-rw-r--r-- | src/window.c | 2 |
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); } |