summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/decoration.s96
-rwxr-xr-x[-rw-r--r--]include/decoration.h1
-rwxr-xr-x[-rw-r--r--]src/decoration.c20
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;
+}