mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			431 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			431 lines
		
	
	
		
			8.5 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 "physics.h"
 | 
						|
 | 
						|
#include "entity.h"
 | 
						|
#include "player.h"
 | 
						|
 | 
						|
void sub_080787C0(Entity*);
 | 
						|
void sub_080787B4(Entity*);
 | 
						|
void sub_0808C650(Entity*, u32);
 | 
						|
u32 sub_0808C67C(void);
 | 
						|
void sub_0808C688(void);
 | 
						|
void SyncPlayerToPlatform(Entity*, bool32);
 | 
						|
void UpdateRailMovement(Entity*, u16**, u16*);
 | 
						|
void sub_080A2AF4(Entity*, s32, s32);
 | 
						|
Entity* CreateLargeWaterTrace(Entity*);
 | 
						|
void CreateSparkle(Entity*);
 | 
						|
 | 
						|
void CreateDust(Entity* parent);
 | 
						|
void CreateDustAt(s32, s32, u32);
 | 
						|
void CreateDustSmall(Entity* parent);
 | 
						|
Entity* CreateWaterTrace(Entity*);
 | 
						|
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,
 | 
						|
    CAMERA_TARGET,
 | 
						|
    OBJECT_A,
 | 
						|
    LINK_HOLDING_ITEM,
 | 
						|
    CHEST_SPAWNER,
 | 
						|
    UNUSED_SKULL,
 | 
						|
    CRACKING_GROUND,
 | 
						|
    SPECIAL_FX,
 | 
						|
    PLAYER_CLONE,
 | 
						|
    BUSH,
 | 
						|
    LIGHT_DOOR,
 | 
						|
    RAILTRACK,
 | 
						|
    LILYPAD_LARGE,
 | 
						|
    CHUCHU_BOSS_PARTICLE,
 | 
						|
    FLOATING_PLATFORM,
 | 
						|
    GUST_JAR_PARTICLE,
 | 
						|
    EVIL_SPIRIT,
 | 
						|
    HOUSE_DOOR_EXT,
 | 
						|
    RUPEE_OBJECT,
 | 
						|
    GREAT_FAIRY,
 | 
						|
    HOUSE_SIGN,
 | 
						|
    OBJECT_1D,
 | 
						|
    MOLE_MITTS_PARTICLE,
 | 
						|
    OBJECT_1F,
 | 
						|
    SMOKE_PARTICLE,
 | 
						|
    DIRT_PARTICLE,
 | 
						|
    FIGURINE_DEVICE,
 | 
						|
    EYE_SWITCH,
 | 
						|
    PRESSURE_PLATE,
 | 
						|
    BIG_BARREL,
 | 
						|
    BARREL_INSIDE,
 | 
						|
    PUSHABLE_STATUE,
 | 
						|
    PARALLAX_ROOM_VIEW,
 | 
						|
    AMBIENT_CLOUDS,
 | 
						|
    FLAME,
 | 
						|
    LILYPAD_LARGE_FALLING,
 | 
						|
    BEANSTALK,
 | 
						|
    SMOKE,
 | 
						|
    PUSHABLE_ROCK,
 | 
						|
    HITTABLE_LEVER,
 | 
						|
    OBJECT_30,
 | 
						|
    FROZEN_FLOWER,
 | 
						|
    PULLABLE_MUSHROOM,
 | 
						|
    BOLLARD,
 | 
						|
    WARP_POINT,
 | 
						|
    CARLOV_OBJECT,
 | 
						|
    BARREL_SPIDERWEB,
 | 
						|
    OBJECT_37,
 | 
						|
    JAR_PORTAL,
 | 
						|
    BOSS_DOOR,
 | 
						|
    WHITE_TRIANGLE_EFFECT,
 | 
						|
    PORTAL_MUSHROOM_STALKS,
 | 
						|
    PORTAL_FALLING_PLAYER,
 | 
						|
    MINISH_PORTAL_CLOSEUP,
 | 
						|
    MINISH_VILLAGE_OBJECT,
 | 
						|
    GIANT_LEAF,
 | 
						|
    FAIRY,
 | 
						|
    LADDER_UP,
 | 
						|
    LINK_FIRE,
 | 
						|
    SWORD_PARTICLE,
 | 
						|
    ROTATING_TRAPDOOR,
 | 
						|
    LAMP_PARTICLE,
 | 
						|
    GIANT_BOOK_LADDER,
 | 
						|
    HEART_CONTAINER,
 | 
						|
    FILE_SCREEN_OBJECTS,
 | 
						|
    CHUCHU_BOSS_START_PARTICLE,
 | 
						|
    BACKGROUND_CLOUD,
 | 
						|
    CHUCHU_BOSS_CUTSCENE,
 | 
						|
    PUSHABLE_FURNITURE,
 | 
						|
    FURNITURE,
 | 
						|
    MINISH_SIZED_ENTRANCE,
 | 
						|
    ARCHWAY,
 | 
						|
    GIANT_ROCK,
 | 
						|
    GIANT_ROCK2,
 | 
						|
    SPECIAL_CHEST,
 | 
						|
    OBJECT_53,
 | 
						|
    PULLABLE_LEVER,
 | 
						|
    MINECART,
 | 
						|
    THOUGHT_BUBBLE,
 | 
						|
    HIDDEN_LADDER_DOWN,
 | 
						|
    GENTARI_CURTAIN,
 | 
						|
    LAVA_PLATFORM,
 | 
						|
    PAPER,
 | 
						|
    BED_COVER,
 | 
						|
    MASK,
 | 
						|
    HOUSE_DOOR_INT,
 | 
						|
    WHIRLWIND,
 | 
						|
    OBJECT_BLOCKING_STAIRS,
 | 
						|
    SWORDSMAN_NEWSLETTER,
 | 
						|
    EZLO_CAP_FLYING,
 | 
						|
    GIANT_TWIG,
 | 
						|
    OBJECT_63,
 | 
						|
    THUNDERBOLD,
 | 
						|
    LADDER_HOLE,
 | 
						|
    WATER_DROP_OBJECT,
 | 
						|
    GLEEROK_PARTICLE,
 | 
						|
    LINK_EMPTYING_BOTTLE,
 | 
						|
    CUTSCENE_ORCHESTRATOR,
 | 
						|
    CUTSCENE_MISC_OBJECT,
 | 
						|
    CRENEL_BEAN_SPROUT,
 | 
						|
    MINECART_DOOR,
 | 
						|
    OBJECT_ON_PILLAR,
 | 
						|
    MINERAL_WATER_SOURCE,
 | 
						|
    MINISH_SIZED_ARCHWAY,
 | 
						|
    OBJECT_70,
 | 
						|
    PUSHABLE_GRAVE,
 | 
						|
    STONE_TABLET,
 | 
						|
    LILYPAD_SMALL,
 | 
						|
    MINISH_PORTAL_STONE,
 | 
						|
    MACRO_CRYSTAL,
 | 
						|
    MACRO_LEAF,
 | 
						|
    BELL,
 | 
						|
    HUGE_DECORATION,
 | 
						|
    SHRINKING_HIEROGLYPHS,
 | 
						|
    STEAM,
 | 
						|
    PUSHABLE_LEVER,
 | 
						|
    HUGE_SHOES,
 | 
						|
    OBJECT_ON_BEETLE,
 | 
						|
    MAZAAL_OBJECT,
 | 
						|
    PICO_BLOOM,
 | 
						|
    BOARD,
 | 
						|
    BENCH,
 | 
						|
    BIG_VORTEX,
 | 
						|
    BIG_PUSHABLE_LEVER,
 | 
						|
    SMALL_ICE_BLOCK,
 | 
						|
    BIG_ICE_BLOCK,
 | 
						|
    TRAPDOOR,
 | 
						|
    OCTOROK_BOSS_OBJECT,
 | 
						|
    HUGE_BOOK,
 | 
						|
    MAZAAL_BOSS_OBJECT,
 | 
						|
    CABIN_FURNITURE,
 | 
						|
    DOUBLE_BOOKSHELF,
 | 
						|
    BOOK,
 | 
						|
    FIREPLACE,
 | 
						|
    LIGHT_RAY,
 | 
						|
    FROZEN_WATER_ELEMENT,
 | 
						|
    WATER_ELEMENT,
 | 
						|
    FROZEN_OCTOROK,
 | 
						|
    BAKER_OVEN,
 | 
						|
    LAMP,
 | 
						|
    WIND_TRIBE_FLAG,
 | 
						|
    BIRD,
 | 
						|
    GRAVEYARD_KEY,
 | 
						|
    KEY_STEALING_TAKKURI,
 | 
						|
    GURUGURU_BAR,
 | 
						|
    HIT_SWITCH,
 | 
						|
    HUGE_ACORN,
 | 
						|
    VAATI2_PARTICLE,
 | 
						|
    TREE_HIDING_PORTAL,
 | 
						|
    LIGHTABLE_SWITCH,
 | 
						|
    TREE_THORNS,
 | 
						|
    FAN,
 | 
						|
    ANGRY_STATUE,
 | 
						|
    PALACE_ARCHWAY,
 | 
						|
    OBJECT_A2,
 | 
						|
    CLOUD,
 | 
						|
    MINISH_LIGHT,
 | 
						|
    FIREBALL_CHAIN,
 | 
						|
    SANCTUARY_STONE_TABLET,
 | 
						|
    OBJECT_A7,
 | 
						|
    OBJECT_A8,
 | 
						|
    MULLDOZER_SPAWN_POINT,
 | 
						|
    WATERFALL_OPENING,
 | 
						|
    VAATI1_PORTAL,
 | 
						|
    FOUR_ELEMENTS,
 | 
						|
    ELEMENTS_BACKGROUND,
 | 
						|
    FLOATING_BLOCK,
 | 
						|
    VAATI3_ARM,
 | 
						|
    METAL_DOOR,
 | 
						|
    JAIL_BARS,
 | 
						|
    FAN_WIND,
 | 
						|
    KINSTONE_SPARK,
 | 
						|
    JAPANESE_SUBTITLE,
 | 
						|
    VAATI3_PLAYER_OBJECT,
 | 
						|
    VAATI3_DEATH,
 | 
						|
    WELL,
 | 
						|
    WIND_TRIBE_TELEPORTER,
 | 
						|
    CUCCO_MINIGAME,
 | 
						|
    GYORG_BOSS_OBJECT,
 | 
						|
    WINDCREST,
 | 
						|
    LIT_AREA,
 | 
						|
    TITLE_SCREEN_OBJECT,
 | 
						|
    PINWHEEL,
 | 
						|
    OBJECT_BF,
 | 
						|
    ENEMY_ITEM,
 | 
						|
    LINK_ANIMATION,
 | 
						|
} Object;
 | 
						|
 | 
						|
void ItemOnGround();
 | 
						|
void DeathFx();
 | 
						|
void ItemForSale();
 | 
						|
void Button();
 | 
						|
void MinishEmoticon();
 | 
						|
void Pot();
 | 
						|
void EzloCap();
 | 
						|
void BlockPushed();
 | 
						|
void LockedDoor();
 | 
						|
void CameraTarget();
 | 
						|
void ObjectA();
 | 
						|
void LinkHoldingItem();
 | 
						|
void ChestSpawner();
 | 
						|
void UnusedSkull();
 | 
						|
void CrackingGround();
 | 
						|
void SpecialFx();
 | 
						|
void PlayerClone();
 | 
						|
void Bush();
 | 
						|
void LightDoor();
 | 
						|
void Railtrack();
 | 
						|
void LilypadLarge();
 | 
						|
void ChuchuBossParticle();
 | 
						|
void FloatingPlatform();
 | 
						|
void GustJarParticle();
 | 
						|
void EvilSpirit();
 | 
						|
void HouseDoorExterior();
 | 
						|
void Rupee();
 | 
						|
void GreatFairy();
 | 
						|
void HouseSign();
 | 
						|
void Object1D();
 | 
						|
void MoleMittsParticle();
 | 
						|
void Object1F();
 | 
						|
void SmokeParticle();
 | 
						|
void DirtParticle();
 | 
						|
void FigurineDevice();
 | 
						|
void EyeSwitch();
 | 
						|
void PressurePlate();
 | 
						|
void BigBarrel();
 | 
						|
void BarrelInside();
 | 
						|
void PushableStatue();
 | 
						|
void ParallaxRoomView();
 | 
						|
void AmbientClouds();
 | 
						|
void Flame();
 | 
						|
void LilypadLargeFalling();
 | 
						|
void Beanstalk();
 | 
						|
void Smoke();
 | 
						|
void PushableRock();
 | 
						|
void HittableLever();
 | 
						|
void Object30();
 | 
						|
void FrozenFlower();
 | 
						|
void PullableMushroom();
 | 
						|
void Bollard();
 | 
						|
void WarpPoint();
 | 
						|
void CarlovObject();
 | 
						|
void BarrelSpiderweb();
 | 
						|
void Object37();
 | 
						|
void JarPortal();
 | 
						|
void BossDoor();
 | 
						|
void WhiteTriangleEffect();
 | 
						|
void MacroMushroomStalk();
 | 
						|
void MacroPlayer();
 | 
						|
void MinishPortalCloseup();
 | 
						|
void MinishVillageObject();
 | 
						|
void GiantLeaf();
 | 
						|
void Fairy();
 | 
						|
void LadderUp();
 | 
						|
void LinkFire();
 | 
						|
void SwordParticle();
 | 
						|
void RotatingTrapdoor();
 | 
						|
void LampParticle();
 | 
						|
void GiantBookLadder();
 | 
						|
void HeartContainer();
 | 
						|
void FileScreenObjects();
 | 
						|
void ChuchuBossStartParticle();
 | 
						|
void BackgroundCloud();
 | 
						|
void ChuchuBossCutscene();
 | 
						|
void PushableFurniture();
 | 
						|
void Furniture();
 | 
						|
void MinishSizedEntrance();
 | 
						|
void Archway();
 | 
						|
void GiantRock();
 | 
						|
void GiantRock2();
 | 
						|
void SpecialChest();
 | 
						|
void Object53();
 | 
						|
void PullableLever();
 | 
						|
void Minecart();
 | 
						|
void ThoughtBubble();
 | 
						|
void HiddenLadderDown();
 | 
						|
void GentariCurtain();
 | 
						|
void LavaPlatform();
 | 
						|
void Paper();
 | 
						|
void BedCover();
 | 
						|
void Mask();
 | 
						|
void HouseDoorInterior();
 | 
						|
void Whirlwind();
 | 
						|
void ObjectBlockingStairs();
 | 
						|
void SwordsmanNewsletter();
 | 
						|
void EzloCapFlying();
 | 
						|
void GiantTwig();
 | 
						|
void Object63();
 | 
						|
void Thunderbold();
 | 
						|
void LadderHoleInBookshelf();
 | 
						|
void WaterDropObject();
 | 
						|
void GleerokParticle();
 | 
						|
void LinkEmptyingBottle();
 | 
						|
void CutsceneOrchestrator();
 | 
						|
void CutsceneMiscObject();
 | 
						|
void CrenelBeanSprout();
 | 
						|
void MinecartDoor();
 | 
						|
void ObjectOnPillar();
 | 
						|
void MineralWaterSource();
 | 
						|
void MinishSizedArchway();
 | 
						|
void Object70();
 | 
						|
void PushableGrave();
 | 
						|
void StoneTablet();
 | 
						|
void LilypadSmall();
 | 
						|
void MinishPortalStone();
 | 
						|
void MacroCrystal();
 | 
						|
void MacroLeaf();
 | 
						|
void Bell();
 | 
						|
void MacroDecoration();
 | 
						|
void ShrinkingHieroglyphs();
 | 
						|
void Steam();
 | 
						|
void PushableLever();
 | 
						|
void MacroShoe();
 | 
						|
void ObjectOnSpinyBeetle();
 | 
						|
void MazaalObject();
 | 
						|
void PicoBloom();
 | 
						|
void Board();
 | 
						|
void Bench();
 | 
						|
void BigVortex();
 | 
						|
void BigPushableLever();
 | 
						|
void SmallIceBlock();
 | 
						|
void BigIceBlock();
 | 
						|
void Trapdoor();
 | 
						|
void OctorokBossObject();
 | 
						|
void MacroBook();
 | 
						|
void MazaalBossObject();
 | 
						|
void CabinFurniture();
 | 
						|
void DoubleBookshelf();
 | 
						|
void Book();
 | 
						|
void Fireplace();
 | 
						|
void LightRay();
 | 
						|
void FrozenWaterElement();
 | 
						|
void WaterElement();
 | 
						|
void FrozenOctorok();
 | 
						|
void BakerOven();
 | 
						|
void Lamp();
 | 
						|
void WindTribeFlag();
 | 
						|
void Bird();
 | 
						|
void GraveyardKey();
 | 
						|
void KeyStealingTakkuri();
 | 
						|
void GuruguruBar();
 | 
						|
void HitSwitch();
 | 
						|
void MacroAcorn();
 | 
						|
void Vaati2Particle();
 | 
						|
void TreeHidingPortal();
 | 
						|
void LightableSwitch();
 | 
						|
void TreeThorns();
 | 
						|
void Fan();
 | 
						|
void AngryStatue();
 | 
						|
void PalaceArchway();
 | 
						|
void ObjectA2();
 | 
						|
void Cloud();
 | 
						|
void MinishLight();
 | 
						|
void FireballChain();
 | 
						|
void SanctuaryStoneTablet();
 | 
						|
void ObjectA7();
 | 
						|
void ObjectA8();
 | 
						|
void MulldozerSpawnPoint();
 | 
						|
void WaterfallOpening();
 | 
						|
void Vaati1Portal();
 | 
						|
void FourElements();
 | 
						|
void ElementsBackground();
 | 
						|
void FloatingBlock();
 | 
						|
void Vaati3Arm();
 | 
						|
void MetalDoor();
 | 
						|
void JailBars();
 | 
						|
void FanWind();
 | 
						|
void KinstoneSpark();
 | 
						|
void JapaneseSubtitle();
 | 
						|
void Vaati3PlayerObject();
 | 
						|
void Vaati3Death();
 | 
						|
void Well();
 | 
						|
void WindTribeTeleporter();
 | 
						|
void CuccoMinigame();
 | 
						|
void GyorgBossObject();
 | 
						|
void Windcrest();
 | 
						|
void LitArea();
 | 
						|
void TitleScreenObject();
 | 
						|
void Pinwheel();
 | 
						|
void ObjectBF();
 | 
						|
void EnemyItem();
 | 
						|
void LinkAnimation();
 | 
						|
 | 
						|
extern void (*const gObjectFunctions[194])(Entity*);
 | 
						|
 | 
						|
#endif // OBJECT_H
 |