diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-02 16:34:20 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-02 16:34:20 -0400 |
commit | a067876104be90ddbb54d4ffa344d54573d05293 (patch) | |
tree | 94b41879d231243fcd4d43abc8f2c09ad88a1fe8 | |
parent | 3d82de46b836c00a617869bf6e2916eeb3cc4fef (diff) |
sub_80FF6AC
-rwxr-xr-x | asm/decoration.s | 97 | ||||
-rw-r--r-- | include/decoration.h | 9 | ||||
-rw-r--r-- | include/palette.h | 32 | ||||
-rw-r--r-- | src/decoration.c | 48 |
4 files changed, 64 insertions, 122 deletions
diff --git a/asm/decoration.s b/asm/decoration.s index 50248d7f4..38d7e32ec 100755 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -8,103 +8,6 @@ .equiv ewram_1f000, 0x0201f000 - thumb_func_start sub_80FF6AC -sub_80FF6AC: @ 80FF6AC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080FF6D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0x1 - beq _080FF714 - cmp r0, 0x1 - bgt _080FF6D4 - cmp r0, 0 - beq _080FF6DA - b _080FF77A - .align 2, 0 -_080FF6D0: .4byte gTasks -_080FF6D4: - cmp r0, 0x2 - beq _080FF764 - b _080FF77A -_080FF6DA: - ldr r0, _080FF70C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FF77A - adds r0, r6, 0 - bl sub_80FF0E0 - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - ldr r0, _080FF710 @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9520 - bl BuyMenuFreeMemory - movs r0, 0x1 - strh r0, [r7, 0xC] - b _080FF77A - .align 2, 0 -_080FF70C: .4byte gPaletteFade -_080FF710: .4byte gUnknown_020388F7 -_080FF714: - ldr r4, _080FF754 @ =gPaletteFade - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - ldr r5, _080FF758 @ =gUnknown_02038900 - ldr r0, _080FF75C @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _080FF760 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl AddDecorationIconObjectFromFieldObject - adds r0, r6, 0 - bl sub_80FF960 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetUpPlacingDecorationPlayerAvatar - bl pal_fill_black - ldrb r1, [r4, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x8] - movs r0, 0x2 - strh r0, [r7, 0xC] - b _080FF77A - .align 2, 0 -_080FF754: .4byte gPaletteFade -_080FF758: .4byte gUnknown_02038900 -_080FF75C: .4byte gUnknown_020388F5 -_080FF760: .4byte gUnknown_020388D0 -_080FF764: - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF77A - movs r0, 0 - strh r0, [r7, 0x20] - adds r0, r6, 0 - bl sub_810065C -_080FF77A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FF6AC - thumb_func_start AddDecorationIconObjectFromFieldObject AddDecorationIconObjectFromFieldObject: @ 80FF780 push {r4-r6,lr} diff --git a/include/decoration.h b/include/decoration.h index b0484c3be..afcfcae87 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -167,7 +167,7 @@ extern u8 ewram[]; extern struct Decoration gDecorations[0x77]; extern struct Decoration *gUnknown_02038900; -extern u8 *(gUnknown_020388D0[]); +extern u8 *gUnknown_020388D0; extern u8 gUnknown_020388D4; extern u8 gUnknown_020388D5; @@ -199,6 +199,7 @@ extern void sub_80B3068(u8); // src/shop extern u8 sub_8134194(u8); // src/decoration_inventory extern bool8 sub_81341D4(void); // src/decoration_inventory extern void sub_8134104(u8); // src/decoration_inventory +extern bool8 sub_807D770(void); extern void sub_80F944C(void); // src/menu_helpers extern void sub_80F9480(u8 *, u8); // src/menu_helpers extern void sub_80F94A4(u8, u8 *, u8, s16); // src/menu_helpers @@ -209,8 +210,8 @@ extern void CreateVerticalScrollIndicators(u8, 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 BuyMenuFreeMemory(void); // src/menu_helpers -extern void ReshowPlayerPC(u8); // src/player_pc +extern void ReshowPlayerPC(u8); // src/player_pc void sub_80FE2B4(void); void Task_DecorationPCProcessMenuInput(u8); void sub_80FE394(void); @@ -228,6 +229,10 @@ void sub_80FECE0(u8); void sub_80FEF50(u8); void sub_80FF394(u16, u16, u16); void sub_80FF6AC(u8); +void sub_80FF960(u8); +void sub_810065C(u8); void sub_8109DAC(u8); +void AddDecorationIconObjectFromFieldObject(struct Decoration **, u8); +void SetUpPlacingDecorationPlayerAvatar(u8, struct Decoration **); #endif // GUARD_DECORATION_H diff --git a/include/palette.h b/include/palette.h index 37fcb4d65..193773d24 100644 --- a/include/palette.h +++ b/include/palette.h @@ -16,22 +16,22 @@ enum struct PaletteFadeControl { - u32 multipurpose1; - u8 delayCounter:6; - u16 y:5; // blend coefficient - u16 targetY:5; // target blend coefficient - u16 blendColor:15; - u16 active:1; - u16 multipurpose2:6; - u16 yDec:1; // whether blend coefficient is decreasing - u16 bufferTransferDisabled:1; - u16 mode:2; - u16 shouldResetBlendRegisters:1; - u16 hardwareFadeFinishing:1; - u16 softwareFadeFinishingCounter:5; - u16 softwareFadeFinishing:1; - u16 objPaletteToggle:1; - u8 deltaY:4; // rate of change of blend coefficient + /*0x00*/ u32 multipurpose1; + /*0x04*/ u8 delayCounter:6; + /*0x05*/ u16 y:5; // blend coefficient + /*0x05-06*/ u16 targetY:5; // target blend coefficient + /*0x07*/ u16 blendColor:15; + /*0x07*/ u16 active:1; + /*0x08*/ u16 multipurpose2:6; + /*0x08*/ u16 yDec:1; // whether blend coefficient is decreasing + /*0x08*/ u16 bufferTransferDisabled:1; + /*0x09*/ u16 mode:2; + /*0x09*/ u16 shouldResetBlendRegisters:1; + /*0x09*/ u16 hardwareFadeFinishing:1; + /*0x09-0a*/ u16 softwareFadeFinishingCounter:5; + /*0x0a*/ u16 softwareFadeFinishing:1; + /*0x0a*/ u16 objPaletteToggle:1; + /*0x0a*/ u8 deltaY:4; // rate of change of blend coefficient }; extern struct PaletteFadeControl gPaletteFade; diff --git a/src/decoration.c b/src/decoration.c index d172e1426..75f9f4b96 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -199,7 +199,7 @@ void sub_80FE604(u8 taskId) if (gUnknown_020388D5) { sub_8134104(gUnknown_020388F6); - *gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; + gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; sub_80FEF50(taskId); sub_80F944C(); sub_80F9480(gUnknown_020388F7, 8); @@ -385,15 +385,15 @@ void sub_80FEABC(u8 taskId, u8 dummy1) sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1); break; } - if ((*gUnknown_020388D0)[i]) + if (gUnknown_020388D0[i]) { if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECOCAT_DOLL && gUnknown_020388F6 != DECOCAT_CUSHION && gTasks[taskId].data[11] == 0) { - StringCopy(gStringVar1, gDecorations[(*gUnknown_020388D0)[i]].name); + StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name); sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1); } else { - sub_8072A18(gDecorations[(*gUnknown_020388D0)[i]].name, 0x08, 8 * ni, 0x68, 1); + sub_8072A18(gDecorations[gUnknown_020388D0[i]].name, 0x08, 8 * ni, 0x68, 1); } for (j=0; j<16; j++) { @@ -429,7 +429,7 @@ void sub_80FECB8(u8 decoCat) void sub_80FECE0(u8 decoCat) { - sub_8072AB0(gDecorations[(*gUnknown_020388D0)[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); + sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); } void sub_80FED1C(void) @@ -478,7 +478,7 @@ void sub_80FED90(u8 taskId) { for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) { - if ((*gUnknown_020388D0)[j] == gSaveBlock1.secretBases[0].decorations[i]) + if (gUnknown_020388D0[j] == gSaveBlock1.secretBases[0].decorations[i]) { for (k=0; k<cnt && gUnknown_020388D6[k]!=j+1; k++); if (k == cnt) @@ -498,7 +498,7 @@ void sub_80FED90(u8 taskId) { for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) { - if ((*gUnknown_020388D0)[j] == gSaveBlock1.playerRoomDecor[i] && !sub_80FED64(j + 1)) + if (gUnknown_020388D0[j] == gSaveBlock1.playerRoomDecor[i] && !sub_80FED64(j + 1)) { for (k=0; k<cnt && gUnknown_020388E6[k]!=j+1; k++); if (k == cnt) @@ -794,3 +794,37 @@ void sub_80FF5BC(u8 taskId) DisplayItemMessageOnField(taskId, gSecretBaseText_InUseAlready, sub_80FEFF4, 0); } } + +void sub_80FF6AC(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_80FF0E0(taskId); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + sub_80F9520(gUnknown_020388F7, 8); + BuyMenuFreeMemory(); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + gPaletteFade.bufferTransferDisabled = 1; + AddDecorationIconObjectFromFieldObject(&gUnknown_02038900, gUnknown_020388D0[gUnknown_020388F5]); + sub_80FF960(taskId); + SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_02038900); + pal_fill_black(); + gPaletteFade.bufferTransferDisabled = 0; + gTasks[taskId].data[2] = 2; + break; + case 2: + if (sub_807D770() == 1) + { + gTasks[taskId].data[12] = 0; + sub_810065C(taskId); + } + break; + } +} |