From e809532548df1a8baaef60a2b07e7dcd0e089296 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 00:02:03 +0300 Subject: [PATCH 01/11] Move some const data into code files --- assets/assets.json | 80 ----------------------- data/const/enemy/fireballGuy.s | 24 ------- data/const/enemy/keaton.s | 30 --------- data/const/enemy/miniFireballGuy.s | 17 ----- data/const/enemy/miniSlime.s | 19 ------ data/const/enemy/rope.s | 24 ------- data/const/enemy/ropeGolden.s | 19 ------ data/const/enemy/slime.s | 27 -------- data/const/enemy/smallPesto.s | 26 -------- data/const/enemy/tektite.s | 22 ------- data/const/enemy/tektiteGolden.s | 19 ------ data/const/enemy/vaatiBall.s | 20 ------ data/const/enemy/wisp.s | 27 -------- data/const/manager/manager3.s | 8 --- data/const/playerItem/playerItemBomb.s | 22 ------- data/const/playerItem/playerItemLantern.s | 12 ---- include/enemy.h | 2 + linker.ld | 30 ++++----- src/enemy/acroBandits.c | 1 - src/enemy/bombPeahat.c | 2 - src/enemy/chaser.c | 1 - src/enemy/chuchu.c | 1 - src/enemy/cuccoAggr.c | 2 - src/enemy/fireballGuy.c | 29 +++++--- src/enemy/flyingPot.c | 1 - src/enemy/flyingSkull.c | 2 - src/enemy/keaton.c | 28 ++++++-- src/enemy/miniFireballGuy.c | 19 ++++-- src/enemy/miniSlime.c | 23 +++++-- src/enemy/octorokGolden.c | 1 - src/enemy/rope.c | 33 ++++++++-- src/enemy/ropeGolden.c | 22 +++++-- src/enemy/slime.c | 26 ++++++-- src/enemy/sluggula.c | 2 - src/enemy/smallPesto.c | 36 +++++++--- src/enemy/tektite.c | 28 ++++++-- src/enemy/tektiteGolden.c | 29 ++++++-- src/enemy/vaatiBall.c | 24 +++++-- src/enemy/wisp.c | 32 +++++++-- src/manager/manager3.c | 2 +- src/playerItem/playerItemBomb.c | 60 +++++++++++------ src/playerItem/playerItemLantern.c | 20 +++--- 42 files changed, 326 insertions(+), 526 deletions(-) delete mode 100644 data/const/enemy/fireballGuy.s delete mode 100644 data/const/enemy/keaton.s delete mode 100644 data/const/enemy/miniFireballGuy.s delete mode 100644 data/const/enemy/miniSlime.s delete mode 100644 data/const/enemy/rope.s delete mode 100644 data/const/enemy/ropeGolden.s delete mode 100644 data/const/enemy/slime.s delete mode 100644 data/const/enemy/smallPesto.s delete mode 100644 data/const/enemy/tektite.s delete mode 100644 data/const/enemy/tektiteGolden.s delete mode 100644 data/const/enemy/vaatiBall.s delete mode 100644 data/const/enemy/wisp.s delete mode 100644 data/const/manager/manager3.s delete mode 100644 data/const/playerItem/playerItemBomb.s delete mode 100644 data/const/playerItem/playerItemLantern.s 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); From 8eaddf08c275cc9d636d4229d1c7d14eda1c7595 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 19:32:41 +0300 Subject: [PATCH 02/11] Move const data into playerItemSwordBeam --- assets/assets.json | 15 --------------- data/const/playerItem/playerItemSwordBeam.s | 18 ------------------ linker.ld | 2 +- src/playerItem/playerItemSwordBeam.c | 21 ++++++++++++--------- 4 files changed, 13 insertions(+), 43 deletions(-) delete mode 100644 data/const/playerItem/playerItemSwordBeam.s diff --git a/assets/assets.json b/assets/assets.json index 5148aa2c..805dae82 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -3626,21 +3626,6 @@ "start": 736896, "size": 1396 }, - { - "path": "playerItemSwordBeam/gUnk_080B43FC.bin", - "start": 738300, - "size": 4 - }, - { - "path": "playerItemSwordBeam/gUnk_080B4400.bin", - "start": 738304, - "size": 8 - }, - { - "path": "playerItemSwordBeam/gUnk_080B4408.bin", - "start": 738312, - "size": 8 - }, { "path": "data_080B4410/gUnk_080B4410_JP.bin", "variants": [ diff --git a/data/const/playerItem/playerItemSwordBeam.s b/data/const/playerItem/playerItemSwordBeam.s deleted file mode 100644 index ee57f440..00000000 --- a/data/const/playerItem/playerItemSwordBeam.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080B43F4:: @ 080B43F4 - .4byte sub_08019498 - .4byte sub_08019580 - -gUnk_080B43FC:: @ 080B43FC - .incbin "playerItemSwordBeam/gUnk_080B43FC.bin" - -gUnk_080B4400:: @ 080B4400 - .incbin "playerItemSwordBeam/gUnk_080B4400.bin" - -gUnk_080B4408:: @ 080B4408 - .incbin "playerItemSwordBeam/gUnk_080B4408.bin" diff --git a/linker.ld b/linker.ld index 69e6f8e6..e9cc6385 100644 --- a/linker.ld +++ b/linker.ld @@ -895,7 +895,7 @@ SECTIONS { data/const/playerItem/playerItemGustBig.o(.rodata); data/const/playerItem/playerItemBow.o(.rodata); data/data_080B3E70.o(.rodata); - data/const/playerItem/playerItemSwordBeam.o(.rodata); + src/playerItem/playerItemSwordBeam.o(.rodata); data/data_080B4410.o(.rodata); src/playerItem/playerItemBomb.o(.rodata); src/playerItem/playerItemBoomerang.o(.rodata); diff --git a/src/playerItem/playerItemSwordBeam.c b/src/playerItem/playerItemSwordBeam.c index 34ee2993..ec5160db 100644 --- a/src/playerItem/playerItemSwordBeam.c +++ b/src/playerItem/playerItemSwordBeam.c @@ -7,27 +7,30 @@ #include "common.h" #include "asm.h" -extern void (*const gUnk_080B43F4[])(Entity*); - -extern Hitbox gUnk_080B4408; -extern u8 gUnk_080B43FC[]; +void sub_08019498(Entity*); void sub_08019580(Entity*); - -extern u8 gUnk_08003E44; void sub_08019644(Entity*); -extern u8 gUnk_080B4400[]; +extern u8 gUnk_08003E44; void PlayerItemSwordBeam(Entity* this) { - gUnk_080B43F4[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_08019498, + sub_08019580, + }; + actionFuncs[this->action](this); } +static const u8 gUnk_080B43FC[] = { 30, 29, 30, 29 }; +static const u8 gUnk_080B4400[] = { 0, 4, 1, 2, -1, 0, 0, 0 }; + void sub_08019498(Entity* this) { + static const Hitbox gUnk_080B4408 = { 0, 0, { 4, 0, 0, 0 }, 6, 6 }; CopyPosition(&gPlayerEntity, this); this->action += 0x01; this->spriteSettings.draw = 1; this->collisionFlags = gPlayerEntity.collisionFlags + 1; - this->hitbox = &gUnk_080B4408; + this->hitbox = (Hitbox*)&gUnk_080B4408; this->speed = 0x380; *(u32*)&this->field_0x74 = 2; this->field_0x70.WORD = 0; From 875fd3e02455352f54eea51b8bfeba62343c750f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 19:48:14 +0300 Subject: [PATCH 03/11] put const data in playerItemBow --- assets/assets.json | 30 --------------- data/const/playerItem/playerItemBow.s | 21 ----------- data/data_080B3E70.s | 6 --- linker.ld | 2 +- src/playerItem/playerItemBow.c | 53 ++++++++++++++++++--------- 5 files changed, 36 insertions(+), 76 deletions(-) delete mode 100644 data/const/playerItem/playerItemBow.s diff --git a/assets/assets.json b/assets/assets.json index 805dae82..59ff182f 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -3591,36 +3591,6 @@ "start": 736808, "size": 8 }, - { - "path": "playerItemBow/gUnk_080B3E40.bin", - "start": 736832, - "size": 8 - }, - { - "path": "playerItemBow/gUnk_080B3E40_1.bin", - "start": 736844, - "size": 8 - }, - { - "path": "playerItemBow/gUnk_080B3E40_2.bin", - "start": 736856, - "size": 8 - }, - { - "path": "playerItemBow/gUnk_080B3E40_3.bin", - "start": 736868, - "size": 8 - }, - { - "path": "data_080B3E70/gUnk_080B3E70.bin", - "start": 736880, - "size": 8 - }, - { - "path": "data_080B3E70/gUnk_080B3E78.bin", - "start": 736888, - "size": 8 - }, { "path": "data_080B3E70/gUnk_080B3E80.bin", "start": 736896, diff --git a/data/const/playerItem/playerItemBow.s b/data/const/playerItem/playerItemBow.s deleted file mode 100644 index 45d3e213..00000000 --- a/data/const/playerItem/playerItemBow.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080B3E30:: @ 080B3E30 - .4byte sub_08018FE4 - .4byte sub_0801917C - .4byte sub_08019410 - .4byte sub_08019444 - -gUnk_080B3E40:: @ 080B3E40 - .incbin "playerItemBow/gUnk_080B3E40.bin" - .4byte gUnk_080B3E78 - .incbin "playerItemBow/gUnk_080B3E40_1.bin" - .4byte gUnk_080B3E70 - .incbin "playerItemBow/gUnk_080B3E40_2.bin" - .4byte gUnk_080B3E78 - .incbin "playerItemBow/gUnk_080B3E40_3.bin" - .4byte gUnk_080B3E70 diff --git a/data/data_080B3E70.s b/data/data_080B3E70.s index d8421c03..772b73cc 100644 --- a/data/data_080B3E70.s +++ b/data/data_080B3E70.s @@ -4,11 +4,5 @@ .section .rodata .align 2 -gUnk_080B3E70:: @ 080B3E70 - .incbin "data_080B3E70/gUnk_080B3E70.bin" - -gUnk_080B3E78:: @ 080B3E78 - .incbin "data_080B3E70/gUnk_080B3E78.bin" - gUnk_080B3E80:: @ 080B3E80 .incbin "data_080B3E70/gUnk_080B3E80.bin" diff --git a/linker.ld b/linker.ld index e9cc6385..a38a9b18 100644 --- a/linker.ld +++ b/linker.ld @@ -893,7 +893,7 @@ SECTIONS { src/collision.o(.rodata); data/data_080B3740.o(.rodata); data/const/playerItem/playerItemGustBig.o(.rodata); - data/const/playerItem/playerItemBow.o(.rodata); + src/playerItem/playerItemBow.o(.rodata); data/data_080B3E70.o(.rodata); src/playerItem/playerItemSwordBeam.o(.rodata); data/data_080B4410.o(.rodata); diff --git a/src/playerItem/playerItemBow.c b/src/playerItem/playerItemBow.c index 8d58c563..5451585f 100644 --- a/src/playerItem/playerItemBow.c +++ b/src/playerItem/playerItemBow.c @@ -9,8 +9,6 @@ #include "sound.h" #include "save.h" -extern void (*const gUnk_080B3E30[])(Entity*); - typedef struct { Entity base; u8 unk_68; @@ -30,13 +28,9 @@ typedef struct { s8 unk_5; u8 animIndex; u8 unk_7; - Hitbox* hitbox; + const Hitbox* hitbox; } struct_080B3E40; -extern const struct_080B3E40 gUnk_080B3E40[]; - -void sub_0801917C(PlayerItemBowEntity*); - extern u8 gUnk_08003E44; extern Entity* sub_08008782(Entity*, u32, s32, s32); @@ -44,11 +38,34 @@ extern void sub_08017744(Entity*); extern void ModArrows(s32); void sub_08019468(PlayerItemBowEntity*); +void sub_08018FE4(PlayerItemBowEntity*); +void sub_0801917C(PlayerItemBowEntity*); +void sub_08019410(PlayerItemBowEntity*); +void sub_08019444(PlayerItemBowEntity*); void PlayerItemBow(Entity* this) { - gUnk_080B3E30[(this->action)](this); + static void (*const gUnk_080B3E30[])(PlayerItemBowEntity*) = { + sub_08018FE4, + sub_0801917C, + sub_08019410, + sub_08019444, + }; + gUnk_080B3E30[this->action]((PlayerItemBowEntity*)this); } +static const Hitbox gUnk_080B3E70; +static const Hitbox gUnk_080B3E78; + +static const struct_080B3E40 gUnk_080B3E40[] = { + { -3, -12, 0, 0, 0, -5, 2, 0, &gUnk_080B3E78 }, + { 8, -4, 1, 0, 5, 0, 1, 0, &gUnk_080B3E70 }, + { 0, 1, 0, 1, 0, 5, 2, 0, &gUnk_080B3E78 }, + { -8, -4, 0, 0, -5, 0, 1, 0, &gUnk_080B3E70 }, +}; + +static const Hitbox gUnk_080B3E70 = { 0, 0, { 4, 0, 0, 0 }, 6, 4 }; +static const Hitbox gUnk_080B3E78 = { 0, 0, { 0, 0, 0, 4 }, 4, 6 }; + void sub_08018FE4(PlayerItemBowEntity* this) { Entity* object; const struct_080B3E40* ptr; @@ -81,7 +98,7 @@ void sub_08018FE4(PlayerItemBowEntity* this) { super->animIndex = ptr->animIndex; this->unk_6c = ptr->unk_4; this->unk_70 = ptr->unk_5; - super->hitbox = ptr->hitbox; + super->hitbox = (Hitbox*)ptr->hitbox; sub_0801766C(super); if (super->hurtType == 0x0e) { super->animIndex += 6; @@ -221,21 +238,21 @@ void sub_0801917C(PlayerItemBowEntity* this) { } } -void sub_08019410(Entity* this) { - if (this->timer < 0xf) { - InitializeAnimation(this, this->animIndex); +void sub_08019410(PlayerItemBowEntity* this) { + if (super->timer < 0xf) { + InitializeAnimation(super, super->animIndex); } else { - GetNextFrame(this); + GetNextFrame(super); } - if (this->timer-- == 0) { + if (super->timer-- == 0) { DeleteThisEntity(); } } -void sub_08019444(Entity* this) { - GetNextFrame(this); - LinearMoveUpdate(this); - if (GravityUpdate(this, Q_8_8(32.0)) == 0) { +void sub_08019444(PlayerItemBowEntity* this) { + GetNextFrame(super); + LinearMoveUpdate(super); + if (GravityUpdate(super, Q_8_8(32.0)) == 0) { DeleteThisEntity(); } } From a78e5f4ca9a7cbdd6b761ccc8cdb3c5a0ab36490 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 22:34:33 +0300 Subject: [PATCH 04/11] Move const data into playerItemGustBig --- assets/assets.json | 25 --------------- data/const/playerItem/playerItemGustBig.s | 32 -------------------- linker.ld | 2 +- src/playerItem/playerItemGustBig.c | 37 +++++++++++++++++------ 4 files changed, 29 insertions(+), 67 deletions(-) delete mode 100644 data/const/playerItem/playerItemGustBig.s diff --git a/assets/assets.json b/assets/assets.json index 59ff182f..f09ae565 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -3566,31 +3566,6 @@ "start": 736544, "size": 176 }, - { - "path": "playerItemGustBig/gUnk_080B3DE0.bin", - "start": 736736, - "size": 8 - }, - { - "path": "playerItemGustBig/gUnk_080B3DF4.bin", - "start": 736756, - "size": 36 - }, - { - "path": "playerItemGustBig/gUnk_080B3E18.bin", - "start": 736792, - "size": 8 - }, - { - "path": "playerItemGustBig/gUnk_080B3E20.bin", - "start": 736800, - "size": 8 - }, - { - "path": "playerItemGustBig/gUnk_080B3E28.bin", - "start": 736808, - "size": 8 - }, { "path": "data_080B3E70/gUnk_080B3E80.bin", "start": 736896, diff --git a/data/const/playerItem/playerItemGustBig.s b/data/const/playerItem/playerItemGustBig.s deleted file mode 100644 index 2e439ed3..00000000 --- a/data/const/playerItem/playerItemGustBig.s +++ /dev/null @@ -1,32 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_080B3DD0:: @ 080B3DD0 - .4byte sub_08018CBC - .4byte sub_08018DE8 - .4byte sub_08018E68 - .4byte sub_08018F6C - -gUnk_080B3DE0:: @ 080B3DE0 - .incbin "playerItemGustBig/gUnk_080B3DE0.bin" - -gUnk_080B3DE8:: @ 080B3DE8 - .4byte gUnk_080B3E18 - .4byte gUnk_080B3E20 - .4byte gUnk_080B3E28 - -gUnk_080B3DF4:: @ 080B3DF4 - .incbin "playerItemGustBig/gUnk_080B3DF4.bin" - -gUnk_080B3E18:: @ 080B3E18 - .incbin "playerItemGustBig/gUnk_080B3E18.bin" - -gUnk_080B3E20:: @ 080B3E20 - .incbin "playerItemGustBig/gUnk_080B3E20.bin" - -gUnk_080B3E28:: @ 080B3E28 - .incbin "playerItemGustBig/gUnk_080B3E28.bin" diff --git a/linker.ld b/linker.ld index a38a9b18..7dc04024 100644 --- a/linker.ld +++ b/linker.ld @@ -892,7 +892,7 @@ SECTIONS { src/npc.o(.rodata); src/collision.o(.rodata); data/data_080B3740.o(.rodata); - data/const/playerItem/playerItemGustBig.o(.rodata); + src/playerItem/playerItemGustBig.o(.rodata); src/playerItem/playerItemBow.o(.rodata); data/data_080B3E70.o(.rodata); src/playerItem/playerItemSwordBeam.o(.rodata); diff --git a/src/playerItem/playerItemGustBig.c b/src/playerItem/playerItemGustBig.c index ede960db..6a46fe94 100644 --- a/src/playerItem/playerItemGustBig.c +++ b/src/playerItem/playerItemGustBig.c @@ -7,20 +7,22 @@ extern void sub_08078CD0(Entity*); extern void sub_08018FA0(Entity*); +extern void sub_08018CBC(Entity*); +extern void sub_08018DE8(Entity*); +extern void sub_08018E68(Entity*); extern void sub_08018F6C(Entity*); -extern void (*const gUnk_080B3DD0[])(Entity*); - -extern Hitbox gUnk_080B3E18; -extern u8 gUnk_080B3DE0[]; -extern Hitbox* gUnk_080B3DE8[]; - extern u32 sub_08007DD6(u32, const u16*); -extern const u16 gUnk_080B3DF4[]; extern const u8 gUnk_08003E44[]; void PlayerItemGustBig(Entity* this) { + static void (*const gUnk_080B3DD0[])(Entity*) = { + sub_08018CBC, + sub_08018DE8, + sub_08018E68, + sub_08018F6C, + }; if (this->health) { this->iframes = 0; gUnk_080B3DD0[this->action](this); @@ -29,6 +31,23 @@ void PlayerItemGustBig(Entity* this) { } } +static const u8 gUnk_080B3DE0[] = { 0x10, 0x2, 0x20, 0x3, 0x40, 0x6, 0, 0 }; +static const Hitbox gUnk_080B3E18; +static const Hitbox gUnk_080B3E20; +static const Hitbox gUnk_080B3E28; +static const Hitbox* const gUnk_080B3DE8[] = { + &gUnk_080B3E18, + &gUnk_080B3E20, + &gUnk_080B3E28, +}; +static const u16 gUnk_080B3DF4[] = { + 0x75, 0x1, 0x76, 0x1, 0x3ac, 0x1, 0x4050, 0x1, 0x377, 0x1, 0x378, 0x1, 0x71, 0x1, 0x72, 0x1, 0, 0, +}; + +static const Hitbox gUnk_080B3E18 = { 0, 0, { 6, 3, 3, 6 }, 6, 6 }; +static const Hitbox gUnk_080B3E20 = { 0, 0, { 6, 3, 3, 6 }, 8, 8 }; +static const Hitbox gUnk_080B3E28 = { 0, 0, { 6, 3, 3, 6 }, 12, 12 }; + void sub_08018CBC(Entity* this) { u32 PVar1; u8 uVar2; @@ -49,7 +68,7 @@ void sub_08018CBC(Entity* this) { this->timer = 0x56; this->hurtType = 0x1c; this->damage = 6; - this->hitbox = &gUnk_080B3E18; + this->hitbox = (Hitbox*)&gUnk_080B3E18; this->child->spriteOffsetX = 0; this->child->spriteSettings.draw = 0; } else { @@ -65,7 +84,7 @@ void sub_08018CBC(Entity* this) { this->timer = gUnk_080B3DE0[this->type * 2]; this->damage = gUnk_080B3DE0[this->type * 2 + 1]; this->hurtType = 0x1b; - this->hitbox = gUnk_080B3DE8[this->type]; + this->hitbox = (Hitbox*)gUnk_080B3DE8[this->type]; (u32*)gPlayerEntity.field_0x70.WORD = this; sub_08078CD0(&gPlayerEntity); (u32*)gPlayerEntity.field_0x70.WORD = pEVar3; From ce25a10148995371005d56a64e9a132d77356e8e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 22:38:00 +0300 Subject: [PATCH 05/11] Move const data into playerItemSpiralBeam --- assets/assets.json | 5 ----- data/const/playerItem/playerItemSpiralBeam.s | 12 ------------ linker.ld | 2 +- src/playerItem/playerItemSpiralBeam.c | 12 ++++++++---- 4 files changed, 9 insertions(+), 22 deletions(-) delete mode 100644 data/const/playerItem/playerItemSpiralBeam.s diff --git a/assets/assets.json b/assets/assets.json index f09ae565..c48b731a 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -33905,11 +33905,6 @@ "start": 1088184, "size": 16 }, - { - "path": "playerItemSpiralBeam/gUnk_08109AD0.bin", - "start": 1088208, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Gentari_0.bin", "start": 1088216, diff --git a/data/const/playerItem/playerItemSpiralBeam.s b/data/const/playerItem/playerItemSpiralBeam.s deleted file mode 100644 index 0ce9c6d0..00000000 --- a/data/const/playerItem/playerItemSpiralBeam.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08109AC8:: @ 08109AC8 - .4byte sub_0805FBE8 - .4byte sub_0805FC74 - -gUnk_08109AD0:: @ 08109AD0 - .incbin "playerItemSpiralBeam/gUnk_08109AD0.bin" diff --git a/linker.ld b/linker.ld index 7dc04024..39bb8747 100644 --- a/linker.ld +++ b/linker.ld @@ -1149,7 +1149,7 @@ SECTIONS { data/const/manager/manager38.o(.rodata); data/const/manager/manager39.o(.rodata); data/data_08108E6C.o(.rodata); - data/const/playerItem/playerItemSpiralBeam.o(.rodata); + src/playerItem/playerItemSpiralBeam.o(.rodata); data/animations/npc/gentari.o(.rodata); data/const/npc/festari.o(.rodata); data/animations/npc/festari.o(.rodata); diff --git a/src/playerItem/playerItemSpiralBeam.c b/src/playerItem/playerItemSpiralBeam.c index af4c0eae..153edce5 100644 --- a/src/playerItem/playerItemSpiralBeam.c +++ b/src/playerItem/playerItemSpiralBeam.c @@ -4,22 +4,26 @@ #include "effects.h" #include "asm.h" -extern void (*const gUnk_08109AC8[])(Entity*); -extern Hitbox gUnk_08109AD0; extern u8 gUnk_08003E44; +void sub_0805FBE8(Entity*); void sub_0805FC74(Entity*); void PlayerItemSpiralBeam(Entity* this) { - gUnk_08109AC8[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0805FBE8, + sub_0805FC74, + }; + actionFuncs[this->action](this); } void sub_0805FBE8(Entity* this) { + static const Hitbox gUnk_08109AD0 = { 0, 0, { 4, 0, 0, 0 }, 6, 6 }; CopyPosition(&gPlayerEntity, this); this->action++; this->spriteSettings.draw = TRUE; this->collisionFlags = gPlayerEntity.collisionFlags + 1; - this->hitbox = &gUnk_08109AD0; + this->hitbox = (Hitbox*)&gUnk_08109AD0; this->speed = 0x380; this->animationState = this->animationState & 0x7f; if (this->collisionLayer == 2) { From eb7a55f464fc95cf0297b8b61379508838855dc3 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 22:40:07 +0300 Subject: [PATCH 06/11] Put const data into festari --- data/const/npc/festari.s | 10 ---------- linker.ld | 2 +- src/npc/festari.c | 14 ++++++++++---- 3 files changed, 11 insertions(+), 15 deletions(-) delete mode 100644 data/const/npc/festari.s diff --git a/data/const/npc/festari.s b/data/const/npc/festari.s deleted file mode 100644 index 6d4307ce..00000000 --- a/data/const/npc/festari.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08109BBC:: @ 08109BBC - .4byte sub_0805FE10 - .4byte sub_0805FE48 - .4byte sub_0805FF18 diff --git a/linker.ld b/linker.ld index 39bb8747..080aadfd 100644 --- a/linker.ld +++ b/linker.ld @@ -1151,7 +1151,7 @@ SECTIONS { data/data_08108E6C.o(.rodata); src/playerItem/playerItemSpiralBeam.o(.rodata); data/animations/npc/gentari.o(.rodata); - data/const/npc/festari.o(.rodata); + src/npc/festari.o(.rodata); data/animations/npc/festari.o(.rodata); data/const/npc/forestMinish.o(.rodata); data/animations/npc/forestMinish.o(.rodata); diff --git a/src/npc/festari.c b/src/npc/festari.c index 2ee629fb..235463ce 100644 --- a/src/npc/festari.c +++ b/src/npc/festari.c @@ -3,12 +3,18 @@ #include "functions.h" #include "npc.h" -extern void sub_0805FF2C(Entity*, ScriptExecutionContext*); - -extern void (*const gUnk_08109BBC[])(Entity*); +void sub_0805FF2C(Entity*, ScriptExecutionContext*); +void sub_0805FE10(Entity* this); +void sub_0805FE48(Entity* this); +void sub_0805FF18(Entity* this); void Festari(Entity* this) { - gUnk_08109BBC[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0805FE10, + sub_0805FE48, + sub_0805FF18, + }; + actionFuncs[this->action](this); } void sub_0805FE10(Entity* this) { From 51ee1d70289a0baa982d47f5eee550a43f3ee041 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 22:43:29 +0300 Subject: [PATCH 07/11] Put const data into npc9 --- data/const/npc/npc9.s | 11 ----------- linker.ld | 2 +- src/npc/npc9.c | 13 +++++++++++-- 3 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 data/const/npc/npc9.s diff --git a/data/const/npc/npc9.s b/data/const/npc/npc9.s deleted file mode 100644 index 0a047807..00000000 --- a/data/const/npc/npc9.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0810C290:: @ 0810C290 - .4byte sub_08062AF0 - .4byte sub_08062B14 - .4byte sub_08062B48 - .4byte sub_08062B70 diff --git a/linker.ld b/linker.ld index 080aadfd..88c5aa40 100644 --- a/linker.ld +++ b/linker.ld @@ -1163,7 +1163,7 @@ SECTIONS { data/animations/npc/townsperson.o(.rodata); data/const/npc/kid.o(.rodata); data/animations/npc/kid.o(.rodata); - data/const/npc/npc9.o(.rodata); + src/npc/npc9.o(.rodata); data/animations/npc/npc9.o(.rodata); data/const/npc/stamp.o(.rodata); data/animations/npc/stamp.o(.rodata); diff --git a/src/npc/npc9.c b/src/npc/npc9.c index 6e1ff9f6..087b8c2d 100644 --- a/src/npc/npc9.c +++ b/src/npc/npc9.c @@ -3,10 +3,19 @@ #include "message.h" #include "npc.h" -extern void (*const gUnk_0810C290[])(Entity*); +void sub_08062AF0(Entity*); +void sub_08062B14(Entity*); +void sub_08062B48(Entity*); +void sub_08062B70(Entity*); void NPC9(Entity* this) { - gUnk_0810C290[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_08062AF0, + sub_08062B14, + sub_08062B48, + sub_08062B70, + }; + actionFuncs[this->action](this); } void sub_08062AF0(Entity* this) { From 57cb7af7c476d5a8088e1686ced19a5903a70444 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 22:57:15 +0300 Subject: [PATCH 08/11] Put const data into stamp --- assets/assets.json | 5 ----- data/const/npc/stamp.s | 18 ------------------ include/npc.h | 2 +- linker.ld | 2 +- src/npc/stamp.c | 39 +++++++++++++++++++++++++++++---------- src/npcUtils.c | 2 +- src/object/greatFairy.c | 1 - 7 files changed, 32 insertions(+), 37 deletions(-) delete mode 100644 data/const/npc/stamp.s diff --git a/assets/assets.json b/assets/assets.json index c48b731a..4551fdc2 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -35784,11 +35784,6 @@ "size": 7, "type": "animation" }, - { - "path": "stamp/gUnk_0810C2E4.bin", - "start": 1098468, - "size": 16 - }, { "path": "animations/gSpriteAnimations_Marcy_0.bin", "start": 1098592, diff --git a/data/const/npc/stamp.s b/data/const/npc/stamp.s deleted file mode 100644 index b2d1d2ca..00000000 --- a/data/const/npc/stamp.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gStampBehaviors1:: @ 0810C2CC - .4byte sub_08062BD4 - .4byte sub_08062BF8 - .4byte sub_08062C24 - .4byte sub_08062C54 - -gStampBehaviors2:: @ 0810C2DC - .4byte sub_08062C7C - .4byte sub_08062CA4 - -gUnk_0810C2E4:: @ 0810C2E4 - .incbin "stamp/gUnk_0810C2E4.bin" diff --git a/include/npc.h b/include/npc.h index 43c399fe..20e66117 100644 --- a/include/npc.h +++ b/include/npc.h @@ -30,7 +30,7 @@ u32 sub_0806EE20(Entity* ent); s32 sub_0806F078(Entity* ent, s32 a2); void sub_0806F118(Entity* ent); void sub_0806F188(Entity* ent); -void ShowNPCDialogue(Entity* ent, Dialog* dia); +void ShowNPCDialogue(Entity* ent, const Dialog* dia); Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); u32 UpdateFuseInteraction(Entity*); diff --git a/linker.ld b/linker.ld index 88c5aa40..c5b6f7a9 100644 --- a/linker.ld +++ b/linker.ld @@ -1165,7 +1165,7 @@ SECTIONS { data/animations/npc/kid.o(.rodata); src/npc/npc9.o(.rodata); data/animations/npc/npc9.o(.rodata); - data/const/npc/stamp.o(.rodata); + src/npc/stamp.o(.rodata); data/animations/npc/stamp.o(.rodata); data/const/npc/marcy.o(.rodata); data/animations/npc/marcy.o(.rodata); diff --git a/src/npc/stamp.c b/src/npc/stamp.c index 2390a2a9..aedc91c6 100644 --- a/src/npc/stamp.c +++ b/src/npc/stamp.c @@ -5,18 +5,28 @@ #include "effects.h" #include "npc.h" -extern void sub_08062CA4(Entity*); - -extern void (*gStampBehaviors1[4])(Entity*); -extern void (*gStampBehaviors2[2])(Entity*); - -extern Dialog gUnk_0810C2E4[2]; +void sub_08062CA4(Entity*); +void sub_08062BD4(Entity*); +void sub_08062BF8(Entity*); +void sub_08062C24(Entity*); +void sub_08062C54(Entity*); +void sub_08062C7C(Entity*); void Stamp(Entity* ent) { + static void (*const actionFuncs[4])(Entity*) = { + sub_08062BD4, + sub_08062BF8, + sub_08062C24, + sub_08062C54, + }; + static void (*const scriptedActionFuncs[2])(Entity*) = { + sub_08062C7C, + sub_08062CA4, + }; if ((ent->flags & ENT_SCRIPTED) != 0) { - gStampBehaviors2[ent->action](ent); + scriptedActionFuncs[ent->action](ent); } else { - gStampBehaviors1[ent->action](ent); + actionFuncs[ent->action](ent); } } @@ -69,8 +79,17 @@ void sub_08062CA4(Entity* ent) { } void sub_08062CBC(Entity* ent) { - u32 uVar1 = CheckKinstoneFused(44); - ShowNPCDialogue(ent, &gUnk_0810C2E4[(-uVar1 | uVar1) >> 31]); + static const Dialog gUnk_0810C2E4[2] = { + { 0, 0, 0x3, 1, { 0x4001, 0x4000 } }, + { 0, 0, 0x3, 1, { 0x4003, 0x4002 } }, + }; + u32 uVar1; + if (CheckKinstoneFused(44)) { + uVar1 = 1; + } else { + uVar1 = 0; + } + ShowNPCDialogue(ent, &gUnk_0810C2E4[uVar1]); } void sub_08062CE0(Entity* ent) { diff --git a/src/npcUtils.c b/src/npcUtils.c index c6cf4c74..3bbc8db0 100644 --- a/src/npcUtils.c +++ b/src/npcUtils.c @@ -336,7 +336,7 @@ void sub_0806F188(Entity* ent) { gSave.unk1C1[idx] = 0xF3; } -void ShowNPCDialogue(Entity* ent, Dialog* dia) { +void ShowNPCDialogue(Entity* ent, const Dialog* dia) { u32 uVar1; s32 temp; u32 uVar2; diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index b8cf0c60..fe7b88a8 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -21,7 +21,6 @@ extern void (*const GreatFairy_Form1Behaviors[])(Entity*); extern void (*const GreatFairy_Form2Behaviors[])(Entity*); extern void (*const gUnk_081207A4[])(Entity*); -extern u32 gUnk_0810C2E4; extern const s16 GreatFairy_RippleOffsets[10]; extern u8 gUnk_0812079C[8]; extern s8 gUnk_081207AC[]; From 9f323b8fc30fe274ebb5fb1670b001947813de77 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 23:02:57 +0300 Subject: [PATCH 09/11] Put const data into marcy --- assets/assets.json | 5 ----- data/const/npc/marcy.s | 8 -------- linker.ld | 2 +- src/npc/marcy.c | 5 ++--- 4 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 data/const/npc/marcy.s diff --git a/assets/assets.json b/assets/assets.json index 4551fdc2..1eb7a9ff 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -35802,11 +35802,6 @@ "size": 14, "type": "animation" }, - { - "path": "marcy/gUnk_0810C34C.bin", - "start": 1098572, - "size": 20 - }, { "path": "animations/gSpriteAnimations_Wheaton_0.bin", "start": 1098696, diff --git a/data/const/npc/marcy.s b/data/const/npc/marcy.s deleted file mode 100644 index bae27b19..00000000 --- a/data/const/npc/marcy.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0810C34C:: @ 0810C34C - .incbin "marcy/gUnk_0810C34C.bin" diff --git a/linker.ld b/linker.ld index c5b6f7a9..3c59e855 100644 --- a/linker.ld +++ b/linker.ld @@ -1167,7 +1167,7 @@ SECTIONS { data/animations/npc/npc9.o(.rodata); src/npc/stamp.o(.rodata); data/animations/npc/stamp.o(.rodata); - data/const/npc/marcy.o(.rodata); + src/npc/marcy.o(.rodata); data/animations/npc/marcy.o(.rodata); data/const/npc/wheaton.o(.rodata); data/animations/npc/wheaton.o(.rodata); diff --git a/src/npc/marcy.c b/src/npc/marcy.c index bc49dab1..8fa1f14b 100644 --- a/src/npc/marcy.c +++ b/src/npc/marcy.c @@ -4,8 +4,6 @@ #include "message.h" #include "item.h" -extern u16 gUnk_0810C34C[]; - void Marcy(Entity* this) { if (this->action == 0) { this->action += 1; @@ -16,6 +14,7 @@ void Marcy(Entity* this) { } void sub_08062D18(Entity* this, ScriptExecutionContext* context) { + static const u16 msgIndices[] = { 0x4004, 0x400b, 0x4009, 0x400a, 0, 0, 0, 0, 0, 0 }; u8 tmp = 0; if ((GetInventoryValue(ITEM_SKILL_PERIL_BEAM) != 0) && (CheckLocalFlag(0x26) == 0)) { tmp = 7; @@ -50,7 +49,7 @@ void sub_08062D18(Entity* this, ScriptExecutionContext* context) { tmp = 3; } - MessageNoOverlap(gUnk_0810C34C[tmp], this); + MessageNoOverlap(msgIndices[tmp], this); if (tmp == 0) { context->condition = TRUE; } else { From d7fbc73414f540c23b61d8032a5160fdf73fdcde Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 23:06:06 +0300 Subject: [PATCH 10/11] Put const data into wheaton --- assets/assets.json | 5 ----- data/const/npc/wheaton.s | 8 -------- linker.ld | 2 +- src/npc/wheaton.c | 5 ++--- 4 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 data/const/npc/wheaton.s diff --git a/assets/assets.json b/assets/assets.json index 1eb7a9ff..108fbc7a 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -35826,11 +35826,6 @@ "size": 17, "type": "animation" }, - { - "path": "wheaton/gUnk_0810C3C0.bin", - "start": 1098688, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Pita_0.bin", "start": 1098821, diff --git a/data/const/npc/wheaton.s b/data/const/npc/wheaton.s deleted file mode 100644 index 6a481f63..00000000 --- a/data/const/npc/wheaton.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0810C3C0:: @ 0810C3C0 - .incbin "wheaton/gUnk_0810C3C0.bin" diff --git a/linker.ld b/linker.ld index 3c59e855..5df63689 100644 --- a/linker.ld +++ b/linker.ld @@ -1169,7 +1169,7 @@ SECTIONS { data/animations/npc/stamp.o(.rodata); src/npc/marcy.o(.rodata); data/animations/npc/marcy.o(.rodata); - data/const/npc/wheaton.o(.rodata); + src/npc/wheaton.o(.rodata); data/animations/npc/wheaton.o(.rodata); data/const/npc/pita.o(.rodata); data/animations/npc/pita.o(.rodata); diff --git a/src/npc/wheaton.c b/src/npc/wheaton.c index e7c5e69b..daa98a6f 100644 --- a/src/npc/wheaton.c +++ b/src/npc/wheaton.c @@ -1,14 +1,13 @@ #include "npc.h" -extern Hitbox gUnk_0810C3C0; - void Wheaton(Entity* this) { + static const Hitbox gUnk_0810C3C0 = { 0, 4, { 0, 0, 0, 0 }, 6, 12 }; if (this->action == 0) { this->action++; SetDefaultPriority(this, PRIO_MESSAGE); SortEntityAbove(this, this); - this->hitbox = &gUnk_0810C3C0; + this->hitbox = (Hitbox*)&gUnk_0810C3C0; this->spriteOffsetY = 0xfe; sub_0807DD64(this); } From f1904de1b5c273397321753f19eb7ed6ee346923 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 13 Apr 2022 23:18:02 +0300 Subject: [PATCH 11/11] put const data into pita --- assets/assets.json | 36 ------------------------------------ data/const/npc/pita.s | 22 ---------------------- linker.ld | 2 +- src/npc/pita.c | 30 +++++++++++++++++++++--------- 4 files changed, 22 insertions(+), 68 deletions(-) delete mode 100644 data/const/npc/pita.s diff --git a/assets/assets.json b/assets/assets.json index 108fbc7a..e3c57a2e 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -35838,42 +35838,6 @@ "size": 30, "type": "animation" }, - { - "path": "pita/gUnk_0810C428_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1096572 - }, - "size": 8 - }, - { - "path": "pita/gUnk_0810C428_1_USA-JP-DEMO_USA-DEMO_JP.bin", - "variants": [ - "USA", - "JP", - "DEMO_USA", - "DEMO_JP" - ], - "start": 1098792, - "size": 8 - }, - { - "path": "pita/gUnk_0810C430.bin", - "start": 1098800, - "size": 5 - }, - { - "path": "pita/gUnk_0810C435.bin", - "start": 1098805, - "size": 8 - }, - { - "path": "pita/gUnk_0810C43D.bin", - "start": 1098813, - "size": 8 - }, { "path": "animations/gSpriteAnimations_MinishEzlo_2.bin", "start": 1098912, diff --git a/data/const/npc/pita.s b/data/const/npc/pita.s deleted file mode 100644 index 3b61c0e2..00000000 --- a/data/const/npc/pita.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0810C428:: @ 0810C428 -.ifdef EU - @ TODO only small differences - .incbin "pita/gUnk_0810C428_EU.bin" -.else - .incbin "pita/gUnk_0810C428_1_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif - -gUnk_0810C430:: @ 0810C430 - .incbin "pita/gUnk_0810C430.bin" - -gUnk_0810C435:: @ 0810C435 - .incbin "pita/gUnk_0810C435.bin" - -gUnk_0810C43D:: @ 0810C43D - .incbin "pita/gUnk_0810C43D.bin" diff --git a/linker.ld b/linker.ld index 5df63689..e1ab765c 100644 --- a/linker.ld +++ b/linker.ld @@ -1171,7 +1171,7 @@ SECTIONS { data/animations/npc/marcy.o(.rodata); src/npc/wheaton.o(.rodata); data/animations/npc/wheaton.o(.rodata); - data/const/npc/pita.o(.rodata); + src/npc/pita.o(.rodata); data/animations/npc/pita.o(.rodata); data/const/npc/minishEzlo.o(.rodata); data/animations/npc/minishEzlo.o(.rodata); diff --git a/src/npc/pita.c b/src/npc/pita.c index c4272f5c..030bb1f1 100644 --- a/src/npc/pita.c +++ b/src/npc/pita.c @@ -1,18 +1,27 @@ #include "npc.h" #include "item.h" -extern Hitbox gUnk_0810C428; - -extern u8 gUnk_0810C430[4]; -extern u8 gUnk_0810C435[]; -extern u8 gUnk_0810C43D[]; - void Pita(Entity* this) { + static const Hitbox gUnk_0810C428 = { +#if EU + 0, + 2, + { 0, 0, 0, 0 }, + 6, + 18, +#else + 0, + 2, + { 0, 0, 0, 0 }, + 10, + 18, +#endif + }; if (this->action == 0) { this->action += 1; SetDefaultPriority(this, PRIO_MESSAGE); SortEntityAbove(this, this); - this->hitbox = &gUnk_0810C428; + this->hitbox = (Hitbox*)&gUnk_0810C428; sub_0807DD64(this); } sub_0807DD94(this, NULL); @@ -33,6 +42,9 @@ void RemoveAllBakedGoods(void) { bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { u32 tmp; u32 tmp2; + static const u8 chanceForPrize[] = { 0x20, 0x40, 0x60, 0x80, 0xFF }; + static const u8 gUnk_0810C435[] = { 0x10, 0x10, 0x10, 0x20, 0x20, 0x30, 0x30, 0x30 }; + static const u8 gUnk_0810C43D[] = { 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75 }; //! @bug: tmp is uninitialized, in practice player must have an item here if (GetInventoryValue(ITEM_BRIOCHE) != 0) { @@ -51,13 +63,13 @@ bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { SetLocalFlag(SHOP03_PAN_1ST); tmp = 4; } - if ((Random() & 0xff) > gUnk_0810C430[tmp]) { + if ((Random() & 0xff) > chanceForPrize[tmp]) { context->condition = FALSE; return FALSE; } else { tmp = GetRandomByWeight(gUnk_0810C435); tmp2 = gUnk_0810C43D[tmp]; - InitItemGetSequence(0x5c, tmp2, 1); + InitItemGetSequence(ITEM_KINSTONE, tmp2, 1); MessageNoOverlap(0x3c05, this); context->condition = TRUE; return TRUE;