From d53fdf3f473728c2e399253beb4e65838f5dfd56 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 8 Aug 2020 10:54:50 -0500 Subject: Match railtrack/sub_080854A8 --- src/object/railtrack.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/object/railtrack.c b/src/object/railtrack.c index 95c418f4..f2e9a10a 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -12,8 +12,8 @@ extern void SetTile(u32, u32, u32); extern void (*const gUnk_081205D0[])(Entity*); +extern s8 gUnk_080B4488[][2]; extern u16 gUnk_081205E0[]; -extern s8 gUnk_080B4488[]; void Railtrack(Entity* this) { gUnk_081205D0[this->action](this); @@ -135,14 +135,30 @@ void sub_0808543C(Entity *this) u32 uVar2; s8 temp; - temp = gUnk_080B4488[(this->animationState >> 1) << 1]; + temp = gUnk_080B4488[this->animationState / 2][0]; uVar2 = COORD_TO_TILE(this); SetTile(this->field_0x74, uVar2 - temp, this->collisionLayer); SetTile(this->field_0x76, uVar2, this->collisionLayer); SetTile(this->field_0x78.HWORD, uVar2 + temp, this->collisionLayer); } -NAKED u32 sub_080854A8(Entity *this) { - asm(".include \"asm/non_matching/railtrack/sub_080854A8.inc\""); + u16 var0; + u16* var1; + s8* var2; + + var0 = gUnk_081205E0[this->animationState / 2]; + var2 = gUnk_080B4488[this->animationState / 2]; + var1 = (u16 *)this->field_0x70.WORD; + if (var0 != *(var1 - var2[0])) { + return TRUE; + } + if (var0 != *var1) { + return TRUE; + } + if (var0 != *(var1 + var2[0])) { + return TRUE; + } + + return FALSE; } \ No newline at end of file -- cgit v1.2.3