summaryrefslogtreecommitdiff
path: root/src/object
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2020-08-08 10:54:50 -0500
committerMarcus Huderle <huderlem@gmail.com>2020-08-08 10:54:50 -0500
commitd53fdf3f473728c2e399253beb4e65838f5dfd56 (patch)
tree9870b51bb191ee492650b47e02faed527e66053b /src/object
parent57acabe4c25d913ac9315e25dba9d68e0548e544 (diff)
Match railtrack/sub_080854A8
Diffstat (limited to 'src/object')
-rw-r--r--src/object/railtrack.c24
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