summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/decoration.s847
-rw-r--r--include/decoration.h69
-rw-r--r--include/menu.h6
-rw-r--r--include/script.h1
-rw-r--r--include/task.h12
-rw-r--r--ld_script.txt3
-rw-r--r--src/decoration.c267
7 files changed, 373 insertions, 832 deletions
diff --git a/asm/decoration.s b/asm/decoration.s
index 221c749c5..59fb0f923 100644
--- a/asm/decoration.s
+++ b/asm/decoration.s
@@ -6,788 +6,7 @@
.text
- thumb_func_start sub_80FE1DC
-sub_80FE1DC: @ 80FE1DC
- push {lr}
- sub sp, 0x8
- bl sub_80FE2B4
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0x9
- bl MenuDrawTextWindow
- ldr r3, _080FE218 @ =gUnknown_083EC604
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x4
- bl PrintMenuItems
- ldr r0, _080FE21C @ =gUnknown_020388D4
- ldrb r0, [r0]
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x4
- bl InitMenu
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080FE218: .4byte gUnknown_083EC604
-_080FE21C: .4byte gUnknown_020388D4
- thumb_func_end sub_80FE1DC
-
- thumb_func_start sub_80FE220
-sub_80FE220: @ 80FE220
- push {lr}
- ldr r1, _080FE238 @ =gUnknown_020388D4
- movs r0, 0
- strb r0, [r1]
- bl ScriptContext2_Enable
- bl sub_80FE1DC
- bl sub_80FE394
- pop {r0}
- bx r0
- .align 2, 0
-_080FE238: .4byte gUnknown_020388D4
- thumb_func_end sub_80FE220
-
- thumb_func_start DecorationPC
-DecorationPC: @ 80FE23C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80FE220
- ldr r1, _080FE25C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080FE260 @ =Task_DecorationPCProcessMenuInput
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE25C: .4byte gTasks
-_080FE260: .4byte Task_DecorationPCProcessMenuInput
- thumb_func_end DecorationPC
-
- thumb_func_start Task_SecretBasePC_Decoration
-Task_SecretBasePC_Decoration: @ 80FE264
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DecorationPC
- ldr r1, _080FE284 @ =0x0201f000
- ldr r0, _080FE288 @ =gSaveBlock1 + 0x1A1A
- str r0, [r1]
- adds r0, 0x10
- str r0, [r1, 0x4]
- movs r2, 0
- movs r0, 0x10
- strb r0, [r1, 0x8]
- strb r2, [r1, 0x9]
- pop {r0}
- bx r0
- .align 2, 0
-_080FE284: .4byte 0x0201f000
-_080FE288: .4byte gSaveBlock1 + 0x1A1A
- thumb_func_end Task_SecretBasePC_Decoration
-
- thumb_func_start DoPlayerPCDecoration
-DoPlayerPCDecoration: @ 80FE28C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DecorationPC
- ldr r1, _080FE2AC @ =0x0201f000
- ldr r0, _080FE2B0 @ =gSaveBlock1 + 0x2688
- str r0, [r1]
- adds r0, 0xC
- str r0, [r1, 0x4]
- movs r0, 0xC
- strb r0, [r1, 0x8]
- movs r0, 0x1
- strb r0, [r1, 0x9]
- pop {r0}
- bx r0
- .align 2, 0
-_080FE2AC: .4byte 0x0201f000
-_080FE2B0: .4byte gSaveBlock1 + 0x2688
- thumb_func_end DoPlayerPCDecoration
-
- thumb_func_start sub_80FE2B4
-sub_80FE2B4: @ 80FE2B4
- push {lr}
- sub sp, 0x8
- ldr r1, _080FE2E8 @ =gUnknown_083EC654
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- add r0, sp, 0x4
- movs r1, 0xDF
- movs r2, 0x2
- bl LoadPalette
- mov r0, sp
- adds r0, 0x2
- movs r1, 0xD1
- movs r2, 0x2
- bl LoadPalette
- mov r0, sp
- movs r1, 0xD8
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080FE2E8: .4byte gUnknown_083EC654
- thumb_func_end sub_80FE2B4
-
- thumb_func_start Task_DecorationPCProcessMenuInput
-Task_DecorationPCProcessMenuInput: @ 80FE2EC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, r6, 0
- ldr r0, _080FE368 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r5, 0x80
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _080FE38C
- ldr r4, _080FE36C @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FE324
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- ldr r1, _080FE370 @ =gUnknown_020388D4
- strb r0, [r1]
- bl sub_80FE394
-_080FE324:
- ldrh r1, [r4, 0x2E]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE342
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- ldr r1, _080FE370 @ =gUnknown_020388D4
- strb r0, [r1]
- bl sub_80FE394
-_080FE342:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FE378
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080FE374 @ =gUnknown_083EC604
- ldr r0, _080FE370 @ =gUnknown_020388D4
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
- b _080FE38C
- .align 2, 0
-_080FE368: .4byte gPaletteFade
-_080FE36C: .4byte gMain
-_080FE370: .4byte gUnknown_020388D4
-_080FE374: .4byte gUnknown_083EC604
-_080FE378:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080FE38C
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl gpu_pal_decompress_alloc_tag_and_upload
-_080FE38C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end Task_DecorationPCProcessMenuInput
-
- thumb_func_start sub_80FE394
-sub_80FE394: @ 80FE394
- push {lr}
- movs r0, 0x2
- movs r1, 0xF
- movs r2, 0x1B
- movs r3, 0x12
- bl MenuFillWindowRectWithBlankTile
- ldr r1, _080FE3BC @ =gUnknown_083EC624
- ldr r0, _080FE3C0 @ =gUnknown_020388D4
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- pop {r0}
- bx r0
- .align 2, 0
-_080FE3BC: .4byte gUnknown_083EC624
-_080FE3C0: .4byte gUnknown_020388D4
- thumb_func_end sub_80FE394
-
- thumb_func_start gpu_pal_decompress_alloc_tag_and_upload
-gpu_pal_decompress_alloc_tag_and_upload: @ 80FE3C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8072DEC
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0x9
- bl MenuZeroFillWindowRect
- movs r0, 0x2
- movs r1, 0xF
- movs r2, 0x1B
- movs r3, 0x12
- bl MenuFillWindowRectWithBlankTile
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- ldr r0, _080FE404 @ =0x0201f000
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080FE40C
- ldr r0, _080FE408 @ =gUnknown_0815F399
- bl ScriptContext1_SetupScript
- adds r0, r4, 0
- bl DestroyTask
- b _080FE412
- .align 2, 0
-_080FE404: .4byte 0x0201f000
-_080FE408: .4byte gUnknown_0815F399
-_080FE40C:
- adds r0, r4, 0
- bl ReshowPlayerPC
-_080FE412:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end gpu_pal_decompress_alloc_tag_and_upload
-
- thumb_func_start sub_80FE418
-sub_80FE418: @ 80FE418
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80FE5AC
- pop {r0}
- bx r0
- thumb_func_end sub_80FE418
-
- thumb_func_start sub_80FE428
-sub_80FE428: @ 80FE428
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080FE464 @ =gUnknown_020388D4
- ldrb r0, [r0]
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x4
- bl InitMenu
- bl sub_80FE394
- ldr r1, _080FE468 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080FE46C @ =Task_DecorationPCProcessMenuInput
- str r1, [r0]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE464: .4byte gUnknown_020388D4
-_080FE468: .4byte gTasks
-_080FE46C: .4byte Task_DecorationPCProcessMenuInput
- thumb_func_end sub_80FE428
-
- thumb_func_start sub_80FE470
-sub_80FE470: @ 80FE470
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r4, r0, 0
- mov r8, r1
- mov r9, r2
- adds r5, r3, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r5, 24
- lsrs r5, 24
- bl sub_8072CBC
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r7, _080FE51C @ =gStringVar4
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x5
- mov r10, r0
- strb r0, [r7, 0x1]
- strb r5, [r7, 0x2]
- adds r7, 0x3
- ldr r1, _080FE520 @ =gUnknown_083EC5E4
- lsls r0, r4, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- adds r0, r4, 0
- bl sub_8134194
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- movs r2, 0x56
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r0, 0xBA
- strb r0, [r7]
- adds r7, 0x1
- ldr r0, _080FE524 @ =gDecorationInventories
- lsls r4, 3
- adds r4, r0
- ldrb r1, [r4, 0x4]
- adds r0, r7, 0
- movs r2, 0x68
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r0, 0xFC
- strb r0, [r7]
- mov r0, r10
- strb r0, [r7, 0x1]
- strb r6, [r7, 0x2]
- movs r0, 0xFF
- strb r0, [r7, 0x3]
- ldr r0, _080FE51C @ =gStringVar4
- mov r1, r8
- mov r2, r9
- bl MenuPrint
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE51C: .4byte gStringVar4
-_080FE520: .4byte gUnknown_083EC5E4
-_080FE524: .4byte gDecorationInventories
- thumb_func_end sub_80FE470
-
- thumb_func_start sub_80FE528
-sub_80FE528: @ 80FE528
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r5, 0
- ldr r1, _080FE574 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
-_080FE548:
- ldr r0, _080FE578 @ =0x0201f000
- ldrb r0, [r0, 0x9]
- cmp r0, 0x1
- bne _080FE57C
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080FE57C
- cmp r5, 0x6
- beq _080FE57C
- cmp r5, 0x7
- beq _080FE57C
- lsls r2, r5, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r3, 0xD
- bl sub_80FE470
- b _080FE58E
- .align 2, 0
-_080FE574: .4byte gTasks
-_080FE578: .4byte 0x0201f000
-_080FE57C:
- lsls r2, r5, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r3, 0xFF
- bl sub_80FE470
-_080FE58E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _080FE548
- ldr r0, _080FE5A8 @ =gUnknownText_Exit
- movs r1, 0x1
- movs r2, 0x11
- bl MenuPrint
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE5A8: .4byte gUnknownText_Exit
- thumb_func_end sub_80FE528
-
- thumb_func_start sub_80FE5AC
-sub_80FE5AC: @ 80FE5AC
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8072DEC
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl sub_80FE528
- ldr r0, _080FE5F8 @ =gUnknown_020388F6
- ldrb r0, [r0]
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x9
- bl InitMenu
- ldr r1, _080FE5FC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080FE600 @ =sub_80FE604
- str r1, [r0]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE5F8: .4byte gUnknown_020388F6
-_080FE5FC: .4byte gTasks
-_080FE600: .4byte sub_80FE604
- thumb_func_end sub_80FE5AC
-
- thumb_func_start sub_80FE604
-sub_80FE604: @ 80FE604
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, r5, 0
- ldr r0, _080FE638 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r3, 0x80
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE61C
- b _080FE720
-_080FE61C:
- ldr r2, _080FE63C @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FE640
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- b _080FE720
- .align 2, 0
-_080FE638: .4byte gPaletteFade
-_080FE63C: .4byte gMain
-_080FE640:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE656
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- b _080FE720
-_080FE656:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FE70C
- movs r0, 0x5
- bl PlaySE
- bl GetMenuCursorPos
- ldr r4, _080FE6C0 @ =gUnknown_020388F6
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- beq _080FE704
- ldrb r0, [r4]
- bl sub_8134194
- ldr r1, _080FE6C4 @ =gUnknown_020388D5
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- beq _080FE6DC
- ldrb r0, [r4]
- bl sub_8134104
- ldr r2, _080FE6C8 @ =gUnknown_020388D0
- ldr r1, _080FE6CC @ =gDecorationInventories
- ldrb r0, [r4]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- adds r0, r5, 0
- bl sub_80FEF50
- bl sub_80F944C
- ldr r0, _080FE6D0 @ =gUnknown_020388F7
- movs r1, 0x8
- bl sub_80F9480
- bl LoadScrollIndicatorPalette
- ldr r1, _080FE6D4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080FE6D8 @ =sub_80FE868
- str r1, [r0]
- b _080FE720
- .align 2, 0
-_080FE6C0: .4byte gUnknown_020388F6
-_080FE6C4: .4byte gUnknown_020388D5
-_080FE6C8: .4byte gUnknown_020388D0
-_080FE6CC: .4byte gDecorationInventories
-_080FE6D0: .4byte gUnknown_020388F7
-_080FE6D4: .4byte gTasks
-_080FE6D8: .4byte sub_80FE868
-_080FE6DC:
- bl sub_8072DEC
- movs r0, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080FE6FC @ =gSecretBaseText_NoDecors
- ldr r2, _080FE700 @ =sub_80FE418
- adds r0, r5, 0
- movs r3, 0
- bl DisplayItemMessageOnField
- b _080FE720
- .align 2, 0
-_080FE6FC: .4byte gSecretBaseText_NoDecors
-_080FE700: .4byte sub_80FE418
-_080FE704:
- adds r0, r5, 0
- bl sub_80FE728
- b _080FE720
-_080FE70C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080FE720
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_80FE728
-_080FE720:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FE604
-
- thumb_func_start sub_80FE728
-sub_80FE728: @ 80FE728
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080FE748 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1E
- ldrsh r0, [r0, r1]
- cmp r0, 0x3
- beq _080FE74C
- adds r0, r2, 0
- bl sub_80FE758
- b _080FE752
- .align 2, 0
-_080FE748: .4byte gTasks
-_080FE74C:
- adds r0, r2, 0
- bl sub_8109DAC
-_080FE752:
- pop {r0}
- bx r0
- thumb_func_end sub_80FE728
-
- thumb_func_start sub_80FE758
-sub_80FE758: @ 80FE758
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8072DEC
- movs r0, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080FE794 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0x2
- beq _080FE79C
- bl sub_80FE1DC
- bl MenuDisplayMessageBox
- bl sub_80FE394
- ldr r0, _080FE798 @ =Task_DecorationPCProcessMenuInput
- str r0, [r5]
- b _080FE7A2
- .align 2, 0
-_080FE794: .4byte gTasks
-_080FE798: .4byte Task_DecorationPCProcessMenuInput
-_080FE79C:
- adds r0, r4, 0
- bl sub_80B3068
-_080FE7A2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FE758
-
- thumb_func_start sub_80FE7A8
-sub_80FE7A8: @ 80FE7A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080FE7CC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r3, 0
- movs r2, 0x3
- strh r2, [r1, 0x1E]
- ldr r1, _080FE7D0 @ =gUnknown_020388F6
- strb r3, [r1]
- bl sub_80FE5AC
- pop {r0}
- bx r0
- .align 2, 0
-_080FE7CC: .4byte gTasks
-_080FE7D0: .4byte gUnknown_020388F6
- thumb_func_end sub_80FE7A8
-
- thumb_func_start sub_80FE7D4
-sub_80FE7D4: @ 80FE7D4
- push {lr}
- lsls r1, 24
- ldr r2, _080FE7E8 @ =gUnknown_083EC5E4
- lsrs r1, 22
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_080FE7E8: .4byte gUnknown_083EC5E4
- thumb_func_end sub_80FE7D4
-
- .section .text_80FE868
-
- thumb_func_start sub_80FE868
-sub_80FE868: @ 80FE868
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80FE7EC
- ldr r1, _080FE88C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080FE890 @ =sub_80FE948
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE88C: .4byte gTasks
-_080FE890: .4byte sub_80FE948
- thumb_func_end sub_80FE868
+.equiv ewram_1f000, 0x0201f000
thumb_func_start sub_80FE894
sub_80FE894: @ 80FE894
@@ -1147,7 +366,7 @@ _080FEB68:
bne _080FEB7A
b _080FEC70
_080FEB7A:
- ldr r0, _080FEBC4 @ =0x0201f000
+ ldr r0, _080FEBC4 @ =ewram_1f000
ldrb r5, [r0, 0x9]
cmp r5, 0x1
bne _080FEBDC
@@ -1182,7 +401,7 @@ _080FEB7A:
b _080FEBF8
.align 2, 0
_080FEBC0: .4byte gUnknown_020388D0
-_080FEBC4: .4byte 0x0201f000
+_080FEBC4: .4byte ewram_1f000
_080FEBC8: .4byte gUnknown_020388F6
_080FEBCC: .4byte gTasks
_080FEBD0: .4byte gDecorations + 0x1
@@ -2471,7 +1690,7 @@ _080FF57A:
sub_80FF58C: @ 80FF58C
push {lr}
movs r1, 0
- ldr r0, _080FF5A8 @ =0x0201f000
+ ldr r0, _080FF5A8 @ =ewram_1f000
ldrb r2, [r0, 0x8]
cmp r1, r2
bcs _080FF5B6
@@ -2484,7 +1703,7 @@ _080FF59A:
movs r0, 0x1
b _080FF5B8
.align 2, 0
-_080FF5A8: .4byte 0x0201f000
+_080FF5A8: .4byte ewram_1f000
_080FF5AC:
adds r0, r1, 0x1
lsls r0, 16
@@ -2503,7 +1722,7 @@ sub_80FF5BC: @ 80FF5BC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080FF5E4 @ =0x0201f000
+ ldr r0, _080FF5E4 @ =ewram_1f000
ldrb r0, [r0, 0x9]
cmp r0, 0x1
bne _080FF5F0
@@ -2518,7 +1737,7 @@ sub_80FF5BC: @ 80FF5BC
ldr r1, _080FF5EC @ =gSecretBaseText_DecorCantPlace
b _080FF66E
.align 2, 0
-_080FF5E4: .4byte 0x0201f000
+_080FF5E4: .4byte ewram_1f000
_080FF5E8: .4byte gUnknown_020388F6
_080FF5EC: .4byte gSecretBaseText_DecorCantPlace
_080FF5F0:
@@ -2552,7 +1771,7 @@ _080FF62C:
bl sub_80FEF74
bl sub_80FED1C
ldr r0, _080FF654 @ =gStringVar1
- ldr r4, _080FF658 @ =0x0201f000
+ ldr r4, _080FF658 @ =ewram_1f000
ldrb r1, [r4, 0x8]
movs r2, 0x1
movs r3, 0x2
@@ -2566,7 +1785,7 @@ _080FF62C:
b _080FF66C
.align 2, 0
_080FF654: .4byte gStringVar1
-_080FF658: .4byte 0x0201f000
+_080FF658: .4byte ewram_1f000
_080FF65C: .4byte gStringVar4
_080FF660: .4byte gSecretBaseText_NoMoreDecor
_080FF664:
@@ -3967,7 +3186,7 @@ sub_8100174: @ 8100174
lsls r0, 24
lsrs r6, r0, 24
movs r3, 0
- ldr r0, _081001B0 @ =0x0201f000
+ ldr r0, _081001B0 @ =ewram_1f000
ldrb r1, [r0, 0x8]
adds r5, r0, 0
cmp r3, r1
@@ -3995,7 +3214,7 @@ _0810019A:
bne _081001F0
b _08100210
.align 2, 0
-_081001B0: .4byte 0x0201f000
+_081001B0: .4byte ewram_1f000
_081001B4: .4byte gUnknown_020388D6
_081001B8:
ldr r0, _081001E4 @ =gUnknown_020388F5
@@ -5186,7 +4405,7 @@ _08100A5C: .4byte sub_80FE428
sub_8100A60: @ 8100A60
lsls r0, 24
lsrs r0, 24
- ldr r3, _08100A78 @ =0x0201f000
+ ldr r3, _08100A78 @ =ewram_1f000
ldr r1, [r3]
adds r1, r0
movs r2, 0
@@ -5196,7 +4415,7 @@ sub_8100A60: @ 8100A60
strb r2, [r1]
bx lr
.align 2, 0
-_08100A78: .4byte 0x0201f000
+_08100A78: .4byte ewram_1f000
thumb_func_end sub_8100A60
thumb_func_start sub_8100A7C
@@ -5230,7 +4449,7 @@ _08100AAC:
_08100AB4: .4byte gSpecialVar_0x8006
_08100AB8:
ldr r3, _08100B10 @ =gDecorations
- ldr r2, _08100B14 @ =0x0201f000
+ ldr r2, _08100B14 @ =ewram_1f000
ldr r1, _08100B18 @ =gUnknown_020391B4
ldrh r0, [r4]
lsls r0, 3
@@ -5276,7 +4495,7 @@ _08100B0A:
bx r0
.align 2, 0
_08100B10: .4byte gDecorations
-_08100B14: .4byte 0x0201f000
+_08100B14: .4byte ewram_1f000
_08100B18: .4byte gUnknown_020391B4
_08100B1C: .4byte gMapHeader
thumb_func_end sub_8100A7C
@@ -5338,7 +4557,7 @@ _08100B7C:
ldr r0, _08100BE0 @ =gUnknown_020391B4
adds r4, r3, r0
ldrb r1, [r4]
- ldr r2, _08100BE4 @ =0x0201f000
+ ldr r2, _08100BE4 @ =ewram_1f000
ldr r0, [r2]
adds r0, r1
ldrb r6, [r0]
@@ -5346,7 +4565,7 @@ _08100B7C:
ldr r5, _08100BE8 @ =gDecorations
adds r0, r5
ldrb r2, [r0, 0x11]
- ldr r5, _08100BE4 @ =0x0201f000
+ ldr r5, _08100BE4 @ =ewram_1f000
ldr r0, [r5, 0x4]
adds r0, r1
ldrb r0, [r0]
@@ -5385,7 +4604,7 @@ _08100BD0:
b _08100C4E
.align 2, 0
_08100BE0: .4byte gUnknown_020391B4
-_08100BE4: .4byte 0x0201f000
+_08100BE4: .4byte ewram_1f000
_08100BE8: .4byte gDecorations
_08100BEC:
movs r4, 0
@@ -5559,7 +4778,7 @@ sub_8100D38: @ 8100D38
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
- ldr r0, _08100D68 @ =0x0201f000
+ ldr r0, _08100D68 @ =ewram_1f000
adds r4, r0, 0
ldrb r0, [r4, 0x8]
cmp r2, r0
@@ -5580,7 +4799,7 @@ _08100D56:
movs r0, 0x1
b _08100D7E
.align 2, 0
-_08100D68: .4byte 0x0201f000
+_08100D68: .4byte ewram_1f000
_08100D6C: .4byte gTasks
_08100D70:
adds r0, r2, 0x1
@@ -6194,7 +5413,7 @@ sub_8101200: @ 8101200
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r2, _08101290 @ =0x0201f000
+ ldr r2, _08101290 @ =ewram_1f000
ldr r0, [r2, 0x4]
adds r0, r1
ldrb r0, [r0]
@@ -6243,7 +5462,7 @@ _0810125A:
b _08101296
.align 2, 0
_0810128C: .4byte gTasks
-_08101290: .4byte 0x0201f000
+_08101290: .4byte ewram_1f000
_08101294:
movs r0, 0
_08101296:
@@ -6260,7 +5479,7 @@ sub_81012A0: @ 81012A0
mov r7, r9
mov r6, r8
push {r6,r7}
- ldr r2, _0810130C @ =0x0201f000
+ ldr r2, _0810130C @ =ewram_1f000
ldr r3, _08101310 @ =gUnknown_020391B4
ldr r0, _08101314 @ =gUnknown_02039234
ldrb r0, [r0]
@@ -6310,7 +5529,7 @@ _081012CA:
strh r1, [r0, 0x4]
b _08101332
.align 2, 0
-_0810130C: .4byte 0x0201f000
+_0810130C: .4byte ewram_1f000
_08101310: .4byte gUnknown_020391B4
_08101314: .4byte gUnknown_02039234
_08101318: .4byte gSaveBlock1
@@ -6380,7 +5599,7 @@ _0810139C:
lsls r0, 16
lsrs r6, r0, 16
_081013A2:
- ldr r0, _081013B4 @ =0x0201f000
+ ldr r0, _081013B4 @ =ewram_1f000
ldrb r1, [r0, 0x8]
cmp r6, r1
bcc _0810134A
@@ -6390,7 +5609,7 @@ _081013AC:
pop {r1}
bx r1
.align 2, 0
-_081013B4: .4byte 0x0201f000
+_081013B4: .4byte ewram_1f000
thumb_func_end sub_8101340
thumb_func_start sub_81013B8
@@ -6414,7 +5633,7 @@ sub_81013B8: @ 81013B8
lsrs r3, 24
mov r8, r3
movs r4, 0
- ldr r7, _08101450 @ =0x0201f000
+ ldr r7, _08101450 @ =ewram_1f000
ldrb r0, [r7, 0x8]
cmp r4, r0
bcs _0810143E
@@ -6473,7 +5692,7 @@ _0810143E:
pop {r0}
bx r0
.align 2, 0
-_08101450: .4byte 0x0201f000
+_08101450: .4byte ewram_1f000
_08101454: .4byte gUnknown_02039234
_08101458: .4byte gDecorations
_0810145C: .4byte gUnknown_020391B4
@@ -6494,7 +5713,7 @@ sub_8101460: @ 8101460
cmp r0, 0x1
beq _08101504
movs r5, 0
- ldr r0, _081014BC @ =0x0201f000
+ ldr r0, _081014BC @ =ewram_1f000
ldrb r1, [r0, 0x8]
cmp r5, r1
bcs _081014D2
@@ -6524,13 +5743,13 @@ _08101486:
b _081014D2
.align 2, 0
_081014B8: .4byte gUnknown_02039234
-_081014BC: .4byte 0x0201f000
+_081014BC: .4byte ewram_1f000
_081014C0: .4byte gUnknown_020391B4
_081014C4:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _0810150C @ =0x0201f000
+ ldr r0, _0810150C @ =ewram_1f000
ldrb r1, [r0, 0x8]
cmp r5, r1
bcc _08101486
@@ -6539,7 +5758,7 @@ _081014D2:
ldrb r0, [r0]
cmp r0, 0
beq _08101504
- ldr r0, _0810150C @ =0x0201f000
+ ldr r0, _0810150C @ =ewram_1f000
ldr r2, _08101514 @ =gUnknown_020391B4
ldrb r1, [r2]
ldr r0, [r0, 0x4]
@@ -6564,7 +5783,7 @@ _08101504:
pop {r0}
bx r0
.align 2, 0
-_0810150C: .4byte 0x0201f000
+_0810150C: .4byte ewram_1f000
_08101510: .4byte gUnknown_02039234
_08101514: .4byte gUnknown_020391B4
thumb_func_end sub_8101460
diff --git a/include/decoration.h b/include/decoration.h
index d041a8007..663fd5183 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -1,6 +1,17 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
+enum {
+ DECOCAT_DESK,
+ DECOCAT_CHAIR,
+ DECOCAT_PLANT,
+ DECOCAT_ORNAMENT,
+ DECOCAT_MAT,
+ DECOCAT_POSTER,
+ DECOCAT_DOLL,
+ DECOCAT_CUSHION
+};
+
struct Decoration
{
/*0x00*/ u8 id;
@@ -13,7 +24,65 @@ struct Decoration
/*0x1c*/ u16 *tiles;
};
+struct DecoPCPointers
+{
+ /* 0x00 */ u8 *items;
+ /* 0x04 */ u8 *pos;
+ /* 0x08 */ u8 size;
+ /* 0x09 */ u8 isPlayerRoom;
+};
+
+struct DecorationInventory
+{
+ u8 *items;
+ u8 size;
+};
+
+extern u8 ewram[];
+#define ewram_1f000 (*(struct DecoPCPointers *)(ewram + 0x1f000))
+
extern struct Decoration gDecorations[0x77];
extern void sub_80FF394(u16 unkr0, u16 unkr1, u16 unkr2);
+extern Script gUnknown_0815F399;
+extern u8 *gUnknown_020388D0;
+extern u8 gUnknown_020388D4;
+extern u8 gUnknown_020388D5;
+extern u8 gUnknown_020388F2;
+extern u8 gUnknown_020388F3;
+extern u8 gUnknown_020388F4;
+extern u8 gUnknown_020388F6;
+
+extern const u16 gUnknown_083EC654[3];
+extern const struct DecorationInventory gDecorationInventories[];
+extern const u8 *gUnknown_083EC5E4[];
+extern const u8 *gUnknown_083EC624[];
+extern u8 *gUnknown_020388F7[];
+extern const struct MenuAction2 gUnknown_083EC604[];
+
+extern void sub_80B3068(u8); // src/shop
+extern u8 sub_8134194(u8); // src/decoration_inventory
+extern void sub_8134104(u8); // src/decoration_inventory
+extern void sub_80F944C(void); // src/menu_helpers
+extern void sub_80F9480(u8 *[], u8); // src/menu_helpers
+extern void LoadScrollIndicatorPalette(void); // src/menu_helpers
+extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers
+extern void ReshowPlayerPC(u8); // src/player_pc
+
+void sub_80FE2B4(void);
+void Task_DecorationPCProcessMenuInput(u8);
+void sub_80FE394(void);
+void gpu_pal_decompress_alloc_tag_and_upload(u8);
+void sub_80FE5AC(u8);
+void sub_80FE604(u8);
+void sub_80FE728(u8);
+void sub_80FE758(u8);
+void sub_80FE868(u8);
+void sub_80FE948(u8);
+void sub_80FEC94(u8);
+void sub_80FECB8(u8);
+void sub_80FECE0(u8);
+void sub_80FEF50(u8);
+void sub_8109DAC(u8);
+
#endif // GUARD_DECORATION_H
diff --git a/include/menu.h b/include/menu.h
index cb5efa448..7fce7ef1a 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -9,6 +9,12 @@ struct MenuAction
u8 (*func)();
};
+struct MenuAction2
+{
+ const u8 *text;
+ u8 (*func)(u8);
+};
+
void CloseMenu(void);
void AppendToList(u8 *list, u8 *pindex, u32 value);
void InitMenuWindow(const struct WindowConfig *);
diff --git a/include/script.h b/include/script.h
index a4c7dd575..5e13e8e74 100644
--- a/include/script.h
+++ b/include/script.h
@@ -4,6 +4,7 @@
struct ScriptContext;
typedef bool8 (*ScrCmdFunc)(struct ScriptContext *);
+typedef u8 Script[];
struct ScriptContext
{
diff --git a/include/task.h b/include/task.h
index d2b2302cf..6c6efdf4f 100644
--- a/include/task.h
+++ b/include/task.h
@@ -5,12 +5,12 @@ typedef void (*TaskFunc)(u8 taskId);
struct Task
{
- TaskFunc func;
- bool8 isActive;
- u8 prev;
- u8 next;
- u8 priority;
- s16 data[16];
+ /*0x00*/ TaskFunc func;
+ /*0x04*/ bool8 isActive;
+ /*0x05*/ u8 prev;
+ /*0x06*/ u8 next;
+ /*0x07*/ u8 priority;
+ /*0x08*/ s16 data[16];
};
extern struct Task gTasks[];
diff --git a/ld_script.txt b/ld_script.txt
index cae32faa2..fa1b3a2e9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -201,9 +201,8 @@ SECTIONS {
src/heal_location.o(.text);
asm/region_map.o(.text);
asm/cute_sketch.o(.text);
- asm/decoration.o(.text);
src/decoration.o(.text);
- asm/decoration.o(.text_80FE868);
+ asm/decoration.o(.text);
asm/slot_machine.o(.text);
src/slot_machine.o(.text);
asm/slot_machine.o(.text_8104D30)
diff --git a/src/decoration.c b/src/decoration.c
index 279a7568b..0898e7a4b 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,23 +1,264 @@
#include "global.h"
#include "asm.h"
+#include "sound.h"
+#include "songs.h"
+#include "string_util.h"
#include "menu.h"
+#include "strings.h"
+#include "script.h"
+#include "palette.h"
+#include "decoration.h"
-extern u8 gUnknown_020388F2;
-extern u8 gUnknown_020388F3;
-extern u8 gUnknown_020388F4;
-extern u8 gUnknown_020388F6;
-extern u8 gUnknown_020388D5;
+void sub_80FE1DC(void)
+{
+ sub_80FE2B4();
+ MenuDrawTextWindow(0, 0, 10, 9);
+ PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604);
+ InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9);
+}
+
+void sub_80FE220(void)
+{
+ gUnknown_020388D4 = 0;
+ ScriptContext2_Enable();
+ sub_80FE1DC();
+ sub_80FE394();
+}
+
+void DecorationPC(u8 taskId)
+{
+ sub_80FE220();
+ gTasks[taskId].func = Task_DecorationPCProcessMenuInput;
+}
+
+void Task_SecretBasePC_Decoration(u8 taskId)
+{
+ DecorationPC(taskId);
+ ewram_1f000.items = gSaveBlock1.secretBases[0].decorations;
+ ewram_1f000.pos = gSaveBlock1.secretBases[0].decorationPos;
+ ewram_1f000.size = sizeof gSaveBlock1.secretBases[0].decorations;
+ ewram_1f000.isPlayerRoom = 0;
+}
+
+void DoPlayerPCDecoration(u8 taskId)
+{
+ DecorationPC(taskId);
+ ewram_1f000.items = gSaveBlock1.playerRoomDecor;
+ ewram_1f000.pos = gSaveBlock1.playerRoomDecorPos;
+ ewram_1f000.size = sizeof gSaveBlock1.playerRoomDecor;
+ ewram_1f000.isPlayerRoom = 1;
+}
+
+void sub_80FE2B4(void)
+{
+ u16 palettes[3];
+ memcpy(palettes, gUnknown_083EC654, sizeof gUnknown_083EC654);
+ LoadPalette(&palettes[2], 0xdf, 2);
+ LoadPalette(&palettes[1], 0xd1, 2);
+ LoadPalette(&palettes[0], 0xd8, 2);
+}
+
+void Task_DecorationPCProcessMenuInput(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_020388D4 = MoveMenuCursor(-1);
+ sub_80FE394();
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_020388D4 = MoveMenuCursor(1);
+ sub_80FE394();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_083EC604[gUnknown_020388D4].func(taskId);
+ } else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gpu_pal_decompress_alloc_tag_and_upload(taskId);
+ }
+ }
+}
+
+void sub_80FE394(void)
+{
+ MenuFillWindowRectWithBlankTile(2, 15, 27, 18);
+ MenuPrint(gUnknown_083EC624[gUnknown_020388D4], 2, 15);
+}
+
+void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId)
+{
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 10, 9);
+ MenuFillWindowRectWithBlankTile(2, 15, 27, 18);
+ FreeSpritePaletteByTag(6);
+ if (ewram_1f000.isPlayerRoom == 0)
+ {
+ ScriptContext1_SetupScript(gUnknown_0815F399);
+ DestroyTask(taskId);
+ } else
+ {
+ ReshowPlayerPC(taskId);
+ }
+}
+
+void sub_80FE418(u8 taskId)
+{
+ sub_80FE5AC(taskId);
+}
+
+void sub_80FE428(u8 taskId)
+{
+ InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9);
+ sub_80FE394();
+ gTasks[taskId].func = Task_DecorationPCProcessMenuInput;
+}
+
+void sub_80FE470(u8 decoCat, u8 a1, u8 a2, u8 palIdx)
+{
+ u8 *strptr;
+ u8 v0;
+ v0 = sub_8072CBC();
+ // PALETTE {palIdx}
+ strptr = gStringVar4;
+ strptr[0] = EXT_CTRL_CODE_BEGIN;
+ strptr[1] = 5;
+ strptr[2] = palIdx;
+ strptr += 3;
+ strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]);
+ strptr = sub_8072C14(strptr, sub_8134194(decoCat), 0x56, 1);
+ *strptr++ = 0xba;
+ strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1);
+ strptr[0] = EXT_CTRL_CODE_BEGIN;
+ strptr[1] = 5;
+ strptr[2] = v0;
+ strptr[3] = EOS;
+ MenuPrint(gStringVar4, a1, a2);
+}
-void sub_80FEC94(u8 arg0);
-void sub_80FECB8(u8 arg0);
-void sub_80FECE0(u8 arg0);
+void sub_80FE528(u8 taskId)
+{
+ u8 decoCat;
+ MenuDrawTextWindow(0, 0, 14, 19);
+ for (decoCat=0; decoCat<8; decoCat++)
+ {
+ if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECOCAT_DOLL && decoCat != DECOCAT_CUSHION)
+ {
+ sub_80FE470(decoCat, 1, 2 * decoCat + 1, 13);
+ } else
+ {
+ sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255);
+ }
+ }
+ MenuPrint(gUnknownText_Exit, 1, 17);
+}
-void sub_80FE7EC(u8 arg0)
+void sub_80FE5AC(u8 taskId)
{
sub_8072DEC();
MenuZeroFillWindowRect(0, 0, 29, 19);
+ sub_80FE528(taskId);
+ InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13);
+ gTasks[taskId].func = sub_80FE604;
+}
- sub_80FEC94(arg0);
+void sub_80FE604(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ } else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ } else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_020388F6 = GetMenuCursorPos();
+ if (gUnknown_020388F6 != 8)
+ {
+ gUnknown_020388D5 = sub_8134194(gUnknown_020388F6);
+ if (gUnknown_020388D5)
+ {
+ sub_8134104(gUnknown_020388F6);
+ gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items;
+ sub_80FEF50(taskId);
+ sub_80F944C();
+ sub_80F9480(gUnknown_020388F7, 8);
+ LoadScrollIndicatorPalette();
+ gTasks[taskId].func = sub_80FE868;
+ } else
+ {
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 14, 19);
+ DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0);
+ }
+ } else
+ {
+ sub_80FE728(taskId);
+ }
+ } else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_80FE728(taskId);
+ }
+ }
+}
+
+void sub_80FE728(u8 taskId)
+{
+ if (gTasks[taskId].data[11] != 3)
+ {
+ sub_80FE758(taskId);
+ } else
+ {
+ sub_8109DAC(taskId);
+ }
+}
+
+void sub_80FE758(u8 taskId)
+{
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 14, 19);
+ if (gTasks[taskId].data[11] != 2)
+ {
+ sub_80FE1DC();
+ MenuDisplayMessageBox();
+ sub_80FE394();
+ gTasks[taskId].func = Task_DecorationPCProcessMenuInput;
+ } else
+ {
+ sub_80B3068(taskId);
+ }
+}
+
+void sub_80FE7A8(u8 taskId)
+{
+ gTasks[taskId].data[11] = 3;
+ gUnknown_020388F6 = 0;
+ sub_80FE5AC(taskId);
+}
+
+void sub_80FE7D4(u8 *dest, u8 decClass)
+{
+ StringCopy(dest, gUnknown_083EC5E4[decClass]);
+}
+
+void sub_80FE7EC(u8 taskId)
+{
+ sub_8072DEC();
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+
+ sub_80FEC94(taskId);
sub_80FECB8(gUnknown_020388F6);
MenuDrawTextWindow(15, 12, 29, 19);
@@ -25,3 +266,9 @@ void sub_80FE7EC(u8 arg0)
sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4);
InitMenu(0, 1, 2, gUnknown_020388F3 + 1, gUnknown_020388F2, 13);
}
+
+void sub_80FE868(u8 taskId)
+{
+ sub_80FE7EC(taskId);
+ gTasks[taskId].func = sub_80FE948;
+}