mirror of https://github.com/zeldaret/tmc.git
Match railtrack/sub_080854A8
This commit is contained in:
parent
57acabe4c2
commit
d53fdf3f47
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue