summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-09-02 15:20:03 +0300
committerTal Hayon <talhayon1@gmail.com>2022-09-02 15:20:03 +0300
commit83d376229b75db225208f0adcdcf6ca9b45e3d17 (patch)
treec2eb782bcfded0c26702288d0b187a90a4b19feb /src
parent45153b7647fcdd60895b06a5c3387155a914ed5c (diff)
Match sub_0804393C
Diffstat (limited to 'src')
-rw-r--r--src/enemy/vaatiArm.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c
index 7302241e..a6f87b9d 100644
--- a/src/enemy/vaatiArm.c
+++ b/src/enemy/vaatiArm.c
@@ -1198,9 +1198,32 @@ static u32 sub_080437DC(Entity* this) {
return 1;
}
-static ASM_FUNC("asm/non_matching/vaati/sub_0804393C.inc", void sub_0804393C(Entity* this))
+void sub_0804393C(Entity* this) {
+ s32 uVar1;
+ s32 uVar2;
+ s32 uVar6;
+ s32 iVar7;
+ VaatiArm_HeapStruct1* hs;
+ Entity* ent;
+
+ ent = ((VaatiArm_HeapStruct*)this->myHeap)->entities[0];
+ if (ent->field_0x7c.BYTES.byte0 != 0 && ent->field_0x7c.BYTES.byte1 <= this->type) {
+ uVar2 = gUnk_080D1362[this->type * 16 + ((ent->field_0x7c.BYTES.byte0 >> 3) & 0xf)];
+ } else {
+ uVar2 = 0;
+ }
+ hs = &((VaatiArm_HeapStruct*)this->myHeap)->s1[this->type];
+ uVar2 = (uVar2 + hs->unk0c) << 8;
+ uVar1 = -gSineTable[hs->unk04.HALF.HI + 0x40] * uVar2;
+ uVar2 = (gSineTable[hs->unk04.HALF.HI & 0x7f] * uVar2) / 0x100;
+ uVar6 = gSineTable[hs->unk00.HALF.HI] * uVar2;
+ iVar7 = -gSineTable[hs->unk00.HALF.HI + 0x40] * uVar2;
+ PositionRelative(((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1], this, uVar6, iVar7);
+ this->z.WORD += uVar1;
+ this->spriteOffsetY = ((VaatiArm_HeapStruct*)this->myHeap)->entities[this->type + 1]->spriteOffsetY;
+}
- static void sub_08043A10(Entity* this) {
+static void sub_08043A10(Entity* this) {
sub_08043B7C(this);
sub_0804393C(((VaatiArm_HeapStruct*)this->myHeap)->entities[4]);
((VaatiArm_HeapStruct*)this->myHeap)->entities[4]->y.HALF.HI -= 8;