diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-16 21:14:16 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-16 21:14:16 -0400 |
commit | 632a7e8c08158470cbe5120fc8c8ec0141fe7303 (patch) | |
tree | ac4ff1dd4299ec969f72048697aed969dc9a944b | |
parent | 105716d701e54270179c20425dfcc1e396211519 (diff) |
finish item_pc
-rw-r--r-- | asm/item_pc.s | 728 | ||||
-rw-r--r-- | data/data_83FECCC.s | 11 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | src/item_pc.c | 305 | ||||
-rw-r--r-- | sym_ewram.txt | 4 |
6 files changed, 307 insertions, 743 deletions
diff --git a/asm/item_pc.s b/asm/item_pc.s deleted file mode 100644 index 49de9cebb..000000000 --- a/asm/item_pc.s +++ /dev/null @@ -1,728 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_810E578 -sub_810E578: @ 810E578 - 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, _0810E5D4 @ =gTasks+0x8 - adds r5, r0 - movs r0, 0x2 - bl sub_810EAF0 - movs r0, 0x1 - bl PutWindowTilemap - ldrb r0, [r5] - ldr r4, _0810E5D8 @ =gUnknown_203ADCC + 0x4 - adds r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenu - bl sub_810DDA4 - bl sub_810DBF0 - bl sub_810D878 - ldr r0, _0810E5DC @ =gMultiuseListMenuTemplate - subs r4, 0x4 - ldrh r1, [r4, 0x4] - ldrh r2, [r4, 0x6] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r6, 0 - bl sub_810DFB0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810E5D4: .4byte gTasks+0x8 -_0810E5D8: .4byte gUnknown_203ADCC + 0x4 -_0810E5DC: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_810E578 - - thumb_func_start sub_810E5E0 -sub_810E5E0: @ 810E5E0 - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 16 - lsrs r0, 16 - bl ItemPc_GetItemIdBySlotId - lsls r0, 16 - lsrs r0, 16 - ldr r6, _0810E660 @ =gStringVar1 - adds r1, r6, 0 - bl CopyItemName - ldr r5, _0810E664 @ =gStringVar4 - ldr r1, _0810E668 @ =gUnknown_84177AC - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - bl sub_810EAB4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - str r1, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - adds r2, r5, 0 - movs r3, 0 - bl AddTextPrinterParameterized - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, _0810E66C @ =gText_TimesStrVar1 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x3 - bl sub_810EA9C - movs r0, 0xA - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x3 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x8 - bl sub_810EA34 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810E660: .4byte gStringVar1 -_0810E664: .4byte gStringVar4 -_0810E668: .4byte gUnknown_84177AC -_0810E66C: .4byte gText_TimesStrVar1 - thumb_func_end sub_810E5E0 - - thumb_func_start sub_810E670 -sub_810E670: @ 810E670 - push {r4,lr} - sub sp, 0x14 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x1C - str r0, [sp] - movs r0, 0xC - str r0, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x11 - movs r2, 0xA - movs r3, 0xA - bl FillWindowPixelRect - ldr r0, _0810E6CC @ =gStringVar1 - lsls r4, 16 - asrs r4, 16 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _0810E6D0 @ =gStringVar4 - ldr r1, _0810E6D4 @ =gText_TimesStrVar1 - adds r0, r4, 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, 0x3 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0x8 - bl sub_810EA34 - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810E6CC: .4byte gStringVar1 -_0810E6D0: .4byte gStringVar4 -_0810E6D4: .4byte gText_TimesStrVar1 - thumb_func_end sub_810E670 - - thumb_func_start sub_810E6D8 -sub_810E6D8: @ 810E6D8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0810E708 @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0x10 - ldrh r1, [r4, 0x4] - bl sub_80BF848 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810E70C - movs r1, 0x10 - ldrsh r0, [r4, r1] - bl sub_810E670 - b _0810E796 - .align 2, 0 -_0810E708: .4byte gTasks+0x8 -_0810E70C: - ldr r0, _0810E74C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810E750 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_810EAF0 - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl sub_810DAB4 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - bl sub_810DBD0 - adds r0, r5, 0 - bl sub_810E418 - b _0810E796 - .align 2, 0 -_0810E74C: .4byte gMain -_0810E750: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0810E796 - movs r0, 0x5 - bl PlaySE - movs r0, 0x3 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0x1 - bl sub_810EAF0 - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl sub_810DAB4 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - bl sub_810DBD0 - adds r0, r6, 0 - bl sub_810DFB0 -_0810E796: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_810E6D8 - - thumb_func_start sub_810E79C -sub_810E79C: @ 810E79C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0810E7DC - movs r0, 0x4 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0 - bl sub_810EAF0 - movs r0, 0x4 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - ldr r1, _0810E7D4 @ =gText_ThereIsNoPokemon - ldr r2, _0810E7D8 @ =sub_810E848 - adds r0, r4, 0 - bl sub_810EB30 - b _0810E7EA - .align 2, 0 -_0810E7D4: .4byte gText_ThereIsNoPokemon -_0810E7D8: .4byte sub_810E848 -_0810E7DC: - ldr r0, _0810E7F0 @ =gUnknown_203ADBC - ldr r1, [r0] - ldr r0, _0810E7F4 @ =sub_810E7F8 - str r0, [r1] - adds r0, r4, 0 - bl sub_810DC8C -_0810E7EA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810E7F0: .4byte gUnknown_203ADBC -_0810E7F4: .4byte sub_810E7F8 - thumb_func_end sub_810E79C - - thumb_func_start sub_810E7F8 -sub_810E7F8: @ 810E7F8 - push {lr} - sub sp, 0xC - movs r0, 0x6 - str r0, [sp] - ldr r0, _0810E82C @ =sub_811FB28 - str r0, [sp, 0x4] - ldr r0, _0810E830 @ =sub_810E838 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - movs r3, 0 - bl sub_811EA44 - bl sub_810DD54 - lsls r0, 24 - lsrs r0, 24 - bl ItemPc_GetItemIdBySlotId - ldr r1, _0810E834 @ =gUnknown_203B0A0 - strh r0, [r1, 0xC] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0810E82C: .4byte sub_811FB28 -_0810E830: .4byte sub_810E838 -_0810E834: .4byte gUnknown_203B0A0 - thumb_func_end sub_810E7F8 - - thumb_func_start sub_810E838 -sub_810E838: @ 810E838 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl sub_810D3F4 - pop {r0} - bx r0 - thumb_func_end sub_810E838 - - thumb_func_start sub_810E848 -sub_810E848: @ 810E848 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0810E898 @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _0810E89C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810E892 - movs r0, 0x5 - bl PlaySE - movs r0, 0x5 - movs r1, 0 - bl sub_810F260 - movs r0, 0x5 - bl ClearWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - ldrb r0, [r5] - movs r1, 0x1 - bl sub_810DAB4 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r4, 0 - bl sub_810DFB0 -_0810E892: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810E898: .4byte gTasks+0x8 -_0810E89C: .4byte gMain - thumb_func_end sub_810E848 - - thumb_func_start sub_810E8A0 -sub_810E8A0: @ 810E8A0 - 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, _0810E8EC @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x4 - movs r1, 0 - bl sub_810F4D8 - movs r0, 0 - bl sub_810EAF0 - movs r0, 0x4 - bl ClearWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl sub_810DAB4 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r5, 0 - bl sub_810DFB0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810E8EC: .4byte gTasks+0x8 - thumb_func_end sub_810E8A0 - - thumb_func_start sub_810E8F0 -sub_810E8F0: @ 810E8F0 - push {r4,lr} - ldr r0, _0810E974 @ =gUnknown_8453F98 - bl InitWindows - bl DeactivateAllTextPrinters - movs r1, 0xF0 - lsls r1, 2 - movs r0, 0 - movs r2, 0xE0 - bl sub_815001C - ldr r1, _0810E978 @ =0x000003a3 - movs r0, 0 - movs r2, 0xC0 - bl sub_814FF2C - movs r1, 0xEB - lsls r1, 2 - movs r0, 0 - movs r2, 0xB0 - bl sub_814FEAC - movs r0, 0x2 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0810E97C @ =gTMCaseMainWindowPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - movs r4, 0 -_0810E938: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0810E938 - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - movs r4, 0 - ldr r3, _0810E980 @ =gUnknown_203ADD8 - movs r2, 0xFF -_0810E95C: - adds r0, r4, r3 - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0810E95C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810E974: .4byte gUnknown_8453F98 -_0810E978: .4byte 0x000003a3 -_0810E97C: .4byte gTMCaseMainWindowPalette -_0810E980: .4byte gUnknown_203ADD8 - thumb_func_end sub_810E8F0 - - thumb_func_start sub_810E984 -sub_810E984: @ 810E984 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x10 - ldr r6, [sp, 0x28] - ldr r4, [sp, 0x2C] - mov r8, r4 - ldr r4, [sp, 0x30] - mov r9, r4 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r6, 24 - lsrs r6, 24 - mov r4, r8 - lsls r4, 24 - lsrs r4, 24 - mov r8, r4 - mov r4, r9 - lsls r4, 24 - lsrs r4, 24 - mov r9, r4 - str r1, [sp] - mov r1, sp - strb r0, [r1, 0x4] - movs r0, 0x3 - strb r0, [r1, 0x5] - mov r0, sp - strb r2, [r0, 0x6] - strb r3, [r0, 0x7] - strb r2, [r0, 0x8] - strb r3, [r0, 0x9] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r5, 0xF - adds r0, r5, 0 - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - strb r0, [r2, 0xD] - mov r1, sp - movs r0, 0x30 - strb r0, [r1, 0xD] - movs r0, 0x3 - movs r1, 0x4 - bl GetFontAttribute - mov r1, sp - ands r5, r0 - ldrb r0, [r1, 0xC] - ands r4, r0 - orrs r4, r5 - strb r4, [r1, 0xC] - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - mov r1, sp - adds r6, r0 - strb r6, [r1, 0xA] - movs r0, 0x3 - movs r1, 0x3 - bl GetFontAttribute - mov r1, sp - add r8, r0 - mov r0, r8 - strb r0, [r1, 0xB] - mov r0, sp - mov r1, r9 - movs r2, 0 - bl AddTextPrinter - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_810E984 - - thumb_func_start sub_810EA34 -sub_810EA34: @ 810EA34 - 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, _0810EA98 @ =gUnknown_8453F8C - 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 AddTextPrinterParameterized4 - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810EA98: .4byte gUnknown_8453F8C - thumb_func_end sub_810EA34 - - thumb_func_start sub_810EA9C -sub_810EA9C: @ 810EA9C - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xF0 - lsls r2, 2 - movs r1, 0 - movs r3, 0xE - bl SetWindowBorderStyle - pop {r0} - bx r0 - thumb_func_end sub_810EA9C - - thumb_func_start sub_810EAB4 -sub_810EAB4: @ 810EAB4 - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0810EAE4 @ =gUnknown_203ADD8 - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - bne _0810EADC - lsls r0, r1, 3 - ldr r1, _0810EAE8 @ =gUnknown_8453FD0 - adds r0, r1 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - ldr r2, _0810EAEC @ =0x000003a3 - movs r1, 0x1 - movs r3, 0xC - bl SetWindowBorderStyle -_0810EADC: - ldrb r0, [r4] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0810EAE4: .4byte gUnknown_203ADD8 -_0810EAE8: .4byte gUnknown_8453FD0 -_0810EAEC: .4byte 0x000003a3 - thumb_func_end sub_810EAB4 - - thumb_func_start sub_810EAF0 -sub_810EAF0: @ 810EAF0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0810EB1C @ =gUnknown_203ADD8 - adds r4, r0 - ldrb r0, [r4] - movs r1, 0 - bl sub_810F4D8 - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810EB1C: .4byte gUnknown_203ADD8 - thumb_func_end sub_810EAF0 - - thumb_func_start sub_810EB20 -sub_810EB20: @ 810EB20 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0810EB2C @ =gUnknown_203ADD8 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0810EB2C: .4byte gUnknown_203ADD8 - thumb_func_end sub_810EB20 - - thumb_func_start sub_810EB30 -sub_810EB30: @ 810EB30 - push {r4-r6,lr} - sub sp, 0x10 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetTextSpeedSetting - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xEB - lsls r2, 2 - movs r1, 0x2 - str r1, [sp] - str r0, [sp, 0x4] - str r5, [sp, 0x8] - str r6, [sp, 0xC] - adds r0, r4, 0 - movs r1, 0x5 - movs r3, 0xB - bl DisplayMessageAndContinueTask - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_810EB30 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 6a38913d5..2481f64d6 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -3073,16 +3073,7 @@ gUnknown_8453094:: @ 8453094 .section .rodata.8453F6C -// item_pc.o -gUnknown_8453F8C:: @ 8453F8C - .incbin "baserom.gba", 0x453F8C, 0xC - -gUnknown_8453F98:: @ 8453F98 - .incbin "baserom.gba", 0x453F98, 0x38 - -gUnknown_8453FD0:: @ 8453FD0 - .incbin "baserom.gba", 0x453FD0, 0x18 - +// mailbox_pc.o gUnknown_8453FE8:: @ 8453FE8 .incbin "baserom.gba", 0x453FE8, 0x18 diff --git a/include/party_menu.h b/include/party_menu.h index 01cd0ef57..144e735de 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -51,5 +51,6 @@ void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); void GetMonNickname(const struct Pokemon * mon, u8 * dest); void sub_81202F8(const u8 * src, u8 a1); bool8 sub_8120370(void); +void sub_811EA44(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); #endif // GUARD_PARTY_MENU_H diff --git a/include/strings.h b/include/strings.h index e9a6be2bd..fbdfeec2d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -155,6 +155,7 @@ extern const u8 gUnknown_84162FF[]; extern const u8 gUnknown_841633F[]; extern const u8 gUnknown_8416655[]; extern const u8 gUnknown_841778A[]; +extern const u8 gUnknown_84177AC[]; extern const u8 gUnknown_84177C5[]; extern const u8 gUnknown_84178A7[]; extern const u8 gUnknown_84178B5[]; diff --git a/src/item_pc.c b/src/item_pc.c index 753463761..f158831c9 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -24,6 +24,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "text_window.h" #include "constants/items.h" #include "constants/songs.h" @@ -52,6 +53,7 @@ EWRAM_DATA u8 * gUnknown_203ADC0 = NULL; EWRAM_DATA struct ListMenuItem * gUnknown_203ADC4 = NULL; EWRAM_DATA void * gUnknown_203ADC8 = NULL; EWRAM_DATA struct ItemPcStaticResources gUnknown_203ADCC = {}; +EWRAM_DATA u8 gUnknown_203ADD8[3] = {}; extern const struct CompressedSpriteSheet gUnknown_83D4240; extern const struct CompressedSpritePalette gUnknown_83D4248; @@ -89,15 +91,19 @@ void sub_810E418(u8 taskId); void sub_810E4F4(u8 taskId); void sub_810E548(u8 taskId); void sub_810E578(u8 taskId); -void sub_810E5E0(u16 itemId); +void sub_810E5E0(u16 slotId); void sub_810E6D8(u8 taskId); void sub_810E79C(u8 taskId); +void sub_810E7F8(void); +void sub_810E838(void); +void sub_810E848(u8 taskId); void sub_810E8A0(u8 taskId); void sub_810E8F0(void); void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); void sub_810EA9C(u8 windowId); u8 sub_810EAB4(u8 idx); void sub_810EAF0(u8 idx); +void sub_810EB30(u8 taskId, const u8 * str, TaskFunc taskFunc); const struct BgTemplate gUnknown_8453F6C[2] = { { @@ -119,6 +125,93 @@ const struct MenuAction gUnknown_8453F74[] = { {gFameCheckerText_Cancel, {.void_u8 = sub_810E8A0}} }; +const struct TextColor gUnknown_8453F8C[] = { + {0, 1, 2}, + {0, 2, 3}, + {0, 3, 2}, + {0, 10, 2} +}; + +const struct WindowTemplate gUnknown_8453F98[] = { + { + .bg = 0, + .tilemapLeft = 0x07, + .tilemapTop = 0x01, + .width = 0x13, + .height = 0x0c, + .paletteNum = 0x0f, + .baseBlock = 0x02bf + }, { + .bg = 0, + .tilemapLeft = 0x05, + .tilemapTop = 0x0e, + .width = 0x19, + .height = 0x06, + .paletteNum = 0x0d, + .baseBlock = 0x0229 + }, { + .bg = 0, + .tilemapLeft = 0x01, + .tilemapTop = 0x01, + .width = 0x05, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0215 + }, { + .bg = 0, + .tilemapLeft = 0x18, + .tilemapTop = 0x0f, + .width = 0x05, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x0201 + }, { + .bg = 0, + .tilemapLeft = 0x16, + .tilemapTop = 0x0d, + .width = 0x07, + .height = 0x06, + .paletteNum = 0x0f, + .baseBlock = 0x01d7 + }, { + .bg = 0, + .tilemapLeft = 0x02, + .tilemapTop = 0x0f, + .width = 0x1a, + .height = 0x04, + .paletteNum = 0x0b, + .baseBlock = 0x016f + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_8453FD0[] = { + { + .bg = 0, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x0e, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x0137 + }, { + .bg = 0, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x10, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x0137 + }, { + .bg = 0, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x17, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x009b + } +}; + void sub_810D3F4(u8 a0, MainCallback callback) { u8 i; @@ -781,7 +874,7 @@ void sub_810E3A4(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810F4D8(4, 0); + sub_810F4D8(4, FALSE); sub_810EAF0(0); ClearWindowTilemap(4); data[8] = 1; @@ -847,3 +940,211 @@ void sub_810E548(u8 taskId) sub_810E578(taskId); } } + +void sub_810E578(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810EAF0(2); + PutWindowTilemap(1); + DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + sub_810DDA4(); + sub_810DBF0(); + sub_810D878(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + schedule_bg_copy_tilemap_to_vram(0); + sub_810DFB0(taskId); +} + +void sub_810E5E0(u16 slotId) +{ + u16 itemId = ItemPc_GetItemIdBySlotId(slotId); + + CopyItemName(itemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_84177AC); + AddTextPrinterParameterized(sub_810EAB4(1), 2, gStringVar4, 0, 2, 0, NULL); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_810EA9C(3); + sub_810EA34(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_810E670(s16 quantity) +{ + FillWindowPixelRect(3, 0x11, 10, 10, 28, 12); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_810EA34(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); +} + +void sub_810E6D8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (sub_80BF848(&data[8], data[2]) == TRUE) + sub_810E670(data[8]); + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810EAF0(1); + ClearWindowTilemap(3); + PutWindowTilemap(0); + sub_810DAB4(data[0], 1); + schedule_bg_copy_tilemap_to_vram(0); + sub_810DBD0(); + sub_810E418(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(3, FALSE); + sub_810EAF0(1); + ClearWindowTilemap(3); + PutWindowTilemap(0); + PutWindowTilemap(1); + sub_810DAB4(data[0], 1); + schedule_bg_copy_tilemap_to_vram(0); + sub_810DBD0(); + sub_810DFB0(taskId); + } +} + +void sub_810E79C(u8 taskId) +{ + if (CalculatePlayerPartyCount() == 0) + { + sub_810F4D8(4, FALSE); + sub_810EAF0(0); + ClearWindowTilemap(4); + PutWindowTilemap(0); + sub_810EB30(taskId, gText_ThereIsNoPokemon, sub_810E848); + } + else + { + gUnknown_203ADBC->field_00 = sub_810E7F8; + sub_810DC8C(taskId); + } +} + +void sub_810E7F8(void) +{ + sub_811EA44(0, 0, 6, 0, 6, sub_811FB28, sub_810E838); + gUnknown_203B0A0.unkC = ItemPc_GetItemIdBySlotId(sub_810DD54()); +} + +void sub_810E838(void) +{ + sub_810D3F4(1, NULL); +} + +void sub_810E848(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F260(5, 0); + ClearWindowTilemap(5); + PutWindowTilemap(1); + sub_810DAB4(data[0], 1); + schedule_bg_copy_tilemap_to_vram(0); + sub_810DFB0(taskId); + } +} + +void sub_810E8A0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810F4D8(4, FALSE); + sub_810EAF0(0); + ClearWindowTilemap(4); + PutWindowTilemap(0); + PutWindowTilemap(1); + sub_810DAB4(data[0], 1); + schedule_bg_copy_tilemap_to_vram(0); + sub_810DFB0(taskId); +} + +void sub_810E8F0(void) +{ + u8 i; + + InitWindows(gUnknown_8453F98); + DeactivateAllTextPrinters(); + sub_815001C(0, 0x3C0, 0xE0); + sub_814FF2C(0, 0x3A3, 0xC0); + sub_814FEAC(0, 0x3AC, 0xB0); + LoadPalette(stdpal_get(2), 0xD0, 0x20); + LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20); + for (i = 0; i < 3; i++) + { + FillWindowPixelBuffer(i, 0x00); + PutWindowTilemap(i); + } + schedule_bg_copy_tilemap_to_vram(0); + for (i = 0; i < 3; i++) + gUnknown_203ADD8[i] = 0xFF; +} + +void sub_810E984(u8 windowId, const u8 * string, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed) +{ + struct TextPrinterTemplate template; + + template.currentChar = string; + template.windowId = windowId; + template.fontId = 3; + template.x = x; + template.y = y; + template.currentX = x; + template.currentY = y; + template.fgColor = 2; + template.bgColor = 0; + template.shadowColor = 3; + template.unk = GetFontAttribute(3, FONTATTR_UNKNOWN); + template.letterSpacing = letterSpacing + GetFontAttribute(3, FONTATTR_LETTER_SPACING); + template.lineSpacing = lineSpacing + GetFontAttribute(3, FONTATTR_LINE_SPACING); + AddTextPrinter(&template, speed, NULL); +} + +void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +{ + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8453F8C[colorIdx], speed, str); +} + +void sub_810EA9C(u8 windowId) +{ + SetWindowBorderStyle(windowId, FALSE, 0x3C0, 0x0E); +} + +u8 sub_810EAB4(u8 idx) +{ + if (gUnknown_203ADD8[idx] == 0xFF) + { + gUnknown_203ADD8[idx] = AddWindow(&gUnknown_8453FD0[idx]); + SetWindowBorderStyle(gUnknown_203ADD8[idx], TRUE, 0x3A3, 0x0C); + } + + return gUnknown_203ADD8[idx]; +} + +void sub_810EAF0(u8 idx) +{ + sub_810F4D8(gUnknown_203ADD8[idx], 0); + ClearWindowTilemap(gUnknown_203ADD8[idx]); + RemoveWindow(gUnknown_203ADD8[idx]); + gUnknown_203ADD8[idx] = 0xFF; +} + +u8 sub_810EB20(u8 idx) +{ + return gUnknown_203ADD8[idx]; +} + +void sub_810EB30(u8 taskId, const u8 * str, TaskFunc taskFunc) +{ + DisplayMessageAndContinueTask(taskId, 5, 0x3AC, 0x0B, 2, GetTextSpeedSetting(), str, taskFunc); + schedule_bg_copy_tilemap_to_vram(0); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 2afd86a0a..058e3aa03 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1321,9 +1321,7 @@ gSpecialVar_ItemId: @ 203AD30 .align 2 .include "src/item_pc.o" -gUnknown_203ADD8: @ 203ADD8 - .space 0x4 - + .align 2 gUnknown_203ADDC: @ 203ADDC .space 0x4 |