diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-02 15:32:00 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-02 15:32:00 -0400 |
commit | 3d82de46b836c00a617869bf6e2916eeb3cc4fef (patch) | |
tree | 49a01785b6e4bf00ef0cd37ad0ecb175adb9745f | |
parent | 1ef73db9299a79bdb3db15140d8ee59ada985aa9 (diff) |
sub_80FF5BC
-rwxr-xr-x | asm/decoration.s | 135 | ||||
-rw-r--r-- | include/decoration.h | 5 | ||||
-rw-r--r-- | src/decoration.c | 50 |
3 files changed, 53 insertions, 137 deletions
diff --git a/asm/decoration.s b/asm/decoration.s index b6e217919..50248d7f4 100755 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -8,141 +8,6 @@ .equiv ewram_1f000, 0x0201f000 - thumb_func_start sub_80FF58C -sub_80FF58C: @ 80FF58C - push {lr} - movs r1, 0 - ldr r0, _080FF5A8 @ =ewram_1f000 - ldrb r2, [r0, 0x8] - cmp r1, r2 - bcs _080FF5B6 - ldr r3, [r0] -_080FF59A: - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FF5AC - movs r0, 0x1 - b _080FF5B8 - .align 2, 0 -_080FF5A8: .4byte ewram_1f000 -_080FF5AC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _080FF59A -_080FF5B6: - movs r0, 0 -_080FF5B8: - pop {r1} - bx r1 - thumb_func_end sub_80FF58C - - thumb_func_start sub_80FF5BC -sub_80FF5BC: @ 80FF5BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080FF5E4 @ =ewram_1f000 - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - bne _080FF5F0 - ldr r0, _080FF5E8 @ =gUnknown_020388F6 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080FF5F0 - cmp r0, 0x7 - beq _080FF5F0 - bl sub_80FEF74 - bl sub_80FED1C - ldr r1, _080FF5EC @ =gSecretBaseText_DecorCantPlace - b _080FF66E - .align 2, 0 -_080FF5E4: .4byte ewram_1f000 -_080FF5E8: .4byte gUnknown_020388F6 -_080FF5EC: .4byte gSecretBaseText_DecorCantPlace -_080FF5F0: - bl sub_80FEFA4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF688 - bl sub_80FF58C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF62C - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _080FF624 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _080FF628 @ =sub_80FF6AC - str r1, [r0] - b _080FF69C - .align 2, 0 -_080FF624: .4byte gTasks -_080FF628: .4byte sub_80FF6AC -_080FF62C: - bl sub_80FEF74 - bl sub_80FED1C - ldr r0, _080FF654 @ =gStringVar1 - ldr r4, _080FF658 @ =ewram_1f000 - ldrb r1, [r4, 0x8] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080FF664 - ldr r0, _080FF65C @ =gStringVar4 - ldr r1, _080FF660 @ =gSecretBaseText_NoMoreDecor - bl StringExpandPlaceholders - b _080FF66C - .align 2, 0 -_080FF654: .4byte gStringVar1 -_080FF658: .4byte ewram_1f000 -_080FF65C: .4byte gStringVar4 -_080FF660: .4byte gSecretBaseText_NoMoreDecor -_080FF664: - ldr r0, _080FF67C @ =gStringVar4 - ldr r1, _080FF680 @ =gSecretBaseText_NoMoreDecor2 - bl StringExpandPlaceholders -_080FF66C: - ldr r1, _080FF67C @ =gStringVar4 -_080FF66E: - ldr r2, _080FF684 @ =sub_80FEFF4 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _080FF69C - .align 2, 0 -_080FF67C: .4byte gStringVar4 -_080FF680: .4byte gSecretBaseText_NoMoreDecor2 -_080FF684: .4byte sub_80FEFF4 -_080FF688: - bl sub_80FEF74 - bl sub_80FED1C - ldr r1, _080FF6A4 @ =gSecretBaseText_InUseAlready - ldr r2, _080FF6A8 @ =sub_80FEFF4 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_080FF69C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FF6A4: .4byte gSecretBaseText_InUseAlready -_080FF6A8: .4byte sub_80FEFF4 - thumb_func_end sub_80FF5BC - thumb_func_start sub_80FF6AC sub_80FF6AC: @ 80FF6AC push {r4-r7,lr} diff --git a/include/decoration.h b/include/decoration.h index 6e4137bcc..b0484c3be 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -1,7 +1,7 @@ #ifndef GUARD_DECORATION_H #define GUARD_DECORATION_H -enum { +enum DecoCat { /*0*/ DECOCAT_DESK, /*1*/ DECOCAT_CHAIR, /*2*/ DECOCAT_PLANT, @@ -12,7 +12,7 @@ enum { /*7*/ DECOCAT_CUSHION }; -enum{ +enum DecoId { /*000*/ DECOR_NONE, /*001*/ DECOR_SMALL_DESK, /*002*/ DECOR_POKEMON_DESK, @@ -227,6 +227,7 @@ void sub_80FECB8(u8); void sub_80FECE0(u8); void sub_80FEF50(u8); void sub_80FF394(u16, u16, u16); +void sub_80FF6AC(u8); void sub_8109DAC(u8); #endif // GUARD_DECORATION_H diff --git a/src/decoration.c b/src/decoration.c index a1663e31f..d172e1426 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -13,6 +13,7 @@ #include "fieldmap.h" #include "metatile_behavior.h" #include "event_data.h" +#include "field_weather.h" #include "decoration.h" extern Script gUnknown_0815F399; @@ -744,3 +745,52 @@ void sub_80FF474(void) } } } + +bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void) +{ + u16 i; + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] == 0) + { + return TRUE; + } + } + return FALSE; +} + +void sub_80FF5BC(u8 taskId) +{ + if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECOCAT_DOLL && gUnknown_020388F6 != DECOCAT_CUSHION) + { + sub_80FEF74(); + sub_80FED1C(); + DisplayItemMessageOnField(taskId, gSecretBaseText_DecorCantPlace, sub_80FEFF4, 0); + } else if (sub_80FEFA4() == TRUE) + { + if (sub_80FF58C() == TRUE) + { + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80FF6AC; + } else + { + sub_80FEF74(); + sub_80FED1C(); + ConvertIntToDecimalStringN(gStringVar1, ewram_1f000.size, STR_CONV_MODE_RIGHT_ALIGN, 2); + if (!ewram_1f000.isPlayerRoom) + { + StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor); + } else + { + StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor2); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_80FEFF4, 0); + } + } else + { + sub_80FEF74(); + sub_80FED1C(); + DisplayItemMessageOnField(taskId, gSecretBaseText_InUseAlready, sub_80FEFF4, 0); + } +} |