Decompile OctorokBoss

This commit is contained in:
octorock
2021-12-13 21:53:29 +01:00
parent 83fc028502
commit 2580b33a20
74 changed files with 2906 additions and 5587 deletions
+2 -2
View File
@@ -383,7 +383,7 @@ sub_080386B8: @ 0x080386B8
bl EnqueueSFX
adds r0, r4, #0
movs r1, #0x70
bl sub_0801D2B4
bl ChangeObjPalette
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
adds r0, r4, #0
@@ -470,7 +470,7 @@ sub_08038754: @ 0x08038754
bl EnqueueSFX
adds r0, r4, #0
movs r1, #0x71
bl sub_0801D2B4
bl ChangeObjPalette
ldrb r2, [r4, #0x15]
movs r0, #0xf
ands r0, r2
+2 -2
View File
@@ -1443,8 +1443,8 @@ _080028EE:
_080028F2:
bx lr
thumb_func_start sub_080028F4
sub_080028F4: @ 0x080028F4
thumb_func_start GetRandomByWeight
GetRandomByWeight: @ 0x080028F4
push {r4, lr}
adds r4, r0, #0
bl Random
+2 -2
View File
@@ -433,8 +433,8 @@ _0801D2AE:
.align 2, 0
_0801D2B0: .4byte gPaletteList
thumb_func_start sub_0801D2B4
sub_0801D2B4: @ 0x0801D2B4
thumb_func_start ChangeObjPalette
ChangeObjPalette: @ 0x0801D2B4
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
+1 -1
View File
@@ -446,7 +446,7 @@ sub_08054EFC: @ 0x08054EFC
subs r0, #0x10
strh r0, [r1, #0x32]
adds r0, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_08054F54:
movs r0, #0xfd
bl SoundReq
+1 -1
View File
@@ -3204,7 +3204,7 @@ _0807A06A:
beq _0807A084
strb r1, [r0]
ldr r0, _0807A090 @ =gPlayerEntity
bl sub_0801D2B4
bl ChangeObjPalette
_0807A084:
pop {pc}
.align 2, 0
+1 -1
View File
@@ -311,7 +311,7 @@ sub_08087DBC: @ 0x08087DBC
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
+2 -2
View File
@@ -242,7 +242,7 @@ _0809075C:
bne _080907C8
adds r0, r7, #0
movs r1, #0x7e
bl sub_0801D2B4
bl ChangeObjPalette
b _080907C8
.align 2, 0
_08090778: .4byte gRoomControls
@@ -1062,7 +1062,7 @@ sub_08090E4C: @ 0x08090E4C
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl sub_0801D2B4
bl ChangeObjPalette
pop {pc}
.align 2, 0
_08090E60: .4byte gUnk_08122244
+2 -2
View File
@@ -295,7 +295,7 @@ _0809396C:
bl sub_08093984
adds r0, r5, #0
movs r1, #0x7b
bl sub_0801D2B4
bl ChangeObjPalette
pop {r4, r5, r6, pc}
.align 2, 0
_0809397C: .4byte gRoomControls
@@ -377,7 +377,7 @@ sub_080939C0: @ 0x080939C0
bl sub_08093A1C
adds r0, r4, #0
movs r1, #0x7a
bl sub_0801D2B4
bl ChangeObjPalette
pop {r4, r5, pc}
.align 2, 0
_08093A14: .4byte gRoomControls
+2 -2
View File
@@ -3749,7 +3749,7 @@ sub_0802EB9C: @ 0x0802EB9C
push {r4, lr}
adds r4, r0, #0
ldr r0, _0802EBBC @ =gUnk_080CD850
bl sub_080028F4
bl GetRandomByWeight
ldr r1, _0802EBC0 @ =gUnk_080CD854
adds r0, r0, r1
ldrb r1, [r0]
@@ -3782,7 +3782,7 @@ sub_0802EBC4: @ 0x0802EBC4
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl sub_080028F4
bl GetRandomByWeight
ldr r2, _0802EC1C @ =gUnk_080CD878
ldrb r1, [r5]
lsls r1, r1, #2
+3 -3
View File
@@ -64,7 +64,7 @@ _08097E1C:
adds r1, r0, #0
adds r1, #0xb
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
b _08097EA2
_08097E46:
ldrb r0, [r4, #0xb]
@@ -83,7 +83,7 @@ _08097E5C:
bne _08097E9C
adds r0, r4, #0
movs r1, #0xd
bl sub_0801D2B4
bl ChangeObjPalette
_08097E68:
ldrb r0, [r4, #0x1b]
movs r1, #0x3f
@@ -110,7 +110,7 @@ _08097E76:
strb r0, [r2]
adds r0, r4, #0
movs r1, #0xb
bl sub_0801D2B4
bl ChangeObjPalette
_08097E9C:
adds r0, r4, #0
bl sub_08097F34
+2 -2
View File
@@ -90,7 +90,7 @@ _0808CB70:
movs r5, #0
str r5, [r4, #0x34]
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _0808CB98
@@ -212,7 +212,7 @@ sub_0808CBE8: @ 0x0808CBE8
bl sub_0807A094
adds r1, r0, #0
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
movs r0, #0x3c
movs r1, #1
movs r2, #0
@@ -0,0 +1,331 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xa]
cmp r0, #6
bls _0803573A
b _08035974
_0803573A:
lsls r0, r0, #2
ldr r1, _08035744 @ =_08035748
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08035744: .4byte _08035748
_08035748: @ jump table
.4byte _08035764 @ case 0
.4byte _080358D8 @ case 1
.4byte _080358D8 @ case 2
.4byte _080358D8 @ case 3
.4byte _080358D8 @ case 4
.4byte _08035920 @ case 5
.4byte _08035940 @ case 6
_08035764:
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x7c
movs r5, #0
strb r5, [r0]
movs r0, #1
strb r0, [r4, #0xe]
movs r0, #0x30
bl zMalloc
adds r2, r0, #0
adds r0, r4, #0
adds r0, #0x84
str r2, [r0]
mov r8, r0
cmp r2, #0
bne _0803579E
adds r0, r4, #0
bl sub_0804A7D4
b _080359A6
_0803579E:
str r2, [r4, #0x64]
mov r1, r8
ldr r0, [r1]
strb r5, [r0, #6]
ldr r1, [r1]
movs r0, #2
strb r0, [r1]
mov r2, r8
ldr r0, [r2]
strb r5, [r0, #2]
ldr r1, [r2]
movs r0, #5
strb r0, [r1, #1]
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x6d
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x76
movs r1, #0xa0
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r0, #6
strh r5, [r0]
movs r5, #0
movs r0, #0x79
adds r0, r0, r4
mov sb, r0
mov r7, r8
_080357E6:
adds r6, r5, #1
movs r0, #0x39
adds r1, r6, #0
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08035816
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
ldr r1, [r7]
str r1, [r0]
ldr r1, [r7]
lsls r0, r5, #2
adds r1, #0x20
adds r1, r1, r0
ldr r0, [r4, #0x54]
str r0, [r1]
_08035816:
adds r5, r6, #0
cmp r5, #3
bls _080357E6
movs r0, #0x39
movs r1, #5
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08035840
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
mov r2, r8
ldr r1, [r2]
str r1, [r0]
_08035840:
movs r0, #0x39
movs r1, #6
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _0803586A
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
mov r2, r8
ldr r1, [r2]
str r1, [r0]
ldr r1, [r2]
ldr r0, [r4, #0x54]
str r0, [r1, #0xc]
_0803586A:
movs r5, #0
mov r7, r8
_0803586E:
movs r0, #0x39
movs r1, #7
bl CreateEnemy
str r0, [r4, #0x54]
adds r6, r5, #1
cmp r0, #0
beq _080358A0
strb r5, [r0, #0xb]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
ldr r1, [r7]
str r1, [r0]
ldr r1, [r7]
lsls r0, r6, #2
adds r1, #0xc
adds r1, r1, r0
ldr r0, [r4, #0x54]
str r0, [r1]
_080358A0:
adds r5, r6, #0
cmp r5, #3
bls _0803586E
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x3c
mov r1, sb
strb r0, [r1]
ldr r1, _080358D0 @ =gPlayerEntity
ldrb r2, [r1, #0x18]
subs r0, #0x40
ands r0, r2
strb r0, [r1, #0x18]
ldrh r0, [r4, #0x2e]
strh r0, [r1, #0x2e]
ldrh r0, [r4, #0x32]
subs r0, #0xa0
strh r0, [r1, #0x32]
ldr r0, _080358D4 @ =gRoomControls
str r4, [r0, #0x30]
b _08035974
.align 2, 0
_080358D0: .4byte gPlayerEntity
_080358D4: .4byte gRoomControls
_080358D8:
movs r1, #0
movs r0, #0x10
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x79
strb r1, [r0]
ldrb r1, [r4, #0xa]
movs r2, #2
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _080358F4
strb r2, [r4, #0xf]
b _080358F8
_080358F4:
movs r0, #0xfe
strb r0, [r4, #0xf]
_080358F8:
adds r0, r4, #0
adds r0, #0x74
movs r2, #0x80
lsls r2, r2, #1
strh r2, [r0]
ldrb r1, [r4, #0xa]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08035918
adds r1, r4, #0
adds r1, #0x76
movs r0, #0xff
lsls r0, r0, #8
strh r0, [r1]
b _08035974
_08035918:
adds r0, r4, #0
adds r0, #0x76
strh r2, [r0]
b _08035974
_08035920:
adds r0, r4, #0
adds r0, #0x76
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x1c
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
str r4, [r0, #8]
b _08035974
_08035940:
adds r0, r4, #0
adds r0, #0x76
movs r2, #0
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x79
strb r2, [r0]
movs r0, #0x10
strb r0, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x7d
movs r0, #0x80
strb r0, [r1]
_08035974:
ldrb r0, [r4, #0xa]
cmp r0, #6
beq _08035990
ldr r0, _0803598C @ =gUnk_080CF08C
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl InitializeAnimation
b _080359A0
.align 2, 0
_0803598C: .4byte gUnk_080CF08C
_08035990:
ldr r0, _080359B0 @ =gUnk_080CF08C
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl InitAnimationForceUpdate
_080359A0:
adds r0, r4, #0
bl OctorokBoss_Action1
_080359A6:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080359B0: .4byte gUnk_080CF08C
.syntax divided
@@ -0,0 +1,33 @@
.syntax unified
push {r4, lr}
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x79
ldrb r0, [r2, #0xf]
ldrb r4, [r3]
adds r1, r0, r4
strb r1, [r3]
ldrb r4, [r2, #0xf]
movs r0, #0xf
ldrsb r0, [r2, r0]
cmp r0, #0
bge _080369BE
ldrb r0, [r2, #0xe]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmn r1, r0
bge _080369CC
b _080369C8
_080369BE:
movs r0, #0
ldrsb r0, [r3, r0]
ldrb r1, [r2, #0xe]
cmp r0, r1
ble _080369CC
_080369C8:
rsbs r0, r4, #0
strb r0, [r2, #0xf]
_080369CC:
pop {r4, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,149 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov ip, r1
adds r6, r2, #0
adds r1, r0, #0
adds r1, #0x84
ldr r4, [r1]
ldr r2, [r4, #0xc]
ldrb r1, [r4, #1]
subs r1, #1
lsls r1, r1, #2
adds r3, r4, #0
adds r3, #0xc
adds r1, r3, r1
ldr r1, [r1]
adds r1, #0x7b
adds r0, #0x79
ldrb r0, [r0]
ldrb r1, [r1]
adds r0, r0, r1
adds r2, #0x7b
strb r0, [r2]
ldrb r0, [r4, #1]
movs r2, #0
cmp r0, #1
beq _08036A58
adds r5, r3, #0
lsls r0, r6, #0x18
lsrs r0, r0, #0x18
mov r8, r0
rsbs r0, r6, #0
lsls r0, r0, #0x18
asrs r7, r0, #0x18
_08036A16:
lsls r0, r2, #2
adds r0, r5, r0
ldr r1, [r0]
adds r1, #0x7b
adds r2, #1
lsls r0, r2, #2
adds r0, r5, r0
ldr r0, [r0]
adds r3, r0, #0
adds r3, #0x7b
ldrb r1, [r1]
ldrb r0, [r3]
cmp r1, r0
beq _08036A4C
subs r0, r0, r1
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _08036A44
cmp r0, r8
ble _08036A4C
adds r0, r1, r6
b _08036A4A
_08036A44:
cmp r0, r7
bge _08036A4C
subs r0, r1, r6
_08036A4A:
strb r0, [r3]
_08036A4C:
ldrb r0, [r4, #1]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r2, r0
blo _08036A16
_08036A58:
ldrb r0, [r4, #1]
subs r2, r0, #1
cmp r2, #0
beq _08036AE4
ldr r0, _08036AEC @ =gSineTable
mov sb, r0
movs r1, #0x80
mov r8, r1
mov r1, ip
lsls r0, r1, #0x14
asrs r6, r0, #0x10
lsls r0, r2, #2
adds r0, #8
adds r5, r0, r4
movs r7, #0x80
lsls r7, r7, #1
_08036A78:
subs r4, r2, #1
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
mov r1, r8
eors r0, r1
lsls r0, r0, #1
add r0, sb
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r6, #0
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r7, #0
bl FixedDiv
ldr r2, [r5]
ldr r1, [r5, #4]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
mov r1, r8
eors r0, r1
adds r0, #0x40
lsls r0, r0, #1
add r0, sb
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r6, #0
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r7, #0
bl FixedDiv
ldr r2, [r5]
ldr r1, [r5, #4]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x30]
subs r1, r1, r0
str r1, [r2, #0x30]
subs r5, #4
adds r2, r4, #0
cmp r2, #0
bne _08036A78
_08036AE4:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08036AEC: .4byte gSineTable
.syntax divided
@@ -0,0 +1,210 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
str r1, [sp]
mov r8, r2
adds r0, #0x84
ldr r0, [r0]
str r0, [sp, #4]
ldrb r0, [r0, #1]
subs r4, r0, #1
cmp r4, #0
bne _08036B10
b _08036C80
_08036B10:
ldr r0, [sp, #4]
adds r0, #0xc
str r0, [sp, #8]
lsls r0, r1, #0x14
asrs r0, r0, #0x10
mov sl, r0
_08036B1C:
mov r1, r8
cmp r1, #0
bne _08036BC0
lsls r0, r4, #2
ldr r2, [sp, #8]
adds r6, r2, r0
ldr r0, [r6]
subs r4, #1
lsls r1, r4, #2
adds r5, r2, r1
ldr r2, [r5]
movs r3, #0x2e
ldrsh r1, [r2, r3]
movs r3, #0x32
ldrsh r2, [r2, r3]
bl sub_080041DC
mov sb, r4
ldr r1, [sp]
cmp r1, r0
blo _08036B48
b _08036C78
_08036B48:
ldr r2, [r5]
ldr r3, [r6]
ldr r0, [r2, #0x2c]
ldr r1, [r3, #0x2c]
subs r0, r0, r1
ldr r1, [r2, #0x30]
ldr r2, [r3, #0x30]
subs r1, r1, r2
bl sub_080045DA
ldr r1, [r5]
adds r1, #0x7b
strb r0, [r1]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
lsls r0, r0, #1
ldr r2, _08036BBC @ =gSineTable
adds r0, r0, r2
movs r3, #0
ldrsh r0, [r0, r3]
mov r1, sl
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl FixedDiv
ldr r2, [r5]
ldr r1, [r6]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x40
lsls r0, r0, #1
ldr r1, _08036BBC @ =gSineTable
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
mov r1, sl
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl FixedDiv
ldr r2, [r5]
ldr r1, [r6]
b _08036C6E
.align 2, 0
_08036BBC: .4byte gSineTable
_08036BC0:
subs r2, r4, #1
lsls r0, r2, #2
ldr r3, [sp, #8]
adds r0, r3, r0
ldr r0, [r0]
adds r5, r0, #0
adds r5, #0x7b
lsls r1, r4, #2
adds r0, r3, r1
ldr r0, [r0]
adds r0, #0x7b
ldrb r4, [r5]
ldrb r3, [r0]
adds r7, r1, #0
ldr r6, [sp, #4]
adds r6, #0xc
mov sb, r2
cmp r4, r3
beq _08036C0E
subs r0, r3, r4
lsls r0, r0, #0x18
asrs r1, r0, #0x18
cmp r1, #0
ble _08036BFE
mov r2, r8
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
cmp r1, r0
ble _08036C0E
subs r0, r3, r2
b _08036C0C
_08036BFE:
mov r2, r8
rsbs r0, r2, #0
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r1, r0
bge _08036C0E
adds r0, r3, r2
_08036C0C:
strb r0, [r5]
_08036C0E:
mov r3, sb
lsls r4, r3, #2
adds r4, r6, r4
ldr r0, [r4]
adds r0, #0x7b
ldrb r0, [r0]
lsls r0, r0, #1
ldr r1, _08036C8C @ =gSineTable
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
mov r1, sl
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl FixedDiv
ldr r2, [r4]
adds r5, r6, r7
ldr r1, [r5]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r4]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x40
lsls r0, r0, #1
ldr r3, _08036C8C @ =gSineTable
adds r0, r0, r3
movs r1, #0
ldrsh r0, [r0, r1]
mov r1, sl
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl FixedDiv
ldr r2, [r4]
ldr r1, [r5]
_08036C6E:
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x30]
subs r1, r1, r0
str r1, [r2, #0x30]
_08036C78:
mov r4, sb
cmp r4, #0
beq _08036C80
b _08036B1C
_08036C80:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08036C8C: .4byte gSineTable
.syntax divided
@@ -1,353 +1,4 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object87
Object87: @ 0x08099EFC
push {lr}
ldr r2, _08099F10 @ =gUnk_08123840
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08099F10: .4byte gUnk_08123840
thumb_func_start sub_08099F14
sub_08099F14: @ 0x08099F14
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r0, #1
strb r0, [r5, #0xc]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r5, #0x24]
ldrb r0, [r5, #0xa]
cmp r0, #9
bls _08099F2A
b _0809A1B6
_08099F2A:
lsls r0, r0, #2
ldr r1, _08099F34 @ =_08099F38
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08099F34: .4byte _08099F38
_08099F38: @ jump table
.4byte _08099F60 @ case 0
.4byte _08099F70 @ case 1
.4byte _08099F82 @ case 2
.4byte _0809A00C @ case 3
.4byte _0809A0AA @ case 4
.4byte _0809A0B0 @ case 5
.4byte _0809A058 @ case 6
.4byte _0809A11C @ case 7
.4byte _0809A132 @ case 8
.4byte _0809A1B0 @ case 9
_08099F60:
adds r2, r5, #0
adds r2, #0x79
movs r0, #0
movs r1, #0x96
strb r1, [r2]
strb r0, [r5, #0xe]
movs r0, #0x1e
strb r0, [r5, #0xf]
_08099F70:
adds r0, r5, #0
movs r1, #0
bl InitializeAnimation
movs r0, #0x92
lsls r0, r0, #1
bl EnqueueSFX
b _0809A1B6
_08099F82:
ldr r0, [r5, #0x50]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x80
rsbs r0, r0, #0
strb r0, [r5, #0x15]
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08099FCE
bl Random
adds r1, r0, #0
movs r0, #3
ands r1, r0
cmp r1, #1
beq _08099FBC
cmp r1, #1
blo _08099FB6
cmp r1, #2
beq _08099FC2
cmp r1, #3
beq _08099FC8
b _08099FCE
_08099FB6:
ldrb r0, [r5, #0x15]
subs r0, #0x10
b _08099FCC
_08099FBC:
ldrb r0, [r5, #0x15]
adds r0, #0x10
b _08099FCC
_08099FC2:
ldrb r0, [r5, #0x15]
subs r0, #8
b _08099FCC
_08099FC8:
ldrb r0, [r5, #0x15]
adds r0, #8
_08099FCC:
strb r0, [r5, #0x15]
_08099FCE:
bl Random
movs r1, #0x3f
ands r0, r1
movs r1, #0xf0
subs r1, r1, r0
strh r1, [r5, #0x24]
lsls r1, r1, #0x10
asrs r1, r1, #0x11
lsls r1, r1, #8
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
ldrh r1, [r5, #0x24]
lsls r1, r1, #0x10
asrs r1, r1, #0x11
lsls r1, r1, #8
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
adds r0, r5, #0
movs r1, #5
bl InitializeAnimation
movs r0, #0xa6
lsls r0, r0, #1
bl SoundReq
b _0809A1B6
_0809A00C:
ldr r0, [r5, #0x50]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x80
rsbs r0, r0, #0
strb r0, [r5, #0x15]
movs r1, #0x90
lsls r1, r1, #7
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _0809A040
bl Random
movs r1, #0x3f
ands r0, r1
ldrb r1, [r5, #0x15]
adds r0, r0, r1
strb r0, [r5, #0x15]
b _0809A04E
_0809A040:
bl Random
movs r1, #0x3f
ands r0, r1
ldrb r1, [r5, #0x15]
subs r1, r1, r0
strb r1, [r5, #0x15]
_0809A04E:
adds r0, r5, #0
movs r1, #6
bl InitializeAnimation
b _0809A1B6
_0809A058:
bl Random
movs r1, #0x2f
ands r1, r0
movs r4, #0x30
subs r4, r4, r1
lsls r4, r4, #8
bl Random
movs r2, #0xff
ands r2, r0
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806F62C
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _0809A092
bl Random
movs r1, #0x3f
ands r0, r1
ldrb r1, [r5, #0x15]
adds r0, r0, r1
strb r0, [r5, #0x15]
b _0809A0A0
_0809A092:
bl Random
movs r1, #0x3f
ands r0, r1
ldrb r1, [r5, #0x15]
subs r1, r1, r0
strb r1, [r5, #0x15]
_0809A0A0:
adds r0, r5, #0
movs r1, #5
bl InitializeAnimation
b _0809A1B6
_0809A0AA:
movs r0, #0xc3
lsls r0, r0, #2
b _0809A1B4
_0809A0B0:
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
movs r0, #0x18
str r0, [r5, #0x78]
adds r7, r5, #0
adds r7, #0x76
movs r1, #0
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r7]
adds r4, r5, #0
adds r4, #0x74
strh r0, [r4]
adds r6, r5, #0
adds r6, #0x7a
strh r1, [r6]
ldr r0, [r5, #0x50]
adds r0, #0x7b
ldrb r1, [r0]
rsbs r1, r1, #0
lsls r1, r1, #0x18
ldr r3, _0809A118 @ =gUnk_0812388C
ldrb r2, [r5, #0xb]
lsls r0, r2, #1
adds r0, #1
lsls r0, r0, #1
adds r0, r0, r3
lsrs r1, r1, #0x18
ldrh r0, [r0]
adds r1, r1, r0
lsls r2, r2, #2
adds r2, r2, r3
ldrh r2, [r2]
adds r0, r5, #0
bl sub_0806F62C
ldrh r1, [r7]
ldrh r2, [r4]
ldrh r3, [r6]
adds r0, r5, #0
bl sub_0805EC9C
adds r0, r5, #0
movs r1, #7
bl InitializeAnimation
b _0809A1B6
.align 2, 0
_0809A118: .4byte gUnk_0812388C
_0809A11C:
movs r0, #0
strb r0, [r5, #0xe]
adds r0, r5, #0
movs r1, #8
bl InitializeAnimation
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl CopyPosition
b _0809A1B6
_0809A132:
ldr r0, [r5, #0x50]
adds r0, #0x7c
ldrb r0, [r0]
movs r1, #0
strb r0, [r5, #0xb]
movs r0, #4
strb r0, [r5, #0xe]
strb r1, [r5, #0xf]
ldr r3, _0809A1A0 @ =gRoomControls
ldrh r0, [r5, #0x2e]
ldrh r1, [r3, #6]
subs r0, r0, r1
movs r1, #0xf8
lsls r1, r1, #1
adds r2, r1, #0
ands r0, r2
movs r1, #0x82
adds r1, r1, r5
mov ip, r1
strh r0, [r1]
ldrh r1, [r5, #0x32]
ldrh r0, [r3, #8]
subs r1, r1, r0
ands r1, r2
adds r3, r5, #0
adds r3, #0x80
strh r1, [r3]
adds r4, r5, #0
adds r4, #0x84
mov r0, ip
ldrh r2, [r0]
subs r2, #0x10
asrs r2, r2, #4
lsrs r1, r1, #4
lsls r0, r1, #5
subs r0, r0, r1
adds r2, r2, r0
str r2, [r4]
mov r1, ip
ldrh r0, [r1]
ldrh r1, [r3]
ldrb r3, [r5, #0xb]
bl sub_0809A6F8
ldr r0, [r5, #0x50]
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0809A1A8
ldr r0, _0809A1A4 @ =0x000001A3
bl SoundReq
b _0809A1B6
.align 2, 0
_0809A1A0: .4byte gRoomControls
_0809A1A4: .4byte 0x000001A3
_0809A1A8:
movs r0, #0xe8
bl SoundReq
b _0809A1B6
_0809A1B0:
movs r0, #0xf0
lsls r0, r0, #1
_0809A1B4:
str r0, [r5, #0x78]
_0809A1B6:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0809A1B8
sub_0809A1B8: @ 0x0809A1B8
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
@@ -588,7 +239,7 @@ _0809A394:
cmp r1, r0
beq _0809A38E
movs r0, #8
bl sub_0805308C
bl ChangeLightLevel
b _0809A632
.align 2, 0
_0809A3B0: .4byte gRoomVars
@@ -925,158 +576,4 @@ _0809A632:
.align 2, 0
_0809A640: .4byte gRoomControls
_0809A644: .4byte gPlayerEntity
thumb_func_start sub_0809A648
sub_0809A648: @ 0x0809A648
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
bl GetNextFrame
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _0809A6EC
ldr r4, [r7, #0x50]
adds r0, r4, #0
adds r0, #0x74
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #9
bl __divsi3
movs r2, #0x24
ldrsh r1, [r7, r2]
adds r5, r1, #0
muls r5, r0, r5
adds r4, #0x7b
ldrb r1, [r4]
ldrb r0, [r7, #0x15]
subs r0, r0, r1
movs r1, #0x7b
adds r1, r1, r7
mov r8, r1
strb r0, [r1]
ldr r6, _0809A6E8 @ =gSineTable
ldrb r0, [r1]
lsls r0, r0, #1
adds r0, r0, r6
movs r2, #0
ldrsh r0, [r0, r2]
lsls r5, r5, #8
asrs r5, r5, #0x10
adds r1, r5, #0
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r4, #0x80
lsls r4, r4, #1
adds r1, r4, #0
bl FixedDiv
ldr r1, [r7, #0x50]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r7, #0x2c]
mov r1, r8
ldrb r0, [r1]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r6
movs r2, #0
ldrsh r0, [r0, r2]
adds r1, r5, #0
bl FixedMul
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r4, #0
bl FixedDiv
ldr r1, [r7, #0x50]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x30]
subs r1, r1, r0
str r1, [r7, #0x30]
b _0809A6F0
.align 2, 0
_0809A6E8: .4byte gSineTable
_0809A6EC:
bl DeleteThisEntity
_0809A6F0:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0809A6F8
sub_0809A6F8: @ 0x0809A6F8
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
adds r7, r3, #0
bl sub_0809A758
cmp r0, #0
beq _0809A754
ldr r0, _0809A738 @ =gUnk_081238A0
lsls r1, r6, #1
adds r1, r1, r0
ldrh r0, [r1]
cmp r0, #0
beq _0809A750
movs r0, #1
ands r0, r7
cmp r0, #0
beq _0809A73C
ldrh r0, [r1]
lsrs r1, r4, #4
movs r3, #0x3f
ands r1, r3
lsrs r2, r5, #4
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
movs r2, #1
bl sub_0807B9B8
b _0809A750
.align 2, 0
_0809A738: .4byte gUnk_081238A0
_0809A73C:
lsrs r0, r4, #4
movs r2, #0x3f
ands r0, r2
lsrs r1, r5, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
movs r1, #1
bl sub_0807BA8C
_0809A750:
movs r0, #1
b _0809A756
_0809A754:
movs r0, #0
_0809A756:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0809A758
sub_0809A758: @ 0x0809A758
push {lr}
adds r2, r0, #0
cmp r2, #0xf
bls _0809A770
movs r0, #0xf8
lsls r0, r0, #1
cmp r2, r0
bhi _0809A770
cmp r1, #0xf0
bhi _0809A770
movs r0, #1
b _0809A772
_0809A770:
movs r0, #0
_0809A772:
pop {pc}
.syntax divided
@@ -135,7 +135,7 @@ _080A7692:
bl sub_08079BD8
ldr r4, _080A76B4 @ =gUnk_0812906C
ldr r0, _080A76B8 @ =gUnk_08129068
bl sub_080028F4
bl GetRandomByWeight
lsls r0, r0, #1
adds r0, r0, r4
ldrh r0, [r0]
+1 -1
View File
@@ -92,7 +92,7 @@ _08087594:
lsls r1, r1, #1
_080875A2:
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
ldrb r0, [r4, #0x14]
cmp r0, #1
beq _080875B8
+2 -2
View File
@@ -81,7 +81,7 @@ sub_08087A10: @ 0x08087A10
beq _08087A26
adds r0, r4, #0
movs r1, #3
bl sub_0801D2B4
bl ChangeObjPalette
_08087A26:
ldrb r0, [r4, #0xa]
cmp r0, #2
@@ -92,7 +92,7 @@ _08087A26:
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
_08087A3C:
ldrb r0, [r4, #0xa]
cmp r0, #4
+2 -2
View File
@@ -119,7 +119,7 @@ _0808921C:
bl sub_08016A30
adds r0, r4, #0
movs r1, #0x15
bl sub_0801D2B4
bl ChangeObjPalette
b _08089246
_0808923A:
ldrb r1, [r4, #0xb]
@@ -225,7 +225,7 @@ _0808991A:
bl sub_08016A30
adds r0, r4, #0
movs r1, #0x15
bl sub_0801D2B4
bl ChangeObjPalette
b _08089940
_08089934:
ldrb r1, [r4, #0xb]
+2 -2
View File
@@ -222,7 +222,7 @@ _0808D24E:
adds r0, r0, r4
ldrh r1, [r0]
adds r0, r5, #0
bl sub_0801D2B4
bl ChangeObjPalette
ldrb r0, [r5, #0xf]
lsls r0, r0, #1
adds r0, r0, r4
@@ -668,7 +668,7 @@ sub_0808D59C: @ 0x0808D59C
adds r0, r0, r4
ldrh r1, [r0]
adds r0, r5, #0
bl sub_0801D2B4
bl ChangeObjPalette
ldrb r0, [r5, #0xf]
lsls r0, r0, #1
adds r0, r0, r4
+10 -10
View File
@@ -341,7 +341,7 @@ _08094CA0:
blt _08094CCC
adds r0, r5, #0
adds r1, r5, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_08094CCC:
ldrb r4, [r5, #0xa]
ldrb r0, [r5, #0xb]
@@ -1008,7 +1008,7 @@ sub_08095120: @ 0x08095120
bl SetDefaultPriority
adds r0, r4, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
@@ -1059,7 +1059,7 @@ sub_08095188: @ 0x08095188
bl SetDefaultPriority
adds r0, r4, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
@@ -1364,7 +1364,7 @@ _080953E0:
movs r1, #0
_0809540C:
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
_08095412:
pop {r4, pc}
.align 2, 0
@@ -1540,7 +1540,7 @@ _0809550A:
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
adds r0, r4, #0
bl sub_0807DD64
ldrb r1, [r4, #0xb]
@@ -1807,7 +1807,7 @@ sub_08095754: @ 0x08095754
bl CopyPosition
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_0809577A:
pop {r4, r5, pc}
@@ -1858,7 +1858,7 @@ sub_080957B4: @ 0x080957B4
bl CopyPosition
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_080957DA:
pop {r4, r5, pc}
@@ -2570,7 +2570,7 @@ sub_08095D30: @ 0x08095D30
rsbs r0, r0, #0
ands r1, r0
adds r0, r2, #0
bl sub_0801D2B4
bl ChangeObjPalette
_08095D4E:
pop {pc}
.align 2, 0
@@ -2854,7 +2854,7 @@ _08095F68:
movs r1, #4
_08095F6A:
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
ldr r0, _08095F90 @ =gPlayerEntity
adds r0, #0x5a
ldrb r1, [r0]
@@ -3056,7 +3056,7 @@ sub_080960C4: @ 0x080960C4
strb r0, [r4, #0x19]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
ldr r1, [r6, #4]
adds r0, r4, #0
bl StartCutscene
+6 -6
View File
@@ -291,7 +291,7 @@ _0809C5E0: @ jump table
_0809C600:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAD8
bl ResolveEntityBelow
ldr r0, [r5, #0x50]
ldrb r0, [r0, #0xd]
adds r6, r5, #0
@@ -382,7 +382,7 @@ _0809C6B4: .4byte gUnk_08123E1C
_0809C6B8:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAD8
bl ResolveEntityBelow
ldr r0, [r5, #0x50]
ldrb r0, [r0, #0xd]
adds r6, r5, #0
@@ -741,10 +741,10 @@ _0809C948:
bl LoadFixedGFX
adds r0, r5, #0
movs r1, #0xef
bl sub_0801D2B4
bl ChangeObjPalette
ldr r0, [r5, #0x50]
movs r1, #0xef
bl sub_0801D2B4
bl ChangeObjPalette
adds r0, r5, #0
movs r1, #0xef
bl sub_0809CC30
@@ -1112,7 +1112,7 @@ sub_0809CC30: @ 0x0809CC30
adds r4, #0x84
ldr r0, [r4]
ldr r0, [r0, #8]
bl sub_0801D2B4
bl ChangeObjPalette
movs r5, #0
_0809CC42:
ldr r0, [r4]
@@ -1121,7 +1121,7 @@ _0809CC42:
adds r0, r0, r1
ldr r0, [r0]
adds r1, r6, #0
bl sub_0801D2B4
bl ChangeObjPalette
adds r5, #1
cmp r5, #3
bls _0809CC42
+1 -1
View File
@@ -223,7 +223,7 @@ sub_0809D91C: @ 0x0809D91C
cmp r1, #0
beq _0809D934
adds r0, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_0809D934:
movs r0, #0x72
bl SoundReq
+1 -1
View File
@@ -70,7 +70,7 @@ _080A0A5E:
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
_080A0AB0:
adds r0, r4, #0
bl GetNextFrame
+2 -2
View File
@@ -95,7 +95,7 @@ _080A0C08:
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_080A0C40:
ldrb r0, [r5, #0xf]
adds r0, #1
@@ -136,7 +136,7 @@ _080A0C6E:
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_080A0C92:
ldrb r0, [r5, #0xf]
adds r0, #1
+3 -3
View File
@@ -67,7 +67,7 @@ _080985AC:
_080985AE:
ldr r1, [r4, #0x50]
adds r0, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
adds r0, r4, #0
bl sub_08098918
pop {r4, r5, pc}
@@ -569,7 +569,7 @@ _0809892E:
strb r0, [r2]
ldr r1, [r4, #0x50]
adds r0, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_08098968:
ldr r2, _0809898C @ =gUnk_08123558
adds r0, r6, #0
@@ -606,7 +606,7 @@ _08098990:
strb r0, [r2]
ldr r1, [r4, #0x50]
adds r0, r4, #0
bl sub_0806FAD8
bl ResolveEntityBelow
_080989B2:
strh r5, [r4, #0x36]
adds r1, r4, #0
-4789
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -37,7 +37,7 @@ sub_0808AA1C: @ 0x0808AA1C
bne _0808AA36
adds r0, r5, #0
movs r1, #0
bl sub_0801D2B4
bl ChangeObjPalette
_0808AA36:
ldrb r0, [r5, #0xa]
cmp r0, #1
+1 -1
View File
@@ -84,7 +84,7 @@ sub_08092CDC: @ 0x08092CDC
bne _08092D50
ldr r1, _08092D4C @ =0x00000161
adds r0, r4, #0
bl sub_0801D2B4
bl ChangeObjPalette
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
-111
View File
@@ -1,111 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_080CF040:: @ 080CF040
.4byte sub_080356F8
.4byte sub_080356F8
.4byte sub_08001324
.4byte sub_080351D8
.4byte sub_08001242
gUnk_080CF054:: @ 080CF054
.4byte sub_08035288
.4byte sub_080352FC
.4byte sub_080354F8
.4byte sub_0803552C
.4byte sub_08035578
.4byte sub_08035598
.4byte sub_080355B4
gUnk_080CF070:: @ 080CF070
.incbin "octorokBoss/gUnk_080CF070.bin"
gUnk_080CF078:: @ 080CF078
.4byte sub_0803571C
.4byte sub_08035B94
.4byte sub_0803520C
.4byte sub_080359B4
.4byte sub_0803670C
gUnk_080CF08C:: @ 080CF08C
.incbin "octorokBoss/gUnk_080CF08C.bin"
gUnk_080CF0AC:: @ 080CF0AC
.4byte sub_080359F8
.4byte sub_08035A24
.4byte sub_08035A70
.4byte sub_08035AB4
.4byte sub_08035AEC
.4byte sub_08035B34
gUnk_080CF0C4:: @ 080CF0C4
.4byte sub_08035F7C
.4byte sub_08036078
.4byte sub_080360E8
.4byte sub_080360C8
.4byte sub_08036188
gUnk_080CF0D8:: @ 080CF0D8
.incbin "octorokBoss/gUnk_080CF0D8.bin"
gUnk_080CF0DC:: @ 080CF0DC
.incbin "octorokBoss/gUnk_080CF0DC.bin"
gUnk_080CF0E0:: @ 080CF0E0
.4byte sub_080361F4
.4byte sub_0803623C
.4byte sub_080362A8
.4byte sub_08036304
gUnk_080CF0F0:: @ 080CF0F0
.4byte sub_08036390
.4byte sub_080363CC
.4byte sub_08036658
.4byte sub_080366B4
gUnk_080CF100:: @ 080CF100
.4byte sub_08036764
.4byte sub_080367B0
.4byte sub_08036870
gUnk_080CF10C:: @ 080CF10C
.incbin "octorokBoss/gUnk_080CF10C.bin"
gUnk_080CF110:: @ 080CF110
.incbin "octorokBoss/gUnk_080CF110.bin"
gUnk_080CF114:: @ 080CF114
.incbin "octorokBoss/gUnk_080CF114.bin"
gUnk_080CF119:: @ 080CF119
.incbin "octorokBoss/gUnk_080CF119.bin"
gUnk_080CF11E:: @ 080CF11E
.incbin "octorokBoss/gUnk_080CF11E.bin"
gUnk_080CF124:: @ 080CF124
.4byte gUnk_080CF114
.4byte gUnk_080CF119
.4byte gUnk_080CF11E
.4byte gUnk_080CF119
gUnk_080CF134:: @ 080CF134
.incbin "octorokBoss/gUnk_080CF134.bin"
gUnk_080CF138:: @ 080CF138
.incbin "octorokBoss/gUnk_080CF138.bin"
gUnk_080CF13C:: @ 080CF13C
.incbin "octorokBoss/gUnk_080CF13C.bin"
gUnk_080CF13F:: @ 080CF13F
.incbin "octorokBoss/gUnk_080CF13F.bin"
gUnk_080CF142:: @ 080CF142
.incbin "octorokBoss/gUnk_080CF142.bin"
gUnk_080CF147:: @ 080CF147
.incbin "octorokBoss/gUnk_080CF147.bin"
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123840:: @ 08123840
.4byte sub_08099F14
.4byte sub_0809A1B8
.4byte sub_0809A648
gUnk_0812384C:: @ 0812384C
.incbin "object87/gUnk_0812384C.bin"
gUnk_0812388C:: @ 0812388C
.incbin "object87/gUnk_0812388C.bin"
gUnk_081238A0:: @ 081238A0
.incbin "object87/gUnk_081238A0.bin"
+1 -1
View File
@@ -13,7 +13,7 @@ void PositionRelative(Entity*, Entity*, s32, s32);
void CopyPositionAndSpriteOffset(Entity* param_1, Entity* param_2);
void sub_0806FA90(Entity*, Entity*, s32, s32);
void ResolveEntityOnTop(Entity*, Entity*);
void sub_0806FAD8(Entity*, Entity*);
void ResolveEntityBelow(Entity*, Entity*);
extern const s16 gSineTable[64];
extern const s16 gCosineTable[256];
+5 -3
View File
@@ -56,8 +56,11 @@ extern s32 GetItemPrice();
extern void DoExitTransition(ScreenTransitionData*);
extern void CreateDustAt(s32, s32, u32);
extern void PutItemOnSlot(u32 itemID);
extern void CreateSpeechBubbleSleep(Entity*, u32, u32);
extern Entity* CreateSpeechBubbleQuestionMark(Entity*, s32, s32);
extern Entity* CreateSpeechBubbleExclamationMark(Entity*, s32, s32);
extern Entity* CreateSpeechBubbleSleep(Entity*, s32, s32);
extern u32 CheckPlayerProximity(u32, u32, u32, u32);
extern void ChangeLightLevel(s32);
// Unidentified
extern u32 sub_0806ED78(Entity*);
@@ -80,7 +83,7 @@ extern s32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
extern void sub_08068BEC(Entity*, u32);
extern s32 sub_0806F078(Entity*, s32);
extern void sub_0801D2B4(Entity*, u32);
extern void ChangeObjPalette(Entity*, u32);
extern void sub_0806FD3C(Entity*);
extern void sub_0805ED14(u32*);
extern void sub_080A7C18(u32, u32, u32);
@@ -130,7 +133,6 @@ extern void sub_0807AABC(Entity*);
extern void UpdateGlobalProgress(void);
extern void sub_0805B4D0(u32);
extern void sub_0804D0B4(void);
extern void sub_0805308C(s32);
extern void sub_080534AC();
extern void sub_0807BA8C(u32, u32);
extern void sub_0804D9B0();
+2 -2
View File
@@ -140,7 +140,7 @@ typedef enum {
SMALL_ICE_BLOCK,
BIG_ICE_BLOCK,
OBJECT_86,
OBJECT_87,
OCTOROK_BOSS_OBJECT,
HUGE_BOOK,
OBJECT_89,
OBJECT_8A,
@@ -336,7 +336,7 @@ extern void BigPushableLever(Entity*);
extern void SmallIceBlock(Entity*);
extern void BigIceBlock(Entity*);
extern void Object86(Entity*);
extern void Object87(Entity*);
extern void OctorokBossObject(Entity*);
extern void MacroBook(Entity*);
extern void Object89(Entity*);
extern void Object8A(Entity*);
+44
View File
@@ -0,0 +1,44 @@
#ifndef PROJECTILE_H
#define PROJECTILE_H
typedef enum {
/*00*/ DARK_NUT_SWORD_SLASH,
/*01*/ ROCK_PROJECTILE,
/*02*/ BONE_PROJECTILE,
/*03*/ MOBLIN_SPEAR,
/*04*/ DEKU_SEED_PROJECTILE,
/*05*/ PROJECTILE_5,
/*06*/ DIRT_BALL_PROJECTILE,
/*07*/ WIND_PROJECTILE,
/*08*/ FIRE_PROJECTILE,
/*09*/ ICE_PROJECTILE,
/*0A*/ GLEEROK_PROJECTILE,
/*0B*/ KEATON_DAGGER,
/*0C*/ GUARD_LINE_OF_SIGHT,
/*0D*/ ARROW_PROJECTILE,
/*0E*/ MAZAAL_ENERGY_BEAM,
/*0F*/ OCTOROK_BOSS_PROJECTILE,
/*10*/ STALFOS_PROJECTILE,
/*11*/ LAKITU_CLOUD_PROJECTILE,
/*12*/ LAKITU_LIGHTNING,
/*13*/ MANDIBLES_PROJECTILE,
/*14*/ REMOVABLE_DUST,
/*15*/ SPIDER_WEB,
/*16*/ TORCH_TRAP_PROJECTILE,
/*17*/ GURUGURU_BAR_PROJECTILE,
/*18*/ V1_DARK_MAGIC_PROJECTILE,
/*19*/ BALL_AND_CHAIN,
/*1A*/ V1_FIRE_PROJECTILE,
/*1B*/ CANNONBALL_PROJECTILE,
/*1C*/ V1_EYE_LASER,
/*1D*/ WINDER,
/*1E*/ SPIKED_ROLLERS,
/*1F*/ V2_PROJECTILE,
/*20*/ V3_HAND_PROJECTILE,
/*21*/ V3_ELECTRIC_PROJECTILE,
/*22*/ GYORG_TAIL,
/*23*/ GYORG_MALE_ENERGY_PROJECTILE,
/*24*/ V3_TENNIS_BALL_PROJECTILE,
} Projectile;
#endif
+1 -1
View File
@@ -66,7 +66,7 @@ typedef struct {
u8 field_0x9;
u8 unk2;
u8 filler2;
s16 field_0xc;
s16 lightLevel;
u8 filler3[2];
u8 unk_10[4];
u32 roomFlags;
+4 -4
View File
@@ -424,7 +424,7 @@ SECTIONS {
src/enemy/mazaalHead.o(.text);
src/enemy/mazaalMacro.o(.text);
src/enemy/mazaalHand.o(.text);
asm/octorokBoss.o(.text);
src/enemy/octorokBoss.o(.text);
asm/flyingPot.o(.text);
src/enemy/gibdo.o(.text);
asm/octorokGolden.o(.text);
@@ -840,7 +840,7 @@ SECTIONS {
asm/smallIceBlock.o(.text);
asm/bigIceBlock.o(.text);
src/object/object86.o(.text);
asm/object87.o(.text);
src/object/octorokBossObject.o(.text);
asm/macroBook.o(.text);
asm/object89.o(.text);
asm/object8A.o(.text);
@@ -1103,7 +1103,7 @@ SECTIONS {
data/animations/enemy/mazaalMacro.o(.rodata);
src/enemy/mazaalHand.o(.rodata);
data/animations/enemy/mazaalHand.o(.rodata);
data/const/enemy/octorokBoss.o(.rodata);
src/enemy/octorokBoss.o(.rodata);
data/animations/enemy/octorokBoss.o(.rodata);
data/const/enemy/flyingPot.o(.rodata);
data/const/enemy/gibdo.o(.rodata);
@@ -1587,7 +1587,7 @@ SECTIONS {
data/animations/object/bigIceBlock.o(.rodata);
data/const/object/object86.o(.rodata);
data/animations/object/object86.o(.rodata);
data/const/object/object87.o(.rodata);
src/object/octorokBossObject.o(.rodata);
data/const/object/macroBook.o(.rodata);
data/animations/object/macroBook.o(.rodata);
data/const/object/object89.o(.rodata);
+1 -1
View File
@@ -60,7 +60,7 @@ void ResolveEntityOnTop(Entity* param_1, Entity* param_2) {
param_2->spritePriority.b0 = gUnk_08114F78[param_1->spritePriority.b0];
}
void sub_0806FAD8(Entity* param_1, Entity* param_2) {
void ResolveEntityBelow(Entity* param_1, Entity* param_2) {
param_2->spritePriority.b0 = gUnk_08114F80[param_1->spritePriority.b0];
}
+7 -7
View File
@@ -57,7 +57,7 @@ void sub_080298A4(Entity* this) {
this->actionDelay = 0;
this->hitType = 0x6b;
this->field_0x76.HALF.HI = 0;
sub_0801D2B4(this, 0x7f);
ChangeObjPalette(this, 0x7f);
EnqueueSFX(0xfe);
this->child->action = 2;
break;
@@ -155,7 +155,7 @@ void sub_08029AE0(Entity* this) {
this->speed = 0xa0;
this->field_0x74.HALF.HI = 0;
sub_08029EEC(this);
sub_0801D2B4(this, 0x77);
ChangeObjPalette(this, 0x77);
EnqueueSFX(0x182);
}
}
@@ -217,7 +217,7 @@ void sub_08029C08(Entity* this) {
void sub_08029C2C(Entity* this) {
if (--this->actionDelay == 0) {
this->action = 4;
sub_0801D2B4(this, 0x7f);
ChangeObjPalette(this, 0x7f);
EnqueueSFX(0x6c);
}
}
@@ -234,7 +234,7 @@ void sub_08029C6C(Entity* this) {
sub_08029BC4(this);
if (this->parent->action != 3) {
this->action = 1;
sub_0801D2B4(this, 0x77);
ChangeObjPalette(this, 0x77);
} else {
sub_0802A16C(this);
}
@@ -271,7 +271,7 @@ void sub_08029D14(Entity* this) {
if (this->actionDelay) {
if (--this->actionDelay == 0) {
InitializeAnimation(this, this->animationState + 0xc);
sub_0801D2B4(this, 0x7f);
ChangeObjPalette(this, 0x7f);
EnqueueSFX(0x6c);
}
} else {
@@ -313,7 +313,7 @@ void sub_08029DE4(Entity* this) {
sub_08029CF0(this);
if (this->parent->action != 3) {
this->action = 1;
sub_0801D2B4(this, 0x77);
ChangeObjPalette(this, 0x77);
} else {
sub_0802A16C(this);
}
@@ -486,7 +486,7 @@ bool32 sub_0802A14C(Entity* this) {
}
void sub_0802A16C(Entity* this) {
sub_0801D2B4(this, gUnk_080CCDD4[this->parent->field_0x7a.HWORD >> 2 & 3]);
ChangeObjPalette(this, gUnk_080CCDD4[this->parent->field_0x7a.HWORD >> 2 & 3]);
}
void sub_0802A18C(Entity* this) {
+1 -1
View File
@@ -1390,7 +1390,7 @@ void sub_0803BA8C(Entity* this, u32 unk) {
}
}
if (sVar2 != 0) {
sub_0801D2B4(this, sVar2);
ChangeObjPalette(this, sVar2);
(*(Entity**)&this->parent->field_0x78)->palette.b.b0 = this->palette.raw << 0x1c >> 0x1c;
(*(Entity**)&this->parent->field_0x78)->palette.b.b4 = this->palette.b.b0;
this->parent->child->palette.b.b0 = this->palette.raw << 0x1c >> 0x1c;
+2 -2
View File
@@ -483,13 +483,13 @@ bool32 sub_08023A38(u32 unk) {
}
void sub_08023A68(Entity* this) {
sub_0801D2B4(this, 5);
ChangeObjPalette(this, 5);
this->spritePriority.b0 = 7;
InitializeAnimation(this, 0x17);
}
void sub_08023A88(Entity* this, u32 unk) {
sub_0801D2B4(this, 0x22);
ChangeObjPalette(this, 0x22);
this->spritePriority.b0 = 4;
InitializeAnimation(this, unk);
}
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -68,7 +68,7 @@ void sub_08025020(Entity* this) {
this->cutsceneBeh.HWORD = 0x294;
this->hitType = 0x83;
this->field_0x82.HALF.LO = 0;
sub_0801D2B4(this, 0x7c);
ChangeObjPalette(this, 0x7c);
}
this->action = 7;
this->actionDelay = 0x3c;
@@ -133,7 +133,7 @@ void sub_080251AC(Entity* this) {
this->cutsceneBeh.HWORD = 0x294;
this->hitType = 0x83;
this->field_0x82.HALF.LO = 0;
sub_0801D2B4(this, 0x7c);
ChangeObjPalette(this, 0x7c);
}
GetNextFrame(this);
}
@@ -360,7 +360,7 @@ void sub_0802563C(Entity* this) {
GetNextFrame(this);
if (--this->cutsceneBeh.HWORD == 0) {
sub_0801D2B4(this, 0x28);
ChangeObjPalette(this, 0x28);
this->hitType = 0x82;
this->field_0x82.HALF.LO = 240;
sub_080256B4(this);
@@ -369,9 +369,9 @@ void sub_0802563C(Entity* this) {
u32 tmp3 = gUnk_080CBFF8[this->cutsceneBeh.HWORD >> 4];
if ((this->cutsceneBeh.HWORD & tmp3) == 0) {
if (this->cutsceneBeh.HWORD & (tmp3 + 1)) {
sub_0801D2B4(this, 124);
ChangeObjPalette(this, 124);
} else {
sub_0801D2B4(this, 40);
ChangeObjPalette(this, 40);
}
}
}
+2 -2
View File
@@ -6,7 +6,7 @@
static bool32 ShouldSpawnTreeItem(Entity*);
extern u32 sub_080028F4(const u8*);
extern u32 GetRandomByWeight(const u8*);
extern void sub_08049CF4(Entity*);
const u8 gTreeItemDropTables[][16] = {
@@ -33,7 +33,7 @@ void TreeItem(Entity* this) {
if (this->action == 0) {
this->action++;
this->field_0x68.HALF.LO = sub_080028F4(gTreeItemDropTables[this->type]);
this->field_0x68.HALF.LO = GetRandomByWeight(gTreeItemDropTables[this->type]);
if (this->field_0x68.HALF.LO > FAIRY_INDEX) {
DeleteThisEntity();
}
+13 -13
View File
@@ -228,12 +228,12 @@ void sub_08045A28(Entity* this) {
switch (frames) {
case 0x20:
this->field_0x82.HALF.HI = 1;
sub_0801D2B4(this, 0x13e);
ChangeObjPalette(this, 0x13e);
break;
case 0x00:
case 0x40:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
default:
break;
@@ -243,11 +243,11 @@ void sub_08045A28(Entity* this) {
switch (frames) {
case 0x10:
this->field_0x82.HALF.HI = type;
sub_0801D2B4(this, 0x13b);
ChangeObjPalette(this, 0x13b);
break;
case 0:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
default:
break;
@@ -257,15 +257,15 @@ void sub_08045A28(Entity* this) {
switch (frames) {
case 0x20:
this->field_0x82.HALF.HI = 1;
sub_0801D2B4(this, 0x13e);
ChangeObjPalette(this, 0x13e);
break;
case 0x10:
this->field_0x82.HALF.HI = 0;
sub_0801D2B4(this, 0x13b);
ChangeObjPalette(this, 0x13b);
break;
case 0x40:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
default:
break;
@@ -275,7 +275,7 @@ void sub_08045A28(Entity* this) {
switch (frames) {
case 0:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
default:
break;
@@ -291,11 +291,11 @@ void sub_08045A28(Entity* this) {
switch (this->frame & 0x70) {
case 0x10:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13b);
ChangeObjPalette(this, 0x13b);
break;
case 0x20:
this->field_0x82.HALF.HI = 1;
sub_0801D2B4(this, 0x13e);
ChangeObjPalette(this, 0x13e);
break;
default:
break;
@@ -306,11 +306,11 @@ void sub_08045A28(Entity* this) {
switch (temp) {
case 0:
this->field_0x82.HALF.HI = temp;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
case 0x10:
this->field_0x82.HALF.HI = 2;
sub_0801D2B4(this, 0x13b);
ChangeObjPalette(this, 0x13b);
break;
default:
break;
@@ -320,7 +320,7 @@ void sub_08045A28(Entity* this) {
switch (this->frame & 0x70) {
case 0:
this->field_0x82.HALF.HI = this->frame & 0x70;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
break;
default:
break;
+7 -7
View File
@@ -457,7 +457,7 @@ void VaatiWrathType0ActionA(Entity* this) {
this->direction = 0;
this->speed = 0x100;
this->zVelocity = 0x12000;
sub_0801D2B4(this, 0x16b);
ChangeObjPalette(this, 0x16b);
InitAnimationForceUpdate(this, 5);
type1 = ((VaatiWrathHeapStruct*)this->myHeap)->type1;
type1->subAction = 1;
@@ -501,7 +501,7 @@ void VaatiWrathType0ActionB(Entity* this) {
if (this->actionDelay == 0) {
this->action = 0xc;
this->subAction = 0;
sub_0801D2B4(this, 0x140);
ChangeObjPalette(this, 0x140);
InitAnimationForceUpdate(this, 8);
InitializeAnimation(((VaatiWrathHeapStruct*)this->myHeap)->type1, 0x10);
InitializeAnimation(((VaatiWrathHeapStruct*)this->myHeap)->type2, 0x18);
@@ -579,7 +579,7 @@ void sub_08041BE8(Entity* this) {
entity->updatePriority = 3;
sub_080AE068(entity);
LoadFixedGFX(entity, 0x1f5);
sub_0801D2B4(entity, 0x16b);
ChangeObjPalette(entity, 0x16b);
InitializeAnimation(entity, 0x1a);
entity = ((VaatiWrathHeapStruct*)this->myHeap)->type3;
@@ -664,9 +664,9 @@ void sub_08041D84(Entity* this) {
} else {
if (this->field_0xf < 0xf0) {
if ((0xb7 < this->field_0xf) && ((this->field_0xf & 7) == 0)) {
sub_0801D2B4(((VaatiWrathHeapStruct*)this->myHeap)->type2,
gUnk_080D0E80[(this->field_0xf - 0xb8) >> 3]);
sub_0801D2B4(this->child, gUnk_080D0E80[(this->field_0xf - 0xb8) >> 3]);
ChangeObjPalette(((VaatiWrathHeapStruct*)this->myHeap)->type2,
gUnk_080D0E80[(this->field_0xf - 0xb8) >> 3]);
ChangeObjPalette(this->child, gUnk_080D0E80[(this->field_0xf - 0xb8) >> 3]);
}
if (this->field_0xf == 0xe6) {
DoFade(7, 4);
@@ -674,7 +674,7 @@ void sub_08041D84(Entity* this) {
} else {
this->subAction = 4;
this->spriteSettings.draw = 1;
sub_0801D2B4(this, 0x173);
ChangeObjPalette(this, 0x173);
InitAnimationForceUpdate(this, 0xb);
}
this->field_0xf++;
+4 -4
View File
@@ -80,7 +80,7 @@ void sub_0805BD5C(Manager23* this) {
} else {
if (GetTileType(this->field_0x20, this->manager.unk_0b) == 0x76) {
SetFlag(this->field_0x3e);
sub_0805308C(this->manager.unk_0e);
ChangeLightLevel(this->manager.unk_0e);
DeleteThisEntity();
}
}
@@ -106,7 +106,7 @@ void sub_0805BDB4(Manager23* this) {
return;
}
SetFlag(this->field_0x3e);
sub_0805308C(this->manager.unk_0e);
ChangeLightLevel(this->manager.unk_0e);
this->manager.action = 2;
this->field_0x22 = this->field_0x36 * 0x3c;
return;
@@ -117,7 +117,7 @@ void sub_0805BDB4(Manager23* this) {
CreateDustAt(*(s16*)&this->field_0x38, *(s16*)&this->field_0x3a, this->manager.unk_0b);
ClearFlag(this->field_0x3e);
sub_0807BA8C(this->field_0x20, this->manager.unk_0b);
sub_0805308C(-this->manager.unk_0e);
ChangeLightLevel(-this->manager.unk_0e);
this->manager.action = 1;
} else {
if (CheckFlags(this->field_0x3c) == 0) {
@@ -139,7 +139,7 @@ void sub_0805BE70(Manager23* this, u32 param_2) {
void sub_0805BE94(Manager23* this) {
SetTileType(0x76, ((this->field_0x38 << 0x10) >> 0x14 & 0x3fU) | ((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6,
this->manager.unk_0b);
sub_0805308C(this->manager.unk_0e);
ChangeLightLevel(this->manager.unk_0e);
DeleteThisEntity();
}
-2
View File
@@ -19,8 +19,6 @@ extern void (*const gUnk_08108DD8[])(Manager*);
void sub_0805E094(void);
extern Entity* CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
void Manager37_Main(Manager* this) {
gUnk_08108DBC[this->unk_0a](this);
}
+7 -7
View File
@@ -253,18 +253,18 @@ void sub_080591CC(ManagerF* this) {
this->manager.action = 1;
this->manager.unk_0b = CheckFlags(this->unk_3e);
if (this->manager.unk_0b) {
gRoomVars.field_0xc = this->unk_3a;
gRoomVars.lightLevel = this->unk_3a;
} else {
gRoomVars.field_0xc = this->unk_38;
gRoomVars.lightLevel = this->unk_38;
}
} else {
u32 tmp = CheckFlags(this->unk_3e);
if (this->manager.unk_0b != tmp) {
this->manager.unk_0b = tmp;
if (tmp) {
gRoomVars.field_0xc = this->unk_3a;
gRoomVars.lightLevel = this->unk_3a;
} else {
gRoomVars.field_0xc = this->unk_38;
gRoomVars.lightLevel = this->unk_38;
}
}
}
@@ -272,16 +272,16 @@ void sub_080591CC(ManagerF* this) {
void sub_08059220(ManagerF* this) {
const ManagerF_HelperStruct* data;
gRoomVars.field_0xc = 0;
gRoomVars.lightLevel = 0;
for (data = gUnk_08108354; data->x != 0xFFFF; data++) {
if (CheckPlayerInRegion(data->x, data->y, data->width, data->height)) {
gRoomVars.field_0xc = data->unk_08;
gRoomVars.lightLevel = data->unk_08;
}
}
if (!this->manager.action) {
this->manager.action = 1;
gArea.unk_0a = gRoomVars.field_0xc;
gArea.unk_0a = gRoomVars.lightLevel;
}
}
+1 -1
View File
@@ -101,7 +101,7 @@ void sub_08068AA4(Entity* this) {
if (this->type2 == 0) {
this->type2 += 1;
}
sub_0801D2B4(this, gUnk_081115DC[this->type2]);
ChangeObjPalette(this, gUnk_081115DC[this->type2]);
}
}
+1 -1
View File
@@ -126,7 +126,7 @@ void CastorWildsStatue_Fusion(Entity* this) {
this->spriteSettings.draw = 1;
this->y.HALF.HI -= 0x18;
InitializeAnimation(this, 1);
sub_0801D2B4(this, 0x17b);
ChangeObjPalette(this, 0x17b);
} else {
GetNextFrame(this);
}
+1 -1
View File
@@ -28,7 +28,7 @@ void DrLeft(Entity* this) {
if (this->action == 0) {
this->action += 1;
this->frameIndex = 0;
sub_0806FAD8(this, this);
ResolveEntityBelow(this, this);
}
}
}
+9 -9
View File
@@ -3,7 +3,7 @@
#include "functions.h"
#include "npc.h"
void sub_0801D2B4(Entity*, u32);
void ChangeObjPalette(Entity*, u32);
extern void (*gUnk_08113D8C[])(Entity*);
@@ -24,7 +24,7 @@ void sub_0806CAF4(Entity* this) {
if (npc != NULL) {
npc->parent = this;
CopyPosition(this, npc);
sub_0806FAD8(this, npc);
ResolveEntityBelow(this, npc);
}
npc = CreateNPC(0x4a, 2, 0);
if (npc != NULL) {
@@ -118,31 +118,31 @@ void sub_0806CCD0(Entity* this, ScriptExecutionContext* context) {
}
void sub_0806CCF8(Entity* this) {
sub_0801D2B4(this, 0x10a);
ChangeObjPalette(this, 0x10a);
}
void sub_0806CD04(Entity* this) {
sub_0801D2B4(this, 0x10b);
ChangeObjPalette(this, 0x10b);
}
void sub_0806CD14(Entity* this) {
sub_0801D2B4(this, 0x10c);
ChangeObjPalette(this, 0x10c);
}
void sub_0806CD20(Entity* this) {
sub_0801D2B4(this, 0x10d);
ChangeObjPalette(this, 0x10d);
}
void sub_0806CD30(Entity* this) {
sub_0801D2B4(this, 0x10e);
ChangeObjPalette(this, 0x10e);
}
void sub_0806CD3C(Entity* this) {
sub_0801D2B4(this, 0x10f);
ChangeObjPalette(this, 0x10f);
}
void sub_0806CD4C(Entity* this) {
sub_0801D2B4(this, 0x110);
ChangeObjPalette(this, 0x110);
}
void sub_0806CD58(Entity* this) {
-2
View File
@@ -10,8 +10,6 @@ void sub_08063A80(Entity* this);
extern void (*gUnk_0810CDF8[])(Entity*);
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
extern Dialog gUnk_0810CE04[];
void Pina(Entity* this) {
+2 -2
View File
@@ -10,7 +10,7 @@ extern Hitbox gUnk_0810C428;
extern u8 gUnk_0810C430[4];
extern u8 gUnk_0810C435[];
extern u8 gUnk_0810C43D[];
extern u32 sub_080028F4(const u8*);
extern u32 GetRandomByWeight(const u8*);
void Pita(Entity* this) {
if (this->action == 0) {
@@ -58,7 +58,7 @@ bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) {
context->condition = FALSE;
return FALSE;
} else {
tmp = sub_080028F4(gUnk_0810C435);
tmp = GetRandomByWeight(gUnk_0810C435);
tmp2 = gUnk_0810C43D[tmp];
sub_080A7C18(0x5c, tmp2, 1);
MessageNoOverlap(0x3c05, this);
+1 -1
View File
@@ -285,7 +285,7 @@ void sub_0806A9E8(Entity* this) {
Entity* npc = CreateNPC(0x37, 4, 0);
if (npc != NULL) {
CopyPosition(this, npc);
sub_0806FAD8(this, npc);
ResolveEntityBelow(this, npc);
}
}
-3
View File
@@ -4,9 +4,6 @@
#include "textbox.h"
#include "functions.h"
extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32);
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
extern void (*const gUnk_0810FDC8[])(Entity*);
extern void (*const gUnk_0810FDA4[])(Entity*);
+1 -1
View File
@@ -136,7 +136,7 @@ void VaatiRebornAction1(Entity* this) {
case 1:
if (this->frame & 0x80) {
this->subAction = 2;
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
InitAnimationForceUpdate(this, this->subAction - 1);
}
break;
+1 -1
View File
@@ -139,7 +139,7 @@ void (*const gObjectFunctions[])(Entity*) = {
[SMALL_ICE_BLOCK] = SmallIceBlock,
[BIG_ICE_BLOCK] = BigIceBlock,
[OBJECT_86] = Object86,
[OBJECT_87] = Object87,
[OCTOROK_BOSS_OBJECT] = OctorokBossObject,
[HUGE_BOOK] = MacroBook,
[OBJECT_89] = Object89,
[OBJECT_8A] = Object8A,
+1 -1
View File
@@ -102,7 +102,7 @@ void sub_0809D0AC(Entity* this) {
SoundReq(SFX_SECRET);
fx = CreateFx(this, FX_DASH, 0);
if (fx != NULL) {
sub_0806FAD8(this, fx);
ResolveEntityBelow(this, fx);
}
}
}
+2 -2
View File
@@ -262,7 +262,7 @@ void sub_0808EB74(Entity* this) {
this->x.WORD = entity->x.WORD;
this->y.WORD = entity->y.WORD;
this->spriteRendering.b3 = entity->spriteRendering.b3;
sub_0806FAD8(entity, this);
ResolveEntityBelow(entity, this);
} else {
this->x.HALF.HI = 0xF000;
this->y.HALF.HI = 0xF000;
@@ -312,7 +312,7 @@ void sub_0808EBB8(Entity* this) {
default:
entity = sub_0808EC80(var0);
if (entity) {
sub_0806FAD8(entity, this);
ResolveEntityBelow(entity, this);
this->spriteRendering.b3 = entity->spriteRendering.b3;
x = entity->x.HALF.HI;
y = entity->y.HALF.HI;
+2 -2
View File
@@ -304,10 +304,10 @@ u32 sub_080837B0(Entity* this) {
tmp = gUnk_0811F690[tmp2 - 0x40];
}
if (tmp2 == 0x68) {
sub_0801D2B4(this, 0);
ChangeObjPalette(this, 0);
} else {
if (tmp2 == 0x88) {
sub_0801D2B4(this, 1);
ChangeObjPalette(this, 1);
}
}
LoadFixedGFX(this, tmp);
+2 -2
View File
@@ -184,7 +184,7 @@ void sub_0808F3DC(Entity* this) {
// TODO: This block of code might supposed to be a switch statement.
if (this->type != 8) {
if (this->type == 7) {
sub_0806FAD8(this->child, this);
ResolveEntityBelow(this->child, this);
return;
}
} else {
@@ -239,7 +239,7 @@ void sub_0808F498(Entity* this) {
this->x.HALF.HI += (s32)Random() % (this->parent->hitbox->width * 2);
this->y.HALF.HI -= this->parent->hitbox->height;
this->y.HALF.HI += (s32)Random() % (this->parent->hitbox->height * 2);
sub_0801D2B4(this, var0);
ChangeObjPalette(this, var0);
InitializeAnimation(this, 4);
}
}
+1 -1
View File
@@ -39,7 +39,7 @@ void sub_0809F318(Entity* this) {
this->z.HALF.HI = 0xFFB0;
this->spriteOrientation.flipY = 2;
this->action = 1;
sub_0801D2B4(this, gUnk_08124704[this->type]);
ChangeObjPalette(this, gUnk_08124704[this->type]);
SetDefaultPriority(this, 7);
}
+405
View File
@@ -0,0 +1,405 @@
#include "global.h"
#include "entity.h"
#include "coord.h"
#include "audio.h"
#include "functions.h"
#include "random.h"
#include "object.h"
extern void sub_0807B9B8(s32, s32, s32);
extern void (*const OctorokBossObject_Actions[])(Entity*);
extern const u16 gUnk_0812384C[];
extern const u16 gUnk_0812388C[];
extern const u16 gUnk_081238A0[];
bool32 sub_0809A6F8(u32, u32, u32, u32);
bool32 sub_0809A758(u32, u32);
typedef struct HelperStruct {
u8 field_0x0; // [0,1,2,4] is later stored in this->field_0xf
u8 tailCount;
u8 field_0x2; // [0,1]
u8 field_0x3; // relates to this->field_0x7a.HALF.HI
u8 field_0x4; // [0,1,0xff]
u8 field_0x5; // [0-4], sets this->field_0x80.HALF.HI
u8 fallingStonesTimer;
u8 field_0x7; // some sort of counter that is only set when hit for the first time?
Entity* mouthObject;
Entity* tailObjects[5];
Entity* legObjects[4];
} HelperStruct;
enum OctorokBossObjectType {
TYPE0, // OctorokBoss_Action1 / TAIL_END
TYPE_FIRE, // this->OctorokBossObject_Action1
TYPE_SUCKING, // OctorokBoss_ExecuteAttackVacuum
TYPE_SMOKE, // OctorokBoss_ExecuteAttackSmoke
TYPE4, // OctorokBoss_Action1_Attack_Type2_2
TYPE_ICE_CRYSTALS, // OctorokBoss_Hit_SubAction1
TYPE6, // OctorokBoss_Hit_SubAction1 // Scar thingy appearing on first defrost?
TYPE7,
TYPE8, // OctorokBoss_Hit_SubAction1
TYPE9 // OctorokBoss_Hit_SubAction4
};
#define GET_HELPER(this) (*(HelperStruct**)&this->cutsceneBeh)
extern u32 sub_0806FC80(Entity*, Entity*, s32);
void OctorokBossObject(Entity* this) {
OctorokBossObject_Actions[this->action](this);
}
void OctorokBossObject_Init(Entity* this) {
this->action = 1;
this->speed = 0x200;
switch (this->type) {
case 0:
this->field_0x78.HALF.HI = 0x96;
this->actionDelay = 0;
this->field_0xf = 0x1e;
case 1:
InitializeAnimation(this, 0);
EnqueueSFX(SFX_124);
break;
case 2:
this->direction = -(this->parent->field_0x7a.HALF.HI + -0x80);
if ((Random() & 1) != 0) {
switch (Random() & 3) {
case 0:
this->direction = this->direction - 0x10;
break;
case 1:
this->direction = this->direction + 0x10;
break;
case 2:
this->direction = this->direction - 8;
break;
case 3:
this->direction = this->direction + 8;
break;
}
}
this->speed = 0xf0 - (Random() & 0x3f);
sub_0806F62C(this, ((s16)this->speed >> 1) << 8, (u32)this->direction);
sub_0806F62C(this, ((s16)this->speed >> 1) << 8, (u32)this->direction);
InitializeAnimation(this, 5);
SoundReq(SFX_14C);
break;
case 3:
this->direction = -(this->parent->field_0x7a.HALF.HI + -0x80);
sub_0806F62C(this, 0x4800, (u32)this->direction);
if ((Random() & 1) != 0) {
this->direction = (Random() & 0x3f) + this->direction;
} else {
this->direction = this->direction - (Random() & 0x3f);
}
InitializeAnimation(this, 6);
break;
case 6:
sub_0806F62C(this, (0x30 - (Random() & 0x2f)) * 0x100, Random() & 0xff);
if ((Random() & 1) != 0) {
this->direction = (Random() & 0x3f) + this->direction;
} else {
this->direction = this->direction - (Random() & 0x3f);
}
InitializeAnimation(this, 5);
break;
case 4:
*(u32*)&this->field_0x78 = 0x30c;
break;
case 5:
this->spritePriority.b0 = 0;
*(u32*)&this->field_0x78 = 0x18;
this->field_0x76.HWORD = 0x400;
this->field_0x74.HWORD = 0x400;
this->field_0x7a.HWORD = 0;
sub_0806F62C(this,
((-(u32)this->parent->field_0x7a.HALF.HI << 0x18) >> 0x18) +
(u32)gUnk_0812388C[(u32)this->type2 * 2 + 1],
(u32)gUnk_0812388C[(u32)this->type2 * 2]);
sub_0805EC9C(this, this->field_0x76.HWORD, this->field_0x74.HWORD, this->field_0x7a.HWORD);
InitializeAnimation(this, 7);
break;
case 7:
this->actionDelay = 0;
InitializeAnimation(this, 8);
CopyPosition(this->parent, this);
break;
case 8:
this->type2 = this->parent->field_0x7c.BYTES.byte0;
this->actionDelay = 4;
this->field_0xf = 0;
this->field_0x82.HWORD = (this->x.HALF.HI - (gRoomControls.roomOriginX)) & 0x1f0;
this->field_0x80.HWORD = (this->y.HALF.HI - ((u32)gRoomControls.roomOriginY)) & 0x1f0;
*(int*)&this->cutsceneBeh =
((s32)(this->field_0x82.HWORD - 0x10) >> 4) + (this->field_0x80.HWORD >> 4) * 0x1f;
sub_0809A6F8(this->field_0x82.HWORD, this->field_0x80.HWORD, *(int*)&this->cutsceneBeh, this->type2);
if ((this->parent->field_0x7c.BYTES.byte0 & 1) != 0) {
SoundReq(SFX_1A3);
} else {
SoundReq(SFX_WIND2);
}
break;
case 9:
*(u32*)&this->field_0x78 = 0x1e0;
break;
}
}
NONMATCH("asm/non_matching/octorokBossObject/OctorokBossObject_Action1.inc",
void OctorokBossObject_Action1(Entity* this)) {
s32 tmp_c;
u32 loop_var;
s32 t1, t2;
GetNextFrame(this);
switch (this->type) {
case 0:
if (this->field_0x78.HALF.HI != 0) {
this->field_0x78.HALF.HI--;
if (this->field_0xf-- == 0) {
this->field_0xf = 5;
this->child = CreateObjectWithParent(this, OCTOROK_BOSS_OBJECT, 1, this->type2);
if (this->child != NULL) {
this->child->parent = this->parent;
GET_HELPER(this->child) = GET_HELPER(this);
}
this->type2 += 1;
}
CopyPosition(GET_HELPER(this)->tailObjects[0], this);
return;
}
case 1:
this->direction = sub_080045DA(GET_HELPER(this)->tailObjects[this->actionDelay]->x.WORD - this->x.WORD,
GET_HELPER(this)->tailObjects[this->actionDelay]->y.WORD - this->y.WORD);
sub_0806F62C(this, this->speed, this->direction);
if (sub_080041A0(this, GET_HELPER(this)->tailObjects[this->actionDelay], 2, 2) == 0) {
return;
}
if (this->type == 0) {
GET_HELPER(this)->tailObjects[this->actionDelay]->spriteSettings.draw &= -2;
}
if ((u32)this->actionDelay == GET_HELPER(this)->tailCount - 1) {
this->action = 2;
this->actionDelay = 0xf0;
this->direction = gUnk_0812384C[(this->type2 & 0xf) * 2] + ((u8)Random() & 0xf);
this->speed = gUnk_0812384C[(this->type2 & 0xf) * 2 + 1] + ((u16)Random() & 0x1ff);
if (this->type != 0) {
return;
}
this->parent->action = 4;
this->parent->subAction = 0;
return;
}
this->actionDelay += 1;
return;
case 2:
if (this->parent->type2 == 3) {
Entity* object = GET_HELPER(this->parent)->mouthObject;
this->direction = sub_080045DA(object->x.WORD - this->x.WORD, object->y.WORD - this->y.WORD);
sub_0806F62C(this, 0x280, this->direction);
if (sub_0806FC80(this, this->parent, 0x48) == 0) {
return;
}
}
DeleteThisEntity();
break;
case 3:
case 6:
sub_0806F62C(this, 0x80, this->direction);
if (this->frame != 0) {
DeleteThisEntity();
}
break;
case 4:
if (*(u32*)&this->field_0x78 == 0) {
if ((s16)gRoomVars.lightLevel != 0x100) {
ChangeLightLevel(8);
return;
} else {
}
} else {
if (this->parent->health == 0) {
this->subAction = 1;
*(u32*)&this->field_0x78 = 0;
return;
}
if ((this->subAction == 0) && (this->parent->type2 != 0)) {
return;
}
this->subAction = 1;
*(int*)&this->field_0x78 += -1;
return;
}
DeleteThisEntity();
break;
case 5:
if (*(int*)&this->field_0x78 == 0) {
if (this->field_0x76.HWORD == 0x100) {
if ((*(u8*)&this->parent->field_0x7c & 1) != 0) {
DeleteThisEntity();
}
} else {
this->field_0x76.HWORD -= 0x20;
this->field_0x74.HWORD -= 0x20;
}
sub_0805EC9C(this, (u32)this->field_0x76.HWORD, (u32)(u16)this->field_0x74.HWORD,
(u32)(u16)this->field_0x7a.HWORD);
} else {
*(int*)&this->field_0x78 -= 1;
}
CopyPosition(this->parent, this);
sub_0806F62C(this, (u32)gUnk_0812388C[(u32)this->type2 * 2 + 1],
((u8) - this->parent->field_0x7a.HALF.HI & 0xff) + (u32)gUnk_0812388C[(u32)this->type2 * 2]);
return;
case 7:
if (this->actionDelay == 0) {
CopyPosition(this->parent, this);
return;
}
DeleteThisEntity();
break;
case 8:
if (this->actionDelay-- != 0) {
return;
}
this->actionDelay = 4;
this->field_0xf++;
t2 = t1 = (*(int*)&this->cutsceneBeh) - this->field_0xf * 0x1f;
this->field_0x7c.HALF_U.HI = this->field_0x82.HWORD;
this->field_0x7a.HWORD = this->field_0x82.HWORD;
this->field_0x7c.HALF_U.LO = this->field_0x80.HWORD - this->field_0xf * 0x10;
this->field_0x78.HWORD = this->field_0x7c.HALF.LO;
tmp_c = sub_0809A6F8(this->field_0x7a.HWORD, this->field_0x78.HWORD, t1, this->type2);
for (loop_var = this->field_0xf; loop_var != 0; loop_var--) {
this->field_0x7a.HWORD -= 0x10;
this->field_0x78.HWORD += 0x10;
t1 += 0x1e;
tmp_c += sub_0809A6F8(this->field_0x7a.HWORD, this->field_0x78.HWORD, t1, this->type2);
this->field_0x7c.HALF.HI += 0x10;
this->field_0x7c.HALF.LO += 0x10;
t2 += 0x20;
tmp_c += sub_0809A6F8(this->field_0x7c.HALF_U.HI, this->field_0x7c.HALF_U.LO, t2, this->type2);
}
t2 = t1 = (*(int*)&this->cutsceneBeh) + this->field_0xf * 0x1f;
this->field_0x7c.HALF.HI = this->field_0x82.HWORD;
this->field_0x7a.HWORD = this->field_0x82.HWORD;
this->field_0x7c.HALF.LO = this->field_0xf * 0x10 + this->field_0x80.HWORD;
this->field_0x78.HWORD = this->field_0x7c.HALF.LO;
tmp_c += sub_0809A6F8(this->field_0x7a.HWORD, this->field_0x78.HWORD, t1, this->type2);
for (loop_var = this->field_0xf - 1; loop_var != 0; loop_var--) {
this->field_0x7a.HWORD -= 0x10;
this->field_0x78.HWORD -= 0x10;
t1 -= 0x20;
tmp_c += sub_0809A6F8(this->field_0x7a.HWORD, this->field_0x78.HWORD, t1, this->type2);
this->field_0x7c.HALF_U.HI += 0x10;
this->field_0x7c.HALF_U.LO -= 0x10;
t2 -= 0x1e;
tmp_c += sub_0809A6F8(this->field_0x7c.HALF_U.HI, this->field_0x7c.HALF_U.LO, t2, this->type2);
}
if (tmp_c == 0) {
DeleteThisEntity();
}
break;
case 9:
sub_08078B48();
if ((*(int*)&this->field_0x78)-- == 0) {
gRoomControls.cameraTarget = &gPlayerEntity;
DeleteThisEntity();
}
break;
}
}
END_NONMATCH
void OctorokBossObject_Action2(Entity* this) {
s32 tmp;
s32 radius;
GetNextFrame(this);
if (this->actionDelay-- != 0) {
tmp = (0x10000 / this->parent->field_0x74.HWORD);
radius = (this->speed * tmp) >> 8;
this->field_0x7a.HALF.HI = -this->parent->field_0x7a.HALF.HI + this->direction;
tmp = FixedMul(gSineTable[this->field_0x7a.HALF.HI], radius);
tmp = FixedDiv(tmp, 0x100);
this->x.WORD = this->parent->x.WORD + ((tmp << 0x10) >> 8);
tmp = FixedMul(gSineTable[this->field_0x7a.HALF.HI + 0x40], radius);
tmp = FixedDiv(tmp, 0x100);
this->y.WORD = this->parent->y.WORD - ((tmp << 0x10) >> 8);
} else {
DeleteThisEntity();
}
}
bool32 sub_0809A6F8(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
if (sub_0809A758(param_1, param_2) != 0) {
if (gUnk_081238A0[param_3] != 0) {
if ((param_4 & 1) != 0) {
sub_0807B9B8(gUnk_081238A0[param_3], (param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1);
} else {
sub_0807BA8C((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1);
}
}
return TRUE;
} else {
return FALSE;
}
}
bool32 sub_0809A758(u32 param_1, u32 param_2) {
if (param_1 >= 0x10) {
if (param_1 <= 0x1f0 && param_2 <= 0xf0) {
return TRUE;
}
}
return FALSE;
}
void (*const OctorokBossObject_Actions[])(Entity*) = {
OctorokBossObject_Init,
OctorokBossObject_Action1,
OctorokBossObject_Action2,
};
const u16 gUnk_0812384C[] = {
0, 4096, 16, 6144, 240, 7168, 32, 6144, 224, 5120, 48, 4096, 192, 4096, 208, 7168,
64, 4096, 192, 6144, 80, 7168, 176, 6144, 96, 5120, 160, 4096, 112, 4096, 144, 7168,
};
const u16 gUnk_0812388C[] = {
0, 0, 32, 8192, 96, 8192, 160, 8704, 208, 8192,
};
const u16 gUnk_081238A0[] = {
0, 292, 293, 292, 293, 292, 293, 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 292, 293, 292, 293, 292, 293, 293, 293, 0, 347, 1220, 1201, 1202, 1201, 1202, 1201,
1202, 1236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1220, 1202, 1201, 1201,
1202, 1201, 1202, 1236, 348, 363, 1205, 1252, 1253, 1229, 1229, 1229, 1229, 1264, 1202, 1201, 1202, 1201, 1202,
1201, 1202, 1201, 1202, 1201, 1202, 1201, 1202, 1265, 1229, 1229, 1252, 1253, 1229, 1229, 1206, 364, 347, 1221,
1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229,
1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229, 1222, 348, 363, 1205, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1252, 1253, 1229, 1229, 1229, 1229,
1229, 1206, 364, 347, 1221, 1229, 1229, 1229, 1229, 1229, 1252, 1253, 1229, 1229, 1229, 1268, 1269, 1229, 1252,
1253, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1222, 348, 363, 1205, 1229, 1229,
1229, 1229, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1229, 1229, 1206, 364, 347, 1221, 1229, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1252, 1253, 1229, 1222,
348, 363, 1205, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1206, 364, 347, 1221, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1222, 348, 363, 1205, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1206, 364, 347,
1221, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1229,
1229, 1229, 1252, 1253, 1229, 1252, 1253, 1229, 1229, 1222, 348, 363, 1205, 1268, 1269, 1229, 1229, 1229, 1252,
1253, 1229, 1229, 1229, 1268, 1269, 1229, 1252, 1253, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1268, 1269,
1229, 1229, 1206, 364, 347, 1221, 1229, 1229, 1229, 1229, 1229, 1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229,
1268, 1269, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1222, 348, 363, 1237, 1203,
1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204, 1203, 1204,
1203, 1204, 1203, 1203, 1204, 1203, 1204, 1238, 364, 0, 308, 309, 308, 309, 308, 309, 308, 309, 308,
309, 308, 309, 308, 309, 308, 309, 308, 309, 308, 309, 308, 309, 308, 309, 308, 309, 308, 309,
308, 0,
};
+8 -8
View File
@@ -789,7 +789,7 @@ void sub_08052EA0(void) {
gRoomVars.unk_10[1] = gRoomVars.unk_10[0];
gRoomVars.unk_10[2] = gRoomVars.unk_10[0];
gRoomVars.unk_10[3] = gRoomVars.unk_10[0];
gRoomVars.field_0xc = 256;
gRoomVars.lightLevel = 256;
gArea.locationIndex = gAreaMetadata[gRoomControls.areaID].location;
sub_08049D30();
InitScriptData();
@@ -875,13 +875,13 @@ void sub_08052FF4(u32 area, u32 room) {
gArea.currentRoomInfo.bg_anim = gUnk_080B755C[area];
}
void sub_0805308C(s32 a1) {
a1 += gRoomVars.field_0xc;
if (a1 < 0)
a1 = 0;
if (a1 > 256)
a1 = 256;
gRoomVars.field_0xc = a1;
void ChangeLightLevel(s32 lightLevel) {
lightLevel += gRoomVars.lightLevel;
if (lightLevel < 0)
lightLevel = 0;
if (lightLevel > 256)
lightLevel = 256;
gRoomVars.lightLevel = lightLevel;
}
void sub_080530B0(void) {
+1 -1
View File
@@ -99,6 +99,6 @@ void sub_08019644(Entity* this) {
if (gUnk_080B4400[this->field_0x70.WORD] == 0xff) {
this->field_0x70.WORD = iVar1;
}
sub_0801D2B4(this, (u32)gUnk_080B4400[this->field_0x70.WORD]);
ChangeObjPalette(this, (u32)gUnk_080B4400[this->field_0x70.WORD]);
}
}
+1 -1
View File
@@ -83,7 +83,7 @@ void MandiblesProjectile_Init(Entity* this) {
this->animationState = 0xff;
this->field_0x82.HALF.LO = 0;
this->spritePriority.b0 = 4;
sub_0806FAD8(this, this->parent);
ResolveEntityBelow(this, this->parent);
sub_080AA270(this);
}
+9 -1
View File
@@ -4,6 +4,7 @@
#include "functions.h"
#include "audio.h"
#include "effects.h"
#include "projectile.h"
void OctorokBossProjectile_Action2(Entity*);
extern void sub_080AE58C(Entity*, u32, u32);
@@ -13,6 +14,13 @@ extern void (*const OctorokBossProjectile_Functions[])(Entity*);
extern void (*const OctorokBossProjectile_Actions[])(Entity*);
extern const u8 gUnk_08129ADC[];
enum OctorokBossProjectileType {
TYPE0, // rock
TYPE1, // rock fragment
TYPE2,
TYPE3 // falling stones
};
void OctorokBossProjectile(Entity* this) {
OctorokBossProjectile_Functions[GetNextFunction(this)](this);
}
@@ -132,7 +140,7 @@ void OctorokBossProjectile_Action1(Entity* this) {
return;
}
for (index = 0; index < 3; ++index) {
this->child = CreateProjectileWithParent(this, 0xf, 1);
this->child = CreateProjectileWithParent(this, OCTOROK_BOSS_PROJECTILE, 1);
if (this->child != NULL) {
this->child->parent = this->parent;
this->child->direction = this->direction + gUnk_08129ADC[index];
+1 -1
View File
@@ -202,7 +202,7 @@ void sub_080AB034(Entity* this) {
} else {
tmp = 0x139;
}
sub_0801D2B4(this, tmp);
ChangeObjPalette(this, tmp);
}
void (*const V1DarkMagicProjectile_Functions[])(Entity*) = {
+1 -1
View File
@@ -111,7 +111,7 @@ void sub_080ABEA8(Entity* this) {
this->direction = (Random() & 0xf) << 1;
} else {
this->direction = sub_08049F84(this, 0);
sub_0801D2B4(this, 0x13f);
ChangeObjPalette(this, 0x13f);
}
InitializeAnimation(this, 0);
SoundReq(SFX_193);
+2 -2
View File
@@ -2848,7 +2848,7 @@ u32 sub_unk3_TempleOfDroplets_BigOcto() {
extern EntityData gUnk_additional_a_TempleOfDroplets_BigOcto;
void sub_StateChange_TempleOfDroplets_BigOcto(void) {
sub_0805308C(0x100);
ChangeLightLevel(0x100);
if (CheckGlobalFlag(LV4_CLEAR)) {
LoadRoomEntityList(&gUnk_additional_a_TempleOfDroplets_BigOcto);
} else {
@@ -6105,7 +6105,7 @@ void sub_StateChange_Caves_LonLonRanchSecret(void) {
if (CheckLocalFlag(0x11)) {
SetRoomFlag(0);
SetRoomFlag(1);
sub_0805308C(0x100);
ChangeLightLevel(0x100);
if (!CheckLocalFlag(0x12)) {
SetTileType(0x73, 0xcb, 1);
}
+1 -3
View File
@@ -157,8 +157,6 @@ void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* co
void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context);
void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context);
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32);
extern void RecoverUI(u32);
typedef void (*ScriptCommand)(Entity*, ScriptExecutionContext*);
@@ -1861,7 +1859,7 @@ void sub_0807F714(Entity* entity, ScriptExecutionContext* context) {
void sub_0807F738(Entity* entity, ScriptExecutionContext* context) {
entity->spriteRendering.b3 = gUnk_08114F34[entity->spriteRendering.b3];
sub_0806FAD8(entity, entity);
ResolveEntityBelow(entity, entity);
}
void sub_0807F75C(Entity* entity, ScriptExecutionContext* context) {