summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-02 14:57:32 -0400
committerscnorton <scnorton@biociphers.org>2017-06-02 14:57:32 -0400
commitce6dc3665fd4a90807dae239065610b9a27e9726 (patch)
tree2025d1b909d3249cdbf0d3d7355123ccfeb24556
parent97a19baae9076dd2c74c6fc8e2231ef3ec6786fd (diff)
sub_80FF394
-rwxr-xr-xasm/decoration.s115
-rw-r--r--include/decoration.h10
-rw-r--r--src/decoration.c39
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;
+ }
+}