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
|
.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 CreateDustAt(u32, u32, u32);
|
||||||
extern void PutItemOnSlot(u32 itemID);
|
extern void PutItemOnSlot(u32 itemID);
|
||||||
extern void CreateSpeechBubbleSleep(Entity*, u32, u32);
|
extern void CreateSpeechBubbleSleep(Entity*, u32, u32);
|
||||||
|
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
||||||
|
|
||||||
// Unidentified
|
// Unidentified
|
||||||
extern u32 sub_0806ED78(Entity*);
|
extern u32 sub_0806ED78(Entity*);
|
||||||
|
|
|
@ -761,6 +761,7 @@ SECTIONS {
|
||||||
asm/object35.o(.text);
|
asm/object35.o(.text);
|
||||||
asm/object36.o(.text);
|
asm/object36.o(.text);
|
||||||
asm/object37.o(.text);
|
asm/object37.o(.text);
|
||||||
|
src/object/jarPortal.o(.text);
|
||||||
asm/jarPortal.o(.text);
|
asm/jarPortal.o(.text);
|
||||||
asm/bossDoor.o(.text);
|
asm/bossDoor.o(.text);
|
||||||
asm/object3A.o(.text);
|
asm/object3A.o(.text);
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
extern s16 sub_080001DA(u32, u32); // ?
|
extern s16 sub_080001DA(u32, u32); // ?
|
||||||
extern void sub_08049CF4();
|
extern void sub_08049CF4();
|
||||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
|
||||||
void sub_080221C0();
|
void sub_080221C0();
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -253,8 +253,6 @@ void sub_0805A664(Manager15* this) {
|
||||||
sub_0805A68C(this);
|
sub_0805A68C(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
|
||||||
|
|
||||||
void sub_0805A68C(Manager15* this) {
|
void sub_0805A68C(Manager15* this) {
|
||||||
if (CheckPlayerProximity(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) {
|
if (CheckPlayerProximity(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) {
|
||||||
if (this->unk_2c <= 0x1007) {
|
if (this->unk_2c <= 0x1007) {
|
||||||
|
|
|
@ -32,7 +32,6 @@ void Manager1A_Main(Manager1A* this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void sub_08052D74(void*, void*, void*);
|
extern void sub_08052D74(void*, void*, void*);
|
||||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
|
||||||
|
|
||||||
typedef struct struct_08108764 {
|
typedef struct struct_08108764 {
|
||||||
u8 unk_00;
|
u8 unk_00;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
// Facilitates the usage of minish portals.
|
// Facilitates the usage of minish portals.
|
||||||
|
|
||||||
|
@ -25,7 +26,6 @@ typedef struct {
|
||||||
} Manager3;
|
} Manager3;
|
||||||
|
|
||||||
extern s8 gUnk_08107C6C[];
|
extern s8 gUnk_08107C6C[];
|
||||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
|
||||||
extern u32 sub_08057810(void);
|
extern u32 sub_08057810(void);
|
||||||
extern u32 sub_080002C0(u16, u16, u8);
|
extern u32 sub_080002C0(u16, u16, u8);
|
||||||
extern void sub_080577AC(u32, u32, u32);
|
extern void sub_080577AC(u32, u32, u32);
|
||||||
|
|
|
@ -34,7 +34,6 @@ extern Hitbox gUnk_080FD180;
|
||||||
Entity* sub_0806D00C(Entity* this);
|
Entity* sub_0806D00C(Entity* this);
|
||||||
|
|
||||||
void sub_0806D4C0(Entity*, u32);
|
void sub_0806D4C0(Entity*, u32);
|
||||||
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
|
|
||||||
|
|
||||||
void BigGoron(Entity* this) {
|
void BigGoron(Entity* this) {
|
||||||
gUnk_081140D4[this->type](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