diff options
-rwxr-xr-x | asm/decoration.s | 96 | ||||
-rwxr-xr-x[-rw-r--r--] | include/decoration.h | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | src/decoration.c | 20 |
3 files changed, 21 insertions, 96 deletions
diff --git a/asm/decoration.s b/asm/decoration.s index b09b3596f..b95b1b2e8 100755 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -8,102 +8,6 @@ .equiv ewram_1f000, 0x0201f000 - thumb_func_start SetUpPlacingDecorationPlayerAvatar -SetUpPlacingDecorationPlayerAvatar: @ 80FF89C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080FF8F0 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r2, [r2, 0x12] - ldr r3, _080FF8F4 @ =gUnknown_083EC900 - ldr r0, [r1] - ldrb r4, [r0, 0x12] - lsls r1, r4, 2 - adds r1, r3 - lsls r0, r2, 4 - ldrb r1, [r1, 0x2] - adds r0, r1 - subs r2, 0x1 - lsls r2, 3 - subs r0, r2 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r4, 0x2 - beq _080FF8D6 - cmp r4, 0x8 - beq _080FF8D6 - cmp r4, 0x9 - bne _080FF8DE -_080FF8D6: - adds r0, r2, 0 - subs r0, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 -_080FF8DE: - ldr r0, _080FF8F8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080FF900 - ldr r1, _080FF8FC @ =SpriteCallbackDummy - str r0, [sp] - movs r0, 0xC1 - b _080FF908 - .align 2, 0 -_080FF8F0: .4byte gTasks -_080FF8F4: .4byte gUnknown_083EC900 -_080FF8F8: .4byte gSaveBlock2 -_080FF8FC: .4byte SpriteCallbackDummy -_080FF900: - ldr r1, _080FF94C @ =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0xC2 -_080FF908: - movs r3, 0x48 - bl AddPseudoFieldObject - ldr r1, _080FF950 @ =gUnknown_020391A9 - strb r0, [r1] - ldr r3, _080FF954 @ =gSprites - ldr r0, _080FF950 @ =gUnknown_020391A9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r4, _080FF958 @ =gUnknown_020391A8 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - bl DestroySprite - ldr r0, _080FF95C @ =gUnknown_03004880 - ldr r0, [r0, 0x4] - strb r0, [r4] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF94C: .4byte SpriteCallbackDummy -_080FF950: .4byte gUnknown_020391A9 -_080FF954: .4byte gSprites -_080FF958: .4byte gUnknown_020391A8 -_080FF95C: .4byte gUnknown_03004880 - thumb_func_end SetUpPlacingDecorationPlayerAvatar - thumb_func_start sub_80FF960 sub_80FF960: @ 80FF960 push {lr} diff --git a/include/decoration.h b/include/decoration.h index ee3b639bf..a4b72b8dc 100644..100755 --- a/include/decoration.h +++ b/include/decoration.h @@ -205,6 +205,7 @@ extern u16 gSpecialVar_0x8007; extern u16 gUnknown_020391A4; extern u16 gUnknown_020391A6; extern u8 gUnknown_020391A8; +extern u8 gUnknown_020391A9; extern const u16 gUnknown_083EC654[3]; extern const struct DecorationInventory gDecorationInventories[]; diff --git a/src/decoration.c b/src/decoration.c index 7dc4448ef..542644bb0 100644..100755 --- a/src/decoration.c +++ b/src/decoration.c @@ -851,3 +851,23 @@ void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_0203 gSprites[gUnknown_03004880.unk4].oam.priority = 1; } } + +void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_02038900 *unk_02038900) +{ + u8 v0; + v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_083EC900[unk_02038900->decoration->decor_field_12].unk_2 - 8 * ((u8)gTasks[taskId].data[5] - 1); + if (unk_02038900->decoration->decor_field_12 == 2 || unk_02038900->decoration->decor_field_12 == 8 || unk_02038900->decoration->decor_field_12 == 9) + { + v0 -= 8; + } + if (gSaveBlock2.playerGender == MALE) + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, v0, 0x48, 0); + } else + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, v0, 0x48, 0); + } + gSprites[gUnknown_020391A9].oam.priority = 1; + DestroySprite(&gSprites[gUnknown_020391A8]); + gUnknown_020391A8 = gUnknown_03004880.unk4; +} |