summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2022-01-05 20:41:34 -0800
committertheo3 <arisstephenson2@gmail.com>2022-01-05 20:49:51 -0800
commitbde85fd004f20b594e2fb00fa1e2c870d73e9dda (patch)
tree616b8c21d5c61ee2a22193f7d8ed8c0d8f2cb5a8 /include
parentc7ee010e47fca132fa829a6cbf53ec4193f38f0b (diff)
doxygen groups
Diffstat (limited to 'include')
-rw-r--r--include/enemy.h204
-rw-r--r--include/global.h18
-rw-r--r--include/npc.h320
-rw-r--r--include/object.h388
-rw-r--r--include/projectile.h38
-rw-r--r--include/save.h82
6 files changed, 580 insertions, 470 deletions
diff --git a/include/enemy.h b/include/enemy.h
index 8e38e557..801eb97d 100644
--- a/include/enemy.h
+++ b/include/enemy.h
@@ -132,107 +132,107 @@ typedef enum {
/*0x66*/ ENEMY_66
} Enemy;
-extern void Octorok(Entity*);
-extern void Chuchu(Entity*);
-extern void Leever(Entity*);
-extern void Peahat(Entity*);
-extern void Rollobite(Entity*);
-extern void DarkNut(Entity*);
-extern void HangingSeed(Entity*);
-extern void Beetle(Entity*);
-extern void Keese(Entity*);
-extern void DoorMimic(Entity*);
-extern void RockChuchu(Entity*);
-extern void SpinyChuchu(Entity*);
-extern void CuccoChickAggr(Entity*);
-extern void Moldorm(Entity*);
-extern void EnemyE(Entity*);
-extern void Moldworm(Entity*);
-extern void Sluggula(Entity*);
-extern void Pesto(Entity*);
-extern void Puffstool(Entity*);
-extern void ChuchuBoss(Entity*);
-extern void LikeLike(Entity*);
-extern void SpearMoblin(Entity*);
-extern void BusinessScrub(Entity*);
-extern void RupeeLike(Entity*);
-extern void Madderpillar(Entity*);
-extern void WaterDrop(Entity*);
-extern void WallMaster(Entity*);
-extern void BombPeahat(Entity*);
-extern void Spark(Entity*);
-extern void Chaser(Entity*);
-extern void SpikedBeetle(Entity*);
-extern void SensorBladeTrap(Entity*);
-extern void Helmasaur(Entity*);
-extern void FallingBoulder(Entity*);
-extern void Bobomb(Entity*);
-extern void WallMaster2(Entity*);
-extern void Gleerok(Entity*);
-extern void VaatiEyesMacro(Entity*);
-extern void Tektite(Entity*);
-extern void WizzrobeWind(Entity*);
-extern void WizzrobeFire(Entity*);
-extern void WizzrobeIce(Entity*);
-extern void Armos(Entity*);
-extern void Eyegore(Entity*);
-extern void Rope(Entity*);
-extern void SmallPesto(Entity*);
-extern void AcroBandit(Entity*);
-extern void BladeTrap(Entity*);
-extern void Keaton(Entity*);
-extern void Crow(Entity*);
-extern void Mulldozer(Entity*);
-extern void Bombarossa(Entity*);
-extern void Wisp(Entity*);
-extern void SpinyBeetle(Entity*);
-extern void MazaalHead(Entity*);
-extern void MazaalMacro(Entity*);
-extern void MazaalHand(Entity*);
-extern void OctorokBoss(Entity*);
-extern void FlyingPot(Entity*);
-extern void Gibdo(Entity*);
-extern void OctorokGolden(Entity*);
-extern void TektiteGolden(Entity*);
-extern void RopeGolden(Entity*);
-extern void CloudPiranha(Entity*);
-extern void ScissorsBeetle(Entity*);
-extern void CuccoAggr(Entity*);
-extern void Stalfos(Entity*);
-extern void FlyingSkull(Entity*);
-extern void MazaalBracelet(Entity*);
-extern void Takkuri(Entity*);
-extern void BowMoblin(Entity*);
-extern void Lakitu(Entity*);
-extern void LakituCloud(Entity*);
-extern void Enemy49(Entity*);
-extern void VaatiRebornEnemy(Entity*);
-extern void VaatiProjectile(Entity*);
-extern void BallChainSoldier(Entity*);
-extern void Enemy4D(Entity*);
-extern void Ghini(Entity*);
-extern void VaatiTransfigured(Entity*);
-extern void Enemy50(Entity*);
-extern void VaatiWrath(Entity*);
-extern void VaatiArm(Entity*);
-extern void Dust(Entity*);
-extern void VaatiBall(Entity*);
-extern void Slime(Entity*);
-extern void MiniSlime(Entity*);
-extern void FireballGuy(Entity*);
-extern void MiniFireballGuy(Entity*);
-extern void VaatiTransfiguredEye(Entity*);
-extern void BusinessScrubPrologue(Entity*);
-extern void GyorgFemale(Entity*);
-extern void GyorgMale(Entity*);
-extern void Curtain(Entity*);
-extern void VaatiWrathEye(Entity*);
-extern void GyorgChild(Entity*);
-extern void GyorgFemaleEye(Entity*);
-extern void Enemy62(Entity*);
-extern void GyorgFemaleMouth(Entity*);
-extern void Enemy64(Entity*);
-extern void TreeItem(Entity*);
-extern void Enemy66(Entity*);
+void Octorok(Entity*);
+void Chuchu(Entity*);
+void Leever(Entity*);
+void Peahat(Entity*);
+void Rollobite(Entity*);
+void DarkNut(Entity*);
+void HangingSeed(Entity*);
+void Beetle(Entity*);
+void Keese(Entity*);
+void DoorMimic(Entity*);
+void RockChuchu(Entity*);
+void SpinyChuchu(Entity*);
+void CuccoChickAggr(Entity*);
+void Moldorm(Entity*);
+void EnemyE(Entity*);
+void Moldworm(Entity*);
+void Sluggula(Entity*);
+void Pesto(Entity*);
+void Puffstool(Entity*);
+void ChuchuBoss(Entity*);
+void LikeLike(Entity*);
+void SpearMoblin(Entity*);
+void BusinessScrub(Entity*);
+void RupeeLike(Entity*);
+void Madderpillar(Entity*);
+void WaterDrop(Entity*);
+void WallMaster(Entity*);
+void BombPeahat(Entity*);
+void Spark(Entity*);
+void Chaser(Entity*);
+void SpikedBeetle(Entity*);
+void SensorBladeTrap(Entity*);
+void Helmasaur(Entity*);
+void FallingBoulder(Entity*);
+void Bobomb(Entity*);
+void WallMaster2(Entity*);
+void Gleerok(Entity*);
+void VaatiEyesMacro(Entity*);
+void Tektite(Entity*);
+void WizzrobeWind(Entity*);
+void WizzrobeFire(Entity*);
+void WizzrobeIce(Entity*);
+void Armos(Entity*);
+void Eyegore(Entity*);
+void Rope(Entity*);
+void SmallPesto(Entity*);
+void AcroBandit(Entity*);
+void BladeTrap(Entity*);
+void Keaton(Entity*);
+void Crow(Entity*);
+void Mulldozer(Entity*);
+void Bombarossa(Entity*);
+void Wisp(Entity*);
+void SpinyBeetle(Entity*);
+void MazaalHead(Entity*);
+void MazaalMacro(Entity*);
+void MazaalHand(Entity*);
+void OctorokBoss(Entity*);
+void FlyingPot(Entity*);
+void Gibdo(Entity*);
+void OctorokGolden(Entity*);
+void TektiteGolden(Entity*);
+void RopeGolden(Entity*);
+void CloudPiranha(Entity*);
+void ScissorsBeetle(Entity*);
+void CuccoAggr(Entity*);
+void Stalfos(Entity*);
+void FlyingSkull(Entity*);
+void MazaalBracelet(Entity*);
+void Takkuri(Entity*);
+void BowMoblin(Entity*);
+void Lakitu(Entity*);
+void LakituCloud(Entity*);
+void Enemy49(Entity*);
+void VaatiRebornEnemy(Entity*);
+void VaatiProjectile(Entity*);
+void BallChainSoldier(Entity*);
+void Enemy4D(Entity*);
+void Ghini(Entity*);
+void VaatiTransfigured(Entity*);
+void Enemy50(Entity*);
+void VaatiWrath(Entity*);
+void VaatiArm(Entity*);
+void Dust(Entity*);
+void VaatiBall(Entity*);
+void Slime(Entity*);
+void MiniSlime(Entity*);
+void FireballGuy(Entity*);
+void MiniFireballGuy(Entity*);
+void VaatiTransfiguredEye(Entity*);
+void BusinessScrubPrologue(Entity*);
+void GyorgFemale(Entity*);
+void GyorgMale(Entity*);
+void Curtain(Entity*);
+void VaatiWrathEye(Entity*);
+void GyorgChild(Entity*);
+void GyorgFemaleEye(Entity*);
+void Enemy62(Entity*);
+void GyorgFemaleMouth(Entity*);
+void Enemy64(Entity*);
+void TreeItem(Entity*);
+void Enemy66(Entity*);
#endif
diff --git a/include/global.h b/include/global.h
index 512a903d..d9d22943 100644
--- a/include/global.h
+++ b/include/global.h
@@ -1,6 +1,24 @@
#ifndef GUARD_GLOBAL_H
#define GUARD_GLOBAL_H
+/**
+ * @defgroup Tasks Tasks
+ * @defgroup Subtasks Subtasks
+ */
+
+/** @defgroup Entities Entities */
+///@{
+/**
+ * @defgroup Player Player
+ * @defgroup Enemies Enemies
+ * @defgroup Projectiles Projectiles
+ * @defgroup Objects Objects
+ * @defgroup NPCs NPCs
+ * @defgroup Items Items
+ * @defgroup Managers Managers
+ */
+///@}
+
#include "gba/gba.h"
#include <string.h>
diff --git a/include/npc.h b/include/npc.h
index 3ad4beff..1b84e617 100644
--- a/include/npc.h
+++ b/include/npc.h
@@ -177,166 +177,166 @@ enum NPC {
/*0x7f*/ NPC_NONE_39,
};
-extern void Gentari(Entity*);
-extern void Gentari_Fusion(Entity*);
-extern void Festari(Entity*);
-extern void Festari_Fusion(Entity*);
-extern void ForestMinish(Entity*);
-extern void ForestMinish_Head(Entity*);
-extern void ForestMinish_Fusion(Entity*);
-extern void Postman(Entity*);
-extern void Postman_Fusion(Entity*);
-extern void NPC5(Entity*);
-extern void Townsperson(Entity*);
-extern void Townsperson_Head(Entity*);
-extern void Townsperson_Fusion(Entity*);
-extern void Kid(Entity*);
-extern void Kid_Head(Entity*);
-extern void Kid_Fusion(Entity*);
-extern void Guard(Entity*);
-extern void Guard_Head(Entity*);
-extern void NPC9(Entity*);
-extern void Stamp(Entity*);
-extern void Maid(Entity*);
-extern void Maid_Head(Entity*);
-extern void Marcy(Entity*);
-extern void Wheaton(Entity*);
-extern void Pita(Entity*);
-extern void MinishEzlo(Entity*);
-extern void MinishEzlo_Head(Entity*);
-extern void Mailbox(Entity*);
-extern void Beedle(Entity*);
-extern void Beedle_Head(Entity*);
-extern void Brocco(Entity*);
-extern void Brocco_Fusion(Entity*);
-extern void SittingPerson(Entity*);
-extern void SittingPerson_Head(Entity*);
-extern void SittingPerson_Fusion(Entity*);
-extern void Pina(Entity*);
-extern void Pina_Fusion(Entity*);
-extern void Din(Entity*);
-extern void Din_Fusion(Entity*);
-extern void Nayru(Entity*);
-extern void Nayru_Fusion(Entity*);
-extern void Farore(Entity*);
-extern void Farore_Fusion(Entity*);
-extern void Sturgeon(Entity*);
-extern void Sturgeon_Head(Entity*);
-extern void Sturgeon_Fusion(Entity*);
-extern void TingleSiblings(Entity*);
-extern void TingleSiblings_Fusion(Entity*);
-extern void Stockwell(Entity*);
-extern void Talon(Entity*);
-extern void Talon_Head(Entity*);
-extern void Talon_Fusion(Entity*);
-extern void Malon(Entity*);
-extern void Malon_Fusion(Entity*);
-extern void Epona(Entity*);
-extern void Epona_Fusion(Entity*);
-extern void MilkCart(Entity*);
-extern void GhostBrothers(Entity*);
-extern void GhostBrothers_Fusion(Entity*);
-extern void Smith(Entity*);
-extern void Smith_Head(Entity*);
-extern void Smith_Fusion(Entity*);
-extern void NPC23(Entity*);
-extern void KingDaltus(Entity*);
-extern void KingDaltus_Fusion(Entity*);
-extern void MinisterPotho(Entity*);
-extern void MinisterPotho_Fusion(Entity*);
-extern void NPC26(Entity*);
-extern void Vaati(Entity*);
-extern void Zelda(Entity*);
-extern void Mutoh(Entity*);
-extern void Mutoh_Head(Entity*);
-extern void Mutoh_Fusion(Entity*);
-extern void Carpenter(Entity*);
-extern void Carpenter_Head(Entity*);
-extern void Carpenter_Fusion(Entity*);
-extern void CastorWildsStatue(Entity*);
-extern void CastorWildsStatue_Fusion(Entity*);
-extern void Cat(Entity*);
-extern void Cat_Fusion(Entity*);
-extern void MountainMinish(Entity*);
-extern void MountainMinish_Head(Entity*);
-extern void MountainMinish_Fusion(Entity*);
-extern void ZeldaFollower(Entity*);
-extern void Melari(Entity*);
-extern void Melari_Head(Entity*);
-extern void Melari_Fusion(Entity*);
-extern void BladeBrothers(Entity*);
-extern void BladeBrothers_Fusion(Entity*);
-extern void Cow(Entity*);
-extern void Cow_Fusion(Entity*);
-extern void Goron(Entity*);
-extern void Goron_Fusion(Entity*);
-extern void GoronMerchant(Entity*);
-extern void Gorman(Entity*);
-extern void Gorman_Head(Entity*);
-extern void Dog(Entity*);
-extern void Dog_Head(Entity*);
-extern void Dog_Fusion(Entity*);
-extern void Syrup(Entity*);
-extern void Syrup_Head(Entity*);
-extern void Rem(Entity*);
-extern void TownMinish(Entity*);
-extern void TownMinish_Head(Entity*);
-extern void TownMinish_Fusion(Entity*);
-extern void Librari(Entity*);
-extern void Librari_Fusion(Entity*);
-extern void Percy(Entity*);
-extern void Percy_Head(Entity*);
-extern void Percy_Fusion(Entity*);
-extern void VaatiReborn(Entity*);
-extern void MoblinLady(Entity*);
-extern void Librarians(Entity*);
-extern void Farmers(Entity*);
-extern void Farmers_Head(Entity*);
-extern void Farmers_Fusion(Entity*);
-extern void Carlov(Entity*);
-extern void Dampe(Entity*);
-extern void Dampe_Fusion(Entity*);
-extern void DrLeft(Entity*);
-extern void KingGustaf(Entity*);
-extern void Gina(Entity*);
-extern void Gina_Fusion(Entity*);
-extern void Simon(Entity*);
-extern void Anju(Entity*);
-extern void Anju_Fusion(Entity*);
-extern void Mama(Entity*);
-extern void Mama_Head(Entity*);
-extern void Mama_Fusion(Entity*);
-extern void Emma(Entity*);
-extern void Teachers(Entity*);
-extern void Teachers_Head(Entity*);
-extern void Teachers_Fusion(Entity*);
-extern void WindTribespeople(Entity*);
-extern void WindTribespeople_Head(Entity*);
-extern void WindTribespeople_Fusion(Entity*);
-extern void Gregal(Entity*);
-extern void Gregal_Fusion(Entity*);
-extern void MayorHagen(Entity*);
-extern void MayorHagen_Fusion(Entity*);
-extern void BigGoron(Entity*);
-extern void Ezlo(Entity*);
-extern void NPC4E(Entity*);
-extern void NPC4E_Fusion(Entity*);
-extern void NPC4F(Entity*);
-extern void ClothesRack(Entity*);
-extern void PicolyteBottle(Entity*);
-extern void SmallTownMinish(Entity*);
-extern void HurdyGurdyMan(Entity*);
-extern void HurdyGurdyMan_Head(Entity*);
-extern void HurdyGurdyMan_Fusion(Entity*);
-extern void Cucco(Entity*);
-extern void Cucco_Fusion(Entity*);
-extern void CuccoChick(Entity*);
-extern void CuccoChick_Fusion(Entity*);
-extern void FusionMenuNPC(Entity*);
-extern void FusionMenuNPC_Head(Entity*);
-extern void Phonograph(Entity*);
-extern void NPC58(Entity*);
-extern void NPC58_Head(Entity*);
+void Gentari(Entity*);
+void Gentari_Fusion(Entity*);
+void Festari(Entity*);
+void Festari_Fusion(Entity*);
+void ForestMinish(Entity*);
+void ForestMinish_Head(Entity*);
+void ForestMinish_Fusion(Entity*);
+void Postman(Entity*);
+void Postman_Fusion(Entity*);
+void NPC5(Entity*);
+void Townsperson(Entity*);
+void Townsperson_Head(Entity*);
+void Townsperson_Fusion(Entity*);
+void Kid(Entity*);
+void Kid_Head(Entity*);
+void Kid_Fusion(Entity*);
+void Guard(Entity*);
+void Guard_Head(Entity*);
+void NPC9(Entity*);
+void Stamp(Entity*);
+void Maid(Entity*);
+void Maid_Head(Entity*);
+void Marcy(Entity*);
+void Wheaton(Entity*);
+void Pita(Entity*);
+void MinishEzlo(Entity*);
+void MinishEzlo_Head(Entity*);
+void Mailbox(Entity*);
+void Beedle(Entity*);
+void Beedle_Head(Entity*);
+void Brocco(Entity*);
+void Brocco_Fusion(Entity*);
+void SittingPerson(Entity*);
+void SittingPerson_Head(Entity*);
+void SittingPerson_Fusion(Entity*);
+void Pina(Entity*);
+void Pina_Fusion(Entity*);
+void Din(Entity*);
+void Din_Fusion(Entity*);
+void Nayru(Entity*);
+void Nayru_Fusion(Entity*);
+void Farore(Entity*);
+void Farore_Fusion(Entity*);
+void Sturgeon(Entity*);
+void Sturgeon_Head(Entity*);
+void Sturgeon_Fusion(Entity*);
+void TingleSiblings(Entity*);
+void TingleSiblings_Fusion(Entity*);
+void Stockwell(Entity*);
+void Talon(Entity*);
+void Talon_Head(Entity*);
+void Talon_Fusion(Entity*);
+void Malon(Entity*);
+void Malon_Fusion(Entity*);
+void Epona(Entity*);
+void Epona_Fusion(Entity*);
+void MilkCart(Entity*);
+void GhostBrothers(Entity*);
+void GhostBrothers_Fusion(Entity*);
+void Smith(Entity*);
+void Smith_Head(Entity*);
+void Smith_Fusion(Entity*);
+void NPC23(Entity*);
+void KingDaltus(Entity*);
+void KingDaltus_Fusion(Entity*);
+void MinisterPotho(Entity*);
+void MinisterPotho_Fusion(Entity*);
+void NPC26(Entity*);
+void Vaati(Entity*);
+void Zelda(Entity*);
+void Mutoh(Entity*);
+void Mutoh_Head(Entity*);
+void Mutoh_Fusion(Entity*);
+void Carpenter(Entity*);
+void Carpenter_Head(Entity*);
+void Carpenter_Fusion(Entity*);
+void CastorWildsStatue(Entity*);
+void CastorWildsStatue_Fusion(Entity*);
+void Cat(Entity*);
+void Cat_Fusion(Entity*);
+void MountainMinish(Entity*);
+void MountainMinish_Head(Entity*);
+void MountainMinish_Fusion(Entity*);
+void ZeldaFollower(Entity*);
+void Melari(Entity*);
+void Melari_Head(Entity*);
+void Melari_Fusion(Entity*);
+void BladeBrothers(Entity*);
+void BladeBrothers_Fusion(Entity*);
+void Cow(Entity*);
+void Cow_Fusion(Entity*);
+void Goron(Entity*);
+void Goron_Fusion(Entity*);
+void GoronMerchant(Entity*);
+void Gorman(Entity*);
+void Gorman_Head(Entity*);
+void Dog(Entity*);
+void Dog_Head(Entity*);
+void Dog_Fusion(Entity*);
+void Syrup(Entity*);
+void Syrup_Head(Entity*);
+void Rem(Entity*);
+void TownMinish(Entity*);
+void TownMinish_Head(Entity*);
+void TownMinish_Fusion(Entity*);
+void Librari(Entity*);
+void Librari_Fusion(Entity*);
+void Percy(Entity*);
+void Percy_Head(Entity*);
+void Percy_Fusion(Entity*);
+void VaatiReborn(Entity*);
+void MoblinLady(Entity*);
+void Librarians(Entity*);
+void Farmers(Entity*);
+void Farmers_Head(Entity*);
+void Farmers_Fusion(Entity*);
+void Carlov(Entity*);
+void Dampe(Entity*);
+void Dampe_Fusion(Entity*);
+void DrLeft(Entity*);
+void KingGustaf(Entity*);
+void Gina(Entity*);
+void Gina_Fusion(Entity*);
+void Simon(Entity*);
+void Anju(Entity*);
+void Anju_Fusion(Entity*);
+void Mama(Entity*);
+void Mama_Head(Entity*);
+void Mama_Fusion(Entity*);
+void Emma(Entity*);
+void Teachers(Entity*);
+void Teachers_Head(Entity*);
+void Teachers_Fusion(Entity*);
+void WindTribespeople(Entity*);
+void WindTribespeople_Head(Entity*);
+void WindTribespeople_Fusion(Entity*);
+void Gregal(Entity*);
+void Gregal_Fusion(Entity*);
+void MayorHagen(Entity*);
+void MayorHagen_Fusion(Entity*);
+void BigGoron(Entity*);
+void Ezlo(Entity*);
+void NPC4E(Entity*);
+void NPC4E_Fusion(Entity*);
+void NPC4F(Entity*);
+void ClothesRack(Entity*);
+void PicolyteBottle(Entity*);
+void SmallTownMinish(Entity*);
+void HurdyGurdyMan(Entity*);
+void HurdyGurdyMan_Head(Entity*);
+void HurdyGurdyMan_Fusion(Entity*);
+void Cucco(Entity*);
+void Cucco_Fusion(Entity*);
+void CuccoChick(Entity*);
+void CuccoChick_Fusion(Entity*);
+void FusionMenuNPC(Entity*);
+void FusionMenuNPC_Head(Entity*);
+void Phonograph(Entity*);
+void NPC58(Entity*);
+void NPC58_Head(Entity*);
extern void (*const gNPCFunctions[128][3])(Entity*);
diff --git a/include/object.h b/include/object.h
index 20688709..ded574e3 100644
--- a/include/object.h
+++ b/include/object.h
@@ -226,200 +226,200 @@ typedef enum {
OBJECT_C1,
} Object;
-extern void ItemOnGround(Entity*);
-extern void DeathFx(Entity*);
-extern void ItemForSale(Entity*);
-extern void Button(Entity*);
-extern void MinishEmoticon(Entity*);
-extern void Pot(Entity*);
-extern void EzloCap(Entity*);
-extern void BlockPushed(Entity*);
-extern void LockedDoor(Entity*);
-extern void Object9(Entity*);
-extern void ObjectA(Entity*);
-extern void ObjectB(Entity*);
-extern void ChestSpawner(Entity*);
-extern void ObjectD(Entity*);
-extern void ObjectE(Entity*);
-extern void SpecialFx(Entity*);
-extern void Object10(Entity*);
-extern void Object11(Entity*);
-extern void Object12(Entity*);
-extern void Railtrack(Entity*);
-extern void LilypadLarge(Entity*);
-extern void Object15(Entity*);
-extern void FloatingPlatform(Entity*);
-extern void Object17(Entity*);
-extern void EvilSpirit(Entity*);
-extern void HouseDoorExterior(Entity*);
-extern void Object1A(Entity*);
-extern void GreatFairy(Entity*);
-extern void Object1C(Entity*);
-extern void Object1D(Entity*);
-extern void Object1E(Entity*);
-extern void Object1F(Entity*);
-extern void Object20(Entity*);
-extern void Object21(Entity*);
-extern void FigurineDevice(Entity*);
-extern void EyeSwitch(Entity*);
-extern void PressurePlate(Entity*);
-extern void BigBarrel(Entity*);
-extern void BarrelInside(Entity*);
-extern void PushableStatue(Entity*);
-extern void Object28(Entity*);
-extern void AmbientClouds(Entity*);
-extern void Object2A(Entity*);
-extern void Object2B(Entity*);
-extern void Beanstalk(Entity*);
-extern void Smoke(Entity*);
-extern void PushableRock(Entity*);
-extern void HittableLever(Entity*);
-extern void Object30(Entity*);
-extern void FrozenFlower(Entity*);
-extern void PullableMushroom(Entity*);
-extern void Bollard(Entity*);
-extern void WarpPoint(Entity*);
-extern void Object35(Entity*);
-extern void Object36(Entity*);
-extern void Object37(Entity*);
-extern void JarPortal(Entity*);
-extern void BossDoor(Entity*);
-extern void Object3A(Entity*);
-extern void MacroMushromStalks(Entity*);
-extern void MacroPlayer(Entity*);
-extern void Object3D(Entity*);
-extern void Object3E(Entity*);
-extern void GiantLeaf(Entity*);
-extern void Fairy(Entity*);
-extern void LadderUp(Entity*);
-extern void Object42(Entity*);
-extern void Object43(Entity*);
-extern void Object44(Entity*);
-extern void Object45(Entity*);
-extern void GiantBookLadder(Entity*);
-extern void HeartContainer(Entity*);
-extern void FileScreenObjects(Entity*);
-extern void Object49(Entity*);
-extern void BackgroundCloud(Entity*);
-extern void Object4B(Entity*);
-extern void PushableFurniture(Entity*);
-extern void Furniture(Entity*);
-extern void MinishSizedEntrance(Entity*);
-extern void Archway(Entity*);
-extern void GiantRock(Entity*);
-extern void GiantRock2(Entity*);
-extern void Object52(Entity*);
-extern void Object53(Entity*);
-extern void PullableLever(Entity*);
-extern void Minecart(Entity*);
-extern void ThoughtBubble(Entity*);
-extern void HiddenLadderDown(Entity*);
-extern void GentariCurtain(Entity*);
-extern void LavaPlatform(Entity*);
-extern void Paper(Entity*);
-extern void Object5B(Entity*);
-extern void Mask(Entity*);
-extern void HouseDoorInterior(Entity*);
-extern void Whirlwind(Entity*);
-extern void ObjectBlockingStairs(Entity*);
-extern void SwordsmanNewsletter(Entity*);
-extern void Object61(Entity*);
-extern void GiantTwig(Entity*);
-extern void Object63(Entity*);
-extern void Object64(Entity*);
-extern void LadderHoleInBookshelf(Entity*);
-extern void Object66(Entity*);
-extern void Object67(Entity*);
-extern void Object68(Entity*);
-extern void Object69(Entity*);
-extern void Object6A(Entity*);
-extern void CrenalBeanSprout(Entity*);
-extern void MinecartDoor(Entity*);
-extern void ObjectOnPillar(Entity*);
-extern void MineralWaterSource(Entity*);
-extern void MinishSizedArchway(Entity*);
-extern void Object70(Entity*);
-extern void PushableGrave(Entity*);
-extern void StoneTablet(Entity*);
-extern void LilypadSmall(Entity*);
-extern void Object74(Entity*);
-extern void Object75(Entity*);
-extern void Object76(Entity*);
-extern void Bell(Entity*);
-extern void MacroDecoration(Entity*);
-extern void Object79(Entity*);
-extern void Steam(Entity*);
-extern void PushableLever(Entity*);
-extern void MacroShoes(Entity*);
-extern void ObjectOnSpinyBeetle(Entity*);
-extern void Object7E(Entity*);
-extern void PicoBloom(Entity*);
-extern void Board(Entity*);
-extern void Object81(Entity*);
-extern void BigVortex(Entity*);
-extern void BigPushableLever(Entity*);
-extern void SmallIceBlock(Entity*);
-extern void BigIceBlock(Entity*);
-extern void Object86(Entity*);
-extern void OctorokBossObject(Entity*);
-extern void MacroBook(Entity*);
-extern void MazaalBossObject(Entity*);
-extern void CabinFurniture(Entity*);
-extern void DoubleBookshelf(Entity*);
-extern void Book(Entity*);
-extern void Fireplace(Entity*);
-extern void Object8E(Entity*);
-extern void FrozenWaterElement(Entity*);
-extern void Object90(Entity*);
-extern void Object91(Entity*);
-extern void BakerOven(Entity*);
-extern void Lamp(Entity*);
-extern void WindTribeFlag(Entity*);
-extern void Bird(Entity*);
-extern void Object96(Entity*);
-extern void Object97(Entity*);
-extern void Object98(Entity*);
-extern void Object99(Entity*);
-extern void MacroAcorn(Entity*);
-extern void Object9B(Entity*);
-extern void TreeHidingPortal(Entity*);
-extern void LightableSwitch(Entity*);
-extern void TreeThorns(Entity*);
-extern void Fan(Entity*);
-extern void AngryStatue(Entity*);
-extern void PalaceArchway(Entity*);
-extern void ObjectA2(Entity*);
-extern void Cloud(Entity*);
-extern void MinishLight(Entity*);
-extern void FireballChain(Entity*);
-extern void ObjectA6(Entity*);
-extern void ObjectA7(Entity*);
-extern void ObjectA8(Entity*);
-extern void ObjectA9(Entity*);
-extern void WaterfallOpening(Entity*);
-extern void ObjectAB(Entity*);
-extern void FourElements(Entity*);
-extern void ObjectAD(Entity*);
-extern void FloatingBlock(Entity*);
-extern void ObjectAF(Entity*);
-extern void MetalDoor(Entity*);
-extern void JailBars(Entity*);
-extern void ObjectB2(Entity*);
-extern void ObjectB3(Entity*);
-extern void ObjectB4(Entity*);
-extern void ObjectB5(Entity*);
-extern void ObjectB6(Entity*);
-extern void Well(Entity*);
-extern void WindTribeTeleporter(Entity*);
-extern void ObjectB9(Entity*);
-extern void GyorgBossObject(Entity*);
-extern void Windcrest(Entity*);
-extern void LitArea(Entity*);
-extern void ObjectBD(Entity*);
-extern void Pinwheel(Entity*);
-extern void ObjectBF(Entity*);
-extern void EnemyItem(Entity*);
-extern void ObjectC1(Entity*);
+void ItemOnGround(Entity*);
+void DeathFx(Entity*);
+void ItemForSale(Entity*);
+void Button(Entity*);
+void MinishEmoticon(Entity*);
+void Pot(Entity*);
+void EzloCap(Entity*);
+void BlockPushed(Entity*);
+void LockedDoor(Entity*);
+void Object9(Entity*);
+void ObjectA(Entity*);
+void ObjectB(Entity*);
+void ChestSpawner(Entity*);
+void ObjectD(Entity*);
+void ObjectE(Entity*);
+void SpecialFx(Entity*);
+void Object10(Entity*);
+void Object11(Entity*);
+void Object12(Entity*);
+void Railtrack(Entity*);
+void LilypadLarge(Entity*);
+void Object15(Entity*);
+void FloatingPlatform(Entity*);
+void Object17(Entity*);
+void EvilSpirit(Entity*);
+void HouseDoorExterior(Entity*);
+void Object1A(Entity*);
+void GreatFairy(Entity*);
+void Object1C(Entity*);
+void Object1D(Entity*);
+void Object1E(Entity*);
+void Object1F(Entity*);
+void Object20(Entity*);
+void Object21(Entity*);
+void FigurineDevice(Entity*);
+void EyeSwitch(Entity*);
+void PressurePlate(Entity*);
+void BigBarrel(Entity*);
+void BarrelInside(Entity*);
+void PushableStatue(Entity*);
+void Object28(Entity*);
+void AmbientClouds(Entity*);
+void Object2A(Entity*);
+void Object2B(Entity*);
+void Beanstalk(Entity*);
+void Smoke(Entity*);
+void PushableRock(Entity*);
+void HittableLever(Entity*);
+void Object30(Entity*);
+void FrozenFlower(Entity*);
+void PullableMushroom(Entity*);
+void Bollard(Entity*);
+void WarpPoint(Entity*);
+void Object35(Entity*);
+void Object36(Entity*);
+void Object37(Entity*);
+void JarPortal(Entity*);
+void BossDoor(Entity*);
+void Object3A(Entity*);
+void MacroMushromStalks(Entity*);
+void MacroPlayer(Entity*);
+void Object3D(Entity*);
+void Object3E(Entity*);
+void GiantLeaf(Entity*);
+void Fairy(Entity*);
+void LadderUp(Entity*);
+void Object42(Entity*);
+void Object43(Entity*);
+void Object44(Entity*);
+void Object45(Entity*);
+void GiantBookLadder(Entity*);
+void HeartContainer(Entity*);
+void FileScreenObjects(Entity*);
+void Object49(Entity*);
+void BackgroundCloud(Entity*);
+void Object4B(Entity*);
+void PushableFurniture(Entity*);
+void Furniture(Entity*);
+void MinishSizedEntrance(Entity*);
+void Archway(Entity*);
+void GiantRock(Entity*);
+void GiantRock2(Entity*);
+void Object52(Entity*);
+void Object53(Entity*);
+void PullableLever(Entity*);
+void Minecart(Entity*);
+void ThoughtBubble(Entity*);
+void HiddenLadderDown(Entity*);
+void GentariCurtain(Entity*);
+void LavaPlatform(Entity*);
+void Paper(Entity*);
+void Object5B(Entity*);
+void Mask(Entity*);
+void HouseDoorInterior(Entity*);
+void Whirlwind(Entity*);
+void ObjectBlockingStairs(Entity*);
+void SwordsmanNewsletter(Entity*);
+void Object61(Entity*);
+void GiantTwig(Entity*);
+void Object63(Entity*);
+void Object64(Entity*);
+void LadderHoleInBookshelf(Entity*);
+void Object66(Entity*);
+void Object67(Entity*);
+void Object68(Entity*);
+void Object69(Entity*);
+void Object6A(Entity*);
+void CrenalBeanSprout(Entity*);
+void MinecartDoor(Entity*);
+void ObjectOnPillar(Entity*);
+void MineralWaterSource(Entity*);
+void MinishSizedArchway(Entity*);
+void Object70(Entity*);
+void PushableGrave(Entity*);
+void StoneTablet(Entity*);
+void LilypadSmall(Entity*);
+void Object74(Entity*);
+void Object75(Entity*);
+void Object76(Entity*);
+void Bell(Entity*);
+void MacroDecoration(Entity*);
+void Object79(Entity*);
+void Steam(Entity*);
+void PushableLever(Entity*);
+void MacroShoes(Entity*);
+void ObjectOnSpinyBeetle(Entity*);
+void Object7E(Entity*);
+void PicoBloom(Entity*);
+void Board(Entity*);
+void Object81(Entity*);
+void BigVortex(Entity*);
+void BigPushableLever(Entity*);
+void SmallIceBlock(Entity*);
+void BigIceBlock(Entity*);
+void Object86(Entity*);
+void OctorokBossObject(Entity*);
+void MacroBook(Entity*);
+void MazaalBossObject(Entity*);
+void CabinFurniture(Entity*);
+void DoubleBookshelf(Entity*);
+void Book(Entity*);
+void Fireplace(Entity*);
+void Object8E(Entity*);
+void FrozenWaterElement(Entity*);
+void Object90(Entity*);
+void Object91(Entity*);
+void BakerOven(Entity*);
+void Lamp(Entity*);
+void WindTribeFlag(Entity*);
+void Bird(Entity*);
+void Object96(Entity*);
+void Object97(Entity*);
+void Object98(Entity*);
+void Object99(Entity*);
+void MacroAcorn(Entity*);
+void Object9B(Entity*);
+void TreeHidingPortal(Entity*);
+void LightableSwitch(Entity*);
+void TreeThorns(Entity*);
+void Fan(Entity*);
+void AngryStatue(Entity*);
+void PalaceArchway(Entity*);
+void ObjectA2(Entity*);
+void Cloud(Entity*);
+void MinishLight(Entity*);
+void FireballChain(Entity*);
+void ObjectA6(Entity*);
+void ObjectA7(Entity*);
+void ObjectA8(Entity*);
+void ObjectA9(Entity*);
+void WaterfallOpening(Entity*);
+void ObjectAB(Entity*);
+void FourElements(Entity*);
+void ObjectAD(Entity*);
+void FloatingBlock(Entity*);
+void ObjectAF(Entity*);
+void MetalDoor(Entity*);
+void JailBars(Entity*);
+void ObjectB2(Entity*);
+void ObjectB3(Entity*);
+void ObjectB4(Entity*);
+void ObjectB5(Entity*);
+void ObjectB6(Entity*);
+void Well(Entity*);
+void WindTribeTeleporter(Entity*);
+void ObjectB9(Entity*);
+void GyorgBossObject(Entity*);
+void Windcrest(Entity*);
+void LitArea(Entity*);
+void ObjectBD(Entity*);
+void Pinwheel(Entity*);
+void ObjectBF(Entity*);
+void EnemyItem(Entity*);
+void ObjectC1(Entity*);
extern void (*const gObjectFunctions[194])(Entity*);
diff --git a/include/projectile.h b/include/projectile.h
index 4eaf6a44..74b3580a 100644
--- a/include/projectile.h
+++ b/include/projectile.h
@@ -3,6 +3,44 @@
extern Entity* CreateProjectile(u32);
+void DarkNutSwordSlash(Entity*);
+void RockProjectile(Entity*);
+void BoneProjectile(Entity*);
+void MoblinSpear(Entity*);
+void DekuSeedProjectile(Entity*);
+void Projectile5(Entity*);
+void DirtBallProjectile(Entity*);
+void WindProjectile(Entity*);
+void FireProjectile(Entity*);
+void IceProjectile(Entity*);
+void GleerokProjectile(Entity*);
+void KeatonDagger(Entity*);
+void GuardLineOfSight(Entity*);
+void ArrowProjectile(Entity*);
+void MazaalEnergyBeam(Entity*);
+void OctorokBossProjectile(Entity*);
+void StalfosProjectile(Entity*);
+void LakituCloudProjectile(Entity*);
+void LakituLightning(Entity*);
+void MandiblesProjectile(Entity*);
+void RemovableDust(Entity*);
+void SpiderWeb(Entity*);
+void TorchTrapProjectile(Entity*);
+void GuruguruBarProjectile(Entity*);
+void V1DarkMagicProjectile(Entity*);
+void BallAndChain(Entity*);
+void V1FireProjectile(Entity*);
+void CannonballProjectile(Entity*);
+void V1EyeLaser(Entity*);
+void Winder(Entity*);
+void SpikedRollers(Entity*);
+void V2Projectile(Entity*);
+void V3HandProjectile(Entity*);
+void V3ElectricProjectile(Entity*);
+void GyorgTail(Entity*);
+void GyorgMaleEnergyProjectile(Entity*);
+void V3TennisBallProjectile(Entity*);
+
typedef enum {
/*00*/ DARK_NUT_SWORD_SLASH,
/*01*/ ROCK_PROJECTILE,
diff --git a/include/save.h b/include/save.h
index bd4f09a5..62d3a87e 100644
--- a/include/save.h
+++ b/include/save.h
@@ -20,27 +20,37 @@ typedef enum {
SAVE_DONE,
} SaveState;
-extern SaveResult HandleSave(u32 arg0);
+/**
+ * Attempt to save the game.
+ *
+ * @param idx The save slot.
+ * @return #SaveResult result.
+ */
+extern SaveResult HandleSave(u32 idx);
+/**
+ * Contains all information about a save file.
+ * The contents of this structure are read from and written to EEPROM.
+ */
typedef struct {
- /*0x000*/ u8 invalid;
- /*0x000*/ u8 initialized;
- /*0x002*/ u8 msg_speed;
- /*0x003*/ u8 brightness;
+ /*0x000*/ u8 invalid; /**< File is invalid. */
+ /*0x000*/ u8 initialized; /**< File is initialized. */
+ /*0x002*/ u8 msg_speed; /**< Message speed. */
+ /*0x003*/ u8 brightness; /**< Brightness. */
/*0x004*/ u8 filler4[0x2];
/*0x006*/ u8 unk6;
/*0x007*/ u8 unk7;
- /*0x008*/ u8 global_progress;
+ /*0x008*/ u8 global_progress; /**< @see UpdateGlobalProgress */
/*0x009*/ u8 field_0x9[0x34];
- /*0x040*/ u32 windcrests;
+ /*0x040*/ u32 windcrests; /**< Windcrest flags. */
/*0x044*/ u8 filler44[0xC];
/*0x050*/ u32 unk50;
/*0x054*/ u8 filler54[0xC];
- /*0x060*/ u32 areaVisitFlags[8];
- /*0x080*/ char name[FILENAME_LENGTH];
+ /*0x060*/ u32 areaVisitFlags[8]; /**< Area visit flags. */
+ /*0x080*/ char name[FILENAME_LENGTH]; /**< Save file name. */
/*0x086*/ u8 filler86[0x2];
- /*0x088*/ PlayerRoomStatus saved_status;
- /*0x0A8*/ Stats stats;
+ /*0x088*/ PlayerRoomStatus saved_status; /**< Player room status. */
+ /*0x0A8*/ Stats stats; /**< Player stats. */
/*0x0D0*/ u8 fillerD0[0x48];
/*0x118*/ u8 unk118[0x13];
/*0x12B*/ u8 unk12B[0x16];
@@ -48,25 +58,69 @@ typedef struct {
/*0x1C1*/ u8 unk1C1[128];
/*0x241*/ u8 unk241[13];
/*0x24E*/ u8 unk24E[14];
- /*0x25C*/ u8 flags[0x200];
+ /*0x25C*/ u8 flags[0x200]; /**< Flags. */
/*0x45C*/ u8 unk45C[0x10];
/*0x46C*/ u8 unk46C[0x20];
/*0x48C*/ u32 timers[7];
- /*0x4A8*/ u32 demo_timer;
+ /*0x4A8*/ u32 demo_timer; /**< Demo timer. */
/*0x4AC*/ u8 filler4ac[0x8];
} SaveFile;
+/**
+ * The current save file.
+ */
extern SaveFile gSave;
+/**
+ * Initialize the save system.
+ *
+ * @return Success
+ */
u32 InitSaveData(void);
+/**
+ * Read save header.
+ *
+ * @return Success.
+ */
+u32 Read_02000000(SaveHeader*);
+
+/**
+ * Write save header.
+ *
+ * @return Success.
+ */
u32 Write_02000000(SaveHeader*);
+
+/**
+ * Read save file.
+ *
+ * @return Success.
+ */
s32 ReadSaveFile(u32, SaveFile*);
-u32 Read_02000000(SaveHeader*);
+
+/**
+ * Mark a save file as deleted.
+ *
+ * @param index The save file index.
+ */
void SetFileStatusDeleted(u32 index);
extern const char gUnk_0811E470[];
+/**
+ * Update the global progress (0 - 10).
+ * There are 10 different indicators of game completion:
+ 9 : Flag SEIIKI_STAINED_GLASS
+ 8 : Flag LV5_CLEAR
+ 7 : Flag OUBO_KAKERA
+ 6 : Flag LV4_CLEAR
+ 5 : Flag LV3_CLEAR
+ 4 : Flag SOUGEN_08_TORITSUKI
+ 2 : Flag LV1_CLEAR
+ 1 : Default
+ }
+ */
void UpdateGlobalProgress(void);
#ifdef DEMO_USA