mirror of https://github.com/zeldaret/tmc.git
decompile jar portal
This commit is contained in:
parent
6ecaea44c5
commit
57eec4def4
441
asm/jarPortal.s
441
asm/jarPortal.s
|
@ -6,444 +6,3 @@
|
|||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start JarPortal
|
||||
JarPortal: @ 0x0808BE84
|
||||
push {lr}
|
||||
ldr r2, _0808BE98 @ =gUnk_08121488
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808BE98: .4byte gUnk_08121488
|
||||
|
||||
thumb_func_start sub_0808BE9C
|
||||
sub_0808BE9C: @ 0x0808BE9C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
movs r2, #0
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3f
|
||||
movs r5, #1
|
||||
strb r5, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3c
|
||||
movs r0, #0x47
|
||||
strb r0, [r1]
|
||||
adds r1, #4
|
||||
movs r0, #0x44
|
||||
strb r0, [r1]
|
||||
subs r1, #5
|
||||
movs r0, #0x80
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x68
|
||||
strb r2, [r0]
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _0808BEEE
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808BEF8
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitAnimationForceUpdate
|
||||
b _0808BF10
|
||||
_0808BEEE:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808BF04
|
||||
_0808BEF8:
|
||||
strb r5, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitAnimationForceUpdate
|
||||
b _0808BF10
|
||||
_0808BF04:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitAnimationForceUpdate
|
||||
_0808BF10:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808BF14
|
||||
sub_0808BF14: @ 0x0808BF14
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0808C128
|
||||
cmp r0, #0
|
||||
beq _0808BF4C
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_0808C13C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808BF3E
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl SetLocalFlag
|
||||
b _0808BF44
|
||||
_0808BF3E:
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl ClearLocalFlag
|
||||
_0808BF44:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0808C148
|
||||
_0808BF4C:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0808C01C
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808BF58
|
||||
sub_0808BF58: @ 0x0808BF58
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
bl sub_08003FC4
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #1
|
||||
beq _0808BF94
|
||||
cmp r0, #1
|
||||
bgt _0808BF74
|
||||
cmp r0, #0
|
||||
beq _0808BF7A
|
||||
b _0808BFD6
|
||||
_0808BF74:
|
||||
cmp r0, #2
|
||||
beq _0808BFB0
|
||||
b _0808BFD6
|
||||
_0808BF7A:
|
||||
ldr r1, [r4, #0x20]
|
||||
ldr r0, _0808BF90 @ =0x00017FFF
|
||||
cmp r1, r0
|
||||
bgt _0808BFD6
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitAnimationForceUpdate
|
||||
b _0808BFD6
|
||||
.align 2, 0
|
||||
_0808BF90: .4byte 0x00017FFF
|
||||
_0808BF94:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
bne _0808BFD6
|
||||
ldrb r0, [r4, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #8
|
||||
str r0, [r4, #0x20]
|
||||
b _0808BFD6
|
||||
_0808BFB0:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r4, r0]
|
||||
cmp r1, #0
|
||||
bne _0808BFD6
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitAnimationForceUpdate
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_0808C148
|
||||
_0808BFD6:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0808BFD8
|
||||
sub_0808BFD8: @ 0x0808BFD8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0808C128
|
||||
cmp r0, #0
|
||||
beq _0808C010
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_0808C13C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808C002
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl ClearLocalFlag
|
||||
b _0808C008
|
||||
_0808C002:
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl SetLocalFlag
|
||||
_0808C008:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0808C148
|
||||
_0808C010:
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_0808C01C
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808C01C
|
||||
sub_0808C01C: @ 0x0808C01C
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
subs r0, #0x18
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, #0x18
|
||||
movs r2, #0x30
|
||||
movs r3, #0x30
|
||||
bl CheckPlayerProximity
|
||||
cmp r0, #0
|
||||
beq _0808C0A6
|
||||
ldr r2, _0808C06C @ =gArea
|
||||
ldrh r0, [r4, #0x2e]
|
||||
strh r0, [r2, #0x12]
|
||||
ldrh r0, [r4, #0x32]
|
||||
strh r0, [r2, #0x14]
|
||||
movs r6, #2
|
||||
strb r6, [r2, #0x16]
|
||||
movs r0, #4
|
||||
cmp r5, #0
|
||||
beq _0808C050
|
||||
movs r0, #2
|
||||
_0808C050:
|
||||
strb r0, [r2, #0x17]
|
||||
cmp r5, #1
|
||||
bne _0808C0A6
|
||||
ldr r3, _0808C070 @ =gPlayerState
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r1, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808C074
|
||||
ldrb r0, [r3, #2]
|
||||
cmp r0, #0
|
||||
bne _0808C074
|
||||
strb r6, [r2, #0x18]
|
||||
b _0808C082
|
||||
.align 2, 0
|
||||
_0808C06C: .4byte gArea
|
||||
_0808C070: .4byte gPlayerState
|
||||
_0808C074:
|
||||
bl sub_08057810
|
||||
cmp r0, #0
|
||||
beq _0808C082
|
||||
ldr r1, _0808C0A8 @ =gArea
|
||||
movs r0, #3
|
||||
strb r0, [r1, #0x18]
|
||||
_0808C082:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl sub_080577AC
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
bne _0808C0A6
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
movs r0, #0xa9
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
_0808C0A6:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808C0A8: .4byte gArea
|
||||
|
||||
thumb_func_start sub_0808C0AC
|
||||
sub_0808C0AC: @ 0x0808C0AC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
bl sub_08003FC4
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #1
|
||||
beq _0808C0E8
|
||||
cmp r0, #1
|
||||
bgt _0808C0C8
|
||||
cmp r0, #0
|
||||
beq _0808C0CE
|
||||
b _0808C126
|
||||
_0808C0C8:
|
||||
cmp r0, #2
|
||||
beq _0808C104
|
||||
b _0808C126
|
||||
_0808C0CE:
|
||||
ldr r1, [r4, #0x20]
|
||||
ldr r0, _0808C0E4 @ =0x00017FFF
|
||||
cmp r1, r0
|
||||
bgt _0808C126
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitAnimationForceUpdate
|
||||
b _0808C126
|
||||
.align 2, 0
|
||||
_0808C0E4: .4byte 0x00017FFF
|
||||
_0808C0E8:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
bne _0808C126
|
||||
ldrb r0, [r4, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #8
|
||||
str r0, [r4, #0x20]
|
||||
b _0808C126
|
||||
_0808C104:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
bne _0808C126
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitAnimationForceUpdate
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_0808C148
|
||||
_0808C126:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0808C128
|
||||
sub_0808C128: @ 0x0808C128
|
||||
push {lr}
|
||||
movs r1, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x9d
|
||||
bne _0808C136
|
||||
movs r1, #1
|
||||
_0808C136:
|
||||
adds r0, r1, #0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808C13C
|
||||
sub_0808C13C: @ 0x0808C13C
|
||||
movs r1, #0
|
||||
strb r1, [r0, #0xd]
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #0xa
|
||||
str r1, [r0, #0x20]
|
||||
bx lr
|
||||
|
||||
thumb_func_start sub_0808C148
|
||||
sub_0808C148: @ 0x0808C148
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r6, r2]
|
||||
ldr r4, _0808C1A4 @ =gRoomControls
|
||||
ldrh r2, [r4, #6]
|
||||
subs r0, r0, r2
|
||||
asrs r5, r0, #4
|
||||
movs r3, #0x3f
|
||||
ands r5, r3
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r6, r2]
|
||||
ldrh r2, [r4, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r5, r0
|
||||
cmp r1, #0
|
||||
bne _0808C1B8
|
||||
ldr r0, _0808C1A8 @ =0x00004092
|
||||
subs r1, r5, #1
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
ldr r0, _0808C1AC @ =0x00004093
|
||||
ldrb r2, [r4]
|
||||
adds r1, r5, #0
|
||||
bl SetTile
|
||||
ldr r0, _0808C1B0 @ =0x00004094
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x3f
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
ldr r0, _0808C1B4 @ =0x00004095
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x40
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
b _0808C1E0
|
||||
.align 2, 0
|
||||
_0808C1A4: .4byte gRoomControls
|
||||
_0808C1A8: .4byte 0x00004092
|
||||
_0808C1AC: .4byte 0x00004093
|
||||
_0808C1B0: .4byte 0x00004094
|
||||
_0808C1B4: .4byte 0x00004095
|
||||
_0808C1B8:
|
||||
subs r0, r5, #1
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
bl sub_0807BA8C
|
||||
ldrb r1, [r4]
|
||||
adds r0, r5, #0
|
||||
bl sub_0807BA8C
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x3f
|
||||
ldrb r1, [r4]
|
||||
bl sub_0807BA8C
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
ldrb r1, [r4]
|
||||
bl sub_0807BA8C
|
||||
_0808C1E0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
|
|
@ -58,6 +58,7 @@ extern void DoExitTransition(ScreenTransitionData*);
|
|||
extern void CreateDustAt(u32, u32, u32);
|
||||
extern void PutItemOnSlot(u32 itemID);
|
||||
extern void CreateSpeechBubbleSleep(Entity*, u32, u32);
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
|
||||
// Unidentified
|
||||
extern u32 sub_0806ED78(Entity*);
|
||||
|
|
|
@ -761,6 +761,7 @@ SECTIONS {
|
|||
asm/object35.o(.text);
|
||||
asm/object36.o(.text);
|
||||
asm/object37.o(.text);
|
||||
src/object/jarPortal.o(.text);
|
||||
asm/jarPortal.o(.text);
|
||||
asm/bossDoor.o(.text);
|
||||
asm/object3A.o(.text);
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
extern s16 sub_080001DA(u32, u32); // ?
|
||||
extern void sub_08049CF4();
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
void sub_080221C0();
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -253,8 +253,6 @@ void sub_0805A664(Manager15* this) {
|
|||
sub_0805A68C(this);
|
||||
}
|
||||
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
|
||||
void sub_0805A68C(Manager15* this) {
|
||||
if (CheckPlayerProximity(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) {
|
||||
if (this->unk_2c <= 0x1007) {
|
||||
|
|
|
@ -32,7 +32,6 @@ void Manager1A_Main(Manager1A* this) {
|
|||
}
|
||||
|
||||
extern void sub_08052D74(void*, void*, void*);
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
|
||||
typedef struct struct_08108764 {
|
||||
u8 unk_00;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "random.h"
|
||||
#include "audio.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
// Facilitates the usage of minish portals.
|
||||
|
||||
|
@ -25,7 +26,6 @@ typedef struct {
|
|||
} Manager3;
|
||||
|
||||
extern s8 gUnk_08107C6C[];
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
extern u32 sub_08057810(void);
|
||||
extern u32 sub_080002C0(u16, u16, u8);
|
||||
extern void sub_080577AC(u32, u32, u32);
|
||||
|
|
|
@ -34,7 +34,6 @@ extern Hitbox gUnk_080FD180;
|
|||
Entity* sub_0806D00C(Entity* this);
|
||||
|
||||
void sub_0806D4C0(Entity*, u32);
|
||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||
|
||||
void BigGoron(Entity* this) {
|
||||
gUnk_081140D4[this->type](this);
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "area.h"
|
||||
#include "audio.h"
|
||||
|
||||
extern void (*gUnk_08121488[])(Entity*);
|
||||
|
||||
extern u32 sub_08057810(void);
|
||||
extern void sub_080577AC(u32, u32, u32);
|
||||
|
||||
u32 sub_0808C128(Entity*);
|
||||
void sub_0808C13C(Entity*);
|
||||
void sub_0808C148(Entity*, u32);
|
||||
void sub_0808C01C(Entity*, u32);
|
||||
|
||||
void JarPortal(Entity* this) {
|
||||
gUnk_08121488[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0808BE9C(Entity* this) {
|
||||
this->flags |= 0x80;
|
||||
this->damageType = 1;
|
||||
this->field_0x3c = 0x47;
|
||||
this->field_0x40 = 0x44;
|
||||
this->flags2 = 0x80;
|
||||
this->field_0x68.HALF.LO = 0;
|
||||
if (CheckLocalFlag(this->type)) {
|
||||
if (this->field_0x7c.BYTES.byte0 != 0) {
|
||||
this->action = 1;
|
||||
InitAnimationForceUpdate(this, 0);
|
||||
} else {
|
||||
this->action = 3;
|
||||
InitAnimationForceUpdate(this, 1);
|
||||
}
|
||||
} else {
|
||||
if (this->field_0x7c.BYTES.byte0 == 0) {
|
||||
this->action = 1;
|
||||
InitAnimationForceUpdate(this, 0);
|
||||
} else {
|
||||
this->action = 3;
|
||||
InitAnimationForceUpdate(this, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808BF14(Entity* this) {
|
||||
if (sub_0808C128(this)) {
|
||||
this->action++;
|
||||
sub_0808C13C(this);
|
||||
if (this->field_0x7c.BYTES.byte0 == 0) {
|
||||
SetLocalFlag(this->type);
|
||||
} else {
|
||||
ClearLocalFlag(this->type);
|
||||
}
|
||||
sub_0808C148(this, 0);
|
||||
}
|
||||
sub_0808C01C(this, 0);
|
||||
}
|
||||
|
||||
void sub_0808BF58(Entity* this) {
|
||||
sub_08003FC4(this, 0x2000);
|
||||
switch (this->subAction) {
|
||||
case 0:
|
||||
if (this->field_0x20 <= 98303) {
|
||||
++this->subAction;
|
||||
InitAnimationForceUpdate(this, 2);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!this->height.HALF.HI) {
|
||||
++this->subAction;
|
||||
this->field_0x20 = 0x8000;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!this->height.HALF.HI) {
|
||||
++this->action;
|
||||
this->field_0xf = 0;
|
||||
InitAnimationForceUpdate(this, 1);
|
||||
sub_0808C148(this, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808BFD8(Entity* this) {
|
||||
if (sub_0808C128(this)) {
|
||||
++this->action;
|
||||
sub_0808C13C(this);
|
||||
if (!this->field_0x7c.BYTES.byte0)
|
||||
ClearLocalFlag(this->type);
|
||||
else
|
||||
SetLocalFlag(this->type);
|
||||
sub_0808C148(this, 0);
|
||||
}
|
||||
sub_0808C01C(this, 1);
|
||||
}
|
||||
|
||||
void sub_0808C01C(Entity* this, u32 r1) {
|
||||
if (CheckPlayerProximity(this->x.HALF.HI - 0x18, this->y.HALF.HI - 0x18, 0x30, 0x30)) {
|
||||
u32 type;
|
||||
gArea.curPortalX = this->x.HALF.HI;
|
||||
gArea.curPortalY = this->y.HALF.HI;
|
||||
gArea.curPortalExitDirection = 2;
|
||||
type = 4;
|
||||
if (r1 != 0)
|
||||
type = 2;
|
||||
gArea.curPortalType = type;
|
||||
if (r1 == 1) {
|
||||
if (((gPlayerState.flags.all & 0x20) != 0) && (gPlayerState.jumpStatus == 0)) {
|
||||
gArea.field_0x18 = 2;
|
||||
} else {
|
||||
if (sub_08057810() != 0) {
|
||||
gArea.field_0x18 = 3;
|
||||
}
|
||||
}
|
||||
sub_080577AC(this->x.HALF.HI, this->y.HALF.HI, this->collisionLayer);
|
||||
if (this->field_0xf == 0) {
|
||||
this->field_0xf = 1;
|
||||
SoundReq(0x152);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808C0AC(Entity* this) {
|
||||
sub_08003FC4(this, 0x2000);
|
||||
switch (this->subAction) {
|
||||
case 0:
|
||||
if (this->field_0x20 <= 98303) {
|
||||
this->subAction = 1;
|
||||
InitAnimationForceUpdate(this, 3);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!this->height.HALF.HI) {
|
||||
++this->subAction;
|
||||
this->field_0x20 = 0x8000;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!this->height.HALF.HI) {
|
||||
this->action = 1;
|
||||
InitAnimationForceUpdate(this, 0);
|
||||
sub_0808C148(this, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0808C128(Entity* this) {
|
||||
return this->bitfield == 157;
|
||||
}
|
||||
|
||||
void sub_0808C13C(Entity* this) {
|
||||
this->subAction = 0;
|
||||
this->field_0x20 = 163840;
|
||||
}
|
||||
|
||||
void sub_0808C148(Entity* this, u32 a2) {
|
||||
u32 pos;
|
||||
|
||||
pos = COORD_TO_TILE(this);
|
||||
if (!a2) {
|
||||
SetTile(16530, pos - 1, this->collisionLayer);
|
||||
SetTile(16531, pos, this->collisionLayer);
|
||||
SetTile(16532, pos + 63, this->collisionLayer);
|
||||
SetTile(16533, pos + 64, this->collisionLayer);
|
||||
} else {
|
||||
sub_0807BA8C(pos - 1, this->collisionLayer);
|
||||
sub_0807BA8C(pos, this->collisionLayer);
|
||||
sub_0807BA8C(pos + 63, this->collisionLayer);
|
||||
sub_0807BA8C(pos + 64, this->collisionLayer);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue