mirror of https://github.com/zeldaret/tmc.git
Decompile floatingPlatform
This commit is contained in:
parent
12e8722606
commit
ea85b8e04b
|
|
@ -1,132 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start FloatingPlatform
|
||||
FloatingPlatform: @ 0x080860C0
|
||||
push {lr}
|
||||
ldr r2, _080860D4 @ =gUnk_08120650
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080860D4: .4byte gUnk_08120650
|
||||
|
||||
thumb_func_start sub_080860D8
|
||||
sub_080860D8: @ 0x080860D8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, #0xff
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0xa]
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl GetCurrentRoomProperty
|
||||
str r0, [r4, #0x54]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x54
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x70
|
||||
adds r0, r4, #0
|
||||
bl sub_080A2CC0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808611C
|
||||
sub_0808611C: @ 0x0808611C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08086168
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _0808613C
|
||||
ldr r2, [r4, #0x50]
|
||||
ldrb r0, [r2, #0xe]
|
||||
cmp r0, #0
|
||||
bne _08086144
|
||||
cmp r1, #0
|
||||
beq _0808613C
|
||||
adds r0, #1
|
||||
strb r0, [r2, #0xe]
|
||||
_0808613C:
|
||||
adds r0, r4, #0
|
||||
bl sub_080A2BE4
|
||||
b _0808614C
|
||||
_08086144:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_080A2BE4
|
||||
_0808614C:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x70
|
||||
ldrh r0, [r2]
|
||||
subs r0, #1
|
||||
strh r0, [r2]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _08086166
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x54
|
||||
adds r0, r4, #0
|
||||
bl sub_080A2CC0
|
||||
_08086166:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08086168
|
||||
sub_08086168: @ 0x08086168
|
||||
push {r4, lr}
|
||||
ldrb r1, [r0, #0xa]
|
||||
lsls r1, r1, #1
|
||||
ldr r2, _0808619C @ =gUnk_08120658
|
||||
adds r1, r1, r2
|
||||
ldr r4, _080861A0 @ =gPlayerEntity
|
||||
ldrb r2, [r1]
|
||||
ldrb r3, [r1, #1]
|
||||
adds r1, r4, #0
|
||||
bl EntityInRectRadius
|
||||
cmp r0, #0
|
||||
beq _080861A8
|
||||
bl sub_08079F8C
|
||||
cmp r0, #0
|
||||
beq _080861A8
|
||||
ldr r0, _080861A4 @ =gPlayerState
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0x14]
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
bne _080861A8
|
||||
movs r0, #1
|
||||
b _080861AA
|
||||
.align 2, 0
|
||||
_0808619C: .4byte gUnk_08120658
|
||||
_080861A0: .4byte gPlayerEntity
|
||||
_080861A4: .4byte gPlayerState
|
||||
_080861A8:
|
||||
movs r0, #0
|
||||
_080861AA:
|
||||
pop {r4, pc}
|
||||
|
|
@ -42729,11 +42729,6 @@
|
|||
"start": 1181248,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "floatingPlatform/gUnk_08120658.bin",
|
||||
"start": 1181272,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "evilSpirit/gUnk_08120678.bin",
|
||||
"start": 1181304,
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08120650:: @ 08120650
|
||||
.4byte sub_080860D8
|
||||
.4byte sub_0808611C
|
||||
|
||||
gUnk_08120658:: @ 08120658
|
||||
.incbin "floatingPlatform/gUnk_08120658.bin"
|
||||
|
|
@ -642,7 +642,7 @@ SECTIONS {
|
|||
src/object/railtrack.o(.text);
|
||||
src/object/lilypadLarge.o(.text);
|
||||
asm/object/object15.o(.text);
|
||||
asm/object/floatingPlatform.o(.text);
|
||||
src/object/floatingPlatform.o(.text);
|
||||
asm/object/object17.o(.text);
|
||||
asm/object/evilSpirit.o(.text);
|
||||
src/object/houseDoorExterior.o(.text);
|
||||
|
|
@ -1362,7 +1362,7 @@ SECTIONS {
|
|||
data/animations/object/railtrack.o(.rodata);
|
||||
data/const/object/lilypadLarge.o(.rodata);
|
||||
data/const/object/object15.o(.rodata);
|
||||
data/const/object/floatingPlatform.o(.rodata);
|
||||
src/object/floatingPlatform.o(.rodata);
|
||||
data/const/object/object17.o(.rodata);
|
||||
data/const/object/evilSpirit.o(.rodata);
|
||||
data/animations/object/evilSpirit.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 filler[0x8];
|
||||
u16 unk70;
|
||||
} FloatingPlatformEntity;
|
||||
|
||||
void sub_080860D8(FloatingPlatformEntity*);
|
||||
void sub_0808611C(FloatingPlatformEntity*);
|
||||
bool32 sub_08086168(FloatingPlatformEntity*);
|
||||
|
||||
void FloatingPlatform(Entity* this) {
|
||||
static void (*const actionFuncs[])(FloatingPlatformEntity*) = {
|
||||
sub_080860D8,
|
||||
sub_0808611C,
|
||||
};
|
||||
|
||||
actionFuncs[this->action]((FloatingPlatformEntity*)this);
|
||||
}
|
||||
|
||||
void sub_080860D8(FloatingPlatformEntity* this) {
|
||||
super->action = 1;
|
||||
super->speed = 0x100;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->frameIndex = super->type;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->child = (Entity*)GetCurrentRoomProperty(super->type2);
|
||||
sub_080A2CC0(super, (u16**)&super->child, &this->unk70);
|
||||
}
|
||||
|
||||
void sub_0808611C(FloatingPlatformEntity* this) {
|
||||
int iVar2;
|
||||
|
||||
iVar2 = sub_08086168(this);
|
||||
if (super->actionDelay != 0 && super->parent->actionDelay == 0) {
|
||||
|
||||
if (iVar2 != 0) {
|
||||
super->parent->actionDelay++;
|
||||
}
|
||||
|
||||
sub_080A2BE4(super, iVar2);
|
||||
} else if (super->actionDelay == 0) {
|
||||
sub_080A2BE4(super, iVar2);
|
||||
} else {
|
||||
sub_080A2BE4(super, 0);
|
||||
}
|
||||
|
||||
if (--this->unk70 == 0) {
|
||||
sub_080A2CC0(super, (u16**)&super->child, &this->unk70);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08086168(FloatingPlatformEntity* this) {
|
||||
static const u8 gUnk_08120658[] = { 0x12, 0xa, 0xa, 0x12, 0x12, 0x12, 0x1a, 0x1a };
|
||||
const u8* ptr;
|
||||
|
||||
ptr = gUnk_08120658 + super->type * 2;
|
||||
if (((EntityInRectRadius(super, &gPlayerEntity, ptr[0], ptr[1])) && sub_08079F8C())) {
|
||||
gPlayerState.field_0x14 = 1;
|
||||
if (gPlayerEntity.z.HALF.HI == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
|
@ -1254,8 +1254,10 @@ bool32 sub_08079F48(u32 param_1, u32 param_2) {
|
|||
}
|
||||
|
||||
bool32 sub_08079F8C(void) {
|
||||
if ((gPlayerState.flags & 0x22189b75) != 0 || gPlayerState.field_0x3c[0] != 0 || gPlayerEntity.action == 3 ||
|
||||
gPlayerEntity.action == 0xb) {
|
||||
if ((gPlayerState.flags &
|
||||
(PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_FROZEN | PL_FALLING | PL_DISABLE_ITEMS |
|
||||
PL_FLAGS8000 | PL_IN_MINECART | PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_FLAGS2000000 | PL_CLIMBING)) != 0 ||
|
||||
gPlayerState.field_0x3c[0] != 0 || gPlayerEntity.action == 3 || gPlayerEntity.action == 0xb) {
|
||||
return FALSE;
|
||||
} else {
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue