summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mailbox_pc.s326
-rw-r--r--baserom.ipsbin2011595 -> 2000346 bytes
-rw-r--r--data/data_83FECCC.s19
-rw-r--r--data/decoration_tiles.inc359
-rw-r--r--data/decorations.s857
-rw-r--r--data/text/decoration_descriptions.inc573
-rw-r--r--include/global.h3
-rw-r--r--include/new_menu_helpers.h2
-rw-r--r--include/player_pc.h11
-rw-r--r--ld_script.txt5
-rw-r--r--src/mailbox_pc.c143
-rw-r--r--sym_ewram.txt10
12 files changed, 1962 insertions, 346 deletions
diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s
deleted file mode 100644
index 7e792681f..000000000
--- a/asm/mailbox_pc.s
+++ /dev/null
@@ -1,326 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810EB6C
-sub_810EB6C: @ 810EB6C
- push {r4,lr}
- lsls r0, 24
- ldr r4, _0810EB84 @ =gUnknown_203ADE0
- lsrs r0, 21
- adds r0, 0x8
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _0810EB88
- movs r0, 0
- b _0810EBA2
- .align 2, 0
-_0810EB84: .4byte gUnknown_203ADE0
-_0810EB88:
- movs r2, 0
- ldr r4, _0810EBA8 @ =gUnknown_203ADDC
- movs r3, 0xFF
-_0810EB8E:
- adds r0, r2, r4
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _0810EB8E
- movs r0, 0x1
-_0810EBA2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810EBA8: .4byte gUnknown_203ADDC
- thumb_func_end sub_810EB6C
-
- thumb_func_start sub_810EBAC
-sub_810EBAC: @ 810EBAC
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0810EBD8 @ =gUnknown_203ADDC
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _0810EBD0
- lsls r0, r1, 3
- ldr r1, _0810EBDC @ =gUnknown_8453FE8
- adds r0, r1
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl SetStdWindowBorderStyle
-_0810EBD0:
- ldrb r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810EBD8: .4byte gUnknown_203ADDC
-_0810EBDC: .4byte gUnknown_8453FE8
- thumb_func_end sub_810EBAC
-
- thumb_func_start sub_810EBE0
-sub_810EBE0: @ 810EBE0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EC0C @ =gUnknown_203ADDC
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- 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
-_0810EC0C: .4byte gUnknown_203ADDC
- thumb_func_end sub_810EBE0
-
- thumb_func_start sub_810EC10
-sub_810EC10: @ 810EC10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810EC1C @ =gUnknown_203ADDC
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0810EC1C: .4byte gUnknown_203ADDC
- thumb_func_end sub_810EC10
-
- thumb_func_start sub_810EC20
-sub_810EC20: @ 810EC20
- push {r4,r5,lr}
- sub sp, 0x34
- adds r3, r1, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0x2
- negs r0, r0
- cmp r3, r0
- beq _0810EC82
- ldr r0, _0810EC8C @ =gSaveBlock1Ptr
- lsls r1, r3, 3
- adds r1, r3
- lsls r1, 2
- ldr r0, [r0]
- adds r1, r0
- ldr r0, _0810EC90 @ =0x00002dba
- adds r1, r0
- add r0, sp, 0x14
- bl StringCopy
- add r0, sp, 0x14
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5
- bhi _0810EC62
- add r0, sp, 0x14
- movs r1, 0x1
- bl ConvertInternationalString
-_0810EC62:
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- ldr r0, _0810EC94 @ =gUnknown_8454000
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- add r0, sp, 0x14
- str r0, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x8
- adds r3, r5, 0
- bl AddTextPrinterParameterized4
-_0810EC82:
- add sp, 0x34
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EC8C: .4byte gSaveBlock1Ptr
-_0810EC90: .4byte 0x00002dba
-_0810EC94: .4byte gUnknown_8454000
- thumb_func_end sub_810EC20
-
- thumb_func_start sub_810EC98
-sub_810EC98: @ 810EC98
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- movs r3, 0
- ldr r7, _0810ED50 @ =gUnknown_203ADE0
- ldr r0, _0810ED54 @ =gFameCheckerText_Cancel
- mov r12, r0
- ldr r5, _0810ED58 @ =gMultiuseListMenuTemplate
- ldr r1, _0810ED5C @ =gUnknown_203ADDC
- mov r8, r1
- ldrb r0, [r6, 0x5]
- cmp r3, r0
- bcs _0810ECCE
- adds r2, r7, 0
- ldr r4, _0810ED60 @ =gUnknown_8454003
-_0810ECB8:
- ldr r1, [r2]
- lsls r0, r3, 3
- adds r0, r1
- str r4, [r0]
- str r3, [r0, 0x4]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r1, [r6, 0x5]
- cmp r3, r1
- bcc _0810ECB8
-_0810ECCE:
- ldr r2, [r7]
- lsls r0, r3, 3
- adds r0, r2
- mov r1, r12
- str r1, [r0]
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- str r2, [r5]
- ldrb r0, [r6, 0x5]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r5, 0xC]
- mov r1, r8
- ldrb r0, [r1, 0x1]
- strb r0, [r5, 0x10]
- strb r4, [r5, 0x11]
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- strb r0, [r5, 0x12]
- strb r4, [r5, 0x13]
- ldrb r0, [r5, 0x16]
- movs r2, 0x8
- negs r2, r2
- ands r2, r0
- movs r0, 0x39
- negs r0, r0
- ands r2, r0
- movs r0, 0x10
- orrs r2, r0
- movs r0, 0x8
- strh r0, [r5, 0xE]
- ldrb r0, [r5, 0x17]
- movs r1, 0x40
- negs r1, r1
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- movs r0, 0x2A
- strb r0, [r5, 0x14]
- movs r0, 0x31
- strb r0, [r5, 0x15]
- ldr r0, _0810ED64 @ =sub_810ED6C
- str r0, [r5, 0x4]
- ldr r0, _0810ED68 @ =sub_810EC20
- str r0, [r5, 0x8]
- movs r0, 0x3F
- ands r1, r0
- strb r1, [r5, 0x17]
- ands r2, r0
- strb r2, [r5, 0x16]
- ldrh r1, [r6, 0x2]
- ldrh r2, [r6]
- adds r0, r5, 0
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810ED50: .4byte gUnknown_203ADE0
-_0810ED54: .4byte gFameCheckerText_Cancel
-_0810ED58: .4byte gMultiuseListMenuTemplate
-_0810ED5C: .4byte gUnknown_203ADDC
-_0810ED60: .4byte gUnknown_8454003
-_0810ED64: .4byte sub_810ED6C
-_0810ED68: .4byte sub_810EC20
- thumb_func_end sub_810EC98
-
- thumb_func_start sub_810ED6C
-sub_810ED6C: @ 810ED6C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _0810ED7C
- movs r0, 0x5
- bl PlaySE
-_0810ED7C:
- pop {r0}
- bx r0
- thumb_func_end sub_810ED6C
-
- thumb_func_start sub_810ED80
-sub_810ED80: @ 810ED80
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- ldrb r0, [r4, 0x5]
- ldrb r1, [r4, 0x4]
- subs r0, r1
- adds r0, 0x1
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r4, 0x2
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xC2
- movs r2, 0xC
- movs r3, 0x94
- bl AddScrollIndicatorArrowPairParameterized
- strb r0, [r4, 0xA]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810ED80
-
- thumb_func_start sub_810EDB0
-sub_810EDB0: @ 810EDB0
- push {lr}
- ldr r0, _0810EDC0 @ =gUnknown_203ADE0
- ldr r0, [r0]
- bl Free
- pop {r0}
- bx r0
- .align 2, 0
-_0810EDC0: .4byte gUnknown_203ADE0
- thumb_func_end sub_810EDB0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/baserom.ips b/baserom.ips
index 03cb2d9ad..df32a8df2 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 8f16958e6..0944bf82a 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -670,20 +670,17 @@ gUnknown_8452F6C:: @ 8452F6C
gUnknown_8452F7C:: @ 8452F7C
.incbin "baserom.gba", 0x452F7C, 0xC0
- .section .rodata.8453F6C
-// mailbox_pc.o
-gUnknown_8453FE8:: @ 8453FE8
- .incbin "baserom.gba", 0x453FE8, 0x18
-
-gUnknown_8454000:: @ 8454000
- .incbin "baserom.gba", 0x454000, 0x3
-
-gUnknown_8454003:: @ 8454003
- .incbin "baserom.gba", 0x454003, 0x2615
-
+ @ save_location.o
+ @ bag.o
+ @ trainer_pokemon_sprites.o
+ @ vs_seeker.o
+ @ item_pc.o
+ @ mailbox_pc.o
+ @ decorations.o
@ menu.o
@ quest_log.o
@ link_rfu_3.o
+
.section .rodata.8456C74
gUnknown_8456C74:: @ 8456C74
.incbin "baserom.gba", 0x456C74, 0x5C
diff --git a/data/decoration_tiles.inc b/data/decoration_tiles.inc
new file mode 100644
index 000000000..2a53f2d8e
--- /dev/null
+++ b/data/decoration_tiles.inc
@@ -0,0 +1,359 @@
+gUnknown_8454004:: @ 8454004
+ .2byte 0x087
+
+gUnknown_8454006:: @ 8454006
+ .2byte 0x08F
+
+gUnknown_8454008:: @ 8454008
+ .2byte 0x090, 0x091, 0x092, 0x098, 0x099, 0x09A
+
+gUnknown_8454014:: @ 8454014
+ .2byte 0x093, 0x094, 0x095, 0x09B, 0x09C, 0x09D
+
+gUnknown_8454020:: @ 8454020
+ .2byte 0x096, 0x097, 0x0A3, 0x09E, 0x09F, 0x0AB
+
+gUnknown_845402C:: @ 845402C
+ .2byte 0x0BD, 0x0BE, 0x0BF, 0x0C5, 0x0C6, 0x0C7, 0x0CD, 0x0CE, 0x0CF
+
+gUnknown_845403E:: @ 845403E
+ .2byte 0x0A0, 0x0A1, 0x0A2, 0x0A8, 0x0A9, 0x0AA, 0x0B0, 0x0B1, 0x0B2
+
+gUnknown_8454050:: @ 8454050
+ .2byte 0x0A4, 0x0A5, 0x0A6, 0x0AC, 0x0AD, 0x0AE, 0x0B4, 0x0B5, 0x0B6
+
+gUnknown_8454062:: @ 8454062
+ .2byte 0x0A7, 0x0BB, 0x0BC, 0x0AF, 0x0C3, 0x0C4, 0x0B7, 0x0CB, 0x0CC
+
+gUnknown_8454074:: @ 8454074
+ .2byte 0x0B8
+
+gUnknown_8454076:: @ 8454076
+ .2byte 0x0B9
+
+gUnknown_8454078:: @ 8454078
+ .2byte 0x0BA
+
+gUnknown_845407A:: @ 845407A
+ .2byte 0x0C0
+
+gUnknown_845407C:: @ 845407C
+ .2byte 0x0C1
+
+gUnknown_845407E:: @ 845407E
+ .2byte 0x0C2
+
+gUnknown_8454080:: @ 8454080
+ .2byte 0x0C8
+
+gUnknown_8454082:: @ 8454082
+ .2byte 0x0C9
+
+gUnknown_8454084:: @ 8454084
+ .2byte 0x0CA
+
+gUnknown_8454086:: @ 8454086
+ .2byte 0x0D0, 0x0D8
+
+gUnknown_845408A:: @ 845408A
+ .2byte 0x0D2, 0x0DA
+
+gUnknown_845408E:: @ 845408E
+ .2byte 0x0D4, 0x0DC
+
+gUnknown_8454092:: @ 8454092
+ .2byte 0x0E0, 0x0E2, 0x0E8, 0x0E9
+
+gUnknown_845409A:: @ 845409A
+ .2byte 0x0E4, 0x0E6, 0x0EC, 0x0ED
+
+gUnknown_84540A2:: @ 84540A2
+ .2byte 0x0F0, 0x0F2, 0x0F8, 0x0F9
+
+gUnknown_84540AA:: @ 84540AA
+ .2byte 0x025, 0x02D
+
+gUnknown_84540AE:: @ 84540AE
+ .2byte 0x026, 0x02E
+
+gUnknown_84540B2:: @ 84540B2
+ .2byte 0x027, 0x02F
+
+gUnknown_84540B6:: @ 84540B6
+ .2byte 0x138
+
+gUnknown_84540B8:: @ 84540B8
+ .2byte 0x13C
+
+gUnknown_84540BA:: @ 84540BA
+ .2byte 0x140
+
+gUnknown_84540BC:: @ 84540BC
+ .2byte 0x030, 0x031, 0x032, 0x038, 0x039, 0x03A, 0x040, 0x041, 0x03B
+
+gUnknown_84540CE:: @ 84540CE
+ .2byte 0x048, 0x049, 0x068, 0x050, 0x051, 0x070, 0x058, 0x059, 0x069
+
+gUnknown_84540E0:: @ 84540E0
+ .2byte 0x034, 0x03C
+
+gUnknown_84540E4:: @ 84540E4
+ .2byte 0x035, 0x036, 0x03D, 0x03E, 0x063, 0x064, 0x06F, 0x077
+
+gUnknown_84540F4:: @ 84540F4
+ .2byte 0x033
+
+gUnknown_84540F6:: @ 84540F6
+ .2byte 0x02C
+
+gUnknown_84540F8:: @ 84540F8
+ .2byte 0x080, 0x081, 0x088, 0x089
+
+gUnknown_8454100:: @ 8454100
+ .2byte 0x06A, 0x06B, 0x06C, 0x06D, 0x072, 0x073, 0x074, 0x075
+
+gUnknown_8454110:: @ 8454110
+ .2byte 0x028
+
+gUnknown_8454112:: @ 8454112
+ .2byte 0x037, 0x03F
+
+gUnknown_8454116:: @ 8454116
+ .2byte 0x085, 0x08D
+
+gUnknown_845411A:: @ 845411A
+ .2byte 0x0D6, 0x0DE
+
+gUnknown_845411E:: @ 845411E
+ .2byte 0x12E, 0x136
+
+gUnknown_8454122:: @ 8454122
+ .2byte 0x082, 0x08A
+
+gUnknown_8454126:: @ 8454126
+ .2byte 0x0F4
+
+gUnknown_8454128:: @ 8454128
+ .2byte 0x0F5
+
+gUnknown_845412A:: @ 845412A
+ .2byte 0x0F6
+
+gUnknown_845412C:: @ 845412C
+ .2byte 0x060
+
+gUnknown_845412E:: @ 845412E
+ .2byte 0x061
+
+gUnknown_8454130:: @ 8454130
+ .2byte 0x062
+
+gUnknown_8454132:: @ 8454132
+ .2byte 0x078
+
+gUnknown_8454134:: @ 8454134
+ .2byte 0x079
+
+gUnknown_8454136:: @ 8454136
+ .2byte 0x07A
+
+gUnknown_8454138:: @ 8454138
+ .2byte 0x07B
+
+gUnknown_845413A:: @ 845413A
+ .2byte 0x07C
+
+gUnknown_845413C:: @ 845413C
+ .2byte 0x07D
+
+gUnknown_845413E:: @ 845413E
+ .2byte 0x07E
+
+gUnknown_8454140:: @ 8454140
+ .2byte 0x0B3
+
+gUnknown_8454142:: @ 8454142
+ .2byte 0x042, 0x043, 0x044, 0x04A, 0x04B, 0x04C, 0x052, 0x053, 0x054
+
+gUnknown_8454154:: @ 8454154
+ .2byte 0x045, 0x046, 0x047, 0x04D, 0x04E, 0x04F, 0x055, 0x056, 0x057
+
+gUnknown_8454166:: @ 8454166
+ .2byte 0x05A, 0x05B, 0x05C, 0x05D, 0x05E, 0x05F, 0x065, 0x066, 0x067
+
+gUnknown_8454178:: @ 8454178
+ .2byte 0x100, 0x101, 0x102, 0x108, 0x109, 0x10A, 0x110, 0x111, 0x112
+
+gUnknown_845418A:: @ 845418A
+ .2byte 0x103, 0x104, 0x105, 0x10B, 0x10C, 0x10D, 0x113, 0x114, 0x115
+
+gUnknown_845419C:: @ 845419C
+ .2byte 0x106, 0x107, 0x118, 0x10E, 0x10F, 0x120, 0x116, 0x117, 0x128
+
+gUnknown_84541AE:: @ 84541AE
+ .2byte 0x119, 0x11A, 0x11B, 0x121, 0x122, 0x123, 0x129, 0x12A, 0x12B
+
+gUnknown_84541C0:: @ 84541C0
+ .2byte 0x130
+
+gUnknown_84541C2:: @ 84541C2
+ .2byte 0x131
+
+gUnknown_84541C4:: @ 84541C4
+ .2byte 0x132
+
+gUnknown_84541C6:: @ 84541C6
+ .2byte 0x133
+
+gUnknown_84541C8:: @ 84541C8
+ .2byte 0x134
+
+gUnknown_84541CA:: @ 84541CA
+ .2byte 0x11C, 0x11D
+
+gUnknown_84541CE:: @ 84541CE
+ .2byte 0x11E, 0x11F
+
+gUnknown_84541D2:: @ 84541D2
+ .2byte 0x124, 0x125
+
+gUnknown_84541D6:: @ 84541D6
+ .2byte 0x126, 0x127
+
+gUnknown_84541DA:: @ 84541DA
+ .2byte 0x12C, 0x12D
+
+gUnknown_84541DE:: @ 84541DE
+ .2byte 0x05C
+
+gUnknown_84541E0:: @ 84541E0
+ .2byte 0x05C
+
+gUnknown_84541E2:: @ 84541E2
+ .2byte 0x05C
+
+gUnknown_84541E4:: @ 84541E4
+ .2byte 0x05C
+
+gUnknown_84541E6:: @ 84541E6
+ .2byte 0x05C
+
+gUnknown_84541E8:: @ 84541E8
+ .2byte 0x05C
+
+gUnknown_84541EA:: @ 84541EA
+ .2byte 0x05C
+
+gUnknown_84541EC:: @ 84541EC
+ .2byte 0x05C
+
+gUnknown_84541EE:: @ 84541EE
+ .2byte 0x05C
+
+gUnknown_84541F0:: @ 84541F0
+ .2byte 0x05C
+
+gUnknown_84541F2:: @ 84541F2
+ .2byte 0x05C
+
+gUnknown_84541F4:: @ 84541F4
+ .2byte 0x05C
+
+gUnknown_84541F6:: @ 84541F6
+ .2byte 0x05C
+
+gUnknown_84541F8:: @ 84541F8
+ .2byte 0x05C
+
+gUnknown_84541FA:: @ 84541FA
+ .2byte 0x05C
+
+gUnknown_84541FC:: @ 84541FC
+ .2byte 0x05C
+
+gUnknown_84541FE:: @ 84541FE
+ .2byte 0x05C
+
+gUnknown_8454200:: @ 8454200
+ .2byte 0x05C
+
+gUnknown_8454202:: @ 8454202
+ .2byte 0x05C
+
+gUnknown_8454204:: @ 8454204
+ .2byte 0x05C
+
+gUnknown_8454206:: @ 8454206
+ .2byte 0x05C
+
+gUnknown_8454208:: @ 8454208
+ .2byte 0x05C
+
+gUnknown_845420A:: @ 845420A
+ .2byte 0x05C
+
+gUnknown_845420C:: @ 845420C
+ .2byte 0x05C
+
+gUnknown_845420E:: @ 845420E
+ .2byte 0x05C
+
+gUnknown_8454210:: @ 8454210
+ .2byte 0x05C
+
+gUnknown_8454212:: @ 8454212
+ .2byte 0x05C
+
+gUnknown_8454214:: @ 8454214
+ .2byte 0x05C
+
+gUnknown_8454216:: @ 8454216
+ .2byte 0x05C
+
+gUnknown_8454218:: @ 8454218
+ .2byte 0x05C
+
+gUnknown_845421A:: @ 845421A
+ .2byte 0x05C
+
+gUnknown_845421C:: @ 845421C
+ .2byte 0x05C
+
+gUnknown_845421E:: @ 845421E
+ .2byte 0x05C
+
+gUnknown_8454220:: @ 8454220
+ .2byte 0x05C
+
+gUnknown_8454222:: @ 8454222
+ .2byte 0x05C
+
+gUnknown_8454224:: @ 8454224
+ .2byte 0x05C
+
+gUnknown_8454226:: @ 8454226
+ .2byte 0x05C
+
+gUnknown_8454228:: @ 8454228
+ .2byte 0x05C
+
+gUnknown_845422A:: @ 845422A
+ .2byte 0x05C
+
+gUnknown_845422C:: @ 845422C
+ .2byte 0x05C
+
+gUnknown_845422E:: @ 845422E
+ .2byte 0x05C
+
+gUnknown_8454230:: @ 8454230
+ .2byte 0x05C
+
+gUnknown_8454232:: @ 8454232
+ .2byte 0x05C
+
+gUnknown_8454234:: @ 8454234
+ .2byte 0x05C
+
+gUnknown_8454236:: @ 8454236
+ .2byte 0x05C
diff --git a/data/decorations.s b/data/decorations.s
new file mode 100644
index 000000000..0d6e85efe
--- /dev/null
+++ b/data/decorations.s
@@ -0,0 +1,857 @@
+#include "constants/decorations.h"
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+ .section .rodata
+ .align 2
+
+ .include "data/decoration_tiles.inc"
+ .include "data/text/decoration_descriptions.inc"
+
+ .align 2
+gDecorations:: @ 84556F8
+ .byte DECOR_NONE
+ .string "SMALL DESK$", 16
+ .byte 0x00, 0x00, 0x00
+ .2byte 0, 0
+ .4byte gUnknown_8454238
+ .4byte gUnknown_8454004
+
+ .byte DECOR_SMALL_DESK
+ .string "SMALL DESK$", 16
+ .byte 0x00, 0x00, 0x00
+ .2byte 3000, 0
+ .4byte gUnknown_8454238
+ .4byte gUnknown_8454004
+
+ .byte DECOR_POKEMON_DESK
+ .string "POKéMON DESK$", 16
+ .byte 0x00, 0x00, 0x00
+ .2byte 3000, 0
+ .4byte gUnknown_8454254
+ .4byte gUnknown_8454006
+
+ .byte DECOR_HEAVY_DESK
+ .string "HEAVY DESK$", 16
+ .byte 0x00, 0x09, 0x00
+ .2byte 6000, 0
+ .4byte gUnknown_8454284
+ .4byte gUnknown_8454008
+
+ .byte DECOR_RAGGED_DESK
+ .string "RAGGED DESK$", 16
+ .byte 0x00, 0x09, 0x00
+ .2byte 6000, 0
+ .4byte gUnknown_84542BC
+ .4byte gUnknown_8454014
+
+ .byte DECOR_COMFORT_DESK
+ .string "COMFORT DESK$", 16
+ .byte 0x00, 0x09, 0x00
+ .2byte 6000, 0
+ .4byte gUnknown_84542F3
+ .4byte gUnknown_8454020
+
+ .byte DECOR_PRETTY_DESK
+ .string "PRETTY DESK$", 16
+ .byte 0x00, 0x08, 0x00
+ .2byte 9000, 0
+ .4byte gUnknown_845432C
+ .4byte gUnknown_845402C
+
+ .byte DECOR_BRICK_DESK
+ .string "BRICK DESK$", 16
+ .byte 0x00, 0x08, 0x00
+ .2byte 9000, 0
+ .4byte gUnknown_8454362
+ .4byte gUnknown_845403E
+
+ .byte DECOR_CAMP_DESK
+ .string "CAMP DESK$", 16
+ .byte 0x00, 0x08, 0x00
+ .2byte 9000, 0
+ .4byte gUnknown_8454398
+ .4byte gUnknown_8454050
+
+ .byte DECOR_HARD_DESK
+ .string "HARD DESK$", 16
+ .byte 0x00, 0x08, 0x00
+ .2byte 9000, 0
+ .4byte gUnknown_84543D1
+ .4byte gUnknown_8454062
+
+ .byte DECOR_SMALL_CHAIR
+ .string "SMALL CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_8454404
+ .4byte gUnknown_8454074
+
+ .byte DECOR_POKEMON_CHAIR
+ .string "POKéMON CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_8454420
+ .4byte gUnknown_8454076
+
+ .byte DECOR_HEAVY_CHAIR
+ .string "HEAVY CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_8454451
+ .4byte gUnknown_8454078
+
+ .byte DECOR_PRETTY_CHAIR
+ .string "PRETTY CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_845446E
+ .4byte gUnknown_845407A
+
+ .byte DECOR_COMFORT_CHAIR
+ .string "COMFORT CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_845448B
+ .4byte gUnknown_845407C
+
+ .byte DECOR_RAGGED_CHAIR
+ .string "RAGGED CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_84544A9
+ .4byte gUnknown_845407E
+
+ .byte DECOR_BRICK_CHAIR
+ .string "BRICK CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_84544C5
+ .4byte gUnknown_8454080
+
+ .byte DECOR_CAMP_CHAIR
+ .string "CAMP CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_84544E2
+ .4byte gUnknown_8454082
+
+ .byte DECOR_HARD_CHAIR
+ .string "HARD CHAIR$", 16
+ .byte 0x01, 0x00, 0x01
+ .2byte 2000, 0
+ .4byte gUnknown_84544FE
+ .4byte gUnknown_8454084
+
+ .byte DECOR_RED_PLANT
+ .string "RED PLANT$", 16
+ .byte 0x02, 0x05, 0x02
+ .2byte 3000, 0
+ .4byte gUnknown_845451A
+ .4byte gUnknown_8454086
+
+ .byte DECOR_TROPICAL_PLANT
+ .string "TROPICAL PLANT$", 16
+ .byte 0x02, 0x05, 0x02
+ .2byte 3000, 0
+ .4byte gUnknown_8454534
+ .4byte gUnknown_845408A
+
+ .byte DECOR_PRETTY_FLOWERS
+ .string "PRETTY FLOWERS$", 16
+ .byte 0x02, 0x05, 0x02
+ .2byte 3000, 0
+ .4byte gUnknown_8454559
+ .4byte gUnknown_845408E
+
+ .byte DECOR_COLORFUL_PLANT
+ .string "COLORFUL PLANT$", 16
+ .byte 0x02, 0x04, 0x02
+ .2byte 5000, 0
+ .4byte gUnknown_8454570
+ .4byte gUnknown_8454092
+
+ .byte DECOR_BIG_PLANT
+ .string "BIG PLANT$", 16
+ .byte 0x02, 0x04, 0x02
+ .2byte 5000, 0
+ .4byte gUnknown_8454598
+ .4byte gUnknown_845409A
+
+ .byte DECOR_GORGEOUS_PLANT
+ .string "GORGEOUS PLANT$", 16
+ .byte 0x02, 0x04, 0x02
+ .2byte 5000, 0
+ .4byte gUnknown_84545C6
+ .4byte gUnknown_84540A2
+
+ .byte DECOR_RED_BRICK
+ .string "RED BRICK$", 16
+ .byte 0x00, 0x05, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_84545EE
+ .4byte gUnknown_84540AA
+
+ .byte DECOR_YELLOW_BRICK
+ .string "YELLOW BRICK$", 16
+ .byte 0x00, 0x05, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_8454625
+ .4byte gUnknown_84540AE
+
+ .byte DECOR_BLUE_BRICK
+ .string "BLUE BRICK$", 16
+ .byte 0x00, 0x05, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_845465A
+ .4byte gUnknown_84540B2
+
+ .byte DECOR_RED_BALLOON
+ .string "RED BALLOON$", 16
+ .byte 0x01, 0x00, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_845468D
+ .4byte gUnknown_84540B6
+
+ .byte DECOR_BLUE_BALLOON
+ .string "BLUE BALLOON$", 16
+ .byte 0x01, 0x00, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_84546C4
+ .4byte gUnknown_84540B8
+
+ .byte DECOR_YELLOW_BALLOON
+ .string "YELLOW BALLOON$", 16
+ .byte 0x01, 0x00, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_84546FC
+ .4byte gUnknown_84540BA
+
+ .byte DECOR_RED_TENT
+ .string "RED TENT$", 16
+ .byte 0x01, 0x08, 0x03
+ .2byte 10000, 0
+ .4byte gUnknown_8454734
+ .4byte gUnknown_84540BC
+
+ .byte DECOR_BLUE_TENT
+ .string "BLUE TENT$", 16
+ .byte 0x01, 0x08, 0x03
+ .2byte 10000, 0
+ .4byte gUnknown_845475E
+ .4byte gUnknown_84540CE
+
+ .byte DECOR_SOLID_BOARD
+ .string "SOLID BOARD$", 16
+ .byte 0x01, 0x05, 0x03
+ .2byte 3000, 0
+ .4byte gUnknown_8454789
+ .4byte gUnknown_84540E0
+
+ .byte DECOR_SLIDE
+ .string "SLIDE$", 16
+ .byte 0x01, 0x07, 0x03
+ .2byte 8000, 0
+ .4byte gUnknown_84547B7
+ .4byte gUnknown_84540E4
+
+ .byte DECOR_FENCE_LENGTH
+ .string "FENCE LENGTH$", 16
+ .byte 0x00, 0x00, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_84547DC
+ .4byte gUnknown_84540F4
+
+ .byte DECOR_FENCE_WIDTH
+ .string "FENCE WIDTH$", 16
+ .byte 0x00, 0x00, 0x03
+ .2byte 500, 0
+ .4byte gUnknown_84547FF
+ .4byte gUnknown_84540F6
+
+ .byte DECOR_TIRE
+ .string "TIRE$", 16
+ .byte 0x00, 0x04, 0x03
+ .2byte 800, 0
+ .4byte gUnknown_8454822
+ .4byte gUnknown_84540F8
+
+ .byte DECOR_STAND
+ .string "STAND$", 16
+ .byte 0x01, 0x03, 0x03
+ .2byte 7000, 0
+ .4byte gUnknown_8454857
+ .4byte gUnknown_8454100
+
+ .byte DECOR_MUD_BALL
+ .string "MUD BALL$", 16
+ .byte 0x01, 0x00, 0x03
+ .2byte 200, 0
+ .4byte gUnknown_8454874
+ .4byte gUnknown_8454110
+
+ .byte DECOR_BREAKABLE_DOOR
+ .string "BREAKABLE DOOR$", 16
+ .byte 0x01, 0x05, 0x03
+ .2byte 3000, 0
+ .4byte gUnknown_84548A1
+ .4byte gUnknown_8454112
+
+ .byte DECOR_SAND_ORNAMENT
+ .string "SAND ORNAMENT$", 16
+ .byte 0x02, 0x05, 0x03
+ .2byte 3000, 0
+ .4byte gUnknown_84548D2
+ .4byte gUnknown_8454116
+
+ .byte DECOR_SILVER_SHIELD
+ .string "SILVER SHIELD$", 16
+ .byte 0x02, 0x05, 0x03
+ .2byte 0, 0
+ .4byte gUnknown_8454901
+ .4byte gUnknown_845411A
+
+ .byte DECOR_GOLD_SHIELD
+ .string "GOLD SHIELD$", 16
+ .byte 0x02, 0x05, 0x03
+ .2byte 0, 0
+ .4byte gUnknown_8454933
+ .4byte gUnknown_845411E
+
+ .byte DECOR_GLASS_ORNAMENT
+ .string "GLASS ORNAMENT$", 16
+ .byte 0x02, 0x05, 0x03
+ .2byte 0, 0
+ .4byte gUnknown_8454966
+ .4byte gUnknown_8454122
+
+ .byte DECOR_TV
+ .string "TV$", 16
+ .byte 0x00, 0x00, 0x03
+ .2byte 3000, 0
+ .4byte gUnknown_845499F
+ .4byte gUnknown_8454126
+
+ .byte DECOR_ROUND_TV
+ .string "ROUND TV$", 16
+ .byte 0x00, 0x00, 0x03
+ .2byte 4000, 0
+ .4byte gUnknown_84549BE
+ .4byte gUnknown_8454128
+
+ .byte DECOR_CUTE_TV
+ .string "CUTE TV$", 16
+ .byte 0x00, 0x00, 0x03
+ .2byte 4000, 0
+ .4byte gUnknown_84549E9
+ .4byte gUnknown_845412A
+
+ .byte DECOR_GLITTER_MAT
+ .string "GLITTER MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 2000, 0
+ .4byte gUnknown_8454A14
+ .4byte gUnknown_845412C
+
+ .byte DECOR_JUMP_MAT
+ .string "JUMP MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 2000, 0
+ .4byte gUnknown_8454A3C
+ .4byte gUnknown_845412E
+
+ .byte DECOR_SPIN_MAT
+ .string "SPIN MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 2000, 0
+ .4byte gUnknown_8454A6A
+ .4byte gUnknown_8454130
+
+ .byte DECOR_C_LOW_NOTE_MAT
+ .string "C Low NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454A99
+ .4byte gUnknown_8454132
+
+ .byte DECOR_D_NOTE_MAT
+ .string "D NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454AC8
+ .4byte gUnknown_8454134
+
+ .byte DECOR_E_NOTE_MAT
+ .string "E NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454AF3
+ .4byte gUnknown_8454136
+
+ .byte DECOR_F_NOTE_MAT
+ .string "F NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454B1F
+ .4byte gUnknown_8454138
+
+ .byte DECOR_G_NOTE_MAT
+ .string "G NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454B4B
+ .4byte gUnknown_845413A
+
+ .byte DECOR_A_NOTE_MAT
+ .string "A NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454B76
+ .4byte gUnknown_845413C
+
+ .byte DECOR_B_NOTE_MAT
+ .string "B NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454BA2
+ .4byte gUnknown_845413E
+
+ .byte DECOR_C_HIGH_NOTE_MAT
+ .string "C High NOTE MAT$", 16
+ .byte 0x01, 0x00, 0x04
+ .2byte 500, 0
+ .4byte gUnknown_8454BCD
+ .4byte gUnknown_8454140
+
+ .byte DECOR_SURF_MAT
+ .string "SURF MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454BFD
+ .4byte gUnknown_8454142
+
+ .byte DECOR_THUNDER_MAT
+ .string "THUNDER MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454C31
+ .4byte gUnknown_8454154
+
+ .byte DECOR_FIRE_BLAST_MAT
+ .string "FIRE BLAST MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454C68
+ .4byte gUnknown_8454166
+
+ .byte DECOR_POWDER_SNOW_MAT
+ .string "POWDER SNOW MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454CA2
+ .4byte gUnknown_8454178
+
+ .byte DECOR_ATTRACT_MAT
+ .string "ATTRACT MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454CDB
+ .4byte gUnknown_845418A
+
+ .byte DECOR_FISSURE_MAT
+ .string "FISSURE MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454D13
+ .4byte gUnknown_845419C
+
+ .byte DECOR_SPIKES_MAT
+ .string "SPIKES MAT$", 16
+ .byte 0x01, 0x08, 0x04
+ .2byte 4000, 0
+ .4byte gUnknown_8454D4A
+ .4byte gUnknown_84541AE
+
+ .byte DECOR_BALL_POSTER
+ .string "BALL POSTER$", 16
+ .byte 0x03, 0x00, 0x05
+ .2byte 1000, 0
+ .4byte gUnknown_8454D80
+ .4byte gUnknown_84541C0
+
+ .byte DECOR_GREEN_POSTER
+ .string "GREEN POSTER$", 16
+ .byte 0x03, 0x00, 0x05
+ .2byte 1000, 0
+ .4byte gUnknown_8454DA8
+ .4byte gUnknown_84541C2
+
+ .byte DECOR_RED_POSTER
+ .string "RED POSTER$", 16
+ .byte 0x03, 0x00, 0x05
+ .2byte 1000, 0
+ .4byte gUnknown_8454DCD
+ .4byte gUnknown_84541C4
+
+ .byte DECOR_BLUE_POSTER
+ .string "BLUE POSTER$", 16
+ .byte 0x03, 0x00, 0x05
+ .2byte 1000, 0
+ .4byte gUnknown_8454DF2
+ .4byte gUnknown_84541C6
+
+ .byte DECOR_CUTE_POSTER
+ .string "CUTE POSTER$", 16
+ .byte 0x03, 0x00, 0x05
+ .2byte 1000, 0
+ .4byte gUnknown_8454E16
+ .4byte gUnknown_84541C8
+
+ .byte DECOR_PIKA_POSTER
+ .string "PIKA POSTER$", 16
+ .byte 0x03, 0x01, 0x05
+ .2byte 1500, 0
+ .4byte gUnknown_8454E3C
+ .4byte gUnknown_84541CA
+
+ .byte DECOR_LONG_POSTER
+ .string "LONG POSTER$", 16
+ .byte 0x03, 0x01, 0x05
+ .2byte 1500, 0
+ .4byte gUnknown_8454E6B
+ .4byte gUnknown_84541CE
+
+ .byte DECOR_SEA_POSTER
+ .string "SEA POSTER$", 16
+ .byte 0x03, 0x01, 0x05
+ .2byte 1500, 0
+ .4byte gUnknown_8454E90
+ .4byte gUnknown_84541D2
+
+ .byte DECOR_SKY_POSTER
+ .string "SKY POSTER$", 16
+ .byte 0x03, 0x01, 0x05
+ .2byte 1500, 0
+ .4byte gUnknown_8454EB7
+ .4byte gUnknown_84541D6
+
+ .byte DECOR_KISS_POSTER
+ .string "KISS POSTER$", 16
+ .byte 0x03, 0x01, 0x05
+ .2byte 1500, 0
+ .4byte gUnknown_8454EDC
+ .4byte gUnknown_84541DA
+
+ .byte DECOR_PICHU_DOLL
+ .string "PICHU DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454F02
+ .4byte gUnknown_84541DE
+
+ .byte DECOR_PIKACHU_DOLL
+ .string "PIKACHU DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454F2D
+ .4byte gUnknown_84541E0
+
+ .byte DECOR_MARILL_DOLL
+ .string "MARILL DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454F5A
+ .4byte gUnknown_84541E2
+
+ .byte DECOR_TOGEPI_DOLL
+ .string "TOGEPI DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454F86
+ .4byte gUnknown_84541E4
+
+ .byte DECOR_CYNDAQUIL_DOLL
+ .string "CYNDAQUIL DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454FB2
+ .4byte gUnknown_84541E6
+
+ .byte DECOR_CHIKORITA_DOLL
+ .string "CHIKORITA DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8454FE1
+ .4byte gUnknown_84541E8
+
+ .byte DECOR_TOTODILE_DOLL
+ .string "TOTODILE DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455010
+ .4byte gUnknown_84541EA
+
+ .byte DECOR_JIGGLYPUFF_DOLL
+ .string "JIGGLYPUFF DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845503E
+ .4byte gUnknown_84541EC
+
+ .byte DECOR_MEOWTH_DOLL
+ .string "MEOWTH DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845506E
+ .4byte gUnknown_84541EE
+
+ .byte DECOR_CLEFAIRY_DOLL
+ .string "CLEFAIRY DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845509A
+ .4byte gUnknown_84541F0
+
+ .byte DECOR_DITTO_DOLL
+ .string "DITTO DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84550C8
+ .4byte gUnknown_84541F2
+
+ .byte DECOR_SMOOCHUM_DOLL
+ .string "SMOOCHUM DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84550F3
+ .4byte gUnknown_84541F4
+
+ .byte DECOR_TREECKO_DOLL
+ .string "TREECKO DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455121
+ .4byte gUnknown_84541F6
+
+ .byte DECOR_TORCHIC_DOLL
+ .string "TORCHIC DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845514E
+ .4byte gUnknown_84541F8
+
+ .byte DECOR_MUDKIP_DOLL
+ .string "MUDKIP DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845517B
+ .4byte gUnknown_84541FA
+
+ .byte DECOR_DUSKULL_DOLL
+ .string "DUSKULL DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84551A7
+ .4byte gUnknown_84541FC
+
+ .byte DECOR_WYNAUT_DOLL
+ .string "WYNAUT DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84551D4
+ .4byte gUnknown_84541FE
+
+ .byte DECOR_BALTOY_DOLL
+ .string "BALTOY DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455200
+ .4byte gUnknown_8454200
+
+ .byte DECOR_KECLEON_DOLL
+ .string "KECLEON DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845522C
+ .4byte gUnknown_8454202
+
+ .byte DECOR_AZURILL_DOLL
+ .string "AZURILL DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455259
+ .4byte gUnknown_8454204
+
+ .byte DECOR_SKITTY_DOLL
+ .string "SKITTY DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455287
+ .4byte gUnknown_8454206
+
+ .byte DECOR_SWABLU_DOLL
+ .string "SWABLU DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84552B3
+ .4byte gUnknown_8454208
+
+ .byte DECOR_GULPIN_DOLL
+ .string "GULPIN DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_84552DF
+ .4byte gUnknown_845420A
+
+ .byte DECOR_LOTAD_DOLL
+ .string "LOTAD DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_845530B
+ .4byte gUnknown_845420C
+
+ .byte DECOR_SEEDOT_DOLL
+ .string "SEEDOT DOLL$", 16
+ .byte 0x04, 0x00, 0x06
+ .2byte 3000, 0
+ .4byte gUnknown_8455336
+ .4byte gUnknown_845420E
+
+ .byte DECOR_PIKA_CUSHION
+ .string "PIKA CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455362
+ .4byte gUnknown_8454210
+
+ .byte DECOR_ROUND_CUSHION
+ .string "ROUND CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455392
+ .4byte gUnknown_8454212
+
+ .byte DECOR_KISS_CUSHION
+ .string "KISS CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_84553C1
+ .4byte gUnknown_8454214
+
+ .byte DECOR_ZIGZAG_CUSHION
+ .string "ZIGZAG CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_84553F2
+ .4byte gUnknown_8454216
+
+ .byte DECOR_SPIN_CUSHION
+ .string "SPIN CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455424
+ .4byte gUnknown_8454218
+
+ .byte DECOR_DIAMOND_CUSHION
+ .string "DIAMOND CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455453
+ .4byte gUnknown_845421A
+
+ .byte DECOR_BALL_CUSHION
+ .string "BALL CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455483
+ .4byte gUnknown_845421C
+
+ .byte DECOR_GRASS_CUSHION
+ .string "GRASS CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_84554B0
+ .4byte gUnknown_845421E
+
+ .byte DECOR_FIRE_CUSHION
+ .string "FIRE CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_84554E3
+ .4byte gUnknown_8454220
+
+ .byte DECOR_WATER_CUSHION
+ .string "WATER CUSHION$", 16
+ .byte 0x04, 0x00, 0x07
+ .2byte 2000, 0
+ .4byte gUnknown_8455515
+ .4byte gUnknown_8454222
+
+ .byte DECOR_SNORLAX_DOLL
+ .string "SNORLAX DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_8455548
+ .4byte gUnknown_8454224
+
+ .byte DECOR_RHYDON_DOLL
+ .string "RHYDON DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_8455573
+ .4byte gUnknown_8454226
+
+ .byte DECOR_LAPRAS_DOLL
+ .string "LAPRAS DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_845559E
+ .4byte gUnknown_8454228
+
+ .byte DECOR_VENUSAUR_DOLL
+ .string "VENUSAUR DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_84555C9
+ .4byte gUnknown_845422A
+
+ .byte DECOR_CHARIZARD_DOLL
+ .string "CHARIZARD DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_84555F4
+ .4byte gUnknown_845422C
+
+ .byte DECOR_BLASTOISE_DOLL
+ .string "BLASTOISE DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_845561F
+ .4byte gUnknown_845422E
+
+ .byte DECOR_WAILMER_DOLL
+ .string "WAILMER DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_845564A
+ .4byte gUnknown_8454230
+
+ .byte DECOR_REGIROCK_DOLL
+ .string "REGIROCK DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_8455675
+ .4byte gUnknown_8454232
+
+ .byte DECOR_REGICE_DOLL
+ .string "REGICE DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_84556A0
+ .4byte gUnknown_8454234
+
+ .byte DECOR_REGISTEEL_DOLL
+ .string "REGISTEEL DOLL$", 16
+ .byte 0x04, 0x05, 0x06
+ .2byte 10000, 0
+ .4byte gUnknown_84556CB
+ .4byte gUnknown_8454236
diff --git a/data/text/decoration_descriptions.inc b/data/text/decoration_descriptions.inc
new file mode 100644
index 000000000..358070cb1
--- /dev/null
+++ b/data/text/decoration_descriptions.inc
@@ -0,0 +1,573 @@
+gUnknown_8454238:: @ 8454238
+ .string "A small desk built\n"
+ .string "for one.$"
+
+gUnknown_8454254:: @ 8454254
+ .string "A small desk built in\n"
+ .string "the shape of a POKé\n"
+ .string "BALL.$"
+
+gUnknown_8454284:: @ 8454284
+ .string "A large desk made\n"
+ .string "of steel. Put some\n"
+ .string "decorations on it.$"
+
+gUnknown_84542BC:: @ 84542BC
+ .string "A large desk made\n"
+ .string "of wood. Put some\n"
+ .string "decorations on it.$"
+
+gUnknown_84542F3:: @ 84542F3
+ .string "A large desk made\n"
+ .string "of leaves. Put some\n"
+ .string "decorations on it.$"
+
+gUnknown_845432C:: @ 845432C
+ .string "A huge desk made\n"
+ .string "of glass. Holds lots\n"
+ .string "of decorations.$"
+
+gUnknown_8454362:: @ 8454362
+ .string "A huge desk made\n"
+ .string "of brick. Holds lots\n"
+ .string "of decorations.$"
+
+gUnknown_8454398:: @ 8454398
+ .string "A huge desk made\n"
+ .string "of logs. Put lots of\n"
+ .string "decorations on it.$"
+
+gUnknown_84543D1:: @ 84543D1
+ .string "A huge desk made\n"
+ .string "of rocks. Holds\n"
+ .string "many decorations.$"
+
+gUnknown_8454404:: @ 8454404
+ .string "A small chair made\n"
+ .string "for one.$"
+
+gUnknown_8454420:: @ 8454420
+ .string "A small chair built\n"
+ .string "in the shape of a\n"
+ .string "POKé BALL.$"
+
+gUnknown_8454451:: @ 8454451
+ .string "A small chair made\n"
+ .string "of steel.$"
+
+gUnknown_845446E:: @ 845446E
+ .string "A small chair made\n"
+ .string "of glass.$"
+
+gUnknown_845448B:: @ 845448B
+ .string "A small chair made\n"
+ .string "of leaves.$"
+
+gUnknown_84544A9:: @ 84544A9
+ .string "A small chair made\n"
+ .string "of wood.$"
+
+gUnknown_84544C5:: @ 84544C5
+ .string "A small chair made\n"
+ .string "of brick.$"
+
+gUnknown_84544E2:: @ 84544E2
+ .string "A small chair made\n"
+ .string "of logs.$"
+
+gUnknown_84544FE:: @ 84544FE
+ .string "A small chair made\n"
+ .string "of rock.$"
+
+gUnknown_845451A:: @ 845451A
+ .string "A vivid red potted\n"
+ .string "plant.$"
+
+gUnknown_8454534:: @ 8454534
+ .string "A flowering tropical\n"
+ .string "plant in a pot.$"
+
+gUnknown_8454559:: @ 8454559
+ .string "A pot of cute\n"
+ .string "flowers.$"
+
+gUnknown_8454570:: @ 8454570
+ .string "A large pot with\n"
+ .string "many colorful\n"
+ .string "flowers.$"
+
+gUnknown_8454598:: @ 8454598
+ .string "A large, umbrella-\n"
+ .string "shaped plant in a\n"
+ .string "big pot.$"
+
+gUnknown_84545C6:: @ 84545C6
+ .string "A large, impressive\n"
+ .string "plant in a big pot.$"
+
+gUnknown_84545EE:: @ 84545EE
+ .string "A red-colored brick.\n"
+ .string "Decorations can be\n"
+ .string "placed on top.$"
+
+gUnknown_8454625:: @ 8454625
+ .string "A yellow-colored\n"
+ .string "brick. Put some\n"
+ .string "decorations on top.$"
+
+gUnknown_845465A:: @ 845465A
+ .string "A blue-colored\n"
+ .string "brick. Put some\n"
+ .string "decorations on top.$"
+
+gUnknown_845468D:: @ 845468D
+ .string "A red balloon filled\n"
+ .string "with water. Bursts\n"
+ .string "if stepped on.$"
+
+gUnknown_84546C4:: @ 84546C4
+ .string "A blue balloon filled\n"
+ .string "with water. Bursts\n"
+ .string "if stepped on.$"
+
+gUnknown_84546FC:: @ 84546FC
+ .string "A yellow balloon\n"
+ .string "filled with water.\n"
+ .string "Pops if stepped on.$"
+
+gUnknown_8454734:: @ 8454734
+ .string "A large red tent.\n"
+ .string "You can hide inside\n"
+ .string "it.$"
+
+gUnknown_845475E:: @ 845475E
+ .string "A large blue tent.\n"
+ .string "You can hide inside\n"
+ .string "it.$"
+
+gUnknown_8454789:: @ 8454789
+ .string "Place over a hole to\n"
+ .string "cross to the other\n"
+ .string "side.$"
+
+gUnknown_84547B7:: @ 84547B7
+ .string "Use to slide down\n"
+ .string "from the platform.$"
+
+gUnknown_84547DC:: @ 84547DC
+ .string "A small fence that\n"
+ .string "blocks passage.$"
+
+gUnknown_84547FF:: @ 84547FF
+ .string "A small fence that\n"
+ .string "blocks passage.$"
+
+gUnknown_8454822:: @ 8454822
+ .string "An old large tire.\n"
+ .string "Decorations can be\n"
+ .string "placed on top.$"
+
+gUnknown_8454857:: @ 8454857
+ .string "A large pedestal\n"
+ .string "with steps.$"
+
+gUnknown_8454874:: @ 8454874
+ .string "A large ball of mud.\n"
+ .string "Crumbles if stepped\n"
+ .string "on.$"
+
+gUnknown_84548A1:: @ 84548A1
+ .string "A weird door that\n"
+ .string "people can walk\n"
+ .string "right through.$"
+
+gUnknown_84548D2:: @ 84548D2
+ .string "An ornament made\n"
+ .string "of sand. Crumbles if\n"
+ .string "touched.$"
+
+gUnknown_8454901:: @ 8454901
+ .string "Awarded for 50\n"
+ .string "straight wins at\n"
+ .string "the BATTLE TOWER.$"
+
+gUnknown_8454933:: @ 8454933
+ .string "Awarded for 100\n"
+ .string "straight wins at\n"
+ .string "the BATTLE TOWER.$"
+
+gUnknown_8454966:: @ 8454966
+ .string "A glass replica of\n"
+ .string "a famous sculpture\n"
+ .string "at the ART MUSEUM.$"
+
+gUnknown_845499F:: @ 845499F
+ .string "A small, gray-\n"
+ .string "colored toy TV.$"
+
+gUnknown_84549BE:: @ 84549BE
+ .string "A toy TV modeled\n"
+ .string "in the image of a\n"
+ .string "SEEDOT.$"
+
+gUnknown_84549E9:: @ 84549E9
+ .string "A toy TV modeled\n"
+ .string "in the image of a\n"
+ .string "SKITTY.$"
+
+gUnknown_8454A14:: @ 8454A14
+ .string "An odd mat that\n"
+ .string "glitters if stepped\n"
+ .string "on.$"
+
+gUnknown_8454A3C:: @ 8454A3C
+ .string "A trick mat that\n"
+ .string "jumps when it is\n"
+ .string "stepped on.$"
+
+gUnknown_8454A6A:: @ 8454A6A
+ .string "A trick mat that\n"
+ .string "spins around when\n"
+ .string "stepped on.$"
+
+gUnknown_8454A99:: @ 8454A99
+ .string "A mat that plays\n"
+ .string "a low C note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454AC8:: @ 8454AC8
+ .string "A mat that plays\n"
+ .string "a D note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454AF3:: @ 8454AF3
+ .string "A mat that plays\n"
+ .string "an E note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454B1F:: @ 8454B1F
+ .string "A mat that plays\n"
+ .string "an F note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454B4B:: @ 8454B4B
+ .string "A mat that plays\n"
+ .string "a G note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454B76:: @ 8454B76
+ .string "A mat that plays\n"
+ .string "an A note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454BA2:: @ 8454BA2
+ .string "A mat that plays\n"
+ .string "a B note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454BCD:: @ 8454BCD
+ .string "A mat that plays\n"
+ .string "a high C note when\n"
+ .string "stepped on.$"
+
+gUnknown_8454BFD:: @ 8454BFD
+ .string "A mat designed with\n"
+ .string "a SURF image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454C31:: @ 8454C31
+ .string "A mat designed with\n"
+ .string "a THUNDER image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454C68:: @ 8454C68
+ .string "A mat designed with\n"
+ .string "a FIRE BLAST image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454CA2:: @ 8454CA2
+ .string "A mat with a POWDER\n"
+ .string "SNOW image design.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454CDB:: @ 8454CDB
+ .string "A mat designed with\n"
+ .string "an ATTRACT image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454D13:: @ 8454D13
+ .string "A mat designed with\n"
+ .string "a FISSURE image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454D4A:: @ 8454D4A
+ .string "A mat designed with\n"
+ .string "a SPIKES image.\n"
+ .string "Put items on top.$"
+
+gUnknown_8454D80:: @ 8454D80
+ .string "A small poster\n"
+ .string "printed with POKé\n"
+ .string "BALLS.$"
+
+gUnknown_8454DA8:: @ 8454DA8
+ .string "A small poster with\n"
+ .string "a TREECKO print.$"
+
+gUnknown_8454DCD:: @ 8454DCD
+ .string "A small poster with\n"
+ .string "a TORCHIC print.$"
+
+gUnknown_8454DF2:: @ 8454DF2
+ .string "A small poster with\n"
+ .string "a MUDKIP print.$"
+
+gUnknown_8454E16:: @ 8454E16
+ .string "A small poster with\n"
+ .string "an AZURILL print.$"
+
+gUnknown_8454E3C:: @ 8454E3C
+ .string "A large poster with\n"
+ .string "a PIKACHU and\n"
+ .string "PICHU print.$"
+
+gUnknown_8454E6B:: @ 8454E6B
+ .string "A large poster with\n"
+ .string "a SEVIPER print.$"
+
+gUnknown_8454E90:: @ 8454E90
+ .string "A large poster with\n"
+ .string "a RELICANTH print.$"
+
+gUnknown_8454EB7:: @ 8454EB7
+ .string "A large poster with\n"
+ .string "a WINGULL print.$"
+
+gUnknown_8454EDC:: @ 8454EDC
+ .string "A large poster with\n"
+ .string "a SMOOCHUM print.$"
+
+gUnknown_8454F02:: @ 8454F02
+ .string "A PICHU doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8454F2D:: @ 8454F2D
+ .string "A PIKACHU doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8454F5A:: @ 8454F5A
+ .string "A MARILL doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8454F86:: @ 8454F86
+ .string "A TOGEPI doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8454FB2:: @ 8454FB2
+ .string "A CYNDAQUIL doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8454FE1:: @ 8454FE1
+ .string "A CHIKORITA doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455010:: @ 8455010
+ .string "A TOTODILE doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845503E:: @ 845503E
+ .string "A JIGGLYPUFF doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845506E:: @ 845506E
+ .string "A MEOWTH doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845509A:: @ 845509A
+ .string "A CLEFAIRY doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84550C8:: @ 84550C8
+ .string "A DITTO doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84550F3:: @ 84550F3
+ .string "A SMOOCHUM doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455121:: @ 8455121
+ .string "A TREECKO doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845514E:: @ 845514E
+ .string "A TORCHIC doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845517B:: @ 845517B
+ .string "A MUDKIP doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84551A7:: @ 84551A7
+ .string "A DUSKULL doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84551D4:: @ 84551D4
+ .string "A WYNAUT doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455200:: @ 8455200
+ .string "A BALTOY doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845522C:: @ 845522C
+ .string "A KECLEON doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455259:: @ 8455259
+ .string "An AZURILL doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455287:: @ 8455287
+ .string "A SKITTY doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84552B3:: @ 84552B3
+ .string "A SWABLU doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84552DF:: @ 84552DF
+ .string "A GULPIN doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845530B:: @ 845530B
+ .string "A LOTAD doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455336:: @ 8455336
+ .string "A SEEDOT doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455362:: @ 8455362
+ .string "A PIKACHU cushion.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455392:: @ 8455392
+ .string "A MARILL cushion.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84553C1:: @ 84553C1
+ .string "A SMOOCHUM\n"
+ .string "cushion. Place it on\n"
+ .string "a mat or a desk.$"
+
+gUnknown_84553F2:: @ 84553F2
+ .string "A ZIGZAGOON\n"
+ .string "cushion. Place it on\n"
+ .string "a mat or a desk.$"
+
+gUnknown_8455424:: @ 8455424
+ .string "A SPINDA cushion.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455453:: @ 8455453
+ .string "A SABLEYE cushion.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455483:: @ 8455483
+ .string "A BALL cushion.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84554B0:: @ 84554B0
+ .string "A grass-mark\n"
+ .string "cushion. Place it on\n"
+ .string "a mat or a desk.$"
+
+gUnknown_84554E3:: @ 84554E3
+ .string "A fire-mark\n"
+ .string "cushion. Place it on\n"
+ .string "a mat or a desk.$"
+
+gUnknown_8455515:: @ 8455515
+ .string "A water-mark\n"
+ .string "cushion. Place it on\n"
+ .string "a mat or a desk.$"
+
+gUnknown_8455548:: @ 8455548
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455573:: @ 8455573
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845559E:: @ 845559E
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84555C9:: @ 84555C9
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84555F4:: @ 84555F4
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845561F:: @ 845561F
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_845564A:: @ 845564A
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_8455675:: @ 8455675
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84556A0:: @ 84556A0
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
+
+gUnknown_84556CB:: @ 84556CB
+ .string "A large doll.\n"
+ .string "Place it on a mat\n"
+ .string "or a desk.$"
diff --git a/include/global.h b/include/global.h
index 9a398354d..55233a340 100644
--- a/include/global.h
+++ b/include/global.h
@@ -498,7 +498,8 @@ typedef union QuestLogScene QuestLogScene;
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 288 // 300
#define VARS_COUNT 256
-#define MAIL_COUNT 16
+#define MAIL_COUNT (PARTY_SIZE + 10)
+#define PC_MAIL_NUM(i) (PARTY_SIZE + (i))
// Declare here so that it can be recursively referenced.
union QuestLogMovement;
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 7b83c913b..a7555c505 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -30,7 +30,7 @@ void sub_80F6E9C(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
-void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
+void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow);
void sub_80F6C14(void);
void sub_80F771C(bool8 copyToVram);
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
diff --git a/include/player_pc.h b/include/player_pc.h
index e14e5e9da..f527ec9f5 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -2,9 +2,20 @@
#define GUARD_PLAYER_PC_H
#include "global.h"
+#include "list_menu.h"
// Exported type declarations
+struct PlayerPC_Unk_203AAC4
+{
+ u16 selectedRow;
+ u16 scrollOffset;
+ u8 unk_4;
+ u8 unk_5;
+ u8 filler_6[4];
+ u8 unk_A;
+};
+
// Exported RAM declarations
// Exported ROM declarations
diff --git a/ld_script.txt b/ld_script.txt
index 49531d76a..a65474cd5 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -232,7 +232,7 @@ SECTIONS {
src/trainer_pokemon_sprites.o(.text);
src/vs_seeker.o(.text);
src/item_pc.o(.text);
- asm/mailbox_pc.o(.text);
+ src/mailbox_pc.o(.text);
src/menu.o(.text);
src/quest_log.o(.text);
asm/link_rfu_3.o(.text);
@@ -451,7 +451,8 @@ SECTIONS {
src/trainer_pokemon_sprites.o(.rodata);
src/vs_seeker.o(.rodata);
src/item_pc.o(.rodata);
- data/data_83FECCC.o(.rodata.8453F6C);
+ src/mailbox_pc.o(.rodata);
+ data/decorations.o(.rodata);
src/menu.o(.rodata);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c
new file mode 100644
index 000000000..3c72b9b5a
--- /dev/null
+++ b/src/mailbox_pc.c
@@ -0,0 +1,143 @@
+#include "global.h"
+#include "malloc.h"
+#include "window.h"
+#include "menu.h"
+#include "string_util.h"
+#include "new_menu_helpers.h"
+#include "list_menu.h"
+#include "player_pc.h"
+#include "strings.h"
+#include "menu_indicators.h"
+#include "sound.h"
+#include "constants/songs.h"
+
+EWRAM_DATA u8 gUnknown_203ADDC[3] = {};
+EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL;
+
+void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list);
+
+static const struct WindowTemplate gUnknown_8453FE8[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+ }, {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 18,
+ .paletteNum = 15,
+ .baseBlock = 0x01c
+ }, {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 15,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x01c
+ }
+};
+
+static const u8 gUnknown_8454000[3] = {1, 2, 3};
+static const u8 gUnknown_8454003[] = _("");
+
+bool8 sub_810EB6C(u8 num)
+{
+ u8 i;
+
+ gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1));
+ if (gUnknown_203ADE0 == NULL)
+ return FALSE;
+ for (i = 0; i < NELEMS(gUnknown_203ADDC); i++)
+ gUnknown_203ADDC[i] = 0xFF;
+ return TRUE;
+}
+
+u8 sub_810EBAC(u8 winIdx)
+{
+ if (gUnknown_203ADDC[winIdx] == 0xFF)
+ {
+ gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]);
+ SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0);
+ }
+ return gUnknown_203ADDC[winIdx];
+}
+
+void sub_810EBE0(u8 winIdx)
+{
+ ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE);
+ ClearWindowTilemap(gUnknown_203ADDC[winIdx]);
+ RemoveWindow(gUnknown_203ADDC[winIdx]);
+ gUnknown_203ADDC[winIdx] = 0xFF;
+}
+
+u8 sub_810EC10(u8 winIdx)
+{
+ return gUnknown_203ADDC[winIdx];
+}
+
+void sub_810EC20(u8 windowId, s32 itemId, u8 y)
+{
+ u8 strbuf[30];
+ if (itemId != -2)
+ {
+ StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName);
+ if (StringLength(strbuf) <= 5)
+ ConvertInternationalString(strbuf, LANGUAGE_JAPANESE);
+ AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf);
+ }
+}
+
+u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+{
+ u16 i;
+ for (i = 0; i < playerPcStruct->unk_5; i++)
+ {
+ gUnknown_203ADE0[i].label = gUnknown_8454003;
+ gUnknown_203ADE0[i].index = i;
+ }
+ gUnknown_203ADE0[i].label = gFameCheckerText_Cancel;
+ gUnknown_203ADE0[i].index = -2;
+
+ gMultiuseListMenuTemplate.items = gUnknown_203ADE0;
+ gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1;
+ gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1];
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0);
+ gMultiuseListMenuTemplate.cursor_X = 0;
+ gMultiuseListMenuTemplate.lettersSpacing = 0;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 2;
+ gMultiuseListMenuTemplate.maxShowed = 8;
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.upText_Y = 10;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 1;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C;
+ gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+ return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow);
+}
+
+void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list)
+{
+ if (onInit != TRUE)
+ PlaySE(SE_SELECT);
+}
+
+void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+{
+ playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset);
+}
+
+void sub_810EDB0(void)
+{
+ Free(gUnknown_203ADE0);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9acd767d0..feeb0e404 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1169,15 +1169,15 @@ gSpecialVar_ItemId: @ 203AD30
.include "src/item_pc.o"
.align 2
-gUnknown_203ADDC: @ 203ADDC
- .space 0x4
-
-gUnknown_203ADE0: @ 203ADE0
- .space 0x4
+ .include "src/mailbox_pc.o"
+ .align 2
.include "src/menu.o"
+
+ .align 2
.include "src/quest_log.o"
+ .align 2
gUnknown_203B04C: @ 203B04C
.space 0xC