diff options
| author | Marcus Huderle <huderlem@gmail.com> | 2020-08-08 10:54:50 -0500 |
|---|---|---|
| committer | Marcus Huderle <huderlem@gmail.com> | 2020-08-08 10:54:50 -0500 |
| commit | d53fdf3f473728c2e399253beb4e65838f5dfd56 (patch) | |
| tree | 9870b51bb191ee492650b47e02faed527e66053b /src/object | |
| parent | 57acabe4c25d913ac9315e25dba9d68e0548e544 (diff) | |
Match railtrack/sub_080854A8
Diffstat (limited to 'src/object')
| -rw-r--r-- | src/object/railtrack.c | 24 |
1 files changed, 20 insertions, 4 deletions
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 |
