summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/decoration.s62
-rwxr-xr-xinclude/decoration.h10
-rwxr-xr-xsrc/decoration.c11
3 files changed, 21 insertions, 62 deletions
diff --git a/asm/decoration.s b/asm/decoration.s
index 62dc1d1ab..612b293ed 100755
--- a/asm/decoration.s
+++ b/asm/decoration.s
@@ -8,68 +8,6 @@
.equiv ewram_1f000, 0x0201f000
- thumb_func_start sub_81008BC
-sub_81008BC: @ 81008BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x12]
- movs r6, 0
- ldr r1, _0810092C @ =gUnknown_083EC860
- lsls r5, r0, 4
- adds r0, r5, r1
- ldrb r0, [r0, 0xC]
- cmp r6, r0
- bcs _08100920
- adds r7, r1, 0
-_081008D8:
- mov r4, r8
- ldm r4!, {r1}
- adds r0, r7, 0x4
- adds r0, r5, r0
- ldr r0, [r0]
- adds r0, r6
- ldrb r0, [r0]
- ldr r1, [r1, 0x1C]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r5, r1
- ldr r1, [r1]
- adds r1, r6
- lsls r0, 3
- ldrb r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_810089C
- adds r2, r5, r7
- ldr r1, [r2]
- adds r1, r6
- ldrb r1, [r1]
- lsls r1, 1
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r2, [r2, 0xC]
- cmp r6, r2
- bcc _081008D8
-_08100920:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810092C: .4byte gUnknown_083EC860
- thumb_func_end sub_81008BC
-
thumb_func_start sub_8100930
sub_8100930: @ 8100930
push {r4,r5,lr}
diff --git a/include/decoration.h b/include/decoration.h
index 83090ae40..f8086e7cc 100755
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -162,6 +162,16 @@ struct DecorationInventory
u8 size;
};
+struct UnkStruct_803EC860
+{
+ u8 *var0;
+ u8 *var4;
+ u8 *var8;
+ u8 size;
+};
+
+extern const struct UnkStruct_803EC860 gUnknown_083EC860[];
+
extern u8 ewram[];
#define ewram_1f000 (*(struct DecoPCPointers *)(ewram + 0x1f000))
diff --git a/src/decoration.c b/src/decoration.c
index eed0f9f67..f3a9df367 100755
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1968,3 +1968,14 @@ u16 sub_810089C(u16 a0)
{
return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff;
}
+
+void sub_81008BC(struct UnkStruct_02038900 *unk_02038900)
+{
+ u8 i;
+ u8 idx;
+ idx = unk_02038900->decoration->decor_field_12;
+ for (i=0; i<gUnknown_083EC860[idx].size; i++)
+ {
+ unk_02038900->unk_004[gUnknown_083EC860[idx].var0[i]] = sub_810089C(unk_02038900->decoration->tiles[gUnknown_083EC860[idx].var4[i]] * 8 + gUnknown_083EC860[idx].var8[i]);
+ }
+}