summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/assets.json80
-rw-r--r--data/const/enemy/fireballGuy.s24
-rw-r--r--data/const/enemy/keaton.s30
-rw-r--r--data/const/enemy/miniFireballGuy.s17
-rw-r--r--data/const/enemy/miniSlime.s19
-rw-r--r--data/const/enemy/rope.s24
-rw-r--r--data/const/enemy/ropeGolden.s19
-rw-r--r--data/const/enemy/slime.s27
-rw-r--r--data/const/enemy/smallPesto.s26
-rw-r--r--data/const/enemy/tektite.s22
-rw-r--r--data/const/enemy/tektiteGolden.s19
-rw-r--r--data/const/enemy/vaatiBall.s20
-rw-r--r--data/const/enemy/wisp.s27
-rw-r--r--data/const/manager/manager3.s8
-rw-r--r--data/const/playerItem/playerItemBomb.s22
-rw-r--r--data/const/playerItem/playerItemLantern.s12
-rw-r--r--include/enemy.h2
-rw-r--r--linker.ld30
-rw-r--r--src/enemy/acroBandits.c1
-rw-r--r--src/enemy/bombPeahat.c2
-rw-r--r--src/enemy/chaser.c1
-rw-r--r--src/enemy/chuchu.c1
-rw-r--r--src/enemy/cuccoAggr.c2
-rw-r--r--src/enemy/fireballGuy.c29
-rw-r--r--src/enemy/flyingPot.c1
-rw-r--r--src/enemy/flyingSkull.c2
-rw-r--r--src/enemy/keaton.c30
-rw-r--r--src/enemy/miniFireballGuy.c19
-rw-r--r--src/enemy/miniSlime.c23
-rw-r--r--src/enemy/octorokGolden.c1
-rw-r--r--src/enemy/rope.c33
-rw-r--r--src/enemy/ropeGolden.c22
-rw-r--r--src/enemy/slime.c26
-rw-r--r--src/enemy/sluggula.c2
-rw-r--r--src/enemy/smallPesto.c38
-rw-r--r--src/enemy/tektite.c30
-rw-r--r--src/enemy/tektiteGolden.c31
-rw-r--r--src/enemy/vaatiBall.c24
-rw-r--r--src/enemy/wisp.c34
-rw-r--r--src/manager/manager3.c2
-rw-r--r--src/playerItem/playerItemBomb.c64
-rw-r--r--src/playerItem/playerItemLantern.c20
42 files changed, 333 insertions, 533 deletions
diff --git a/assets/assets.json b/assets/assets.json
index 3d0e6646..5148aa2c 100644
--- a/assets/assets.json
+++ b/assets/assets.json
@@ -20851,16 +20851,6 @@
"size": 8
},
{
- "path": "playerItemBomb/gUnk_080B77D8.bin",
- "start": 751596,
- "size": 8
- },
- {
- "path": "playerItemBomb/gUnk_080B77F4.bin",
- "start": 751604,
- "size": 8
- },
- {
"path": "data_080B7910/gUnk_080B7910.bin",
"start": 751888,
"size": 151
@@ -25081,11 +25071,6 @@
"type": "animation"
},
{
- "path": "tektite/gUnk_080CDEF8.bin",
- "start": 843512,
- "size": 4
- },
- {
"path": "animations/gSpriteAnimations_WizzrobeWind_0.bin",
"start": 843640,
"size": 5,
@@ -25416,11 +25401,6 @@
"type": "animation"
},
{
- "path": "smallPesto/gUnk_080CE560.bin",
- "start": 845152,
- "size": 12
- },
- {
"path": "animations/gSpriteAnimations_AcroBandits_0.bin",
"start": 845326,
"size": 24,
@@ -25583,21 +25563,6 @@
"type": "animation"
},
{
- "path": "keaton/gUnk_080CE7E0.bin",
- "start": 845792,
- "size": 16
- },
- {
- "path": "keaton/gUnk_080CE7F0.bin",
- "start": 845808,
- "size": 32
- },
- {
- "path": "keaton/gUnk_080CE810.bin",
- "start": 845840,
- "size": 8
- },
- {
"path": "animations/gSpriteAnimations_Crow_0.bin",
"start": 846256,
"size": 5,
@@ -25724,11 +25689,6 @@
"type": "animation"
},
{
- "path": "wisp/gUnk_080CEBA4.bin",
- "start": 846756,
- "size": 8
- },
- {
"path": "animations/gSpriteAnimations_SpinyBeetle_0.bin",
"start": 846884,
"size": 5,
@@ -27888,16 +27848,6 @@
"type": "animation"
},
{
- "path": "vaatiBall/gUnk_080D1620.bin",
- "start": 857632,
- "size": 8
- },
- {
- "path": "vaatiBall/gUnk_080D1628.bin",
- "start": 857640,
- "size": 16
- },
- {
"path": "animations/gSpriteAnimations_Slime_0.bin",
"start": 857820,
"size": 9,
@@ -27964,16 +27914,6 @@
"type": "animation"
},
{
- "path": "slime/gUnk_080D16D0.bin",
- "start": 857808,
- "size": 4
- },
- {
- "path": "slime/gUnk_080D16D4.bin",
- "start": 857812,
- "size": 8
- },
- {
"path": "animations/gSpriteAnimations_FireballGuy_0.bin",
"start": 858136,
"size": 33,
@@ -27986,16 +27926,6 @@
"type": "animation"
},
{
- "path": "fireballGuy/gUnk_080D180C.bin",
- "start": 858124,
- "size": 4
- },
- {
- "path": "fireballGuy/gUnk_080D1810.bin",
- "start": 858128,
- "size": 8
- },
- {
"path": "animations/gSpriteAnimations_Enemy5A_0.bin",
"start": 858308,
"size": 5,
@@ -32112,11 +32042,6 @@
"size": 48
},
{
- "path": "playerItemLantern/gUnk_080FEEB0.bin",
- "start": 1044144,
- "size": 8
- },
- {
"path": "data_080FEEB8/gUnk_080FEED4.bin",
"start": 1044180,
"size": 12
@@ -32428,11 +32353,6 @@
}
},
{
- "path": "manager3/gUnk_08107C6C.bin",
- "start": 1080428,
- "size": 4
- },
- {
"path": "manager4/gUnk_08107C78.bin",
"start": 1080440,
"size": 8
diff --git a/data/const/enemy/fireballGuy.s b/data/const/enemy/fireballGuy.s
deleted file mode 100644
index 7f761fe4..00000000
--- a/data/const/enemy/fireballGuy.s
+++ /dev/null
@@ -1,24 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-FireballGuy_Functions:: @ 080D17E8
- .4byte FireballGuy_OnTick
- .4byte FireballGuy_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte FireballGuy_OnGrabbed
-
-gUnk_080D1800:: @ 080D1800
- .4byte sub_080453E8
- .4byte sub_08045430
- .4byte sub_08045454
-
-gUnk_080D180C:: @ 080D180C
- .incbin "fireballGuy/gUnk_080D180C.bin"
-
-gUnk_080D1810:: @ 080D1810
- .incbin "fireballGuy/gUnk_080D1810.bin"
diff --git a/data/const/enemy/keaton.s b/data/const/enemy/keaton.s
deleted file mode 100644
index 0fba5fb0..00000000
--- a/data/const/enemy/keaton.s
+++ /dev/null
@@ -1,30 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-Keaton_Functions:: @ 080CE7B0
- .4byte Keaton_OnTick
- .4byte Keaton_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte Keaton_OnGrabbed
-
-gUnk_080CE7C8:: @ 080CE7C8
- .4byte sub_08032468
- .4byte sub_0803248C
- .4byte sub_080324CC
- .4byte sub_080324FC
- .4byte sub_08032574
- .4byte sub_080325C4
-
-gUnk_080CE7E0:: @ 080CE7E0
- .incbin "keaton/gUnk_080CE7E0.bin"
-
-gUnk_080CE7F0:: @ 080CE7F0
- .incbin "keaton/gUnk_080CE7F0.bin"
-
-gUnk_080CE810:: @ 080CE810
- .incbin "keaton/gUnk_080CE810.bin"
diff --git a/data/const/enemy/miniFireballGuy.s b/data/const/enemy/miniFireballGuy.s
deleted file mode 100644
index 2acc1d34..00000000
--- a/data/const/enemy/miniFireballGuy.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-MiniFireballGuy_Functions:: @ 080D1868
- .4byte MiniFireballGuy_OnTick
- .4byte MiniFireballGuy_OnCollision
- .4byte GenericKnockback
- .4byte MiniFireballGuy_OnDeath
- .4byte GenericConfused
- .4byte MiniFireballGuy_OnGrabbed
-
-gUnk_080D1880:: @ 080D1880
- .4byte sub_08045618
- .4byte sub_08045654
diff --git a/data/const/enemy/miniSlime.s b/data/const/enemy/miniSlime.s
deleted file mode 100644
index a11e40e9..00000000
--- a/data/const/enemy/miniSlime.s
+++ /dev/null
@@ -1,19 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-MiniSlime_Functions:: @ 080D17C0
- .4byte MiniSlime_OnTick
- .4byte MiniSlime_OnCollision
- .4byte GenericKnockback
- .4byte MiniSlime_OnDeath
- .4byte GenericConfused
- .4byte MiniSlime_OnGrabbed
-
-gUnk_080D17D8:: @ 080D17D8
- .4byte sub_080452A4
- .4byte sub_080452E4
- .4byte sub_080452FC
- .4byte sub_08045374
diff --git a/data/const/enemy/rope.s b/data/const/enemy/rope.s
deleted file mode 100644
index 92d12e93..00000000
--- a/data/const/enemy/rope.s
+++ /dev/null
@@ -1,24 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-Rope_Functions:: @ 080CE448
- .4byte Rope_OnTick+1
- .4byte Rope_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte Rope_OnGrabbed
-
-gUnk_080CE460:: @ 080CE460
- .4byte sub_08031434
- .4byte sub_08031480
- .4byte sub_080314FC
- .4byte sub_080315BC
-
-gUnk_080CE470:: @ 080CE470
- .4byte sub_0803140C
- .4byte sub_08031418
- .4byte sub_08031420
diff --git a/data/const/enemy/ropeGolden.s b/data/const/enemy/ropeGolden.s
deleted file mode 100644
index 65413cf8..00000000
--- a/data/const/enemy/ropeGolden.s
+++ /dev/null
@@ -1,19 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-RopeGolden_Functions:: @ 080CF4C8
- .4byte RopeGolden_OnTick+1
- .4byte RopeGolden_OnCollision
- .4byte GenericKnockback
- .4byte RopeGolden_OnDeath
- .4byte GenericConfused
- .4byte RopeGolden_OnTick+1
-
-gUnk_080CF4E0:: @ 080CF4E0
- .4byte sub_08038258
- .4byte sub_0803827C
- .4byte sub_080382EC
- .4byte sub_08038304
diff --git a/data/const/enemy/slime.s b/data/const/enemy/slime.s
deleted file mode 100644
index b08debdd..00000000
--- a/data/const/enemy/slime.s
+++ /dev/null
@@ -1,27 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-Slime_Functions:: @ 080D16A4
- .4byte Slime_OnTick
- .4byte Slime_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte Slime_OnGrabbed
-
-gUnk_080D16BC:: @ 080D16BC
- .4byte sub_08044FC8
- .4byte sub_08044FF8
- .4byte sub_08045018
- .4byte sub_08045088
- .4byte sub_080450A8
-
-gUnk_080D16D0:: @ 080D16D0
- .incbin "slime/gUnk_080D16D0.bin"
-
-gUnk_080D16D4:: @ 080D16D4
- .incbin "slime/gUnk_080D16D4.bin"
-
diff --git a/data/const/enemy/smallPesto.s b/data/const/enemy/smallPesto.s
deleted file mode 100644
index 98cb42c6..00000000
--- a/data/const/enemy/smallPesto.s
+++ /dev/null
@@ -1,26 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-SmallPesto_Functions:: @ 080CE530
- .4byte SmallPesto_OnTick
- .4byte SmallPesto_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte SmallPesto_OnGrabbed
-
-gUnk_080CE548:: @ 080CE548
- .4byte sub_08031704
- .4byte sub_08031714
- .4byte sub_08031770
-
-gUnk_080CE554:: @ 080CE554
- .4byte sub_080316DC
- .4byte sub_080316E8
- .4byte sub_080316F0
-
-gUnk_080CE560:: @ 080CE560
- .incbin "smallPesto/gUnk_080CE560.bin"
diff --git a/data/const/enemy/tektite.s b/data/const/enemy/tektite.s
deleted file mode 100644
index 94e67dc7..00000000
--- a/data/const/enemy/tektite.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-Tektite_Functions:: @ 080CDED0
- .4byte Tektite_OnTick
- .4byte Tektite_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte Tektite_OnConfused
- .4byte Tektite_OnGrabbed
-
-gUnk_080CDEE8:: @ 080CDEE8
- .4byte sub_0802F210
- .4byte sub_0802F284
- .4byte sub_0802F300
- .4byte sub_0802F3F4
-
-gUnk_080CDEF8:: @ 080CDEF8
- .incbin "tektite/gUnk_080CDEF8.bin"
diff --git a/data/const/enemy/tektiteGolden.s b/data/const/enemy/tektiteGolden.s
deleted file mode 100644
index 453c46bb..00000000
--- a/data/const/enemy/tektiteGolden.s
+++ /dev/null
@@ -1,19 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-TektiteGolden_Functions:: @ 080CF4A0
- .4byte TektiteGolden_OnTick
- .4byte TektiteGolden_OnCollision
- .4byte GenericKnockback
- .4byte TektiteGolden_OnDeath
- .4byte TektiteGolden_OnConfused
- .4byte TektiteGolden_OnTick
-
-gUnk_080CF4B8:: @ 080CF4B8
- .4byte sub_08037FA0
- .4byte sub_08037Fe0
- .4byte sub_08038048
- .4byte sub_08038110
diff --git a/data/const/enemy/vaatiBall.s b/data/const/enemy/vaatiBall.s
deleted file mode 100644
index 444a6450..00000000
--- a/data/const/enemy/vaatiBall.s
+++ /dev/null
@@ -1,20 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnk_080D1604:: @ 080D1604
- .4byte sub_0804468C
- .4byte sub_0804474C
- .4byte sub_080447E0
- .4byte sub_08044868
- .4byte sub_0804474C
- .4byte sub_080449F8
- .4byte sub_08044B04
-
-gUnk_080D1620:: @ 080D1620
- .incbin "vaatiBall/gUnk_080D1620.bin"
-
-gUnk_080D1628:: @ 080D1628
- .incbin "vaatiBall/gUnk_080D1628.bin"
diff --git a/data/const/enemy/wisp.s b/data/const/enemy/wisp.s
deleted file mode 100644
index 2c66267a..00000000
--- a/data/const/enemy/wisp.s
+++ /dev/null
@@ -1,27 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-Wisp_Functions:: @ 080CEB74
- .4byte Wisp_OnTick
- .4byte Wisp_OnCollision
- .4byte GenericKnockback
- .4byte GenericDeath
- .4byte GenericConfused
- .4byte Wisp_OnGrabbed
-
-gUnk_080CEB8C:: @ 080CEB8C
- .4byte sub_08033674
- .4byte sub_080336A8
- .4byte sub_080336DC
-
-gUnk_080CEB98:: @ 080CEB98
- .4byte sub_08033650
- .4byte sub_08033658
- .4byte sub_08033660
-
-
-gUnk_080CEBA4:: @ 080CEBA4
- .incbin "wisp/gUnk_080CEBA4.bin"
diff --git a/data/const/manager/manager3.s b/data/const/manager/manager3.s
deleted file mode 100644
index ca9972aa..00000000
--- a/data/const/manager/manager3.s
+++ /dev/null
@@ -1,8 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnk_08107C6C:: @ 08107C6C
- .incbin "manager3/gUnk_08107C6C.bin"
diff --git a/data/const/playerItem/playerItemBomb.s b/data/const/playerItem/playerItemBomb.s
deleted file mode 100644
index c229f5ab..00000000
--- a/data/const/playerItem/playerItemBomb.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnk_080B77C8:: @ 080B77C8
- .4byte sub_0801B250
- .4byte sub_0801B2CC
- .4byte sub_0801B318
- .4byte sub_0801B38C
-
-gUnk_080B77D8:: @ 080B77D8
- .4byte sub_0801B330
- .4byte sub_0801B340
- .4byte sub_0801B354
- .4byte sub_0801B368
- .4byte sub_0801B384
- .incbin "playerItemBomb/gUnk_080B77D8.bin"
-
-gUnk_080B77F4:: @ 080B77F4
- .incbin "playerItemBomb/gUnk_080B77F4.bin"
diff --git a/data/const/playerItem/playerItemLantern.s b/data/const/playerItem/playerItemLantern.s
deleted file mode 100644
index cadbfd8c..00000000
--- a/data/const/playerItem/playerItemLantern.s
+++ /dev/null
@@ -1,12 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnk_080FEEA8:: @ 080FEEA8
- .4byte sub_08054A60
- .4byte sub_08054AC8
-
-gUnk_080FEEB0:: @ 080FEEB0
- .incbin "playerItemLantern/gUnk_080FEEB0.bin"
diff --git a/include/enemy.h b/include/enemy.h
index 1ff32c7b..a392ee82 100644
--- a/include/enemy.h
+++ b/include/enemy.h
@@ -251,4 +251,6 @@ void Enemy64();
void TreeItem(Entity*);
void Enemy66(Entity*);
+extern void (*const gUnk_080012C8[])(Entity*);
+
#endif
diff --git a/linker.ld b/linker.ld
index 0d37d73a..69e6f8e6 100644
--- a/linker.ld
+++ b/linker.ld
@@ -897,7 +897,7 @@ SECTIONS {
data/data_080B3E70.o(.rodata);
data/const/playerItem/playerItemSwordBeam.o(.rodata);
data/data_080B4410.o(.rodata);
- data/const/playerItem/playerItemBomb.o(.rodata);
+ src/playerItem/playerItemBomb.o(.rodata);
src/playerItem/playerItemBoomerang.o(.rodata);
src/playerItem/playerItemDashSword.o(.rodata);
src/playerItem/playerItemBottle.o(.rodata);
@@ -978,7 +978,7 @@ SECTIONS {
data/animations/enemy/gleerok.o(.rodata);
src/enemy/vaatiEyesMacro.o(.rodata);
data/animations/enemy/vaatiEyesMacro.o(.rodata);
- data/const/enemy/tektite.o(.rodata);
+ src/enemy/tektite.o(.rodata);
data/animations/enemy/tektite.o(.rodata);
src/enemy/wizzrobeWind.o(.rodata);
data/animations/enemy/wizzrobeWind.o(.rodata);
@@ -990,12 +990,12 @@ SECTIONS {
data/animations/enemy/armos.o(.rodata);
src/enemy/eyegore.o(.rodata);
data/animations/enemy/eyegore.o(.rodata);
- data/const/enemy/rope.o(.rodata);
+ src/enemy/rope.o(.rodata);
data/animations/enemy/rope.o(.rodata);
- data/const/enemy/smallPesto.o(.rodata);
+ src/enemy/smallPesto.o(.rodata);
src/enemy/acroBandits.o(.rodata);
data/animations/enemy/acroBandits.o(.rodata);
- data/const/enemy/keaton.o(.rodata);
+ src/enemy/keaton.o(.rodata);
data/animations/enemy/keaton.o(.rodata);
src/enemy/crow.o(.rodata);
data/animations/enemy/crow.o(.rodata);
@@ -1003,7 +1003,7 @@ SECTIONS {
data/animations/enemy/mulldozer.o(.rodata);
src/enemy/bombarossa.o(.rodata);
data/animations/enemy/bombarossa.o(.rodata);
- data/const/enemy/wisp.o(.rodata);
+ src/enemy/wisp.o(.rodata);
data/animations/enemy/wisp.o(.rodata);
src/enemy/spinyBeetle.o(.rodata);
data/animations/enemy/spinyBeetle.o(.rodata);
@@ -1019,8 +1019,8 @@ SECTIONS {
src/enemy/gibdo.o(.rodata);
data/animations/enemy/gibdo.o(.rodata);
src/enemy/octorokGolden.o(.rodata);
- data/const/enemy/tektiteGolden.o(.rodata);
- data/const/enemy/ropeGolden.o(.rodata);
+ src/enemy/tektiteGolden.o(.rodata);
+ src/enemy/ropeGolden.o(.rodata);
src/enemy/cloudPiranha.o(.rodata);
data/animations/enemy/cloudPiranha.o(.rodata);
src/enemy/scissorsBeetle.o(.rodata);
@@ -1058,14 +1058,14 @@ SECTIONS {
src/enemy/vaatiArm.o(.rodata);
data/animations/enemy/vaatiArm.o(.rodata);
data/const/enemy/dust.o(.rodata);
- data/const/enemy/vaatiBall.o(.rodata);
+ src/enemy/vaatiBall.o(.rodata);
data/animations/enemy/vaatiBall.o(.rodata);
- data/const/enemy/slime.o(.rodata);
+ src/enemy/slime.o(.rodata);
data/animations/enemy/slime.o(.rodata);
- data/const/enemy/miniSlime.o(.rodata);
- data/const/enemy/fireballGuy.o(.rodata);
+ src/enemy/miniSlime.o(.rodata);
+ src/enemy/fireballGuy.o(.rodata);
data/animations/enemy/fireballGuy.o(.rodata);
- data/const/enemy/miniFireballGuy.o(.rodata);
+ src/enemy/miniFireballGuy.o(.rodata);
src/enemy/vaatiTransfiguredEye.o(.rodata);
data/animations/enemy/vaatiTransfiguredEye.o(.rodata);
src/enemy/businessScrubPrologue.o(.rodata);
@@ -1097,7 +1097,7 @@ SECTIONS {
data/data_080FCAC8.o(.rodata);
src/itemMetaData.o(.rodata);
data/data_080FD964.o(.rodata);
- data/const/playerItem/playerItemLantern.o(.rodata);
+ src/playerItem/playerItemLantern.o(.rodata);
data/data_080FEEB8.o(.rodata);
data/gfx/palette_groups.o(.rodata);
data/gfx/gfx_groups.o(.rodata);
@@ -1108,7 +1108,7 @@ SECTIONS {
src/message.o(.rodata);
. = ALIGN(4);
src/manager/manager1.o(.rodata);
- data/const/manager/manager3.o(.rodata);
+ src/manager/manager3.o(.rodata);
data/const/manager/manager4.o(.rodata);
src/manager/manager5.o(.rodata);
src/manager/manager7.o(.rodata);
diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c
index 1d73d3f7..a8d90996 100644
--- a/src/enemy/acroBandits.c
+++ b/src/enemy/acroBandits.c
@@ -9,7 +9,6 @@
#include "functions.h"
extern Entity* gUnk_020000B0;
-extern void (*const gUnk_080012C8[])(Entity*);
static void sub_08031E48(Entity* this, Entity* child);
static void sub_08032290(Entity* this);
diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c
index 8829ad3e..a0febe5c 100644
--- a/src/enemy/bombPeahat.c
+++ b/src/enemy/bombPeahat.c
@@ -22,8 +22,6 @@ bool32 sub_0802B234(Entity*);
Entity* sub_0802B250(Entity*);
void sub_0802B264(Entity*);
-extern void (*const gUnk_080012C8[])(Entity*);
-
extern void (*const BombPeahat_Functions[])(Entity*);
extern void (*const gUnk_080CD108[])(Entity*);
extern void (*const gUnk_080CD120[])(Entity*);
diff --git a/src/enemy/chaser.c b/src/enemy/chaser.c
index ad5f00d2..63e4cd3c 100644
--- a/src/enemy/chaser.c
+++ b/src/enemy/chaser.c
@@ -8,7 +8,6 @@
#include "enemy.h"
#include "functions.h"
-extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const Chaser_Functions[])(Entity*);
extern void (*const gUnk_080CD298[])(Entity*);
diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c
index 6fd0387c..960312f8 100644
--- a/src/enemy/chuchu.c
+++ b/src/enemy/chuchu.c
@@ -26,7 +26,6 @@ void sub_0801FB68(Entity*);
u32 sub_0801FBD0(Entity*);
void Chuchu_JumpAtPlayer(Entity*);
-extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const Chuchu_Functions[])(Entity*);
extern void (*const gUnk_080CA234[])(Entity*);
extern void (*const gUnk_080CA25C[])(Entity*);
diff --git a/src/enemy/cuccoAggr.c b/src/enemy/cuccoAggr.c
index eab4b59c..88cab003 100644
--- a/src/enemy/cuccoAggr.c
+++ b/src/enemy/cuccoAggr.c
@@ -11,8 +11,6 @@ typedef struct {
u8 unk_7b;
} CuccoAggrEntity;
-extern void (*const gUnk_080012C8[])(Entity*);
-
typedef struct {
u16 x;
u16 y;
diff --git a/src/enemy/fireballGuy.c b/src/enemy/fireballGuy.c
index 0d116679..3639fc3e 100644
--- a/src/enemy/fireballGuy.c
+++ b/src/enemy/fireballGuy.c
@@ -14,18 +14,28 @@ typedef struct {
extern void sub_08045524(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
+void FireballGuy_OnTick(Entity*);
+void FireballGuy_OnCollision(Entity*);
+void FireballGuy_OnGrabbed(Entity*);
+void sub_080453E8(Entity*);
+void sub_08045430(Entity*);
+void sub_08045454(Entity*);
-extern void (*const FireballGuy_Functions[])(Entity*);
-extern void (*const gUnk_080D1800[])(Entity*);
-extern u8 gUnk_080D180C[4]; // Entity count per form
-extern PosOffset gUnk_080D1810[4];
+static void (*const FireballGuy_Functions[])(Entity*) = {
+ FireballGuy_OnTick, FireballGuy_OnCollision, GenericKnockback, GenericDeath, GenericConfused, FireballGuy_OnGrabbed,
+};
void FireballGuy(Entity* this) {
EnemyFunctionHandler(this, FireballGuy_Functions);
}
void FireballGuy_OnTick(Entity* this) {
- gUnk_080D1800[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_080453E8,
+ sub_08045430,
+ sub_08045454,
+ };
+ actionFuncs[this->action](this);
}
void FireballGuy_OnCollision(Entity* this) {
@@ -36,7 +46,7 @@ void FireballGuy_OnCollision(Entity* this) {
}
}
-void FireballGuy_OnGrabbed(void) {
+void FireballGuy_OnGrabbed(Entity* this) {
}
void sub_080453E8(Entity* this) {
@@ -60,14 +70,17 @@ void sub_08045430(Entity* this) {
/* Split FireballGuy into new ones */
void sub_08045454(Entity* this) {
+ // Entity count per form
+ static const u8 typeEntityCount[4] = { 2, 3, 4, 5 };
+ static const PosOffset gUnk_080D1810[4] = { { 6, 0 }, { -6, 0 }, { 0, 6 }, { 0, -6 } };
Entity* entities[4];
Entity* ent;
s32 count, i;
- PosOffset* off;
+ const PosOffset* off;
u32 tmp;
/* Can we create enough new entities? */
- count = gUnk_080D180C[this->type];
+ count = typeEntityCount[this->type];
if (MAX_ENTITIES + 1 - count <= gEntCount)
return;
diff --git a/src/enemy/flyingPot.c b/src/enemy/flyingPot.c
index 610f2967..1b628d71 100644
--- a/src/enemy/flyingPot.c
+++ b/src/enemy/flyingPot.c
@@ -11,7 +11,6 @@
#include "player.h"
#include "room.h"
-extern void (*const gUnk_080012C8[])(Entity*);
extern Hitbox gUnk_080FD34C;
typedef struct {
diff --git a/src/enemy/flyingSkull.c b/src/enemy/flyingSkull.c
index 7110c455..d41e8f09 100644
--- a/src/enemy/flyingSkull.c
+++ b/src/enemy/flyingSkull.c
@@ -12,8 +12,6 @@ typedef struct {
u8 unk_0x76;
} FlyingSkullEntity;
-extern void (*const gUnk_080012C8[])(Entity*);
-
void (*const FlyingSkull_Functions[])(Entity*);
void (*const gUnk_080CFB9C[])(FlyingSkullEntity*);
void (*const gUnk_080CFBBC[])(FlyingSkullEntity*);
diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c
index a7548f9a..c0506f39 100644
--- a/src/enemy/keaton.c
+++ b/src/enemy/keaton.c
@@ -9,12 +9,19 @@
#include "functions.h"
extern Entity* gUnk_020000B0;
-
-extern void (*const Keaton_Functions[])(Entity*);
-extern void (*const gUnk_080CE7C8[])(Entity*);
-extern u8 gUnk_080CE7E0[];
-extern u16 gUnk_080CE7F0[];
-extern s8 gUnk_080CE810[];
+void Keaton_OnTick(Entity*);
+void Keaton_OnCollision(Entity*);
+void Keaton_OnGrabbed(Entity*);
+void sub_08032468(Entity*);
+void sub_0803248C(Entity*);
+void sub_080324CC(Entity*);
+void sub_080324FC(Entity*);
+void sub_08032574(Entity*);
+void sub_080325C4(Entity*);
+
+static void (*const Keaton_Functions[])(Entity*) = {
+ Keaton_OnTick, Keaton_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Keaton_OnGrabbed,
+};
u32 sub_080325E8(Entity* this);
void sub_08032650(Entity* this);
@@ -34,7 +41,10 @@ void Keaton(Entity* this) {
}
void Keaton_OnTick(Entity* this) {
- gUnk_080CE7C8[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08032468, sub_0803248C, sub_080324CC, sub_080324FC, sub_08032574, sub_080325C4,
+ };
+ actionFuncs[this->action](this);
}
void Keaton_OnCollision(Entity* this) {
@@ -158,6 +168,7 @@ u32 sub_080325E8(Entity* this) {
}
void sub_08032650(Entity* this) {
+ static const u8 gUnk_080CE7E0[] = { 60, 60, 90, 90, 90, 90, 120, 120, 120, 120, 120, 120, 120, 120, 150, 150 };
u32 uVar3;
uVar3 = Random();
@@ -189,6 +200,8 @@ void sub_0803269C(Entity* this, u32 direction) {
}
void sub_080326FC(Entity* this) {
+ static const u16 gUnk_080CE7F0[] = { 0xd2, 0xd2, 0xf0, 0xf0, 0x10e, 0x10e, 0x10e, 0x10e,
+ 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c };
this->field_0x74.HWORD = gUnk_080CE7F0[Random() & 0xF];
}
@@ -224,7 +237,8 @@ void sub_08032784(Entity* this) {
void sub_08032794(Entity* this) {
Entity* target;
- s8* temp;
+ const s8* temp;
+ static const s8 gUnk_080CE810[] = { 0, 2, -4, 0, 0, -11, 4, 0 };
target = CreateFx(this, FX_DASH, 0x40);
if (target != NULL) {
diff --git a/src/enemy/miniFireballGuy.c b/src/enemy/miniFireballGuy.c
index a51aa38e..f0fb29b2 100644
--- a/src/enemy/miniFireballGuy.c
+++ b/src/enemy/miniFireballGuy.c
@@ -9,16 +9,28 @@
#include "functions.h"
extern void sub_08045678(Entity*);
+void MiniFireballGuy_OnTick(Entity*);
+void MiniFireballGuy_OnCollision(Entity*);
+void MiniFireballGuy_OnDeath(Entity*);
+void MiniFireballGuy_OnGrabbed(Entity*);
+void sub_08045618(Entity*);
+void sub_08045654(Entity*);
-extern void (*const MiniFireballGuy_Functions[])(Entity*);
-extern void (*const gUnk_080D1880[])(Entity*);
+static void (*const MiniFireballGuy_Functions[])(Entity*) = {
+ MiniFireballGuy_OnTick, MiniFireballGuy_OnCollision, GenericKnockback, MiniFireballGuy_OnDeath,
+ GenericConfused, MiniFireballGuy_OnGrabbed,
+};
void MiniFireballGuy(Entity* this) {
EnemyFunctionHandler(this, MiniFireballGuy_Functions);
}
void MiniFireballGuy_OnTick(Entity* this) {
- gUnk_080D1880[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08045618,
+ sub_08045654,
+ };
+ actionFuncs[this->action](this);
}
void MiniFireballGuy_OnCollision(Entity* this) {
@@ -56,7 +68,6 @@ void sub_08045654(Entity* this) {
}
void sub_08045678(Entity* this) {
-
this->zVelocity = Q_16_16(1.75);
if (this->timer != 0) {
this->timer--;
diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c
index 2231c83e..490f4eed 100644
--- a/src/enemy/miniSlime.c
+++ b/src/enemy/miniSlime.c
@@ -9,12 +9,21 @@
#include "physics.h"
void sub_08045374(Entity*);
+void MiniSlime_OnTick(Entity*);
+void MiniSlime_OnCollision(Entity*);
+void MiniSlime_OnDeath(Entity*);
+void MiniSlime_OnGrabbed(Entity*);
+void sub_080452A4(Entity*);
+void sub_080452E4(Entity*);
+void sub_080452FC(Entity*);
+void sub_08045374(Entity*);
extern void sub_080452E4(Entity*);
extern void ReplaceMonitoredEntity(Entity*, Entity*);
-extern void (*const MiniSlime_Functions[])(Entity*);
-extern void (*const gUnk_080D17D8[])(Entity*);
+static void (*const MiniSlime_Functions[])(Entity*) = {
+ MiniSlime_OnTick, MiniSlime_OnCollision, GenericKnockback, MiniSlime_OnDeath, GenericConfused, MiniSlime_OnGrabbed,
+};
void MiniSlime(Entity* this) {
EnemyFunctionHandler(this, MiniSlime_Functions);
@@ -22,7 +31,13 @@ void MiniSlime(Entity* this) {
}
void MiniSlime_OnTick(Entity* this) {
- gUnk_080D17D8[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_080452A4,
+ sub_080452E4,
+ sub_080452FC,
+ sub_08045374,
+ };
+ actionFuncs[this->action](this);
}
void MiniSlime_OnCollision(Entity* this) {
@@ -44,7 +59,7 @@ void MiniSlime_OnDeath(Entity* this) {
GenericDeath(this);
}
-void MiniSlime_OnGrabbed(void) {
+void MiniSlime_OnGrabbed(Entity* this) {
}
void sub_080452A4(Entity* this) {
diff --git a/src/enemy/octorokGolden.c b/src/enemy/octorokGolden.c
index 7af19a82..e2f7e6cd 100644
--- a/src/enemy/octorokGolden.c
+++ b/src/enemy/octorokGolden.c
@@ -5,7 +5,6 @@
void (*const OctorokGolden_Functions[])(Entity*);
void (*const gUnk_080CF484[])(Entity*);
-extern void (*const gUnk_080012C8[])(Entity*);
const s8 gUnk_080CF490[];
const u8 gUnk_080CF498[];
diff --git a/src/enemy/rope.c b/src/enemy/rope.c
index 91c74c7b..88a6e1db 100644
--- a/src/enemy/rope.c
+++ b/src/enemy/rope.c
@@ -8,9 +8,21 @@
#include "enemy.h"
#include "physics.h"
-extern void (*const Rope_Functions[6])(Entity*);
-extern void (*const gUnk_080CE460[4])(Entity*);
-extern void (*const gUnk_080CE470[3])(Entity*);
+void Rope_OnTick(Entity*);
+void Rope_OnCollision(Entity*);
+void Rope_OnGrabbed(Entity*);
+void sub_08031434(Entity*);
+void sub_08031480(Entity*);
+void sub_080314FC(Entity*);
+void sub_080315BC(Entity*);
+void sub_0803140C(Entity*);
+void sub_08031418(Entity*);
+void sub_08031420(Entity*);
+
+static void (*const Rope_Functions[6])(Entity*) = {
+ Rope_OnTick, Rope_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Rope_OnGrabbed,
+};
+
extern Entity* gUnk_020000B0;
void sub_08031600(Entity*);
@@ -22,7 +34,13 @@ void Rope(Entity* this) {
}
void Rope_OnTick(Entity* this) {
- gUnk_080CE460[this->action](this);
+ static void (*const actionFuncs[4])(Entity*) = {
+ sub_08031434,
+ sub_08031480,
+ sub_080314FC,
+ sub_080315BC,
+ };
+ actionFuncs[this->action](this);
}
void Rope_OnCollision(Entity* this) {
@@ -38,8 +56,13 @@ void Rope_OnCollision(Entity* this) {
}
void Rope_OnGrabbed(Entity* this) {
+ static void (*const subActionFuncs[3])(Entity*) = {
+ sub_0803140C,
+ sub_08031418,
+ sub_08031420,
+ };
if (sub_0806F520(this)) {
- gUnk_080CE470[this->subAction](this);
+ subActionFuncs[this->subAction](this);
}
}
diff --git a/src/enemy/ropeGolden.c b/src/enemy/ropeGolden.c
index 757f5438..e79f3ecc 100644
--- a/src/enemy/ropeGolden.c
+++ b/src/enemy/ropeGolden.c
@@ -11,9 +11,17 @@
#include "physics.h"
#include "player.h"
-extern void (*const gUnk_080012C8[])(Entity*);
-extern void (*const RopeGolden_Functions[6])(Entity*);
-extern void (*const gUnk_080CF4E0[4])(Entity*);
+void RopeGolden_OnTick(Entity*);
+void RopeGolden_OnCollision(Entity*);
+void RopeGolden_OnDeath(Entity*);
+void sub_08038258(Entity*);
+void sub_0803827C(Entity*);
+void sub_080382EC(Entity*);
+void sub_08038304(Entity*);
+
+static void (*const RopeGolden_Functions[6])(Entity*) = {
+ RopeGolden_OnTick, RopeGolden_OnCollision, GenericKnockback, RopeGolden_OnDeath, GenericConfused, RopeGolden_OnTick,
+};
void sub_080383AC(Entity*);
void sub_080383E4(Entity*);
@@ -30,7 +38,13 @@ void RopeGolden(Entity* this) {
}
void RopeGolden_OnTick(Entity* this) {
- gUnk_080CF4E0[this->action](this);
+ static void (*const actionFuncs[4])(Entity*) = {
+ sub_08038258,
+ sub_0803827C,
+ sub_080382EC,
+ sub_08038304,
+ };
+ actionFuncs[this->action](this);
}
void RopeGolden_OnCollision(Entity* this) {
diff --git a/src/enemy/slime.c b/src/enemy/slime.c
index 57301468..506820cc 100644
--- a/src/enemy/slime.c
+++ b/src/enemy/slime.c
@@ -14,12 +14,19 @@ typedef struct {
} PACKED PosOffset;
void sub_08044FF8(Entity*);
+void Slime_OnTick(Entity*);
+void Slime_OnCollision(Entity*);
+void Slime_OnGrabbed(Entity*);
+void sub_08044FC8(Entity*);
+void sub_08044FF8(Entity*);
+void sub_08045018(Entity*);
+void sub_08045088(Entity*);
+void sub_080450A8(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
-extern void (*const gUnk_080D16BC[])(Entity*);
-extern void (*const Slime_Functions[])(Entity*);
-extern u8 gUnk_080D16D0[4]; // Entity count per form
-extern PosOffset gUnk_080D16D4[4];
+static void (*const Slime_Functions[])(Entity*) = {
+ Slime_OnTick, Slime_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Slime_OnGrabbed,
+};
void Slime(Entity* this) {
EnemyFunctionHandler(this, Slime_Functions);
@@ -27,7 +34,10 @@ void Slime(Entity* this) {
}
void Slime_OnTick(Entity* this) {
- gUnk_080D16BC[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08044FC8, sub_08044FF8, sub_08045018, sub_08045088, sub_080450A8,
+ };
+ actionFuncs[this->action](this);
}
void Slime_OnCollision(Entity* this) {
@@ -89,10 +99,12 @@ void sub_080450A8(Entity* this) {
Entity* entities[4];
Entity* ent;
s32 count, i;
- PosOffset* off;
+ const PosOffset* off;
+ static const u8 typeEntityCount[4] = { 2, 2, 4, 2 };
+ static const PosOffset gUnk_080D16D4[4] = { { 6, 0 }, { -6, 0 }, { 0, 6 }, { 0, -6 } };
/* Can we create enough new entities? */
- count = gUnk_080D16D0[this->type];
+ count = typeEntityCount[this->type];
if (MAX_ENTITIES + 1 - count <= gEntCount)
return;
diff --git a/src/enemy/sluggula.c b/src/enemy/sluggula.c
index 9648e71a..84adb554 100644
--- a/src/enemy/sluggula.c
+++ b/src/enemy/sluggula.c
@@ -12,8 +12,6 @@ void sub_08023E10(Entity*);
void sub_08023E54(Entity*);
void sub_08023E9C(Entity*);
-extern void (*const gUnk_080012C8[])(Entity*);
-
extern void (*const Sluggula_Functions[])(Entity*);
extern void (*const gUnk_080CBDD4[])(Entity*);
extern void (*const gUnk_080CBDEC[])(Entity*);
diff --git a/src/enemy/smallPesto.c b/src/enemy/smallPesto.c
index 9f1eaebd..e75173f2 100644
--- a/src/enemy/smallPesto.c
+++ b/src/enemy/smallPesto.c
@@ -8,24 +8,36 @@
#include "enemy.h"
#include "physics.h"
-extern void sub_080317F8(Entity*);
-
-extern void (*SmallPesto_Functions[])(Entity*);
-extern void (*gUnk_080CE548[])(Entity*);
-extern void (*gUnk_080CE554[])(Entity*);
+void sub_080317F8(Entity*);
+void SmallPesto_OnTick(Entity*);
+void SmallPesto_OnCollision(Entity*);
+void SmallPesto_OnGrabbed(Entity*);
+void sub_08031704(Entity*);
+void sub_08031714(Entity*);
+void sub_08031770(Entity*);
+void sub_080316DC(Entity*);
+void sub_080316E8(Entity*);
+void sub_080316F0(Entity*);
+
+static void (*const SmallPesto_Functions[])(Entity*) = {
+ SmallPesto_OnTick, SmallPesto_OnCollision, GenericKnockback, GenericDeath, GenericConfused, SmallPesto_OnGrabbed,
+};
void sub_080317B4(Entity*);
void sub_080317E0(Entity*);
void sub_08031840(Entity*);
-extern Hitbox gUnk_080CE560;
-
void SmallPesto(Entity* this) {
SmallPesto_Functions[GetNextFunction(this)](this);
}
void SmallPesto_OnTick(Entity* this) {
- gUnk_080CE548[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08031704,
+ sub_08031714,
+ sub_08031770,
+ };
+ actionFuncs[this->action](this);
}
void SmallPesto_OnCollision(Entity* this) {
@@ -33,6 +45,11 @@ void SmallPesto_OnCollision(Entity* this) {
void SmallPesto_OnGrabbed(Entity* this) {
s32 iVar1;
+ static void (*const subActionFuncs[])(Entity*) = {
+ sub_080316DC,
+ sub_080316E8,
+ sub_080316F0,
+ };
GetNextFrame(this);
iVar1 = sub_0806F520(this);
@@ -43,7 +60,7 @@ void SmallPesto_OnGrabbed(Entity* this) {
this->speed = 0x40;
this->subtimer = 1;
} else {
- gUnk_080CE554[this->subAction](this);
+ subActionFuncs[this->subAction](this);
}
}
@@ -107,6 +124,7 @@ void sub_080317E0(Entity* this) {
}
void sub_080317F8(Entity* this) {
+ static const Hitbox3D gUnk_080CE560 = { 0, -3, { 3, 2, 2, 3 }, 2, 2, 12, { 0, 0, 0 } };
u8 newDirection = Random() & 0x18;
this->action = 1;
this->z.HALF.HI = 0x0000FFF4;
@@ -114,7 +132,7 @@ void sub_080317F8(Entity* this) {
this->collisionFlags |= 0x10;
this->gustJarFlags = 1;
this->direction = newDirection;
- this->hitbox = &gUnk_080CE560;
+ this->hitbox = (Hitbox*)&gUnk_080CE560;
sub_080317E0(this);
this->timer = 0;
this->subtimer = 0x20;
diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c
index 3a7875d8..0f490883 100644
--- a/src/enemy/tektite.c
+++ b/src/enemy/tektite.c
@@ -10,9 +10,18 @@
#include "functions.h"
static void sub_0802F45C(Entity* this);
-
-extern void (*const Tektite_Functions[])(Entity*);
-extern void (*const gUnk_080CDEE8[])(Entity*);
+static void Tektite_OnTick(Entity*);
+static void Tektite_OnCollision(Entity*);
+static void Tektite_OnConfused(Entity*);
+static void Tektite_OnGrabbed(Entity*);
+static void sub_0802F210(Entity*);
+static void sub_0802F284(Entity*);
+static void sub_0802F300(Entity*);
+static void sub_0802F3F4(Entity*);
+
+static void (*const Tektite_Functions[])(Entity*) = {
+ Tektite_OnTick, Tektite_OnCollision, GenericKnockback, GenericDeath, Tektite_OnConfused, Tektite_OnGrabbed,
+};
void Tektite(Entity* this) {
EnemyFunctionHandler(this, Tektite_Functions);
@@ -20,10 +29,21 @@ void Tektite(Entity* this) {
}
void Tektite_OnTick(Entity* this) {
- gUnk_080CDEE8[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_0802F210,
+ sub_0802F284,
+ sub_0802F300,
+ sub_0802F3F4,
+ };
+ actionFuncs[this->action](this);
}
-extern u8 gUnk_080CDEF8[];
+static const u8 gUnk_080CDEF8[] = {
+ 0x18,
+ 0x28,
+ 0x38,
+ 0x48,
+};
void Tektite_OnCollision(Entity* this) {
u32 bVar1;
diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c
index 09c4f3f0..1ea22b88 100644
--- a/src/enemy/tektiteGolden.c
+++ b/src/enemy/tektiteGolden.c
@@ -9,18 +9,35 @@
#include "enemy.h"
#include "functions.h"
-extern void sub_08038168(Entity*);
-
-extern void (*const TektiteGolden_Functions)(Entity*);
-extern void (*const gUnk_080CF4B8[])(Entity*);
+void sub_08038168(Entity*);
+void TektiteGolden_OnTick(Entity*);
+void TektiteGolden_OnCollision(Entity*);
+void TektiteGolden_OnDeath(Entity*);
+void TektiteGolden_OnConfused(Entity*);
+void TektiteGolden_OnTick(Entity*);
+void sub_08037FA0(Entity*);
+void sub_08037Fe0(Entity*);
+void sub_08038048(Entity*);
+void sub_08038110(Entity*);
+
+static void (*const TektiteGolden_Functions[])(Entity*) = {
+ TektiteGolden_OnTick, TektiteGolden_OnCollision, GenericKnockback,
+ TektiteGolden_OnDeath, TektiteGolden_OnConfused, TektiteGolden_OnTick,
+};
void TektiteGolden(Entity* this) {
- EnemyFunctionHandler(this, &TektiteGolden_Functions);
+ EnemyFunctionHandler(this, TektiteGolden_Functions);
SetChildOffset(this, 0, 1, -0x10);
}
void TektiteGolden_OnTick(Entity* this) {
- gUnk_080CF4B8[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08037FA0,
+ sub_08037Fe0,
+ sub_08038048,
+ sub_08038110,
+ };
+ actionFuncs[this->action](this);
}
void TektiteGolden_OnCollision(Entity* this) {
@@ -29,7 +46,7 @@ void TektiteGolden_OnCollision(Entity* this) {
if (this->confusedTime != 0) {
Create0x68FX(this, FX_STARS);
}
- EnemyFunctionHandlerAfterCollision(this, &TektiteGolden_Functions);
+ EnemyFunctionHandlerAfterCollision(this, TektiteGolden_Functions);
if (this->contactFlags == 0x94) {
this->action = 1;
this->subAction = 0;
diff --git a/src/enemy/vaatiBall.c b/src/enemy/vaatiBall.c
index f8a959ba..7095b875 100644
--- a/src/enemy/vaatiBall.c
+++ b/src/enemy/vaatiBall.c
@@ -15,12 +15,19 @@ typedef struct {
s8 h, v;
} PACKED PosOffset;
-extern void (*const gUnk_080D1604[])(Entity*);
-extern PosOffset gUnk_080D1620[4];
+void sub_0804468C(Entity*);
+void sub_080447E0(Entity*);
+void sub_08044868(Entity*);
+void sub_0804474C(Entity*);
+void sub_080449F8(Entity*);
+void sub_08044B04(Entity*);
extern void sub_08044E74(Entity*, u32);
void VaatiBall(Entity* this) {
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_0804468C, sub_0804474C, sub_080447E0, sub_08044868, sub_0804474C, sub_080449F8, sub_08044B04,
+ };
Entity* parent;
parent = this->parent;
@@ -29,7 +36,7 @@ void VaatiBall(Entity* this) {
this->y.WORD += parent->y.WORD - parent->field_0x7c.WORD;
}
- gUnk_080D1604[this->action](this);
+ actionFuncs[this->action](this);
if (this->cutsceneBeh.HALF.LO) {
this->health = -1;
@@ -56,7 +63,8 @@ void VaatiBall(Entity* this) {
}
void sub_0804468C(Entity* this) {
- PosOffset* off;
+ const PosOffset* off;
+ static const PosOffset gUnk_080D1620[4] = { { -48, 0 }, { 0, -48 }, { 48, 0 }, { 0, 48 } };
this->collisionLayer = 3;
this->spriteRendering.b3 = 2;
@@ -447,10 +455,14 @@ void sub_08044B04(Entity* this) {
}
}
-extern u8 gUnk_080D1628[4][4];
-
void sub_08044DEC(Entity* this) {
u32 off;
+ static const u8 gUnk_080D1628[4][4] = {
+ { 16, 24, 0, 8 },
+ { 8, 24, 0, 16 },
+ { 0, 11, 21, 16 },
+ { 16, 24, 0, 8 },
+ };
if (this->parent->field_0x80.HALF.LO > this->field_0x78.HALF.HI) {
this->spriteSettings.draw = 1;
diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c
index be4d3f75..95404192 100644
--- a/src/enemy/wisp.c
+++ b/src/enemy/wisp.c
@@ -12,19 +12,31 @@
#include "functions.h"
static void sub_08033744(Entity* this);
-
-extern void (*const Wisp_Functions[])(Entity*);
-extern void (*const gUnk_080CEB8C[])(Entity*);
-extern void (*const gUnk_080CEB98[])(Entity*);
-
-extern u8 gUnk_080CEBA4[];
+void Wisp_OnTick(Entity* this);
+void Wisp_OnCollision(Entity* this);
+void Wisp_OnGrabbed(Entity* this);
+void sub_08033674(Entity* this);
+void sub_080336A8(Entity* this);
+void sub_080336DC(Entity* this);
+void sub_08033650(Entity* this);
+void sub_08033658(Entity* this);
+void sub_08033660(Entity* this);
+
+static void (*const Wisp_Functions[])(Entity*) = {
+ Wisp_OnTick, Wisp_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Wisp_OnGrabbed,
+};
void Wisp(Entity* this) {
EnemyFunctionHandler(this, Wisp_Functions);
}
void Wisp_OnTick(Entity* this) {
- gUnk_080CEB8C[this->action](this);
+ static void (*const actionFuncs[])(Entity*) = {
+ sub_08033674,
+ sub_080336A8,
+ sub_080336DC,
+ };
+ actionFuncs[this->action](this);
}
void Wisp_OnCollision(Entity* this) {
@@ -70,8 +82,13 @@ void Wisp_OnCollision(Entity* this) {
}
void Wisp_OnGrabbed(Entity* this) {
+ static void (*const subActionFuncs[])(Entity*) = {
+ sub_08033650,
+ sub_08033658,
+ sub_08033660,
+ };
if (sub_0806F520(this)) {
- gUnk_080CEB98[this->subAction](this);
+ subActionFuncs[this->subAction](this);
}
}
@@ -133,6 +150,7 @@ void sub_080336DC(Entity* this) {
static void sub_08033744(Entity* this) {
u32 temp;
u32 rand = (u32)Random() % 256;
+ static const u8 gUnk_080CEBA4[] = { 30, 45, 60, 75, 1, 90, 105, 120 };
// 8 potential options
this->timer = gUnk_080CEBA4[(rand & 0x70) >> 4];
diff --git a/src/manager/manager3.c b/src/manager/manager3.c
index fff973b6..eb318c3b 100644
--- a/src/manager/manager3.c
+++ b/src/manager/manager3.c
@@ -25,11 +25,11 @@ typedef struct {
u16 unk_3e;
} Manager3;
-extern s8 gUnk_08107C6C[];
extern u32 PortalReadyForMinish(void);
extern u32 sub_080B1AC8(u16, u16, u8);
void Manager3_Main(Manager3* this) {
+ static const s8 gUnk_08107C6C[] = { -3, -3, -3, 0 };
s8 tmp;
if (this->manager.action == 0) {
this->manager.action = 1;
diff --git a/src/playerItem/playerItemBomb.c b/src/playerItem/playerItemBomb.c
index 5eeafe7e..34d1360c 100644
--- a/src/playerItem/playerItemBomb.c
+++ b/src/playerItem/playerItemBomb.c
@@ -10,18 +10,36 @@ typedef struct {
u32 unk_68;
} PlayerItemBombEntity;
-extern void (*const gUnk_080B77C8[])(Entity*);
void sub_0801B418(Entity*);
void sub_0801B3A4(PlayerItemBombEntity*);
-
-extern void (*const gUnk_080B77D8[])(Entity*);
-
-extern const Hitbox gUnk_080B77F4;
+void sub_0801B250(PlayerItemBombEntity*);
+void sub_0801B2CC(PlayerItemBombEntity*);
+void sub_0801B318(PlayerItemBombEntity*);
+void sub_0801B38C(PlayerItemBombEntity*);
+void sub_0801B330(PlayerItemBombEntity*);
+void sub_0801B340(PlayerItemBombEntity*);
+void sub_0801B354(PlayerItemBombEntity*);
+void sub_0801B368(PlayerItemBombEntity*);
+void sub_0801B384(PlayerItemBombEntity*);
+
+static void (*const actionFuncs[])(PlayerItemBombEntity*) = {
+ sub_0801B250,
+ sub_0801B2CC,
+ sub_0801B318,
+ sub_0801B38C,
+};
+
+static void (*const subActionFuncs[])(PlayerItemBombEntity*) = {
+ sub_0801B330, sub_0801B340, sub_0801B354, sub_0801B368, sub_0801B384,
+};
+
+static const Hitbox unusedHitbox = { 0, 0, { 4, 0, 0, 4 }, 22, 22 };
+static const Hitbox gUnk_080B77F4 = { 0, 0, 6, 0, 0, 6, 4, 4 };
void PlayerItemBomb(PlayerItemBombEntity* this) {
u8 uVar1, uVar2;
- gUnk_080B77C8[super->action](super);
+ actionFuncs[super->action](this);
GetNextFrame(super);
uVar2 = uVar1 = super->action;
if (uVar1 != 0x03) {
@@ -102,37 +120,37 @@ void sub_0801B2CC(PlayerItemBombEntity* this) {
}
}
-void sub_0801B318(Entity* this) {
- gUnk_080B77D8[this->subAction](this);
+void sub_0801B318(PlayerItemBombEntity* this) {
+ subActionFuncs[super->subAction](this);
}
-void sub_0801B330(Entity* this) {
- this->subAction += 1;
- sub_08079BD8(this);
+void sub_0801B330(PlayerItemBombEntity* this) {
+ super->subAction += 1;
+ sub_08079BD8(super);
}
-void sub_0801B340(Entity* this) {
- this->spritePriority.b1 = 2;
+void sub_0801B340(PlayerItemBombEntity* this) {
+ super->spritePriority.b1 = 2;
}
-void sub_0801B354(Entity* this) {
- this->spritePriority.b1 = 3;
+void sub_0801B354(PlayerItemBombEntity* this) {
+ super->spritePriority.b1 = 3;
}
-void sub_0801B368(Entity* this) {
- this->action -= 1;
- this->subAction = 0;
- if (0x3c < this->timer) {
- this->timer = 0x3c;
+void sub_0801B368(PlayerItemBombEntity* this) {
+ super->action -= 1;
+ super->subAction = 0;
+ if (0x3c < super->timer) {
+ super->timer = 0x3c;
}
}
-void sub_0801B384(Entity* this) {
+void sub_0801B384(PlayerItemBombEntity* this) {
DeleteThisEntity();
}
-void sub_0801B38C(Entity* this) {
- if (this->timer-- == 0) {
+void sub_0801B38C(PlayerItemBombEntity* this) {
+ if (super->timer-- == 0) {
DeleteThisEntity();
}
}
diff --git a/src/playerItem/playerItemLantern.c b/src/playerItem/playerItemLantern.c
index cdaee553..53aa62b2 100644
--- a/src/playerItem/playerItemLantern.c
+++ b/src/playerItem/playerItemLantern.c
@@ -4,13 +4,14 @@
#include "item.h"
#include "object.h"
-extern void (*const gUnk_080FEEA8[])(Entity*);
-
void sub_08054AC8(Entity*);
-
-extern const s8 gUnk_080FEEB0[];
+void sub_08054A60(Entity*);
void PlayerItemLantern(Entity* this) {
+ static void (*const gUnk_080FEEA8[])(Entity*) = {
+ sub_08054A60,
+ sub_08054AC8,
+ };
gUnk_080FEEA8[this->action](this);
this->contactFlags = 0;
}
@@ -35,9 +36,10 @@ void sub_08054A60(Entity* this) {
void sub_08054AC8(Entity* this) {
Entity* object;
+ static const s8 offsets[] = { 6, -6, 7, -3, -5, 2, -7, -3 };
this->animationState = gPlayerEntity.animationState & 0xe;
- this->hitbox->offset_x = gUnk_080FEEB0[this->animationState];
- this->hitbox->offset_y = gUnk_080FEEB0[this->animationState + 1];
+ this->hitbox->offset_x = offsets[this->animationState];
+ this->hitbox->offset_y = offsets[this->animationState + 1];
this->hitbox->width = 4;
this->hitbox->height = 4;
if (!((gPlayerEntity.frameIndex < 0x37) && ((u32)gPlayerEntity.spriteIndex == 6))) {
@@ -59,10 +61,10 @@ void sub_08054AC8(Entity* this) {
this->timer = 4;
object = CreateObject(OBJECT_45, 0, 0x10);
if (object != NULL) {
- PositionRelative(this, object, 0, 0x20000);
+ PositionRelative(this, object, 0, Q_16_16(2.0));
object->spritePriority.b0 = this->spritePriority.b0;
- object->spriteOffsetX = gUnk_080FEEB0[this->animationState];
- object->spriteOffsetY = gUnk_080FEEB0[this->animationState + 1];
+ object->spriteOffsetX = offsets[this->animationState];
+ object->spriteOffsetY = offsets[this->animationState + 1];
}
}
sub_08078E84(this, &gPlayerEntity);