diff --git a/assets/assets.json b/assets/assets.json index 3d0e6646..5148aa2c 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -20850,16 +20850,6 @@ "start": 751552, "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, @@ -25080,11 +25070,6 @@ "size": 5, "type": "animation" }, - { - "path": "tektite/gUnk_080CDEF8.bin", - "start": 843512, - "size": 4 - }, { "path": "animations/gSpriteAnimations_WizzrobeWind_0.bin", "start": 843640, @@ -25415,11 +25400,6 @@ "size": 25, "type": "animation" }, - { - "path": "smallPesto/gUnk_080CE560.bin", - "start": 845152, - "size": 12 - }, { "path": "animations/gSpriteAnimations_AcroBandits_0.bin", "start": 845326, @@ -25582,21 +25562,6 @@ "size": 41, "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, @@ -25723,11 +25688,6 @@ "size": 19, "type": "animation" }, - { - "path": "wisp/gUnk_080CEBA4.bin", - "start": 846756, - "size": 8 - }, { "path": "animations/gSpriteAnimations_SpinyBeetle_0.bin", "start": 846884, @@ -27887,16 +27847,6 @@ "size": 38, "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, @@ -27963,16 +27913,6 @@ "size": 19, "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, @@ -27985,16 +27925,6 @@ "size": 35, "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, @@ -32111,11 +32041,6 @@ "start": 1044088, "size": 48 }, - { - "path": "playerItemLantern/gUnk_080FEEB0.bin", - "start": 1044144, - "size": 8 - }, { "path": "data_080FEEB8/gUnk_080FEED4.bin", "start": 1044180, @@ -32427,11 +32352,6 @@ "DEMO_JP": -2052 } }, - { - "path": "manager3/gUnk_08107C6C.bin", - "start": 1080428, - "size": 4 - }, { "path": "manager4/gUnk_08107C78.bin", "start": 1080440, 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; +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*); -extern void (*const Keaton_Functions[])(Entity*); -extern void (*const gUnk_080CE7C8[])(Entity*); -extern u8 gUnk_080CE7E0[]; -extern u16 gUnk_080CE7F0[]; -extern s8 gUnk_080CE810[]; +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 @@ -8,13 +8,22 @@ #include "enemy.h" #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*); +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*); -extern void (*SmallPesto_Functions[])(Entity*); -extern void (*gUnk_080CE548[])(Entity*); -extern void (*gUnk_080CE554[])(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); +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*); -extern void (*const Tektite_Functions[])(Entity*); -extern void (*const gUnk_080CDEE8[])(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*); +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*); -extern void (*const TektiteGolden_Functions)(Entity*); -extern void (*const gUnk_080CF4B8[])(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); +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); -extern void (*const Wisp_Functions[])(Entity*); -extern void (*const gUnk_080CEB8C[])(Entity*); -extern void (*const gUnk_080CEB98[])(Entity*); - -extern u8 gUnk_080CEBA4[]; +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*); +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*); -extern void (*const gUnk_080B77D8[])(Entity*); +static void (*const actionFuncs[])(PlayerItemBombEntity*) = { + sub_0801B250, + sub_0801B2CC, + sub_0801B318, + sub_0801B38C, +}; -extern const Hitbox gUnk_080B77F4; +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);