summaryrefslogtreecommitdiff
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
parent57acabe4c25d913ac9315e25dba9d68e0548e544 (diff)
Match railtrack/sub_080854A8
-rw-r--r--asm/non_matching/railtrack/sub_080854A8.inc36
-rw-r--r--src/object/railtrack.c24
2 files changed, 20 insertions, 40 deletions
diff --git a/asm/non_matching/railtrack/sub_080854A8.inc b/asm/non_matching/railtrack/sub_080854A8.inc
deleted file mode 100644
index aa5bed89..00000000
--- a/asm/non_matching/railtrack/sub_080854A8.inc
+++ /dev/null
@@ -1,36 +0,0 @@
- .syntax unified
- push {r4, lr}
- ldr r2, _080854E0 @ =gUnk_081205E0
- ldrb r1, [r0, #0x14]
- lsrs r1, r1, #1
- lsls r1, r1, #1
- adds r2, r1, r2
- ldrh r3, [r2]
- adds r4, r3, #0
- ldr r2, _080854E4 @ =gUnk_080B4488
- adds r1, r1, r2
- ldr r2, [r0, #0x70]
- movs r0, #0
- ldrsb r0, [r1, r0]
- lsls r1, r0, #1
- subs r0, r2, r1
- ldrh r0, [r0]
- cmp r3, r0
- bne _080854E8
- ldrh r0, [r2]
- cmp r3, r0
- bne _080854E8
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r4, r0
- bne _080854E8
- movs r0, #0
- b _080854EA
- .align 2, 0
-_080854E0: .4byte gUnk_081205E0
-_080854E4: .4byte gUnk_080B4488
-_080854E8:
- movs r0, #1
-_080854EA:
- pop {r4, pc}
- .syntax divided \ No newline at end of file
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