mirror of
https://github.com/zeldaret/tmc
synced 2026-06-24 17:43:25 -04:00
Decompile OctorokBoss
This commit is contained in:
+2
-2
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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
@@ -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
@@ -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
@@ -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*);
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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*);
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -202,7 +202,7 @@ void sub_080AB034(Entity* this) {
|
||||
} else {
|
||||
tmp = 0x139;
|
||||
}
|
||||
sub_0801D2B4(this, tmp);
|
||||
ChangeObjPalette(this, tmp);
|
||||
}
|
||||
|
||||
void (*const V1DarkMagicProjectile_Functions[])(Entity*) = {
|
||||
|
||||
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user