diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-02 14:57:32 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-02 14:57:32 -0400 |
commit | ce6dc3665fd4a90807dae239065610b9a27e9726 (patch) | |
tree | 2025d1b909d3249cdbf0d3d7355123ccfeb24556 | |
parent | 97a19baae9076dd2c74c6fc8e2231ef3ec6786fd (diff) |
sub_80FF394
-rwxr-xr-x | asm/decoration.s | 115 | ||||
-rw-r--r-- | include/decoration.h | 10 | ||||
-rw-r--r-- | src/decoration.c | 39 |
3 files changed, 43 insertions, 121 deletions
diff --git a/asm/decoration.s b/asm/decoration.s index 238017247..b28e6b85a 100755 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -8,121 +8,6 @@ .equiv ewram_1f000, 0x0201f000 - thumb_func_start sub_80FF394 -sub_80FF394: @ 80FF394 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _080FF3BC @ =gDecorations - lsls r0, r2, 5 - adds r0, r1 - ldrb r0, [r0, 0x12] - cmp r0, 0x9 - bhi _080FF46C - lsls r0, 2 - ldr r1, _080FF3C0 @ =_080FF3C4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FF3BC: .4byte gDecorations -_080FF3C0: .4byte _080FF3C4 - .align 2, 0 -_080FF3C4: - .4byte _080FF3EC - .4byte _080FF3F6 - .4byte _080FF400 - .4byte _080FF410 - .4byte _080FF41A - .4byte _080FF424 - .4byte _080FF434 - .4byte _080FF43E - .4byte _080FF44E - .4byte _080FF45E -_080FF3EC: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _080FF408 -_080FF3F6: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _080FF408 -_080FF400: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_080FF408: - movs r3, 0x1 - bl sub_80FF1EC - b _080FF46C -_080FF410: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x4 - b _080FF42C -_080FF41A: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _080FF42C -_080FF424: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 -_080FF42C: - movs r3, 0x2 - bl sub_80FF1EC - b _080FF46C -_080FF434: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _080FF456 -_080FF43E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x4 - bl sub_80FF1EC - b _080FF46C -_080FF44E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_080FF456: - movs r3, 0x3 - bl sub_80FF1EC - b _080FF46C -_080FF45E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80FF1EC -_080FF46C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FF394 - thumb_func_start sub_80FF474 sub_80FF474: @ 80FF474 push {r4-r7,lr} diff --git a/include/decoration.h b/include/decoration.h index 0951d514a..34de1dc73 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -166,9 +166,8 @@ 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 u8 *(gUnknown_020388D0[]); + extern u8 gUnknown_020388D4; extern u8 gUnknown_020388D5; extern u8 gUnknown_020388F2; @@ -178,8 +177,8 @@ extern u8 gUnknown_020388F5; extern u8 gUnknown_020388F6; extern u8 gUnknown_020388D6[16]; extern u8 gUnknown_020388E6[12]; - extern const u16 gUnknown_083EC654[3]; + extern const struct DecorationInventory gDecorationInventories[]; extern const u8 *gUnknown_083EC5E4[]; extern const u8 *gUnknown_083EC624[]; @@ -189,8 +188,8 @@ extern const struct MenuAction3 gUnknown_083EC634[]; extern const u8 gUnknown_083EC65A[]; extern const u8 gUnknown_083EC97C[]; extern const u8 gUnknown_083EC984[]; - 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 @@ -198,6 +197,7 @@ 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 extern void sub_80F94F8(u8 *); // src/menu_helpers +extern void sub_80F9520(u8 *, u8); // src/menu_helpers extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers extern void LoadScrollIndicatorPalette(void); // src/menu_helpers @@ -220,7 +220,7 @@ void sub_80FEC94(u8); void sub_80FECB8(u8); void sub_80FECE0(u8); void sub_80FEF50(u8); -void sub_80F9520(u8 *, u8); +void sub_80FF394(u16, u16, u16); void sub_8109DAC(u8); #endif // GUARD_DECORATION_H diff --git a/src/decoration.c b/src/decoration.c index 6b57ead5f..f2d4c62a3 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -635,7 +635,7 @@ u16 sub_80FF1B0(u8 decoId, u8 a1) } } -void sub_80FF1EC(s16 mapX, s16 mapY, u8 decWidth, u8 decHeight, u16 decIdx) +void sub_80FF1EC(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decIdx) { u16 i; u16 j; // r10 @@ -678,3 +678,40 @@ void sub_80FF1EC(s16 mapX, s16 mapY, u8 decWidth, u8 decHeight, u16 decIdx) } } } + +void sub_80FF394(u16 mapX, u16 mapY, u16 decIdx) +{ + switch (gDecorations[decIdx].decor_field_12) + { + case 0: + sub_80FF1EC(mapX, mapY, 1, 1, decIdx); + break; + case 1: + sub_80FF1EC(mapX, mapY, 2, 1, decIdx); + break; + case 2: + sub_80FF1EC(mapX, mapY, 3, 1, decIdx); + break; + case 3: + sub_80FF1EC(mapX, mapY, 4, 2, decIdx); + break; + case 4: + sub_80FF1EC(mapX, mapY, 2, 2, decIdx); + break; + case 5: + sub_80FF1EC(mapX, mapY, 1, 2, decIdx); + break; + case 6: + sub_80FF1EC(mapX, mapY, 1, 3, decIdx); + break; + case 7: + sub_80FF1EC(mapX, mapY, 2, 4, decIdx); + break; + case 8: + sub_80FF1EC(mapX, mapY, 3, 3, decIdx); + break; + case 9: + sub_80FF1EC(mapX, mapY, 3, 2, decIdx); + break; + } +} |