diff options
| author | Tal Hayon <talhayon1@gmail.com> | 2022-09-02 15:20:03 +0300 |
|---|---|---|
| committer | Tal Hayon <talhayon1@gmail.com> | 2022-09-02 15:20:03 +0300 |
| commit | 83d376229b75db225208f0adcdcf6ca9b45e3d17 (patch) | |
| tree | c2eb782bcfded0c26702288d0b187a90a4b19feb /src | |
| parent | 45153b7647fcdd60895b06a5c3387155a914ed5c (diff) | |
Match sub_0804393C
Diffstat (limited to 'src')
| -rw-r--r-- | src/enemy/vaatiArm.c | 27 |
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; |
