summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-16 21:14:16 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-16 21:14:16 -0400
commit632a7e8c08158470cbe5120fc8c8ec0141fe7303 (patch)
treeac4ff1dd4299ec969f72048697aed969dc9a944b
parent105716d701e54270179c20425dfcc1e396211519 (diff)
finish item_pc
-rw-r--r--asm/item_pc.s728
-rw-r--r--data/data_83FECCC.s11
-rw-r--r--include/party_menu.h1
-rw-r--r--include/strings.h1
-rw-r--r--src/item_pc.c305
-rw-r--r--sym_ewram.txt4
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