tmc/include/object.h

427 lines
9.0 KiB
C

#ifndef OBJECT_H
#define OBJECT_H
#include "global.h"
#include "asm.h"
#include "common.h"
#include "sound.h"
#include "flags.h"
#include "effects.h"
#include "room.h"
#include "coord.h"
#include "entity.h"
#include "player.h"
extern void sub_0807879C(Entity*);
extern void sub_080787C0(Entity*);
extern void sub_080787B4(Entity*);
extern void sub_0808C650(Entity*, u32);
extern u32 sub_0808C67C(void);
extern void sub_0808C688(void);
extern void sub_080A2BE4(Entity*, u32);
void CreateDust(Entity* parent);
void CreateDustAt(s32, s32, u32);
void CreateDustSmall(Entity* parent);
Entity* CreateSpeechBubbleQuestionMark(Entity*, s32, s32);
Entity* CreateSpeechBubbleExclamationMark(Entity*, s32, s32);
Entity* CreateSpeechBubbleSleep(Entity*, s32, s32);
typedef enum {
GROUND_ITEM,
DEATH_FX,
SHOP_ITEM,
BUTTON,
MINISH_EMOTICON,
POT,
EZLO_CAP,
PUSHED_BLOCK,
LOCKED_DOOR,
OBJECT_9,
OBJECT_A,
OBJECT_B,
CHEST_SPAWNER,
OBJECT_D,
OBJECT_E,
SPECIAL_FX,
OBJECT_10,
OBJECT_11,
OBJECT_12,
RAILTRACK,
LILYPAD_LARGE,
OBJECT_15,
FLOATING_PLATFORM,
OBJECT_17,
EVIL_SPIRIT,
HOUSE_DOOR_EXT,
RUPEE_OBJECT,
GREAT_FAIRY,
OBJECT_1C,
OBJECT_1D,
OBJECT_1E,
OBJECT_1F,
OBJECT_20,
OBJECT_21,
FIGURINE_DEVICE,
EYE_SWITCH,
PRESSURE_PLATE,
BIG_BARREL,
BARREL_INSIDE,
PUSHABLE_STATUE,
OBJECT_28,
AMBIENT_CLOUDS,
OBJECT_2A,
OBJECT_2B,
BEANSTALK,
SMOKE,
PUSHABLE_ROCK,
HITTABLE_LEVER,
OBJECT_30,
FROZEN_FLOWER,
PULLABLE_MUSHROOM,
BOLLARD,
WARP_POINT,
OBJECT_35,
OBJECT_36,
OBJECT_37,
JAR_PORTAL,
BOSS_DOOR,
OBJECT_3A,
PORTAL_MUSHROOM_STALKS,
PORTAL_FALLING_PLAYER,
OBJECT_3D,
OBJECT_3E,
GIANT_LEAF,
FAIRY,
LADDER_UP,
OBJECT_42,
OBJECT_43,
OBJECT_44,
OBJECT_45,
GIANT_BOOK_LADDER,
HEART_CONTAINER,
FILE_SCREEN_OBJECTS,
OBJECT_49,
BACKGROUND_CLOUD,
OBJECT_4B,
PUSHABLE_FURNITURE,
FURNITURE,
MINISH_SIZED_ENTRANCE,
ARCHWAY,
GIANT_ROCK,
GIANT_ROCK2,
OBJECT_52,
OBJECT_53,
PULLABLE_LEVER,
MINECART,
THOUGHT_BUBBLE,
HIDDEN_LADDER_DOWN,
GENTARI_CURTAIN,
LAVA_PLATFORM,
PAPER,
OBJECT_5B,
MASK,
HOUSE_DOOR_INT,
WHIRLWIND,
OBJECT_BLOCKING_STAIRS,
SWORDSMAN_NEWSLETTER,
OBJECT_61,
GIANT_TWIG,
OBJECT_63,
OBJECT_64,
LADDER_HOLE,
OBJECT_66,
OBJECT_67,
OBJECT_68,
OBJECT_69,
OBJECT_6A,
CRENAL_BEAN_SPROUT,
MINECART_DOOR,
OBJECT_ON_PILLAR,
MINERAL_WATER_SOURCE,
MINISH_SIZED_ARCHWAY,
OBJECT_70,
PUSHABLE_GRAVE,
STONE_TABLET,
LILYPAD_SMALL,
OBJECT_74,
OBJECT_75,
OBJECT_76,
BELL,
HUGE_DECORATION,
OBJECT_79,
STEAM,
PUSHABLE_LEVER,
HUGE_SHOES,
OBJECT_ON_BEETLE,
OBJECT_7E,
PICO_BLOOM,
BOARD,
OBJECT_81,
BIG_VORTEX,
BIG_PUSHABLE_LEVER,
SMALL_ICE_BLOCK,
BIG_ICE_BLOCK,
OBJECT_86,
OCTOROK_BOSS_OBJECT,
HUGE_BOOK,
MAZAAL_BOSS_OBJECT,
CABIN_FURNITURE,
DOUBLE_BOOKSHELF,
BOOK,
FIREPLACE,
OBJECT_8E,
FROZEN_WATER_ELEMENT,
OBJECT_90,
OBJECT_91,
BAKER_OVEN,
LAMP,
WIND_TRIBE_FLAG,
BIRD,
OBJECT_96,
OBJECT_97,
OBJECT_98,
OBJECT_99,
HUGE_ACORN,
OBJECT_9B,
TREE_HIDING_PORTAL,
LIGHTABLE_SWITCH,
TREE_THORNS,
FAN,
ANGRY_STATUE,
PALACE_ARCHWAY,
OBJECT_A2,
CLOUD,
MINISH_LIGHT,
FIREBALL_CHAIN,
OBJECT_A6,
OBJECT_A7,
OBJECT_A8,
OBJECT_A9,
WATERFALL_OPENING,
OBJECT_AB,
FOUR_ELEMENTS,
OBJECT_AD,
FLOATING_BLOCK,
OBJECT_AF,
METAL_DOOR,
JAIL_BARS,
OBJECT_B2,
OBJECT_B3,
OBJECT_B4,
OBJECT_B5,
OBJECT_B6,
WELL,
WIND_TRIBE_TELEPORTER,
OBJECT_B9,
GYORG_BOSS_OBJECT,
WINDCREST,
LIT_AREA,
OBJECT_BD,
PINWHEEL,
OBJECT_BF,
ENEMY_ITEM,
OBJECT_C1,
} Object;
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 Rupee(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*);
#endif