mirror of
https://github.com/zeldaret/tmc
synced 2026-08-11 03:26:26 -04:00
Match SurfaceAction_Swamp
This commit is contained in:
@@ -1,146 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080741C4
|
||||
cmp r0, #0
|
||||
beq _08074690
|
||||
ldr r0, _0807468C @ =gPlayerState
|
||||
movs r1, #0
|
||||
strb r1, [r0, #0x11]
|
||||
b _080746CE
|
||||
.align 2, 0
|
||||
_0807468C: .4byte gPlayerState
|
||||
_08074690:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x45
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0807476C
|
||||
adds r0, r4, #0
|
||||
bl sub_08079C30
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bne _080746B0
|
||||
ldr r0, _080746AC @ =gPlayerState
|
||||
strb r1, [r0, #0x11]
|
||||
b _080746CE
|
||||
.align 2, 0
|
||||
_080746AC: .4byte gPlayerState
|
||||
_080746B0:
|
||||
ldr r3, _080746D4 @ =gPlayerState
|
||||
ldr r1, [r3, #0x30]
|
||||
movs r0, #0x80
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _0807476C
|
||||
ldrb r2, [r3, #0x1e]
|
||||
cmp r2, #0
|
||||
beq _080746D8
|
||||
movs r0, #0x40
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _080746DC
|
||||
strb r1, [r3, #0x11]
|
||||
adds r0, r3, #0
|
||||
_080746CE:
|
||||
adds r0, #0x37
|
||||
strb r1, [r0]
|
||||
b _08074792
|
||||
.align 2, 0
|
||||
_080746D4: .4byte gPlayerState
|
||||
_080746D8:
|
||||
bl sub_08077B20
|
||||
_080746DC:
|
||||
ldr r1, _08074700 @ =gPlayerState
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x37
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bne _08074704
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x70
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl CreateObjectWithParent
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x52
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
b _08074714
|
||||
.align 2, 0
|
||||
_08074700: .4byte gPlayerState
|
||||
_08074704:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08074720
|
||||
_08074714:
|
||||
ldr r0, _0807471C @ =0x00000161
|
||||
bl SoundReq
|
||||
b _08074732
|
||||
.align 2, 0
|
||||
_0807471C: .4byte 0x00000161
|
||||
_08074720:
|
||||
ldr r0, _08074760 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08074732
|
||||
ldr r0, _08074764 @ =0x00000161
|
||||
bl SoundReq
|
||||
_08074732:
|
||||
ldr r2, _08074768 @ =gPlayerState
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x80
|
||||
ldrh r0, [r1]
|
||||
subs r0, #0xf0
|
||||
strh r0, [r1]
|
||||
adds r1, #0x28
|
||||
movs r0, #0x1b
|
||||
strb r0, [r1]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x37
|
||||
ldrb r0, [r0]
|
||||
lsls r3, r0, #0x18
|
||||
lsrs r0, r3, #0x18
|
||||
cmp r0, #0xef
|
||||
bhi _0807476C
|
||||
subs r1, #0x69
|
||||
lsrs r0, r3, #0x1d
|
||||
adds r0, #4
|
||||
ldrb r2, [r1]
|
||||
adds r0, r0, r2
|
||||
strb r0, [r1]
|
||||
b _08074792
|
||||
.align 2, 0
|
||||
_08074760: .4byte gRoomTransition
|
||||
_08074764: .4byte 0x00000161
|
||||
_08074768: .4byte gPlayerState
|
||||
_0807476C:
|
||||
ldr r2, _08074794 @ =gPlayerState
|
||||
ldr r0, [r2, #0x30]
|
||||
ldr r1, _08074798 @ =0xFFFBFFFF
|
||||
ands r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x52
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3d
|
||||
movs r0, #0x20
|
||||
strb r0, [r1]
|
||||
subs r0, #0x24
|
||||
bl ModHealth
|
||||
bl RespawnPlayer
|
||||
_08074792:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08074794: .4byte gPlayerState
|
||||
_08074798: .4byte 0xFFFBFFFF
|
||||
.syntax divided
|
||||
+47
-1
@@ -3567,7 +3567,53 @@ void SurfaceAction_SlopeGndWater(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/player/SurfaceAction_Swamp.inc", void SurfaceAction_Swamp(Entity* this));
|
||||
void SurfaceAction_Swamp(Entity* this) {
|
||||
if (sub_080741C4()) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->health) {
|
||||
if (sub_08079C30(this) == 0) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
if ((gPlayerState.flags & 0x80) == 0) {
|
||||
if (gPlayerState.dash_state) {
|
||||
if ((gPlayerState.dash_state & 0x40) != 0) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
sub_08077B20();
|
||||
}
|
||||
|
||||
if (gPlayerState.field_0x37 == 1) {
|
||||
CreateObjectWithParent(this, OBJECT_70, 0, 0);
|
||||
CreateFx(this, FX_GREEN_SPLASH, 0);
|
||||
SoundReq(SFX_161);
|
||||
} else if ((gPlayerState.field_0x92 & 0xf00) != 0) {
|
||||
SoundReq(SFX_161);
|
||||
} else if ((gRoomTransition.frameCount & 0xf) == 0) {
|
||||
SoundReq(SFX_161);
|
||||
}
|
||||
gPlayerState.speed_modifier -= 0xf0;
|
||||
gPlayerState.framestate = 0x1b;
|
||||
if (gPlayerState.field_0x37 < 0xf0) {
|
||||
gPlayerState.field_0x3f = gPlayerState.field_0x3f + 4 + (gPlayerState.field_0x37 >> 5);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
gPlayerState.flags &= ~PL_ROLLING;
|
||||
CreateFx(this, FX_GREEN_SPLASH, 0);
|
||||
this->iframes = 0x20;
|
||||
ModHealth(-4);
|
||||
RespawnPlayer();
|
||||
}
|
||||
|
||||
void SurfaceAction_Water(Entity* this) {
|
||||
if (!sub_080741C4()) {
|
||||
|
||||
Reference in New Issue
Block a user