diff options
-rwxr-xr-x | asm/decoration.s | 62 | ||||
-rwxr-xr-x | include/decoration.h | 10 | ||||
-rwxr-xr-x | src/decoration.c | 11 |
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]); + } +} |