mirror of https://github.com/zeldaret/tmc.git
begin arm_proxy.c
This commit is contained in:
parent
71ae3b07ea
commit
ce06f7dbb7
1
Makefile
1
Makefile
|
@ -83,6 +83,7 @@ NODEP := 1
|
|||
endif
|
||||
|
||||
#$(C_BUILDDIR)/need_interworking_file_name.o: CFLAGS += -mthumb-interwork
|
||||
$(C_BUILDDIR)/code_08016DF8.o: CFLAGS += -mthumb-interwork
|
||||
|
||||
C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c)
|
||||
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# The Legend of Zelda: The Minish Cap
|
||||
|
||||
**Progress:** [⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 22%
|
||||
**Progress:** [⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 25%
|
||||
|
||||
```diff
|
||||
- WARNING! -
|
||||
|
|
1381
asm/code_08016DF8.s
1381
asm/code_08016DF8.s
File diff suppressed because it is too large
Load Diff
|
@ -463,7 +463,9 @@ _080AF706:
|
|||
str r1, [r0, #0x2c]
|
||||
_080AF70A:
|
||||
bx lr
|
||||
_080AF70C:
|
||||
|
||||
thumb_func_start ply_fine
|
||||
ply_fine: @ 0x080AF70C
|
||||
push {r4, r5, lr}
|
||||
adds r5, r1, #0
|
||||
ldr r4, [r5, #0x20]
|
||||
|
@ -542,7 +544,9 @@ sub_080AF77A: @ 0x080AF77A
|
|||
ldrb r3, [r2]
|
||||
b _080AF75E
|
||||
.align 2, 0
|
||||
_080AF784:
|
||||
|
||||
thumb_func_start ply_goto
|
||||
ply_goto:
|
||||
push {lr}
|
||||
_080AF786:
|
||||
ldr r2, [r1, #0x40]
|
||||
|
@ -573,9 +577,9 @@ ply_patt: @ 0x080AF7A4
|
|||
ldrb r2, [r1, #2]
|
||||
adds r2, #1
|
||||
strb r2, [r1, #2]
|
||||
b _080AF784
|
||||
b ply_goto
|
||||
_080AF7BC:
|
||||
b _080AF70C
|
||||
b ply_fine
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start ply_pend
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r2, _08017758 @ =gUnk_03003C70
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
adds r7, r2, r0
|
||||
movs r5, #0x41
|
||||
rsbs r5, r5, #0
|
||||
ldr r6, _0801775C @ =gUnk_02018EA0
|
||||
b _08017766
|
||||
.align 2, 0
|
||||
_08017758: .4byte gUnk_03003C70
|
||||
_0801775C: .4byte gUnk_02018EA0
|
||||
_08017760:
|
||||
adds r2, #0x10
|
||||
cmp r7, r2
|
||||
bls _0801779A
|
||||
_08017766:
|
||||
ldr r0, [r2, #8]
|
||||
cmp r4, r0
|
||||
bne _08017760
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08017760
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
strb r0, [r3]
|
||||
movs r0, #0
|
||||
str r0, [r2, #8]
|
||||
ldr r1, [r2]
|
||||
ldr r0, [r2, #4]
|
||||
str r0, [r1, #4]
|
||||
ldr r1, [r2, #4]
|
||||
ldr r0, [r2]
|
||||
str r0, [r1]
|
||||
ldr r0, [r6]
|
||||
cmp r2, r0
|
||||
bne _0801779A
|
||||
ldr r0, [r2, #4]
|
||||
str r0, [r6]
|
||||
_0801779A:
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.syntax divided
|
|
@ -0,0 +1,130 @@
|
|||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
mov ip, r0
|
||||
ldrb r0, [r0, #9]
|
||||
lsls r0, r0, #3
|
||||
ldr r1, _08017410 @ =gUnk_08126DA8
|
||||
adds r3, r0, r1
|
||||
ldrb r0, [r3]
|
||||
cmp r0, #0xff
|
||||
bne _080173CE
|
||||
ldrb r2, [r3, #2]
|
||||
ldr r1, _08017414 @ =gUnk_08126ED8
|
||||
ldrb r0, [r3, #1]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r3, [r0]
|
||||
mov r0, ip
|
||||
adds r0, #0x68
|
||||
ldrb r0, [r0]
|
||||
subs r0, r0, r2
|
||||
lsls r0, r0, #3
|
||||
adds r3, r3, r0
|
||||
_080173CE:
|
||||
ldrb r0, [r3]
|
||||
movs r1, #0xf
|
||||
ands r1, r0
|
||||
lsls r0, r0, #4
|
||||
orrs r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1, #0x1a]
|
||||
ldrb r1, [r3, #1]
|
||||
mov r0, ip
|
||||
adds r0, #0x44
|
||||
strb r1, [r0]
|
||||
ldrb r1, [r3, #3]
|
||||
subs r0, #4
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r3, #4]
|
||||
mov r1, ip
|
||||
adds r1, #0x3f
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3, #5]
|
||||
mov r2, ip
|
||||
strh r0, [r2, #0x12]
|
||||
ldrh r1, [r3, #6]
|
||||
cmp r1, #0
|
||||
bne _0801741C
|
||||
ldr r2, _08017418 @ =gPlayerEntity
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x60
|
||||
ldrh r1, [r0]
|
||||
mov r0, ip
|
||||
adds r0, #0x60
|
||||
strh r1, [r0]
|
||||
adds r5, r2, #0
|
||||
b _08017428
|
||||
.align 2, 0
|
||||
_08017410: .4byte gUnk_08126DA8
|
||||
_08017414: .4byte gUnk_08126ED8
|
||||
_08017418: .4byte gPlayerEntity
|
||||
_0801741C:
|
||||
ldr r0, _0801749C @ =0x000003FF
|
||||
ands r0, r1
|
||||
mov r1, ip
|
||||
adds r1, #0x60
|
||||
strh r0, [r1]
|
||||
ldr r5, _080174A0 @ =gPlayerEntity
|
||||
_08017428:
|
||||
mov r3, ip
|
||||
ldrb r0, [r3, #0x14]
|
||||
cmp r0, #0
|
||||
bne _08017438
|
||||
ldrb r1, [r5, #0x14]
|
||||
movs r0, #6
|
||||
ands r0, r1
|
||||
strb r0, [r3, #0x14]
|
||||
_08017438:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
mov r0, ip
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
ldrb r1, [r5, #0x19]
|
||||
lsrs r1, r1, #6
|
||||
lsls r1, r1, #6
|
||||
mov r0, ip
|
||||
ldrb r3, [r0, #0x19]
|
||||
movs r2, #0x3f
|
||||
adds r0, r2, #0
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1, #0x19]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x29
|
||||
ldrb r1, [r0]
|
||||
lsls r1, r1, #0x1d
|
||||
mov r4, ip
|
||||
adds r4, #0x29
|
||||
lsrs r1, r1, #0x1d
|
||||
ldrb r3, [r4]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
ldrb r0, [r5, #0x1b]
|
||||
lsrs r0, r0, #6
|
||||
lsls r0, r0, #6
|
||||
mov r3, ip
|
||||
ldrb r1, [r3, #0x1b]
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
strb r2, [r3, #0x1b]
|
||||
mov r2, ip
|
||||
adds r2, #0x45
|
||||
movs r1, #1
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r3, #0x10]
|
||||
orrs r1, r0
|
||||
strb r1, [r3, #0x10]
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801749C: .4byte 0x000003FF
|
||||
_080174A0: .4byte gPlayerEntity
|
||||
.syntax divided
|
|
@ -0,0 +1,90 @@
|
|||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x45
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08017550
|
||||
ldr r0, _080175D8 @ =gUnk_020342F8
|
||||
subs r1, #1
|
||||
bl ReadBit
|
||||
cmp r0, #0
|
||||
bne _08017550
|
||||
bl DeleteThisEntity
|
||||
_08017550:
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08017566
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08017566
|
||||
adds r0, r4, #0
|
||||
bl sub_0806EC78
|
||||
_08017566:
|
||||
adds r0, r4, #0
|
||||
bl sub_0805E3B0
|
||||
cmp r0, #0
|
||||
bne _08017584
|
||||
ldr r2, _080175DC @ =gNPCFunctions
|
||||
ldrb r1, [r4, #9]
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r2
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
_08017584:
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
beq _080175D2
|
||||
ldr r2, _080175DC @ =gNPCFunctions
|
||||
ldrb r1, [r4, #9]
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
adds r2, #4
|
||||
adds r0, r0, r2
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _080175A4
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
_080175A4:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x45
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080175CC
|
||||
ldr r2, _080175E0 @ =gUnk_02031EC0
|
||||
lsls r0, r1, #4
|
||||
subs r0, #0x10
|
||||
adds r2, r0, r2
|
||||
ldr r3, _080175E4 @ =gRoomControls
|
||||
ldrh r0, [r4, #0x2e]
|
||||
ldrh r1, [r3, #6]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r2, #4]
|
||||
ldrh r0, [r4, #0x32]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r2, #6]
|
||||
_080175CC:
|
||||
adds r0, r4, #0
|
||||
bl sub_0800404C
|
||||
_080175D2:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080175D8: .4byte gUnk_020342F8
|
||||
_080175DC: .4byte gNPCFunctions
|
||||
_080175E0: .4byte gUnk_02031EC0
|
||||
_080175E4: .4byte gRoomControls
|
||||
.syntax divided
|
|
@ -0,0 +1,68 @@
|
|||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08017682
|
||||
_0801767E:
|
||||
movs r0, #1
|
||||
b _080176DE
|
||||
_08017682:
|
||||
ldr r2, _080176C0 @ =gUnk_03003C70
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
adds r1, r2, r0
|
||||
cmp r1, r2
|
||||
bls _080176DC
|
||||
_0801768E:
|
||||
ldr r0, [r2, #8]
|
||||
cmp r0, #0
|
||||
bne _080176D6
|
||||
str r4, [r2, #8]
|
||||
strb r0, [r2, #0xc]
|
||||
ldrb r0, [r3]
|
||||
movs r1, #0x40
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldr r3, _080176C4 @ =gUnk_02018EA0
|
||||
ldr r1, [r3]
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r0, #0
|
||||
beq _080176C8
|
||||
_080176AA:
|
||||
ldr r1, [r1, #4]
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r0, #0
|
||||
bne _080176AA
|
||||
str r1, [r2, #4]
|
||||
ldr r0, [r1]
|
||||
str r0, [r2]
|
||||
str r2, [r0, #4]
|
||||
str r2, [r1]
|
||||
b _0801767E
|
||||
.align 2, 0
|
||||
_080176C0: .4byte gUnk_03003C70
|
||||
_080176C4: .4byte gUnk_02018EA0
|
||||
_080176C8:
|
||||
str r1, [r2, #4]
|
||||
ldr r0, [r1]
|
||||
str r0, [r2]
|
||||
str r2, [r0, #4]
|
||||
str r2, [r1]
|
||||
str r2, [r3]
|
||||
b _0801767E
|
||||
_080176D6:
|
||||
adds r2, #0x10
|
||||
cmp r1, r2
|
||||
bhi _0801768E
|
||||
_080176DC:
|
||||
movs r0, #0
|
||||
_080176DE:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.syntax divided
|
|
@ -0,0 +1,54 @@
|
|||
.syntax unified
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
adds r0, #0x29
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08017720
|
||||
movs r0, #1
|
||||
b _0801773A
|
||||
_080176F8:
|
||||
str r2, [r3, #8]
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0xc]
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #0x40
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r2, _0801771C @ =gUnk_02018EA0
|
||||
ldr r0, [r2]
|
||||
str r0, [r3, #4]
|
||||
ldr r1, [r0]
|
||||
str r1, [r3]
|
||||
str r3, [r1, #4]
|
||||
str r3, [r0]
|
||||
str r3, [r2]
|
||||
movs r0, #1
|
||||
b _0801773A
|
||||
.align 2, 0
|
||||
_0801771C: .4byte gUnk_02018EA0
|
||||
_08017720:
|
||||
ldr r3, _08017740 @ =gUnk_03003C70
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
adds r1, r3, r0
|
||||
cmp r1, r3
|
||||
bls _08017738
|
||||
_0801772C:
|
||||
ldr r0, [r3, #8]
|
||||
cmp r0, #0
|
||||
beq _080176F8
|
||||
adds r3, #0x10
|
||||
cmp r1, r3
|
||||
bhi _0801772C
|
||||
_08017738:
|
||||
movs r0, #0
|
||||
_0801773A:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08017740: .4byte gUnk_03003C70
|
||||
.syntax divided
|
|
@ -0,0 +1,95 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
mov ip, r0
|
||||
adds r5, r1, #0
|
||||
adds r0, #0x38
|
||||
adds r1, #0x38
|
||||
ldrb r2, [r0]
|
||||
ldrb r0, [r1]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _08017848
|
||||
mov r0, ip
|
||||
ldr r3, [r0, #0x48]
|
||||
ldr r4, [r5, #0x48]
|
||||
ldrb r1, [r3, #6]
|
||||
ldrb r0, [r4, #6]
|
||||
adds r2, r1, r0
|
||||
mov r1, ip
|
||||
movs r6, #0x2e
|
||||
ldrsh r0, [r1, r6]
|
||||
movs r6, #0x2e
|
||||
ldrsh r1, [r5, r6]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r3, r1]
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r4, r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, r0, r2
|
||||
lsls r1, r2, #1
|
||||
cmp r0, r1
|
||||
bhi _08017848
|
||||
ldrb r1, [r3, #7]
|
||||
ldrb r0, [r4, #7]
|
||||
adds r2, r1, r0
|
||||
mov r1, ip
|
||||
movs r6, #0x32
|
||||
ldrsh r0, [r1, r6]
|
||||
movs r6, #0x32
|
||||
ldrsh r1, [r5, r6]
|
||||
subs r0, r0, r1
|
||||
movs r1, #1
|
||||
ldrsb r1, [r3, r1]
|
||||
adds r0, r0, r1
|
||||
movs r1, #1
|
||||
ldrsb r1, [r4, r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, r0, r2
|
||||
lsls r1, r2, #1
|
||||
cmp r0, r1
|
||||
bhi _08017848
|
||||
mov r0, ip
|
||||
adds r0, #0x3c
|
||||
ldrb r1, [r0]
|
||||
movs r6, #0x10
|
||||
adds r0, r6, #0
|
||||
ands r0, r1
|
||||
movs r2, #5
|
||||
cmp r0, #0
|
||||
beq _0801781A
|
||||
ldrb r2, [r3, #8]
|
||||
_0801781A:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x3c
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801782E
|
||||
ldrb r0, [r4, #8]
|
||||
adds r2, r2, r0
|
||||
b _08017830
|
||||
_0801782E:
|
||||
adds r2, #5
|
||||
_08017830:
|
||||
mov r1, ip
|
||||
movs r3, #0x36
|
||||
ldrsh r0, [r1, r3]
|
||||
movs r6, #0x36
|
||||
ldrsh r1, [r5, r6]
|
||||
subs r0, r0, r1
|
||||
adds r0, r0, r2
|
||||
lsls r1, r2, #1
|
||||
cmp r0, r1
|
||||
bhi _08017848
|
||||
movs r0, #1
|
||||
b _0801784A
|
||||
_08017848:
|
||||
movs r0, #0
|
||||
_0801784A:
|
||||
pop {r4, r5, r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.syntax divided
|
|
@ -4,14 +4,44 @@
|
|||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_089FB770:: @ 089FB770
|
||||
.incbin "baserom.gba", 0x9FB770, 0x0000010
|
||||
|
||||
gUnk_089FB780:: @ 089FB780
|
||||
.incbin "baserom.gba", 0x9FB780, 0x0000F44
|
||||
|
||||
gUnk_089FC6C4:: @ 089FC6C4
|
||||
.incbin "baserom.gba", 0x9FC6C4, 0x0000090
|
||||
@ replacing .incbin "baserom.gba", 0x009fc6c4, 0x90
|
||||
.4byte ply_fine
|
||||
.4byte ply_goto
|
||||
.4byte ply_patt
|
||||
.4byte ply_pend
|
||||
.4byte ply_rept
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_prio
|
||||
.4byte ply_tempo
|
||||
.4byte ply_keysh
|
||||
.4byte ply_voice
|
||||
.4byte ply_vol
|
||||
.4byte ply_pan
|
||||
.4byte ply_bend
|
||||
.4byte ply_bendr
|
||||
.4byte ply_lfos
|
||||
.4byte ply_lfodl
|
||||
.4byte ply_mod
|
||||
.4byte ply_modt
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_tune
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_fine
|
||||
.4byte ply_port
|
||||
.4byte ply_fine
|
||||
.4byte ply_endtie
|
||||
.4byte SampleFreqSet
|
||||
.4byte TrackStop
|
||||
.4byte FadeOutBody
|
||||
.4byte TrkVolPitSet
|
||||
.4byte RealClearChain
|
||||
.4byte SoundMainBTM
|
||||
|
||||
gUnk_089FC754:: @ 089FC754
|
||||
.incbin "baserom.gba", 0x9FC754, 0x00000B4
|
||||
|
@ -38,7 +68,19 @@ gUnk_089FC938:: @ 089FC938
|
|||
.incbin "baserom.gba", 0x9FC938, 0x0000034
|
||||
|
||||
gUnk_089FC96C:: @ 089FC96C
|
||||
.incbin "baserom.gba", 0x9FC96C, 0x0000030
|
||||
@ replacing .incbin "baserom.gba", 0x009fc96c, 0x30
|
||||
.4byte ply_xxx
|
||||
.4byte ply_xwave
|
||||
.4byte ply_xtype
|
||||
.4byte ply_xxx
|
||||
.4byte ply_xatta
|
||||
.4byte ply_xdeca
|
||||
.4byte ply_xsust
|
||||
.4byte ply_xrele
|
||||
.4byte ply_xiecv
|
||||
.4byte ply_xiecl
|
||||
.4byte ply_xleng
|
||||
.4byte ply_xswee
|
||||
|
||||
gUnk_089FC99C:: @ 089FC99C
|
||||
.incbin "baserom.gba", 0x9FC99C, 0x0000060
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_089FB770:: @ 089FB770
|
||||
.byte 00, 0x0d, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
|
||||
|
||||
gUnk_089FB780:: @ 089FB780
|
||||
.incbin "baserom.gba", 0x9FB780, 0x0000F44
|
|
@ -0,0 +1,243 @@
|
|||
|
||||
typedef enum {
|
||||
NONE,
|
||||
BGM_CASTLE_TOURNAMENT,
|
||||
BGM_VAATI_MOTIF,
|
||||
BGM_TITLE_SCREEN,
|
||||
BGM_CASTLE_MOTIF,
|
||||
BGM_ELEMENT_GET,
|
||||
BGM_FAIRY_FOUNTAIN,
|
||||
BGM_FILE_SELECT,
|
||||
BGM_INTRO_CUTSCENE,
|
||||
BGM_CREDITS,
|
||||
BGM_GAMEOVER,
|
||||
BGM_SAVING_ZELDA,
|
||||
BGM_LTTP_TITLE,
|
||||
BGM_VAATI_THEME,
|
||||
BGM_EZLO_THEME,
|
||||
BGM_STORY,
|
||||
BGM_FESTIVAL_APPROACH,
|
||||
BGM_BEAT_VAATI,
|
||||
|
||||
BGM_BEANSTALK = 0x13,
|
||||
BGM_HOUSE,
|
||||
BGM_CUCCO_MINIGAME,
|
||||
BGM_SYRUP_THEME,
|
||||
BGM_DUNGEON,
|
||||
BGM_ELEMENT_THEME,
|
||||
BGM_HYRULE_FIELD,
|
||||
BGM_HYRULE_CASTLE,
|
||||
BGM_HYRULE_CASTLE_NOINTRO,
|
||||
BGM_MINISH_VILLAGE,
|
||||
BGM_MINISH_WOODS,
|
||||
BGM_CRENEL_STORM,
|
||||
BGM_CASTOR_WILDS,
|
||||
BGM_HYRULE_TOWN,
|
||||
BGM_ROYAL_VALLEY,
|
||||
BGM_CLOUD_TOPS,
|
||||
BGM_DARK_HYRULE_CASTLE,
|
||||
BGM_SECRET_CASTLE_ENTRANCE,
|
||||
BGM_DEEPWOOD_SHRINE,
|
||||
BGM_CAVE_OF_FLAMES,
|
||||
BGM_FORTRESS_OF_WINDS,
|
||||
BGM_TEMPLE_OF_DROPLETS,
|
||||
BGM_PALACE_OF_WINDS,
|
||||
BGM_EZLO_STORY,
|
||||
BGM_ROYAL_CRYPT,
|
||||
BGM_ELEMENTAL_SANCTUARY,
|
||||
BGM_FIGHT_THEME,
|
||||
BGM_BOSS_THEME,
|
||||
BGM_VAATI_REBORN,
|
||||
BGM_VAATI_TRANSFIGURED,
|
||||
BGM_CASTLE_COLLAPSE,
|
||||
BGM_VAATI_WRATH,
|
||||
BGM_FIGHT_THEME2,
|
||||
BGM_DIGGING_CAVE,
|
||||
BGM_SWIFTBLADE_DOJO,
|
||||
BGM_MINISH_CAP,
|
||||
BGM_MT_CRENEL,
|
||||
BGM_PICORI_FESTIVAL,
|
||||
BGM_LOST_WOODS,
|
||||
BGM_FAIRY_FOUNTAIN2,
|
||||
BGM_WIND_RUINS,
|
||||
|
||||
BGM_LEARN_SCROLL = 0x5E,
|
||||
BGM_EZLO_GET,
|
||||
|
||||
SFX_BEEP = 0x64,
|
||||
SFX_TEXTBOX_OPEN,
|
||||
SFX_TEXTBOX_CLOSE,
|
||||
SFX_TEXTBOX_NEXT,
|
||||
SFX_TEXTBOX_SWAP,
|
||||
SFX_TEXTBOX_CHOICE,
|
||||
SFX_TEXTBOX_SELECT,
|
||||
SFX_6B,
|
||||
SFX_MENU_CANCEL,
|
||||
SFX_MENU_ERROR,
|
||||
SFX_RUPEE_BOUNCE,
|
||||
SFX_RUPEE_GET,
|
||||
SFX_HEART_BOUNCE,
|
||||
SFX_HEART_GET,
|
||||
SFX_SECRET,
|
||||
SFX_SECRET_BIG,
|
||||
SFX_METAL_CLINK,
|
||||
SFX_PLY_VO1,
|
||||
SFX_PLY_VO2,
|
||||
SFX_PLY_VO3,
|
||||
SFX_PLY_VO4,
|
||||
SFX_PLY_VO5,
|
||||
SFX_PLY_VO6,
|
||||
SFX_PLY_VO7,
|
||||
SFX_PLY_JUMP,
|
||||
SFX_PLY_LAND,
|
||||
SFX_7E,
|
||||
SFX_PLY_LIFT,
|
||||
SFX_80,
|
||||
SFX_81,
|
||||
SFX_82,
|
||||
SFX_WATER_WALK,
|
||||
SFX_WATER_SPLASH,
|
||||
SFX_FALL_HOLE,
|
||||
SFX_86,
|
||||
SFX_PLY_DIE,
|
||||
SFX_88,
|
||||
SFX_BARREL_RELEASE,
|
||||
SFX_BARREL_ENTER,
|
||||
SFX_BARREL_ROLL,
|
||||
SFX_BARREL_ROLL_STOP,
|
||||
SFX_VO_EZLO1,
|
||||
SFX_VO_EZLO2,
|
||||
SFX_VO_EZLO3,
|
||||
SFX_VO_EZLO4,
|
||||
SFX_VO_EZLO5,
|
||||
SFX_VO_EZLO6,
|
||||
SFX_VO_EZLO7,
|
||||
SFX_VO_ZELDA1,
|
||||
SFX_VO_ZELDA2,
|
||||
SFX_VO_ZELDA3,
|
||||
SFX_VO_ZELDA4,
|
||||
SFX_VO_ZELDA5,
|
||||
SFX_VO_ZELDA6,
|
||||
SFX_VO_ZELDA7,
|
||||
SFX_9B,
|
||||
SFX_9C,
|
||||
SFX_9D,
|
||||
SFX_9E,
|
||||
SFX_9F,
|
||||
SFX_A0,
|
||||
SFX_VO_TINGLE1,
|
||||
SFX_VO_TINGLE2,
|
||||
SFX_VO_KING1,
|
||||
SFX_VO_KING2,
|
||||
SFX_VO_KING3,
|
||||
SFX_VO_KING4,
|
||||
SFX_VO_KING5,
|
||||
SFX_A8,
|
||||
SFX_A9,
|
||||
SFX_AA,
|
||||
SFX_SPIRITS_RELEASE,
|
||||
SFX_AC,
|
||||
SFX_VO_BEEDLE,
|
||||
SFX_AE,
|
||||
SFX_AF,
|
||||
SFX_B0,
|
||||
SFX_VO_MINISH1,
|
||||
SFX_VO_MINISH2,
|
||||
SFX_VO_MINISH3,
|
||||
SFX_VO_MINISH4,
|
||||
|
||||
SFX_REM_SLEEP = 0xCC,
|
||||
SFX_TASK_COMPLETE,
|
||||
SFX_KEY_APPEAR,
|
||||
SFX_CF,
|
||||
SFX_D0,
|
||||
SFX_VO_DOG,
|
||||
SFX_VO_CAT,
|
||||
SFX_VO_EPONA,
|
||||
SFX_VO_COW,
|
||||
SFX_VO_CUCCO_CALL,
|
||||
SFX_VO_CHEEP,
|
||||
SFX_ITEM_SWORD_CHARGE,
|
||||
SFX_ITEM_SWORD_CHARGE_FINISH,
|
||||
SFX_D9,
|
||||
SFX_DA,
|
||||
SFX_VO_STURGEON,
|
||||
SFX_HAMMER1,
|
||||
SFX_HAMMER2,
|
||||
SFX_HAMMER3,
|
||||
SFX_HAMMER4,
|
||||
SFX_HAMMER5,
|
||||
SFX_HAMMER6,
|
||||
SFX_CUCCO_MINIGAME_BELL,
|
||||
SFX_E3,
|
||||
SFX_E4,
|
||||
SFX_BUTTON_DEPRESS,
|
||||
SFX_THUD_HEAVY,
|
||||
SFX_WIND1,
|
||||
SFX_WIND2,
|
||||
SFX_WIND3,
|
||||
|
||||
SFX_SUMMON = 0xF4,
|
||||
SFX_F5,
|
||||
SFX_EVAPORATE,
|
||||
SFX_APPARATE,
|
||||
SFX_F8,
|
||||
SFX_TELEPORTER,
|
||||
|
||||
SFX_ITEM_BOMB_EXPLODE = 0xFD,
|
||||
SFX_HIT,
|
||||
|
||||
SFX_ITEM_SHIELD_BOUNCE = 0x118,
|
||||
SFX_ITEM_GLOVES_KNOCKBACK,
|
||||
SFX_EM_ARMOS_ON,
|
||||
|
||||
SFX_EM_MOBLIN_SPEAR = 0x11E,
|
||||
SFX_LOW_HEALTH,
|
||||
SFX_CHARGING_UP,
|
||||
SFX_STAIRS,
|
||||
|
||||
SFX_BOSS_HIT = 0x127,
|
||||
SFX_BOSS_DIE,
|
||||
SFX_BOSS_EXPLODE,
|
||||
|
||||
SFX_ITEM_LANTERN_ON = 0x13D,
|
||||
SFX_ITEM_LANTERN_OFF,
|
||||
SFX_ITEM_SWORD_BEAM,
|
||||
SFX_140,
|
||||
SFX_HEART_CONTAINER_SPAWN,
|
||||
SFX_SPARKLES,
|
||||
|
||||
SFX_PLY_SHRINKING = 0x16F,
|
||||
SFX_PLY_GROW,
|
||||
|
||||
SFX_LAVA_TILE_STEP = 0x17B,
|
||||
SFX_LAVA_TILE_WOBBLE,
|
||||
SFX_LAVA_TILE_SINK,
|
||||
SFX_LAVA_TILE_FLIP,
|
||||
SFX_LAVA_TILE_LAND,
|
||||
|
||||
SFX_STAIRS_ASCEND = 0x187,
|
||||
SFX_STAIRS_DESCEND,
|
||||
|
||||
SFX_ICE_BLOCK_SLIDE = 0x1B1,
|
||||
SFX_ICE_BLOCK_STOP,
|
||||
SFX_ICE_BLOCK_MELT,
|
||||
|
||||
SFX_VO_GORON1 = 0x1B7,
|
||||
SFX_VO_GORON2,
|
||||
SFX_VO_GORON3,
|
||||
SFX_VO_GORON4,
|
||||
SFX_EM_DEKUSCRUB_HIT,
|
||||
|
||||
SFX_ELEMENT_PLACE = 0x1CD,
|
||||
SFX_ELEMENT_FLOAT,
|
||||
SFX_ELEMENT_CHARGE,
|
||||
SFX_1D0,
|
||||
SFX_ELEMENT_INFUSE,
|
||||
|
||||
SFX_VO_CUCCO1 = 0x1D6,
|
||||
SFX_VO_CUCCO2,
|
||||
SFX_VO_CUCCO3,
|
||||
SFX_VO_CUCCO4,
|
||||
SFX_VO_CUCCO5,
|
||||
} Sound;
|
|
@ -19,9 +19,23 @@ typedef struct {
|
|||
} EntityType;
|
||||
|
||||
typedef struct {
|
||||
u8 unknown[8];
|
||||
s8 offset_x;
|
||||
s8 offset_y;
|
||||
u8 unk2[4];
|
||||
u8 width;
|
||||
u8 height;
|
||||
} BoundingBox;
|
||||
|
||||
typedef struct {
|
||||
s8 offset_x;
|
||||
s8 offset_y;
|
||||
u8 unknown[4];
|
||||
u8 width;
|
||||
u8 height;
|
||||
u8 depth;
|
||||
u8 unknown2[3];
|
||||
} BoundingBox3D;
|
||||
|
||||
typedef struct Entity {
|
||||
/*0x00*/ struct Entity* prev;
|
||||
/*0x04*/ struct Entity* next;
|
||||
|
|
|
@ -209,7 +209,7 @@ extern u32 sub_0807953C(void);
|
|||
extern void sub_080AE068(Entity*);
|
||||
extern u32 sub_0800445C(Entity*);
|
||||
extern void sub_0807A108(void);
|
||||
extern void sub_0801766C(Entity*);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_08004168(Entity*);
|
||||
extern u32 sub_08052638(u32);
|
||||
extern void InitDMA(void);
|
||||
|
|
|
@ -46,7 +46,7 @@ enum {
|
|||
};
|
||||
|
||||
typedef struct {
|
||||
u8 interruptFlag;
|
||||
vu8 interruptFlag;
|
||||
u8 field_0x1;
|
||||
u8 screen;
|
||||
u8 funcIndex;
|
||||
|
|
|
@ -191,4 +191,7 @@ extern void sub_0805DE38(Entity*);
|
|||
extern void sub_0805E0A8(Entity*);
|
||||
extern void sub_0805E0FC();
|
||||
|
||||
void (*const gManagerFunctions[58])();
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -172,4 +172,7 @@ extern void NPC58_Head(Entity*);
|
|||
|
||||
extern u32 UpdateFuseInteraction(Entity*);
|
||||
|
||||
|
||||
void (*const gNPCFunctions[128][3])(Entity*);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -199,4 +199,6 @@ extern void ObjectBF(Entity*);
|
|||
extern void EnemyItem(Entity*);
|
||||
extern void ObjectC1(Entity*);
|
||||
|
||||
void (*const gObjectFunctions[194])(Entity*);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -67,7 +67,8 @@ typedef struct {
|
|||
/*0x94*/ u32 field_0x94;
|
||||
/*0x98*/ u16 field_0x98;
|
||||
/*0x9a*/ u16 field_0x9a;
|
||||
/*0x9c*/ u32 field_0x9c[3];
|
||||
/*0x9c*/ u32 field_0x9c;
|
||||
/*0xa0*/ u8 field_0xa0[8];
|
||||
/*0xa8*/ u8 field_0xa8;
|
||||
/*0xa9*/ u8 field_0xa9;
|
||||
/*0xaa*/ u8 field_0xaa;
|
||||
|
@ -78,26 +79,26 @@ typedef struct {
|
|||
|
||||
|
||||
typedef struct {
|
||||
u8 walletType;
|
||||
u8 heartPieces;
|
||||
u8 health;
|
||||
u8 maxHealth;
|
||||
u8 bombCount;
|
||||
u8 arrowCount;
|
||||
u8 bombBagType;
|
||||
u8 quiverType;
|
||||
u8 filler[4];
|
||||
u8 itemOnA;
|
||||
u8 itemOnB;
|
||||
u8 filler2[10];
|
||||
u16 rupees;
|
||||
u16 field_0x1a;
|
||||
u8 field_0x1c;
|
||||
u8 field_0x1d;
|
||||
u8 field_0x1e;
|
||||
u8 field_0x1f;
|
||||
u16 field_0x20;
|
||||
u8 filler4[4];
|
||||
/*0x00*/ u8 walletType;
|
||||
/*0x01*/ u8 heartPieces;
|
||||
/*0x02*/ u8 health;
|
||||
/*0x03*/ u8 maxHealth;
|
||||
/*0x04*/ u8 bombCount;
|
||||
/*0x05*/ u8 arrowCount;
|
||||
/*0x06*/ u8 bombBagType;
|
||||
/*0x07*/ u8 quiverType;
|
||||
/*0x08*/ u8 filler[4];
|
||||
/*0x0c*/ u8 itemOnA;
|
||||
/*0x0d*/ u8 itemOnB;
|
||||
/*0x0e*/ u8 bottles[4];
|
||||
/*0x12*/ u8 floorType;
|
||||
/*0x13*/ u8 filler3[5];
|
||||
/*0x18*/ u16 rupees;
|
||||
/*0x1a*/ u16 field_0x1a;
|
||||
/*0x1c*/ u16 field_0x1c;
|
||||
/*0x1e*/ u16 field_0x1e;
|
||||
/*0x20*/ u16 field_0x20;
|
||||
/*0x22*/ u8 filler4[4];
|
||||
} Stats;
|
||||
|
||||
typedef struct {
|
||||
|
@ -109,6 +110,8 @@ typedef struct {
|
|||
/*0xf*/ u8 field_0xf;
|
||||
} ItemBehavior;
|
||||
|
||||
extern void (*const gPlayerItemFunctions[])(Entity*);
|
||||
|
||||
extern u8 gBombBagSizes[];
|
||||
extern u8 gQuiverSizes[];
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ typedef struct {
|
|||
extern struct_02000010 gUnk_02000010;
|
||||
|
||||
typedef struct {
|
||||
u32 frameCount; // regular frame count? does anything reset it?
|
||||
s32 frameCount; // regular frame count? does anything reset it?
|
||||
u8 field_0x4[0x4];
|
||||
bool8 transitioningOut;
|
||||
u8 transitionType; // transition when changing areas
|
||||
|
|
|
@ -301,6 +301,7 @@ SECTIONS {
|
|||
/* C source compiled with interworking */
|
||||
asm/code_08016B30.o(.text);
|
||||
asm/updateBackgroundRegisters.o(.text);
|
||||
src/code_08016DF8.o(.text);
|
||||
asm/code_08016DF8.o(.text);
|
||||
/* C source compiled without interworking */
|
||||
asm/code_08018500.o(.text);
|
||||
|
@ -1030,6 +1031,7 @@ SECTIONS {
|
|||
src/intro.o(.rodata);
|
||||
data/data_081320FC.o(.rodata);
|
||||
data/strings.o(.rodata);
|
||||
data/sprite_table.o(.rodata);
|
||||
data/data_089FC6C4.o(.rodata);
|
||||
} >rom
|
||||
|
||||
|
|
|
@ -0,0 +1,547 @@
|
|||
#include "global.h"
|
||||
#include "audio.h"
|
||||
#include "main.h"
|
||||
#include "player.h"
|
||||
#include "structures.h"
|
||||
#include "save.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "object.h"
|
||||
#include "manager.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern u8 gUnk_03003DE0;
|
||||
extern u8 gUnk_03000C30;
|
||||
|
||||
extern u16* gUnk_02025EB0;
|
||||
extern u16* gUnk_0200B650;
|
||||
extern u8 gUnk_02000070;
|
||||
extern u8 gUnk_03003DF0[];
|
||||
extern u8 gUnk_03003BE0;
|
||||
extern Entity* gUnk_03004040[3];
|
||||
extern u8 gUnk_020342F8;
|
||||
extern u8 gUnk_03003DB8;
|
||||
extern void gUnk_030059F0(void);
|
||||
|
||||
extern void sub_080ADD70();
|
||||
extern void sub_0801C25C();
|
||||
extern void sub_08016C3C();
|
||||
extern void sub_08016DF8();
|
||||
extern void sub_0804FF98();
|
||||
extern u32 sub_0805E3B0();
|
||||
extern void sub_08016FF4();
|
||||
extern void sub_08070680();
|
||||
extern void sub_080171F0();
|
||||
extern void sub_08078FB0();
|
||||
extern void sub_0800404C();
|
||||
extern void sub_0807A050();
|
||||
extern u32 sub_08079B24();
|
||||
extern void sub_08079708();
|
||||
extern void CreateSparkle();
|
||||
extern void sub_080028E0(Entity*);
|
||||
extern void sub_08078180(void);
|
||||
extern void sub_0807B0C8(void);
|
||||
extern void sub_0807A8D8(Entity*);
|
||||
extern void sub_08077FEC(u32);
|
||||
extern void sub_080173A4(Entity*);
|
||||
extern void sub_080A2838(Entity*);
|
||||
extern u32 ReadBit(void*, u32);
|
||||
extern void sub_0806EC78(Entity*);
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u16 unk6;
|
||||
} ItemFrame;
|
||||
extern ItemFrame gUnk_08126DA8[];
|
||||
extern ItemFrame* gUnk_08126ED8[3];
|
||||
|
||||
typedef struct {
|
||||
u16 unk0;
|
||||
u16 unk1;
|
||||
u16 x;
|
||||
u16 y;
|
||||
} NPCStruct;
|
||||
extern NPCStruct gUnk_02031EC0[100];
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 freezeTime;
|
||||
u8 unk9;
|
||||
} EntityHandler;
|
||||
|
||||
extern EntityHandler gUnk_03003DC0;
|
||||
|
||||
typedef struct {
|
||||
void* last;
|
||||
void* first;
|
||||
void* node;
|
||||
u8 flags;
|
||||
} LinkedList2;
|
||||
|
||||
extern LinkedList2 gUnk_03003C70[16];
|
||||
extern LinkedList2* gUnk_02018EA0;
|
||||
|
||||
void sub_08016DF8(void) {
|
||||
if (gUnk_03003DE0 != 0) {
|
||||
u8* buf = &gUnk_03000C30;
|
||||
s32 i = gUnk_03003DE0;
|
||||
gUnk_03003DE0 = 0;
|
||||
do {
|
||||
switch (*buf) {
|
||||
case 0:
|
||||
DmaCopy32(3, *(u32*)(buf + 4), *(u32*)(buf + 8), *(u16*)(buf + 2));
|
||||
break;
|
||||
case 1:
|
||||
LZ77UnCompVram(*(void**)(buf + 4), *(u8**)(buf + 8));
|
||||
break;
|
||||
case 2:
|
||||
DmaFill32(3, *(u32*)(buf + 4), *(u32*)(buf + 8), *(u16*)(buf + 2));
|
||||
break;
|
||||
}
|
||||
buf += 12;
|
||||
i--;
|
||||
} while (0 < i);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08016E78(void) {
|
||||
gUnk_03001000.interruptFlag = 0;
|
||||
VBlankIntrWait();
|
||||
do {
|
||||
} while (gUnk_03001000.interruptFlag == 0);
|
||||
|
||||
sub_080ADD70();
|
||||
sub_0801C25C();
|
||||
sub_08016C3C();
|
||||
sub_08016DF8();
|
||||
|
||||
if (gUnk_02000070) {
|
||||
gUnk_02000070 = 0;
|
||||
if (gUnk_02025EB0 != NULL) {
|
||||
// sizeof(BGBuffer) = 0x800, what are we omitting?
|
||||
DmaCopy32(3, &gBG1Buffer, VRAM + (*gUnk_02025EB0 & 0x1f00) * 8, 0x5C0);
|
||||
}
|
||||
if (gUnk_0200B650 != NULL) {
|
||||
DmaCopy32(3, &gBG2Buffer, VRAM + (*gUnk_0200B650 & 0x1f00) * 8, 0x5C0);
|
||||
}
|
||||
}
|
||||
sub_0804FF98();
|
||||
}
|
||||
|
||||
void sub_08016F28(Entity* this) {
|
||||
if (gSave.stats.floorType != 0)
|
||||
gPlayerState.flags.all |= 0x4000;
|
||||
else
|
||||
gPlayerState.flags.all &= ~0x4000;
|
||||
|
||||
if (sub_0805E3B0(this) == 0) {
|
||||
if ((gPlayerState.flags.all & 0x80000) != 0) {
|
||||
sub_08077B20();
|
||||
if ((gPlayerState.flags.all & 0x200000) != 0) {
|
||||
gPlayerState.playerAction = 0x18;
|
||||
gPlayerState.flags.all &= 0xfff7ffff;
|
||||
gPlayerState.hurtBlinkSpeed = 0xf0;
|
||||
this->flags |= 0x80;
|
||||
} else {
|
||||
this->flags &= 0x7f;
|
||||
gPlayerState.field_0xa8 = 0xf;
|
||||
}
|
||||
}
|
||||
sub_08016FF4(this);
|
||||
sub_08070680(this);
|
||||
if ((this->height.WORD == 0) && (this->action == 1 || this->action == 9)) {
|
||||
sub_08008790(this, 8);
|
||||
}
|
||||
sub_080171F0();
|
||||
}
|
||||
sub_08078FB0(this);
|
||||
sub_0800404C(this);
|
||||
sub_0807A050();
|
||||
}
|
||||
|
||||
void sub_08016FF4(Entity* this) {
|
||||
u32 temp;
|
||||
|
||||
gUnk_0200AF00.filler25[10] = 0;
|
||||
gUnk_0200AF00.filler25[8] = 0;
|
||||
gUnk_0200AF00.filler25[9] = 0;
|
||||
|
||||
if ((gPlayerEntity.bitfield & 0x80) && (gPlayerEntity.hurtBlinkTime > 0))
|
||||
PlaySFX(SFX_86);
|
||||
|
||||
gPlayerState.flags.all &= ~(0x2000000 | 0x200);
|
||||
if (gPlayerState.flags.all & 0x400)
|
||||
ResetPlayer();
|
||||
if ((gPlayerState.flags.all & 0x400000) && !gPlayerState.field_0xa0[0])
|
||||
sub_0807A108();
|
||||
if (sub_08079B24() == 0)
|
||||
sub_08079708(this);
|
||||
|
||||
gUnk_03003DF0[0] = 0;
|
||||
if (gPlayerState.field_0x27[0] != 0)
|
||||
gPlayerState.field_0x27[0]--;
|
||||
|
||||
gPlayerState.field_0xa9 = gPlayerState.field_0xa8;
|
||||
gPlayerState.field_0xa8 = 0;
|
||||
if (gPlayerState.field_0x40[0x4a] != 0) {
|
||||
gPlayerState.field_0x40[0x4a]--;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((gPlayerState.field_0x8b != 0) || (gTextBox.doTextBox & 0x7f))
|
||||
return;
|
||||
|
||||
gRoomVars.unk2 = gTextBox.doTextBox & 0x7f;
|
||||
temp = gSave.stats.maxHealth / 4;
|
||||
if (temp > 24)
|
||||
temp = 24;
|
||||
if (temp < 8)
|
||||
temp = 8;
|
||||
|
||||
if (gSave.stats.health <= temp) {
|
||||
gRoomVars.unk2 = 1;
|
||||
if ((gUnk_0200AF00.filler0[1] == 0) && gScreenTransition.frameCount % 90 == 0) {
|
||||
EnqueueSFX(SFX_LOW_HEALTH);
|
||||
}
|
||||
}
|
||||
|
||||
if (gSave.stats.filler[2] == 0) {
|
||||
gSave.stats.field_0x1c = 0;
|
||||
} else if ((gSave.stats.field_0x1c == 0) || --gSave.stats.field_0x1c == 0) {
|
||||
gSave.stats.filler[2] = 0;
|
||||
PlaySFX(SFX_ICE_BLOCK_MELT);
|
||||
}
|
||||
|
||||
if (gSave.stats.filler[3] == 0) {
|
||||
gSave.stats.field_0x1e = 0;
|
||||
} else if ((gSave.stats.field_0x1e == 0) || (--gSave.stats.field_0x1e == 0)) {
|
||||
gSave.stats.filler[3] = 0;
|
||||
PlaySFX(SFX_140);
|
||||
} else if ((gSave.stats.field_0x1e & 0xf) == 0) {
|
||||
CreateSparkle(this);
|
||||
}
|
||||
|
||||
if (gSave.stats.floorType == 0) {
|
||||
gSave.stats.field_0x20 = 0;
|
||||
} else if ((gSave.stats.field_0x20 == 0) || --gSave.stats.field_0x20 == 0) {
|
||||
gSave.stats.floorType = 0;
|
||||
} else if ((gSave.stats.field_0x20 & 0x3f) == 0) {
|
||||
// lava or water splash FX
|
||||
CreateFx(this, 0x55 + gSave.stats.floorType, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080171F0(void) {
|
||||
if (gPlayerState.field_0x1a[0] != 0)
|
||||
ResetPlayer();
|
||||
if (gPlayerState.field_0x14 != 0)
|
||||
gPlayerState.field_0x14--;
|
||||
if (gPlayerEntity.field_0x7a.HWORD != 0)
|
||||
gPlayerEntity.field_0x7a.HWORD--;
|
||||
|
||||
gPlayerEntity.bitfield &= ~0x80;
|
||||
if (gPlayerEntity.action != 0x14)
|
||||
gPlayerState.flags.all = (gPlayerState.flags.all & ~0x10000) | (0x8000 * (gPlayerState.flags.all & 2));
|
||||
|
||||
gPlayerState.flags.all &= ~2;
|
||||
sub_080028E0(&gPlayerEntity);
|
||||
|
||||
if (gPlayerState.flags.all & 0x400000)
|
||||
gUnk_0200AF00.filler25[10] = 1;
|
||||
|
||||
sub_08078180();
|
||||
gPlayerState.field_0x7 &= ~0x80;
|
||||
gPlayerState.field_0xa &= 0xf;
|
||||
gPlayerState.keepFacing &= ~0x80;
|
||||
gPlayerState.field_0x1a[0] = 0;
|
||||
gPlayerState.field_0x80 = 0;
|
||||
gPlayerState.field_0xaa = 0;
|
||||
_DmaZero(&gUnk_03003BE0, 0x8c);
|
||||
gPlayerEntity.spriteOffsetY = gPlayerState.field_0x3f;
|
||||
gPlayerState.field_0x3f = 0;
|
||||
sub_0807B0C8();
|
||||
|
||||
if (gPlayerState.flags.all & 0x400000)
|
||||
gUnk_03004040[0]->spriteOffsetY = gUnk_03004040[1]->spriteOffsetY = gUnk_03004040[2]->spriteOffsetY = 0;
|
||||
|
||||
if (gPlayerEntity.action == 0x1d)
|
||||
gPlayerState.flags.all |= 0x20000000;
|
||||
else
|
||||
gPlayerState.flags.all &= ~0x20000000;
|
||||
|
||||
sub_0807A8D8(&gPlayerEntity);
|
||||
if (gPlayerState.jumpStatus & 0xc0)
|
||||
gPlayerEntity.hurtBlinkTime = 0xfe;
|
||||
|
||||
if (gPlayerEntity.action != 0x17) {
|
||||
sub_08077FEC(gPlayerEntity.action);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08017338(Entity *this) {
|
||||
if (!(this->flags & 1) && !this->action && !this->previousActionFlag)
|
||||
sub_080173A4(this);
|
||||
|
||||
if (!sub_0805E3B0(this)) {
|
||||
gPlayerItemFunctions[this->entityType.subtype](this);
|
||||
this->bitfield &= ~0x80;
|
||||
if (this->hurtBlinkTime != 0) {
|
||||
if (this->hurtBlinkTime > 0)
|
||||
this->hurtBlinkTime--;
|
||||
else
|
||||
this->hurtBlinkTime++;
|
||||
}
|
||||
}
|
||||
sub_0800404C(this);
|
||||
}
|
||||
|
||||
// tiny regalloc
|
||||
NONMATCH("asm/non_matching/sub_080173A4.inc", void sub_080173A4(Entity* this)) {
|
||||
ItemFrame* entry;
|
||||
|
||||
entry = &gUnk_08126DA8[this->entityType.subtype];
|
||||
if (entry->unk0 == 0xff) {
|
||||
u32 temp = entry->unk2;
|
||||
ItemFrame* temp2 = gUnk_08126ED8[entry->unk1];
|
||||
entry = &temp2[this->field_0x68.HALF.LO - temp];
|
||||
}
|
||||
|
||||
this->palette.raw = ((entry->unk0 & 0xf) << 4) | entry->unk0;
|
||||
this->field_0x44 = entry->unk1;
|
||||
this->field_0x40 = entry->unk3;
|
||||
this->damageType = entry->unk4;
|
||||
this->spriteIndex = entry->unk5;
|
||||
if (entry->unk6 == 0)
|
||||
this->spriteVramOffset = gPlayerEntity.spriteVramOffset;
|
||||
else
|
||||
this->spriteVramOffset = entry->unk6 & 0x3ff;
|
||||
|
||||
if (this->animationState == 0)
|
||||
this->animationState = gPlayerEntity.animationState & 6;
|
||||
|
||||
this->collisionLayer = gPlayerEntity.collisionLayer;
|
||||
this->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
|
||||
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0;
|
||||
this->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
|
||||
this->currentHealth = 1;
|
||||
this->flags |= 1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_080174A4(Entity* this) {
|
||||
int iVar1;
|
||||
|
||||
if (((this->flags & 1) == 0) && (this->action == 0)) {
|
||||
sub_080A2838(this);
|
||||
}
|
||||
if (this->hurtBlinkTime != 0) {
|
||||
this->hurtBlinkTime++;
|
||||
}
|
||||
if (!sub_0805E3B0(this)) {
|
||||
gObjectFunctions[this->entityType.subtype](this);
|
||||
this->bitfield &= ~0x80;
|
||||
}
|
||||
sub_0800404C(this);
|
||||
}
|
||||
|
||||
void sub_08017508(Entity* this) {
|
||||
if (!sub_0805E3B0(this))
|
||||
gManagerFunctions[this->entityType.subtype](this);
|
||||
}
|
||||
|
||||
// regalloc
|
||||
NONMATCH("asm/non_matching/sub_08017530.inc", void sub_08017530(Entity* this)) {
|
||||
if ((this->currentHealth & 0x7f) &&
|
||||
!ReadBit(&gUnk_020342F8, this->currentHealth - 1)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if ((this->action == 0) && ((this->flags & 1) == 0)) {
|
||||
sub_0806EC78(this);
|
||||
}
|
||||
if (!sub_0805E3B0(this)) {
|
||||
gNPCFunctions[this->entityType.subtype][0](this);
|
||||
}
|
||||
if (this->next != NULL) {
|
||||
if (gNPCFunctions[this->entityType.subtype][1] != NULL) {
|
||||
gNPCFunctions[this->entityType.subtype][1](this);
|
||||
}
|
||||
if ((this->currentHealth & 0x7f) != 0) {
|
||||
u32 temp = this->currentHealth & 0x7f;
|
||||
gUnk_02031EC0[temp * 2 - 2].x = this->x.HALF.HI - gRoomControls.roomOriginX;
|
||||
gUnk_02031EC0[temp * 2 - 2].y = this->y.HALF.HI - gRoomControls.roomOriginY;
|
||||
}
|
||||
sub_0800404C(this);
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_080175E8(void) {
|
||||
gUnk_03003DB8 = 0;
|
||||
}
|
||||
|
||||
void sub_080175F4(void) {
|
||||
u32 flags;
|
||||
u32 temp;
|
||||
|
||||
void (*func)(void);
|
||||
|
||||
temp = gUnk_03003DC0.unk0;
|
||||
if (gUnk_03003DC0.unk0 <= gUnk_03003DC0.unk1)
|
||||
temp = gUnk_03003DC0.unk1;
|
||||
if (temp != 0)
|
||||
return;
|
||||
|
||||
func = &gUnk_030059F0;
|
||||
if (gPlayerState.field_0x8b != 0) {
|
||||
u32 temp = gPlayerEntity.flags;
|
||||
gPlayerEntity.flags &= 0x7f;
|
||||
func();
|
||||
gPlayerEntity.flags = temp;
|
||||
} else {
|
||||
func();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08017640(void) {
|
||||
_DmaZero(&gUnk_03003C70,0x100);
|
||||
gUnk_02018EA0 = (LinkedList2*)&gUnk_03003C70[0].last;
|
||||
gUnk_03003C70[0].last = &gUnk_03003C70[0].last;
|
||||
gUnk_03003C70[0].first = &gUnk_03003C70[0].last;
|
||||
gUnk_03003C70[0].node = &gPlayerEntity;
|
||||
}
|
||||
|
||||
// Loop declaration seems wrong
|
||||
NONMATCH("asm/non_matching/sub_0801766C.inc", u32 sub_0801766C(Entity* this)) {
|
||||
u32 uVar1;
|
||||
LinkedList2* puVar3;
|
||||
LinkedList2* puVar2;
|
||||
LinkedList2* pLVar2;
|
||||
LinkedList2* i;
|
||||
u8* pbVar4;
|
||||
|
||||
if (this->spritePriority.b2 != 0) {
|
||||
return 1;
|
||||
} else {
|
||||
for (i = &gUnk_03003C70[0]; i < &gUnk_03003C70[16]; ++i) {
|
||||
if (i->node == NULL) {
|
||||
i->node = this;
|
||||
i->flags = 0;
|
||||
this->spritePriority.b2 = 1;
|
||||
pLVar2 = gUnk_02018EA0;
|
||||
if (gUnk_02018EA0->flags != 0) {
|
||||
do {
|
||||
pLVar2 = pLVar2->first;
|
||||
} while (pLVar2->flags != 0);
|
||||
i->first = pLVar2;
|
||||
puVar3 = pLVar2->last;
|
||||
i->last = puVar3;
|
||||
puVar3->first = i;
|
||||
pLVar2->last = i;
|
||||
} else {
|
||||
i->first = gUnk_02018EA0;
|
||||
puVar2 = gUnk_02018EA0->last;
|
||||
i->last = puVar2;
|
||||
puVar2->first = i;
|
||||
gUnk_02018EA0->last = i;
|
||||
gUnk_02018EA0 = i;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
// same loop issue
|
||||
NONMATCH("asm/non_matching/sub_080176E4.inc", u32 sub_080176E4(Entity* this)) {
|
||||
u32 uVar1;
|
||||
LinkedList2* j;
|
||||
LinkedList2* i;
|
||||
u8* pbVar4;
|
||||
|
||||
if (this->spritePriority.b2 != 0) {
|
||||
return 1;
|
||||
} else {
|
||||
for (i = &gUnk_03003C70[0]; i < &gUnk_03003C70[16]; ++i) {
|
||||
if (i->node == NULL) {
|
||||
i->node = this;
|
||||
i->flags = 1;
|
||||
this->spritePriority.b2 = 1;
|
||||
i->first = gUnk_02018EA0;
|
||||
j = gUnk_02018EA0->last;
|
||||
i->last = j;
|
||||
j->first = i;
|
||||
gUnk_02018EA0->last = i;
|
||||
gUnk_02018EA0 = i;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
// you guessed it
|
||||
NONMATCH("asm/non_matching/sub_08016DF8.inc", void sub_08017744(Entity* this)) {
|
||||
LinkedList2* i;
|
||||
for (i = &gUnk_03003C70[0]; i < &gUnk_03003C70[16]; ++i) {
|
||||
if (i->node == this) {
|
||||
if (this->spritePriority.b2 != 0) {
|
||||
this->spritePriority.b2 = 0;
|
||||
i->node = NULL;
|
||||
((LinkedList2*)i->last)->first = i->first;
|
||||
((LinkedList2*)i->first)->last = i->last;
|
||||
if (i != gUnk_02018EA0)
|
||||
return;
|
||||
gUnk_02018EA0 = i->first;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
// regalloc
|
||||
NONMATCH("asm/non_matching/sub_080177A0.inc", bool32 sub_080177A0(Entity* this, Entity* that)) {
|
||||
u32 this_d;
|
||||
u32 depth;
|
||||
|
||||
if ((that->collisionLayer & this->collisionLayer) != 0) {
|
||||
BoundingBox* bb_this = this->boundingBox;
|
||||
BoundingBox* bb_that = that->boundingBox;
|
||||
u32 this_w = bb_this->width;
|
||||
u32 that_w = bb_that->width;
|
||||
if ((((this->x.HALF.HI - that->x.HALF.HI) + bb_this->offset_x) - bb_that->offset_x) + this_w + that_w <= (this_w + that_w) * 2) {
|
||||
u32 this_h = bb_this->height;
|
||||
u32 that_h = bb_that->height;
|
||||
if ((((this->y.HALF.HI - that->y.HALF.HI) + bb_this->offset_y) - bb_that->offset_y) + this_h + that_h <= (this_h + that_h) * 2) {
|
||||
if ((this->field_0x3c & 0x10) != 0)
|
||||
this_d = ((BoundingBox3D*)bb_this)->depth;
|
||||
else
|
||||
this_d = 5;
|
||||
if ((that->field_0x3c & 0x10) != 0)
|
||||
depth = this_d + ((BoundingBox3D*)bb_that)->depth;
|
||||
else
|
||||
depth = this_d + 5;
|
||||
if ((this->height.HALF.HI - that->height.HALF.HI) + depth <= depth * 2)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
bool32 sub_08017850(Entity* this) {
|
||||
if (sub_08079F8C())
|
||||
return sub_080177A0(this, &gPlayerEntity);
|
||||
return FALSE;
|
||||
}
|
|
@ -82,19 +82,19 @@ u32 SetBottleContents(u32 itemID, u32 bottleIndex) {
|
|||
|
||||
if (bottleIndex > 3) {
|
||||
bottleIndex = 0;
|
||||
if (gSave.stats.filler2[0] != 0x20) {
|
||||
if (gSave.stats.bottles[0] != 0x20) {
|
||||
do {
|
||||
bottleIndex++;
|
||||
if (bottleIndex > 3) {
|
||||
return bottleIndex;
|
||||
}
|
||||
} while (gSave.stats.filler2[bottleIndex] != 0x20);
|
||||
} while (gSave.stats.bottles[bottleIndex] != 0x20);
|
||||
}
|
||||
if (bottleIndex > 3) {
|
||||
return bottleIndex;
|
||||
}
|
||||
}
|
||||
gSave.stats.filler2[bottleIndex] = itemID;
|
||||
gSave.stats.bottles[bottleIndex] = itemID;
|
||||
return bottleIndex;
|
||||
}
|
||||
|
||||
|
@ -134,13 +134,13 @@ u32 sub_080544C8(u32 arg0) {
|
|||
}
|
||||
|
||||
u32 sub_080544DC(u32 arg0) {
|
||||
if (arg0 == gSave.stats.filler2[0]) {
|
||||
if (arg0 == gSave.stats.bottles[0]) {
|
||||
return 1;
|
||||
} else if (arg0 == gSave.stats.filler2[1]) {
|
||||
} else if (arg0 == gSave.stats.bottles[1]) {
|
||||
return 2;
|
||||
} else if (arg0 == gSave.stats.filler2[2]) {
|
||||
} else if (arg0 == gSave.stats.bottles[2]) {
|
||||
return 3;
|
||||
} else if (arg0 == gSave.stats.filler2[3]) {
|
||||
} else if (arg0 == gSave.stats.bottles[3]) {
|
||||
return 4;
|
||||
} else {
|
||||
return 0;
|
||||
|
|
|
@ -101,7 +101,7 @@ void sub_0805ECEC(int param_1, u32 param_2, u32 param_3, u32 param_4) {
|
|||
}
|
||||
|
||||
void sub_0805ED14(u32 param_1) {
|
||||
gPlayerState.field_0x9c[0] = param_1;
|
||||
gPlayerState.field_0x9c = param_1;
|
||||
gPlayerState.field_0x98 = 0;
|
||||
gPlayerState.field_0x9a = 0;
|
||||
}
|
|
@ -185,16 +185,16 @@ const u16 gUnk_080CB79C[] = {
|
|||
};
|
||||
|
||||
|
||||
const BoundingBox gUnk_080CB7A4 = { 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06 };
|
||||
const BoundingBox gUnk_080CB7AC = { 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
|
||||
const BoundingBox gUnk_080CB7B4 = { 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
|
||||
const BoundingBox gUnk_080CB7A4 = { 0x00, -9, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06 };
|
||||
const BoundingBox gUnk_080CB7AC = { 0x00, -5, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
|
||||
const BoundingBox gUnk_080CB7B4 = { 0x00, -1, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
|
||||
const BoundingBox gUnk_080CB7BC = { 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08 };
|
||||
const BoundingBox gUnk_080CB7C4 = { 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c };
|
||||
const BoundingBox gUnk_080CB7CC = { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB7D4 = { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04 };
|
||||
const BoundingBox gUnk_080CB7DC = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04 };
|
||||
const BoundingBox gUnk_080CB7E4 = { 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB7EC = { 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c };
|
||||
const BoundingBox gUnk_080CB7E4 = { 0x00, -8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB7EC = { 0x00, -12, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c };
|
||||
|
||||
const BoundingBox *const gUnk_080CB7F4[] = {
|
||||
&gUnk_080CB7A4,
|
||||
|
@ -214,10 +214,10 @@ const BoundingBox *const gUnk_080CB7F4[] = {
|
|||
const BoundingBox gUnk_080CB824 = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB82C = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
|
||||
const BoundingBox gUnk_080CB834 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
|
||||
const BoundingBox gUnk_080CB83C = { 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB844 = { 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08 };
|
||||
const BoundingBox gUnk_080CB84C = { 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB854 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
|
||||
const BoundingBox gUnk_080CB83C = { -8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB844 = { -12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08 };
|
||||
const BoundingBox gUnk_080CB84C = { -8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB854 = { -4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
|
||||
const BoundingBox gUnk_080CB85C = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
|
||||
const BoundingBox gUnk_080CB864 = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
|
||||
const BoundingBox gUnk_080CB86C = { 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08 };
|
||||
|
|
|
@ -305,8 +305,8 @@ void sub_0802C058(Entity* this, u32 param_2) {
|
|||
}
|
||||
|
||||
bool32 sub_0802C06C(Entity* this) {
|
||||
u32 x = this->x.HALF.HI + (s8)this->boundingBox->unknown[0];
|
||||
u32 y = this->y.HALF.HI + (s8)this->boundingBox->unknown[1];
|
||||
u32 x = this->x.HALF.HI + this->boundingBox->offset_x;
|
||||
u32 y = this->y.HALF.HI + this->boundingBox->offset_y;
|
||||
u32 xdiff = gUnk_080CD45C[(this->direction >> 2) + 0];
|
||||
u32 ydiff = gUnk_080CD45C[(this->direction >> 2) + 1];
|
||||
|
||||
|
@ -330,8 +330,8 @@ bool32 sub_0802C0E8(Entity* this) {
|
|||
return TRUE;
|
||||
} else {
|
||||
const s8* ptr = &gUnk_080CD45C[this->direction >> 2];
|
||||
s32 x = this->x.HALF.HI + (s8)this->boundingBox->unknown[0] + ptr[0] * 6;
|
||||
s32 y = this->y.HALF.HI + (s8)this->boundingBox->unknown[1] + ptr[1] * 6;
|
||||
s32 x = this->x.HALF.HI + this->boundingBox->offset_x + ptr[0] * 6;
|
||||
s32 y = this->y.HALF.HI + this->boundingBox->offset_y + ptr[1] * 6;
|
||||
|
||||
Entity* ent = this->collisionLayer == 2 ? &gUnk_0200D654 : &gUnk_02027EB4;
|
||||
u32 ret = FALSE;
|
||||
|
|
|
@ -203,10 +203,10 @@ void sub_08028528(Entity* this) {
|
|||
} else {
|
||||
sub_080288C0(this);
|
||||
box = gUnk_080CC944[this->animationState >> 1];
|
||||
this->boundingBox->unknown[0] = box->unknown[0];
|
||||
this->boundingBox->unknown[1] = box->unknown[1];
|
||||
this->boundingBox->unknown[6] = box->unknown[6];
|
||||
this->boundingBox->unknown[7] = box->unknown[7];
|
||||
this->boundingBox->offset_x = box->offset_x;
|
||||
this->boundingBox->offset_y = box->offset_y;
|
||||
this->boundingBox->width = box->width;
|
||||
this->boundingBox->height = box->height;
|
||||
|
||||
if (this->field_0x7a.HALF.LO != 0) {
|
||||
this->field_0x7a.HALF.LO = 0;
|
||||
|
@ -365,10 +365,10 @@ void sub_08028858(Entity* this) {
|
|||
|
||||
sub_080288C0(this);
|
||||
box = gUnk_080CC944[this->animationState >> 1];
|
||||
this->boundingBox->unknown[0] = box->unknown[0];
|
||||
this->boundingBox->unknown[1] = box->unknown[1];
|
||||
this->boundingBox->unknown[6] = box->unknown[6];
|
||||
this->boundingBox->unknown[7] = box->unknown[7];
|
||||
this->boundingBox->offset_x = box->offset_x;
|
||||
this->boundingBox->offset_y = box->offset_y;
|
||||
this->boundingBox->width = box->width;
|
||||
this->boundingBox->height = box->height;
|
||||
|
||||
if (this->field_0x82.HALF.LO == 0) {
|
||||
this->nonPlanarMovement = 0;
|
||||
|
|
|
@ -36,7 +36,7 @@ void sub_08033564(Entity* this) {
|
|||
this->flags &= 0x7f;
|
||||
this->field_0x7c.HALF.LO = 0x27c;
|
||||
gPlayerState.flags.all |= 0x4000;
|
||||
gSave.stats.filler2[4] = this->entityType.form + 1;
|
||||
gSave.stats.floorType = this->entityType.form + 1;
|
||||
gSave.stats.field_0x20 = 600;
|
||||
if (this->entityType.form == 0) {
|
||||
break;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
extern void DeleteThisEntity();
|
||||
extern void sub_08078CD0(Entity*);
|
||||
extern void sub_08018FA0(Entity*);
|
||||
extern void sub_0801766C(Entity*);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_08018F6C(Entity*);
|
||||
|
||||
extern void (*const gUnk_080B3DD0[])(Entity*);
|
||||
|
|
|
@ -30,8 +30,8 @@ void MineralWaterSource_Init(Entity* this) {
|
|||
this->entityType.parameter = unknownParameters->field_0x00;
|
||||
this->field_0x40 = unknownParameters->field_0x03;
|
||||
|
||||
this->boundingBox->unknown[6] = unknownParameters->field_0x01;
|
||||
this->boundingBox->unknown[7] = unknownParameters->field_0x02;
|
||||
this->boundingBox->width = unknownParameters->field_0x01;
|
||||
this->boundingBox->height = unknownParameters->field_0x02;
|
||||
|
||||
this->flags |= 0x80;
|
||||
|
||||
|
|
|
@ -234,10 +234,10 @@ void sub_0808F498(Entity* this) {
|
|||
this->action = 1;
|
||||
this->actionDelay = 64;
|
||||
var0 = this->entityType.parameter != 0 ? 44 : 43;
|
||||
this->x.HALF.HI -= this->parent->boundingBox->unknown[6];
|
||||
this->x.HALF.HI += (s32)Random() % (this->parent->boundingBox->unknown[6] * 2);
|
||||
this->y.HALF.HI -= this->parent->boundingBox->unknown[7];
|
||||
this->y.HALF.HI += (s32)Random() % (this->parent->boundingBox->unknown[7] * 2);
|
||||
this->x.HALF.HI -= this->parent->boundingBox->width;
|
||||
this->x.HALF.HI += (s32)Random() % (this->parent->boundingBox->width * 2);
|
||||
this->y.HALF.HI -= this->parent->boundingBox->height;
|
||||
this->y.HALF.HI += (s32)Random() % (this->parent->boundingBox->height * 2);
|
||||
sub_0801D2B4(this, var0);
|
||||
InitializeAnimation(this, 4);
|
||||
}
|
||||
|
|
|
@ -5236,7 +5236,7 @@ void sub_0804EEBC(void) {
|
|||
LoadRoomEntityList(&gUnk_080F5848);
|
||||
}
|
||||
}
|
||||
if (gSave.stats.filler2[5] == 0) {
|
||||
if (gSave.stats.filler3[0] == 0) {
|
||||
LoadRoomEntityList(&gUnk_080F5788);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue