From 542a15eb645afe70c865b6ffbbd70672787ec38f Mon Sep 17 00:00:00 2001 From: David Date: Sat, 6 Apr 2024 22:14:03 -0400 Subject: [PATCH] fixed asset_enums.h --- include/asset_enums.h | 820 +++++++++--------- .../ComicFansFont/asset_textures_2d.meta.json | 2 +- src/objects.c | 2 +- src/racer.c | 4 +- src/vehicle_tricky.c | 2 +- .../builder/buildTypes/buildFonts.o | Bin 53128 -> 47608 bytes .../prebuild/makeIncludes/assetEnums.o | Bin 33640 -> 46248 bytes .../builder/buildTypes/buildFonts.cpp | 5 +- .../prebuild/makeIncludes/assetEnums.cpp | 48 +- .../prebuild/makeIncludes/assetEnums.h | 1 + 10 files changed, 465 insertions(+), 419 deletions(-) diff --git a/include/asset_enums.h b/include/asset_enums.h index b8934f3d..59247c01 100644 --- a/include/asset_enums.h +++ b/include/asset_enums.h @@ -5,7 +5,7 @@ /********** Asset Sections **********/ -typedef enum { +typedef enum AssetSectionsEnum { ASSET_AI_BEHAVIOUR, ASSET_AI_BEHAVIOUR_TABLE, ASSET_TEXTURES_3D, @@ -40,7 +40,7 @@ typedef enum { ASSET_OBJECT_ANIMATIONS_TABLE, ASSET_OBJECT_ANIMATIONS, ASSET_OBJECT_HEADERS_TABLE, - ASSET_OBJECT_HEADERS, + ASSET_OBJECTS, ASSET_LEVEL_OBJECT_TRANSLATION_TABLE, ASSET_EMPTY_37_TABLE, ASSET_EMPTY_37, @@ -60,7 +60,7 @@ typedef enum { /********** ASSET_AI_BEHAVIOUR **********/ -typedef enum { +typedef enum AssetAiBehaviourEnum { ASSET_AI_BEHAVIOUR_0, ASSET_AI_BEHAVIOUR_1, ASSET_AI_BEHAVIOUR_2, @@ -75,7 +75,7 @@ typedef enum { /********** ASSET_TEXTURES_3D **********/ -typedef enum { +typedef enum AssetTextures3dEnum { ASSET_TEX3D_SPACE_WHITEWALL200496, ASSET_TEX3D_SPACE_GREENWALL337, ASSET_TEX3D_SPACE_WHITEWALL, @@ -1481,7 +1481,7 @@ typedef enum { /********** ASSET_TEXTURES_2D **********/ -typedef enum { +typedef enum AssetTextures2dEnum { ASSET_TEX2D_SMALLFONT_0, ASSET_TEX2D_SMALLFONT_1, ASSET_TEX2D_SMALLFONT_2, @@ -2392,7 +2392,7 @@ typedef enum { /********** ASSET_GAME_TEXT **********/ -typedef enum { +typedef enum AssetGameTextEnum { ASSET_GAME_TEXT_0, ASSET_GAME_TEXT_1, ASSET_GAME_TEXT_2, @@ -2652,14 +2652,14 @@ typedef enum { /********** ASSET_MENU_TEXT **********/ -typedef enum { +typedef enum AssetMenuTextEnum { ASSET_MENU_TEXT_ENGLISH, ASSET_MENU_TEXT_FRENCH, ASSET_MENU_TEXT_GERMAN, ASSET_MENU_TEXT_JAPANESE } AssetMenuTextEnum; -typedef enum { +typedef enum AssetMenuTextIdsEnum { ASSET_MENU_TEXT_STEREO, ASSET_MENU_TEXT_MONO, ASSET_MENU_TEXT_HEADPHONES, @@ -2850,7 +2850,7 @@ typedef enum { /********** ASSET_SPRITES **********/ -typedef enum { +typedef enum AssetSpritesEnum { ASSET_SPRITE_MINIMAP_FOSSILCANYON, ASSET_SPRITE_MINIMAP_ANCIENTLAKE, ASSET_SPRITE_MINIMAP_PIRATELAGOON, @@ -3048,15 +3048,15 @@ typedef enum { /********** ASSET_MISC **********/ -typedef enum { +typedef enum AssetMiscEnum { ASSET_MISC_0, ASSET_MISC_1, ASSET_MISC_2, ASSET_MISC_3, ASSET_MISC_4, - ASSET_MISC_TRICKY_BOSS_DATA, - ASSET_MISC_BLUEY_BOSS_DATA, - ASSET_MISC_SMOKEY_BOSS_DATA, + ASSET_MISC_5, + ASSET_MISC_6, + ASSET_MISC_7, ASSET_MISC_8, ASSET_MISC_RACER_WEIGHT, ASSET_MISC_RACER_HANDLING, @@ -3082,19 +3082,19 @@ typedef enum { ASSET_MISC_BOSS_TRACKS_IDS, ASSET_MISC_31, ASSET_MISC_32, - ASSET_MISC_RACERSTATS_UNKNOWN0, - ASSET_MISC_RACERSTATS_DIDDY, - ASSET_MISC_RACERSTATS_TT, - ASSET_MISC_RACERSTATS_UNKNOWN1, - ASSET_MISC_RACERSTATS_KRUNCH, - ASSET_MISC_RACERSTATS_BUMPER, - ASSET_MISC_RACERSTATS_TIPTUP, - ASSET_MISC_RACERSTATS_CONKER, - ASSET_MISC_RACERSTATS_TIMBER, - ASSET_MISC_RACERSTATS_BANJO, - ASSET_MISC_RACERSTATS_DRUMSTICK, - ASSET_MISC_RACERSTATS_PIPSY, - ASSET_MISC_RACERSTATS_UNKNOWN2, + ASSET_MISC_RACERACCELERATION_UNKNOWN0, + ASSET_MISC_RACERACCELERATION_DIDDY, + ASSET_MISC_RACERACCELERATION_TT, + ASSET_MISC_RACERACCELERATION_UNKNOWN1, + ASSET_MISC_RACERACCELERATION_KRUNCH, + ASSET_MISC_RACERACCELERATION_BUMPER, + ASSET_MISC_RACERACCELERATION_TIPTUP, + ASSET_MISC_RACERACCELERATION_CONKER, + ASSET_MISC_RACERACCELERATION_TIMBER, + ASSET_MISC_RACERACCELERATION_BANJO, + ASSET_MISC_RACERACCELERATION_DRUMSTICK, + ASSET_MISC_RACERACCELERATION_PIPSY, + ASSET_MISC_RACERACCELERATION_UNKNOWN2, ASSET_MISC_46, ASSET_MISC_47, ASSET_MISC_48, @@ -3123,7 +3123,7 @@ typedef enum { /********** ASSET_LEVEL_OBJECT_MAPS **********/ -typedef enum { +typedef enum AssetLevelObjectMapsEnum { ASSET_LEVEL_OBJECT_MAPS_0, ASSET_LEVEL_OBJECT_MAPS_1, ASSET_LEVEL_OBJECT_MAPS_2, @@ -3266,7 +3266,7 @@ typedef enum { /********** ASSET_LEVEL_HEADERS **********/ -typedef enum { +typedef enum AssetLevelHeadersEnum { ASSET_LEVEL_CENTRALAREAHUB, ASSET_LEVEL_BLUEY1, ASSET_LEVEL_DRAGONFORESTHUB, @@ -3336,77 +3336,77 @@ typedef enum { /********** ASSET_LEVEL_NAMES **********/ -typedef enum { - ASSET_LEVELNAME_CENTRALAREAHUB, - ASSET_LEVELNAME_BLUEY1, - ASSET_LEVELNAME_DRAGONFORESTHUB, - ASSET_LEVELNAME_FOSSILCANYON, - ASSET_LEVELNAME_PIRATELAGOON, - ASSET_LEVELNAME_ANCIENTLAKE, - ASSET_LEVELNAME_WALRUSCOVE, - ASSET_LEVELNAME_HOTTOPVOLCANO, - ASSET_LEVELNAME_WHALEBAY, - ASSET_LEVELNAME_SNOWBALLVALLEY, - ASSET_LEVELNAME_CRESCENTISLAND, - ASSET_LEVELNAME_FIREMOUNTAIN, - ASSET_LEVELNAME_DINODOMAINHUB, - ASSET_LEVELNAME_EVERFROSTPEAK, - ASSET_LEVELNAME_SHERBETISLANDHUB, - ASSET_LEVELNAME_SPACEPORTALPHA, - ASSET_LEVELNAME_HORSESHOEGULCH, - ASSET_LEVELNAME_SPACEDUSTALLEY, - ASSET_LEVELNAME_GREENWOODVILLAGE, - ASSET_LEVELNAME_BOULDERCANYON, - ASSET_LEVELNAME_WINDMILLPLAINS, - ASSET_LEVELNAME_FRONTEND, - ASSET_LEVELNAME_CHARACTERSELECT, - ASSET_LEVELNAME_TITLESCREENSEQUENCE, - ASSET_LEVELNAME_SNOWFLAKEMOUNTAINHUB, - ASSET_LEVELNAME_SMOKEYCASTLE, - ASSET_LEVELNAME_DARKWATERBEACH, - ASSET_LEVELNAME_ICICLEPYRAMID, - ASSET_LEVELNAME_FROSTYVILLAGE, - ASSET_LEVELNAME_JUNGLEFALLS, - ASSET_LEVELNAME_TREASURECAVES, - ASSET_LEVELNAME_HAUNTEDWOODS, - ASSET_LEVELNAME_DARKMOONCAVERNS, - ASSET_LEVELNAME_STARCITY, - ASSET_LEVELNAME_TROPHYRACE, - ASSET_LEVELNAME_FUTUREFUNLANDHUB, - ASSET_LEVELNAME_OPENINGSEQUENCE, - ASSET_LEVELNAME_WIZPIG1, - ASSET_LEVELNAME_TRICKYTOPS1, - ASSET_LEVELNAME_OPTIONSBACKGROUND, - ASSET_LEVELNAME_BUBBLER1, - ASSET_LEVELNAME_SMOKEY1, - ASSET_LEVELNAME_WIZPIGMOUTHSEQUENCE, - ASSET_LEVELNAME_WIZPIGAMULETSEQUENCE, - ASSET_LEVELNAME_TTAMULETSEQUENCE, - ASSET_LEVELNAME_ROCKETSEQUENCE, - ASSET_LEVELNAME_TRICKYTOPS2, - ASSET_LEVELNAME_DINODOMAINTROPHYANIM, - ASSET_LEVELNAME_SNOWFLAKEMOUNTAINTROPHYANIM, - ASSET_LEVELNAME_SHERBETISLANDTROPHYANIM, - ASSET_LEVELNAME_DRAGONFORESTTROPHYANIM, - ASSET_LEVELNAME_FUTUREFUNLANDTROPHYANIM, - ASSET_LEVELNAME_BLUEY2, - ASSET_LEVELNAME_BUBBLER2, - ASSET_LEVELNAME_SMOKEY2, - ASSET_LEVELNAME_WIZPIG2, - ASSET_LEVELNAME_PARTYSEQUENCE, - ASSET_LEVELNAME_TRICKTOPSANIM, - ASSET_LEVELNAME_SMOKEYANIM, - ASSET_LEVELNAME_BLUEYANIM, - ASSET_LEVELNAME_WIZPIG1ANIM, - ASSET_LEVELNAME_BUBBLERANIM, - ASSET_LEVELNAME_WIZPIG2ANIM, - ASSET_LEVELNAME_LASTBIT, - ASSET_LEVELNAME_LASTBITB +typedef enum AssetLevelNamesEnum { + ASSET_LEVEL_CENTRALAREAHUB_NAME, + ASSET_LEVEL_BLUEY1_NAME, + ASSET_LEVEL_DRAGONFORESTHUB_NAME, + ASSET_LEVEL_FOSSILCANYON_NAME, + ASSET_LEVEL_PIRATELAGOON_NAME, + ASSET_LEVEL_ANCIENTLAKE_NAME, + ASSET_LEVEL_WALRUSCOVE_NAME, + ASSET_LEVEL_HOTTOPVOLCANO_NAME, + ASSET_LEVEL_WHALEBAY_NAME, + ASSET_LEVEL_SNOWBALLVALLEY_NAME, + ASSET_LEVEL_CRESCENTISLAND_NAME, + ASSET_LEVEL_FIREMOUNTAIN_NAME, + ASSET_LEVEL_DINODOMAINHUB_NAME, + ASSET_LEVEL_EVERFROSTPEAK_NAME, + ASSET_LEVEL_SHERBETISLANDHUB_NAME, + ASSET_LEVEL_SPACEPORTALPHA_NAME, + ASSET_LEVEL_HORSESHOEGULCH_NAME, + ASSET_LEVEL_SPACEDUSTALLEY_NAME, + ASSET_LEVEL_GREENWOODVILLAGE_NAME, + ASSET_LEVEL_BOULDERCANYON_NAME, + ASSET_LEVEL_WINDMILLPLAINS_NAME, + ASSET_LEVEL_FRONTEND_NAME, + ASSET_LEVEL_CHARACTERSELECT_NAME, + ASSET_LEVEL_TITLESCREENSEQUENCE_NAME, + ASSET_LEVEL_SNOWFLAKEMOUNTAINHUB_NAME, + ASSET_LEVEL_SMOKEYCASTLE_NAME, + ASSET_LEVEL_DARKWATERBEACH_NAME, + ASSET_LEVEL_ICICLEPYRAMID_NAME, + ASSET_LEVEL_FROSTYVILLAGE_NAME, + ASSET_LEVEL_JUNGLEFALLS_NAME, + ASSET_LEVEL_TREASURECAVES_NAME, + ASSET_LEVEL_HAUNTEDWOODS_NAME, + ASSET_LEVEL_DARKMOONCAVERNS_NAME, + ASSET_LEVEL_STARCITY_NAME, + ASSET_LEVEL_TROPHYRACE_NAME, + ASSET_LEVEL_FUTUREFUNLANDHUB_NAME, + ASSET_LEVEL_OPENINGSEQUENCE_NAME, + ASSET_LEVEL_WIZPIG1_NAME, + ASSET_LEVEL_TRICKYTOPS1_NAME, + ASSET_LEVEL_OPTIONSBACKGROUND_NAME, + ASSET_LEVEL_BUBBLER1_NAME, + ASSET_LEVEL_SMOKEY1_NAME, + ASSET_LEVEL_WIZPIGMOUTHSEQUENCE_NAME, + ASSET_LEVEL_WIZPIGAMULETSEQUENCE_NAME, + ASSET_LEVEL_TTAMULETSEQUENCE_NAME, + ASSET_LEVEL_ROCKETSEQUENCE_NAME, + ASSET_LEVEL_TRICKYTOPS2_NAME, + ASSET_LEVEL_DINODOMAINTROPHYANIM_NAME, + ASSET_LEVEL_SNOWFLAKEMOUNTAINTROPHYANIM_NAME, + ASSET_LEVEL_SHERBETISLANDTROPHYANIM_NAME, + ASSET_LEVEL_DRAGONFORESTTROPHYANIM_NAME, + ASSET_LEVEL_FUTUREFUNLANDTROPHYANIM_NAME, + ASSET_LEVEL_BLUEY2_NAME, + ASSET_LEVEL_BUBBLER2_NAME, + ASSET_LEVEL_SMOKEY2_NAME, + ASSET_LEVEL_WIZPIG2_NAME, + ASSET_LEVEL_PARTYSEQUENCE_NAME, + ASSET_LEVEL_TRICKTOPSANIM_NAME, + ASSET_LEVEL_SMOKEYANIM_NAME, + ASSET_LEVEL_BLUEYANIM_NAME, + ASSET_LEVEL_WIZPIG1ANIM_NAME, + ASSET_LEVEL_BUBBLERANIM_NAME, + ASSET_LEVEL_WIZPIG2ANIM_NAME, + ASSET_LEVEL_LASTBIT_NAME, + ASSET_LEVEL_LASTBITB_NAME } AssetLevelNamesEnum; /********** ASSET_LEVEL_MODELS **********/ -typedef enum { +typedef enum AssetLevelModelsEnum { ASSET_LEVELMODEL_CENTRALAREAHUB, ASSET_LEVELMODEL_BLUEY, ASSET_LEVELMODEL_DRAGONFORESTHUB, @@ -3466,7 +3466,7 @@ typedef enum { /********** ASSET_OBJECT_MODELS **********/ -typedef enum { +typedef enum AssetObjectModelsEnum { ASSET_OBJECTMODEL_DOME, ASSET_OBJECTMODEL_DOME1, ASSET_OBJECTMODEL_DOME2, @@ -3861,7 +3861,7 @@ typedef enum { /********** ASSET_OBJECT_ANIMATIONS **********/ -typedef enum { +typedef enum AssetObjectAnimationsEnum { ASSET_OBJECT_ANIMATIONS_0, ASSET_OBJECT_ANIMATIONS_1, ASSET_OBJECT_ANIMATIONS_2, @@ -4334,318 +4334,318 @@ typedef enum { ASSET_OBJECT_ANIMATIONS_469 } AssetObjectAnimationsEnum; -/********** ASSET_OBJECT_HEADERS **********/ +/********** ASSET_OBJECTS **********/ -typedef enum { - ASSET_OBJHEADER_DIDDYCAR, - ASSET_OBJHEADER_SWCAR, - ASSET_OBJHEADER_KREMCAR, - ASSET_OBJHEADER_BADGERCAR, - ASSET_OBJHEADER_TORTCAR, - ASSET_OBJHEADER_CONKACAR, - ASSET_OBJHEADER_TIGERCAR, - ASSET_OBJHEADER_BANJOCAR, - ASSET_OBJHEADER_CHICKENCAR, - ASSET_OBJHEADER_MOUSECAR, - ASSET_OBJHEADER_DIDDYHOVER, - ASSET_OBJHEADER_TICKTOCKHOVER, - ASSET_OBJHEADER_KREMLINHOVER, - ASSET_OBJHEADER_BADGERHOVER, - ASSET_OBJHEADER_TORTHOVER, - ASSET_OBJHEADER_CONKAHOVER, - ASSET_OBJHEADER_TIGERHOVER, - ASSET_OBJHEADER_BANJOHOVER, - ASSET_OBJHEADER_CHICKENHOVER, - ASSET_OBJHEADER_MOUSEHOVER, - ASSET_OBJHEADER_DIDDYPLANE, - ASSET_OBJHEADER_TICKTOCKPLANE, - ASSET_OBJHEADER_KREMPLANE, - ASSET_OBJHEADER_BADGERPLANE, - ASSET_OBJHEADER_TORTPLANE, - ASSET_OBJHEADER_CONKA, - ASSET_OBJHEADER_TIGPLANE, - ASSET_OBJHEADER_BANJOPLANE, - ASSET_OBJHEADER_CHICKENPLANE, - ASSET_OBJHEADER_MOUSEPLANE, - ASSET_OBJHEADER_FLYINGCARPET, - ASSET_OBJHEADER_TIMBERDANCER, - ASSET_OBJHEADER_CHICKENCHARACTE, - ASSET_OBJHEADER_PIPSYDANCER, - ASSET_OBJHEADER_BANJODANCER, - ASSET_OBJHEADER_TICKTOCKDANCER, - ASSET_OBJHEADER_WIZPIGSHIP, - ASSET_OBJHEADER_CONKADANCER, - ASSET_OBJHEADER_EMPTYHOVER, - ASSET_OBJHEADER_STOPWATCHMAN, - ASSET_OBJHEADER_STOPWATCHSELECT, - ASSET_OBJHEADER_PARKWARDEN, - ASSET_OBJHEADER_SMARTIETREE, - ASSET_OBJHEADER_BLUEBERRYBUSH, - ASSET_OBJHEADER_RUBBERSNOWTREE, - ASSET_OBJHEADER_SKINNYSNOWTREE, - ASSET_OBJHEADER_XMASTREE, - ASSET_OBJHEADER_ALPINESNOWTREE, - ASSET_OBJHEADER_RUBBERTREE, - ASSET_OBJHEADER_BEACHTREE, - ASSET_OBJHEADER_PALMTREETOP, - ASSET_OBJHEADER_PALMPLANT, - ASSET_OBJHEADER_PALMTREETOPCHEA, - ASSET_OBJHEADER_FIRTREE, - ASSET_OBJHEADER_SPACETREE, - ASSET_OBJHEADER_LAMPPOST, - ASSET_OBJHEADER_FLOWERS, - ASSET_OBJHEADER_REEDS, - ASSET_OBJHEADER_SMOKE, - ASSET_OBJHEADER_DINOSAUR1, - ASSET_OBJHEADER_DINOSAUR2, - ASSET_OBJHEADER_DINOSAUR3, - ASSET_OBJHEADER_WHALE, - ASSET_OBJHEADER_SNOWMEN, - ASSET_OBJHEADER_SIGNS, - ASSET_OBJHEADER_FLAMINGTORCH, - ASSET_OBJHEADER_MIST, - ASSET_OBJHEADER_SNOWBALL, - ASSET_OBJHEADER_BUOY, - ASSET_OBJHEADER_PIRATESHIP, - ASSET_OBJHEADER_LOG, - ASSET_OBJHEADER_PIGLOG, - ASSET_OBJHEADER_BOULDER, - ASSET_OBJHEADER_AIRZIPPERS, - ASSET_OBJHEADER_WATERZIPPERS, - ASSET_OBJHEADER_LEVELDOOR, - ASSET_OBJHEADER_KEITHPIGDOOR, - ASSET_OBJHEADER_CHALDOOR, - ASSET_OBJHEADER_BOSSDOOR, - ASSET_OBJHEADER_BIGBOSSDOOR, - ASSET_OBJHEADER_WORLDGATE, - ASSET_OBJHEADER_TTDOOR, - ASSET_OBJHEADER_RAMPSWITCH, - ASSET_OBJHEADER_NOENTRYDOOR, - ASSET_OBJHEADER_RAMPWHALE, - ASSET_OBJHEADER_SEAMONSTER, - ASSET_OBJHEADER_DINOISLE, - ASSET_OBJHEADER_SKYCONTROL, - ASSET_OBJHEADER_CHECKPOINT, - ASSET_OBJHEADER_CHECKARROW, - ASSET_OBJHEADER_MODECHANGE, - ASSET_OBJHEADER_TRIGGER, - ASSET_OBJHEADER_FOGCHANGER, - ASSET_OBJHEADER_AINODE, - ASSET_OBJHEADER_EXIT, - ASSET_OBJHEADER_BONUS, - ASSET_OBJHEADER_CAMERA_CONTROL, - ASSET_OBJHEADER_SETUPPOINT, - ASSET_OBJHEADER_ANIMATOR, - ASSET_OBJHEADER_TEXSCROLL, - ASSET_OBJHEADER_RGBALIGHT, - ASSET_OBJHEADER_INTROCAM, - ASSET_OBJHEADER_WEATHER, - ASSET_OBJHEADER_LENSFLARE, - ASSET_OBJHEADER_LENSFLARESWITCH, - ASSET_OBJHEADER_INFOPOINT, - ASSET_OBJHEADER_WAVEGENERATOR, - ASSET_OBJHEADER_WAVEPOWER, - ASSET_OBJHEADER_RANGETRIGGER, - ASSET_OBJHEADER_LAVASPURT, - ASSET_OBJHEADER_BOMBEXPLOSION, - ASSET_OBJHEADER_WARDENSMOKE, - ASSET_OBJHEADER_BUBBLER, - ASSET_OBJHEADER_WEAPONBALLOON, - ASSET_OBJHEADER_WBALLOONPOP, - ASSET_OBJHEADER_MISSILEGLOW, - ASSET_OBJHEADER_HOMINGGLOW, - ASSET_OBJHEADER_MISSILE, - ASSET_OBJHEADER_HOMING, - ASSET_OBJHEADER_OILSLICK, - ASSET_OBJHEADER_SMOKECLOUD, - ASSET_OBJHEADER_BOMB, - ASSET_OBJHEADER_BUBBLEWEAPON, - ASSET_OBJHEADER_WORLDKEY, - ASSET_OBJHEADER_COINCREATOR, - ASSET_OBJHEADER_TREASURESUCKER, - ASSET_OBJHEADER_COIN, - ASSET_OBJHEADER_SILVERCOIN, - ASSET_OBJHEADER_GOLDCOIN, - ASSET_OBJHEADER_BONUSGEM, - ASSET_OBJHEADER_COLLECTEGG, - ASSET_OBJHEADER_EGGCREATOR, - ASSET_OBJHEADER_CHARACTERFLAG, - ASSET_OBJHEADER_ANIMATION, - ASSET_OBJHEADER_OVERRIDEPOS, - ASSET_OBJHEADER_ANIMCAMERA, - ASSET_OBJHEADER_ANIMCAR, - ASSET_OBJHEADER_ANIMDOME, - ASSET_OBJHEADER_WIZGHOSTS, - ASSET_OBJHEADER_N64LOGO, - ASSET_OBJHEADER_ASTEROID, - ASSET_OBJHEADER_PILLAR, - ASSET_OBJHEADER_BOULDERANIM, - ASSET_OBJHEADER_PIGHEADCOLOURS, - ASSET_OBJHEADER_PIGFACEANIMATOR, - ASSET_OBJHEADER_PTERODACTYL, - ASSET_OBJHEADER_AMULETPIECE1, - ASSET_OBJHEADER_AMULETPIECE2, - ASSET_OBJHEADER_AMULETPIECE3, - ASSET_OBJHEADER_AMULETPIECE4, - ASSET_OBJHEADER_SWAMULET1, - ASSET_OBJHEADER_SWAMULET2, - ASSET_OBJHEADER_SWAMULET3, - ASSET_OBJHEADER_SWAMULET4, - ASSET_OBJHEADER_ANIMKEY, - ASSET_OBJHEADER_SPACESHIP1, - ASSET_OBJHEADER_MINISHIP, - ASSET_OBJHEADER_MONORAIL, - ASSET_OBJHEADER_SPACESHIP2, - ASSET_OBJHEADER_SPACESHIP3, - ASSET_OBJHEADER_LIGHTHOUSE, - ASSET_OBJHEADER_ROCKETSIGNPOST, - ASSET_OBJHEADER_LIGHTHOUSE1, - ASSET_OBJHEADER_LIGHTHOUSE2, - ASSET_OBJHEADER_SELECTIONHILL, - ASSET_OBJHEADER_WIDESCREEN, - ASSET_OBJHEADER_TIGERANIMPLANE, - ASSET_OBJHEADER_BADGERANIMWALK, - ASSET_OBJHEADER_TIMBERANIMCAR, - ASSET_OBJHEADER_KREMSELECT, - ASSET_OBJHEADER_CONKSELECT, - ASSET_OBJHEADER_BADGERSELECT, - ASSET_OBJHEADER_TORTSELECT, - ASSET_OBJHEADER_TIGERSELECT, - ASSET_OBJHEADER_DIDDYSELECT, - ASSET_OBJHEADER_BANJOSELECT, - ASSET_OBJHEADER_CHICKSELECT, - ASSET_OBJHEADER_MOUSESELECT, - ASSET_OBJHEADER_MAGICCARPET, - ASSET_OBJHEADER_POLYGOLDBALOON, - ASSET_OBJHEADER_ANIMGENIE, - ASSET_OBJHEADER_ANIMGENIE3, - ASSET_OBJHEADER_BUTTERFLYBAIT, - ASSET_OBJHEADER_AUDIO, - ASSET_OBJHEADER_AUDIOLINE, - ASSET_OBJHEADER_AUDIOSEQLINE, - ASSET_OBJHEADER_AUDIOSEQ, - ASSET_OBJHEADER_AUDIOREVERB, - ASSET_OBJHEADER_FRONTTYRE, - ASSET_OBJHEADER_BACKTYRE, - ASSET_OBJHEADER_PLANETYRE, - ASSET_OBJHEADER_FAN, - ASSET_OBJHEADER_JETENGINE, - ASSET_OBJHEADER_GLOVE, - ASSET_OBJHEADER_LEEFAN, - ASSET_OBJHEADER_MAGICRING, - ASSET_OBJHEADER_DOME, - ASSET_OBJHEADER_DOME1, - ASSET_OBJHEADER_DOME2, - ASSET_OBJHEADER_DOME3, - ASSET_OBJHEADER_DOME4, - ASSET_OBJHEADER_DOME5, - ASSET_OBJHEADER_DOME6, - ASSET_OBJHEADER_DOME7, - ASSET_OBJHEADER_DOME8, - ASSET_OBJHEADER_DOME9, - ASSET_OBJHEADER_DOME10, - ASSET_OBJHEADER_DOME11, - ASSET_OBJHEADER_DOME12, - ASSET_OBJHEADER_DOME13, - ASSET_OBJHEADER_DOME14, - ASSET_OBJHEADER_DOME15, - ASSET_OBJHEADER_DOME16, - ASSET_OBJHEADER_DOME17, - ASSET_OBJHEADER_SELECTIONSHADOW, - ASSET_OBJHEADER_POSTFORPARTY, - ASSET_OBJHEADER_RARELOGO, - ASSET_OBJHEADER_SPARKLYTHING, - ASSET_OBJHEADER_DOOROPENER, - ASSET_OBJHEADER_ANIMDINOSAUR2, - ASSET_OBJHEADER_TIMERANIMHOVER, - ASSET_OBJHEADER_ANIMBADGERPLANE, - ASSET_OBJHEADER_ANIMDINOSAUR1, - ASSET_OBJHEADER_ANIMMOUSECAR, - ASSET_OBJHEADER_ANIMTORT, - ASSET_OBJHEADER_CHICKENANIMPLAN, - ASSET_OBJHEADER_EMPTYHOVERANIM, - ASSET_OBJHEADER_KREMANIM, - ASSET_OBJHEADER_MOUSEHOVERANIM, - ASSET_OBJHEADER_TORTRUNNER, - ASSET_OBJHEADER_ANIMBANJOPLANE, - ASSET_OBJHEADER_CONKAANIMCAR, - ASSET_OBJHEADER_GBPARKWARDEN, - ASSET_OBJHEADER_WIZPIG, - ASSET_OBJHEADER_WIZPIGROCKET, - ASSET_OBJHEADER_PIGBOSS, - ASSET_OBJHEADER_PIGBOSS2, - ASSET_OBJHEADER_PIGROCKETEER, - ASSET_OBJHEADER_PARTICLES2, - ASSET_OBJHEADER_PIGBOULDER, - ASSET_OBJHEADER_BIGPLANET, - ASSET_OBJHEADER_ROCKETBIT1, - ASSET_OBJHEADER_ROCKETBIT2, - ASSET_OBJHEADER_GENIEHEAD, - ASSET_OBJHEADER_PIGBOULDER2, - ASSET_OBJHEADER_PIGBOULDER3, - ASSET_OBJHEADER_PIGBOULDER4, - ASSET_OBJHEADER_PIGBOULDER5, - ASSET_OBJHEADER_TRICKYTOPS, - ASSET_OBJHEADER_TRICKYANIM, - ASSET_OBJHEADER_TRICKYANIM2, - ASSET_OBJHEADER_TRICKYANIM3, - ASSET_OBJHEADER_WALRUS_ANIM, - ASSET_OBJHEADER_TERRYBOSS, - ASSET_OBJHEADER_DRAGONBOSS, - ASSET_OBJHEADER_DRAGONANIM, - ASSET_OBJHEADER_WALRUS, - ASSET_OBJHEADER_SNOWBALLBOSS, - ASSET_OBJHEADER_ANIMOCTO, - ASSET_OBJHEADER_OCTOPUS, - ASSET_OBJHEADER_GOLDBALOONSPRIT, - ASSET_OBJHEADER_SPACECOLUMN1, - ASSET_OBJHEADER_SPACECOLUMN2, - ASSET_OBJHEADER_SPACECOLUMN3, - ASSET_OBJHEADER_HAYSTACK, - ASSET_OBJHEADER_ANIMGENIE2, - ASSET_OBJHEADER_BRIGHTSTAR, - ASSET_OBJHEADER_BUTTERFLY, - ASSET_OBJHEADER_FISH, - ASSET_OBJHEADER_FROG, - ASSET_OBJHEADER_BOOST, - ASSET_OBJHEADER_MAGNETFX, - ASSET_OBJHEADER_STILLFROG, - ASSET_OBJHEADER_STOPWATCHICON, - ASSET_OBJHEADER_STOPWATCHHAND, - ASSET_OBJHEADER_BRIDGE, - ASSET_OBJHEADER_POSARROW, - ASSET_OBJHEADER_HITTESTER, - ASSET_OBJHEADER_MIDIFADE, - ASSET_OBJHEADER_WINDSAIL, - ASSET_OBJHEADER_EFFECTBOX, - ASSET_OBJHEADER_TROPHYCAB, - ASSET_OBJHEADER_FLYCOIN, - ASSET_OBJHEADER_GOLDENBALLOON, - ASSET_OBJHEADER_LASERBOLT, - ASSET_OBJHEADER_LASERGUN, - ASSET_OBJHEADER_BOLTGLOW, - ASSET_OBJHEADER_GROUNDZIPPER, - ASSET_OBJHEADER_PWSAFETELEPOINT, - ASSET_OBJHEADER_HEADFORPOINT, - ASSET_OBJHEADER_FIREBALLATTRACT, - ASSET_OBJHEADER_FIREBALL, - ASSET_OBJHEADER_OCTOBUBBLE, - ASSET_OBJHEADER_OCTOBOMB, - ASSET_OBJHEADER_GOLDTROPHY, - ASSET_OBJHEADER_PARKTROPHY, - ASSET_OBJHEADER_TICKTROPHY, - ASSET_OBJHEADER_TROPHY, - ASSET_OBJHEADER_TELEPORT, - ASSET_OBJHEADER_SHIELD, - ASSET_OBJHEADER_LIGHTNING, - ASSET_OBJHEADER_MIDIFADEPOINT, - ASSET_OBJHEADER_LEVELNAME, - ASSET_OBJHEADER_MIDICHSET -} AssetObjectHeadersEnum; +typedef enum AssetObjectsEnum { + ASSET_OBJECT_DIDDYCAR, + ASSET_OBJECT_SWCAR, + ASSET_OBJECT_KREMCAR, + ASSET_OBJECT_BADGERCAR, + ASSET_OBJECT_TORTCAR, + ASSET_OBJECT_CONKACAR, + ASSET_OBJECT_TIGERCAR, + ASSET_OBJECT_BANJOCAR, + ASSET_OBJECT_CHICKENCAR, + ASSET_OBJECT_MOUSECAR, + ASSET_OBJECT_DIDDYHOVER, + ASSET_OBJECT_TICKTOCKHOVER, + ASSET_OBJECT_KREMLINHOVER, + ASSET_OBJECT_BADGERHOVER, + ASSET_OBJECT_TORTHOVER, + ASSET_OBJECT_CONKAHOVER, + ASSET_OBJECT_TIGERHOVER, + ASSET_OBJECT_BANJOHOVER, + ASSET_OBJECT_CHICKENHOVER, + ASSET_OBJECT_MOUSEHOVER, + ASSET_OBJECT_DIDDYPLANE, + ASSET_OBJECT_TICKTOCKPLANE, + ASSET_OBJECT_KREMPLANE, + ASSET_OBJECT_BADGERPLANE, + ASSET_OBJECT_TORTPLANE, + ASSET_OBJECT_CONKA, + ASSET_OBJECT_TIGPLANE, + ASSET_OBJECT_BANJOPLANE, + ASSET_OBJECT_CHICKENPLANE, + ASSET_OBJECT_MOUSEPLANE, + ASSET_OBJECT_FLYINGCARPET, + ASSET_OBJECT_TIMBERDANCER, + ASSET_OBJECT_CHICKENCHARACTE, + ASSET_OBJECT_PIPSYDANCER, + ASSET_OBJECT_BANJODANCER, + ASSET_OBJECT_TICKTOCKDANCER, + ASSET_OBJECT_WIZPIGSHIP, + ASSET_OBJECT_CONKADANCER, + ASSET_OBJECT_EMPTYHOVER, + ASSET_OBJECT_STOPWATCHMAN, + ASSET_OBJECT_STOPWATCHSELECT, + ASSET_OBJECT_PARKWARDEN, + ASSET_OBJECT_SMARTIETREE, + ASSET_OBJECT_BLUEBERRYBUSH, + ASSET_OBJECT_RUBBERSNOWTREE, + ASSET_OBJECT_SKINNYSNOWTREE, + ASSET_OBJECT_XMASTREE, + ASSET_OBJECT_ALPINESNOWTREE, + ASSET_OBJECT_RUBBERTREE, + ASSET_OBJECT_BEACHTREE, + ASSET_OBJECT_PALMTREETOP, + ASSET_OBJECT_PALMPLANT, + ASSET_OBJECT_PALMTREETOPCHEA, + ASSET_OBJECT_FIRTREE, + ASSET_OBJECT_SPACETREE, + ASSET_OBJECT_LAMPPOST, + ASSET_OBJECT_FLOWERS, + ASSET_OBJECT_REEDS, + ASSET_OBJECT_SMOKE, + ASSET_OBJECT_DINOSAUR1, + ASSET_OBJECT_DINOSAUR2, + ASSET_OBJECT_DINOSAUR3, + ASSET_OBJECT_WHALE, + ASSET_OBJECT_SNOWMEN, + ASSET_OBJECT_SIGNS, + ASSET_OBJECT_FLAMINGTORCH, + ASSET_OBJECT_MIST, + ASSET_OBJECT_SNOWBALL, + ASSET_OBJECT_BUOY, + ASSET_OBJECT_PIRATESHIP, + ASSET_OBJECT_LOG, + ASSET_OBJECT_PIGLOG, + ASSET_OBJECT_BOULDER, + ASSET_OBJECT_AIRZIPPERS, + ASSET_OBJECT_WATERZIPPERS, + ASSET_OBJECT_LEVELDOOR, + ASSET_OBJECT_KEITHPIGDOOR, + ASSET_OBJECT_CHALDOOR, + ASSET_OBJECT_BOSSDOOR, + ASSET_OBJECT_BIGBOSSDOOR, + ASSET_OBJECT_WORLDGATE, + ASSET_OBJECT_TTDOOR, + ASSET_OBJECT_RAMPSWITCH, + ASSET_OBJECT_NOENTRYDOOR, + ASSET_OBJECT_RAMPWHALE, + ASSET_OBJECT_SEAMONSTER, + ASSET_OBJECT_DINOISLE, + ASSET_OBJECT_SKYCONTROL, + ASSET_OBJECT_CHECKPOINT, + ASSET_OBJECT_CHECKARROW, + ASSET_OBJECT_MODECHANGE, + ASSET_OBJECT_TRIGGER, + ASSET_OBJECT_FOGCHANGER, + ASSET_OBJECT_AINODE, + ASSET_OBJECT_EXIT, + ASSET_OBJECT_BONUS, + ASSET_OBJECT_CAMERA_CONTROL, + ASSET_OBJECT_SETUPPOINT, + ASSET_OBJECT_ANIMATOR, + ASSET_OBJECT_TEXSCROLL, + ASSET_OBJECT_RGBALIGHT, + ASSET_OBJECT_INTROCAM, + ASSET_OBJECT_WEATHER, + ASSET_OBJECT_LENSFLARE, + ASSET_OBJECT_LENSFLARESWITCH, + ASSET_OBJECT_INFOPOINT, + ASSET_OBJECT_WAVEGENERATOR, + ASSET_OBJECT_WAVEPOWER, + ASSET_OBJECT_RANGETRIGGER, + ASSET_OBJECT_LAVASPURT, + ASSET_OBJECT_BOMBEXPLOSION, + ASSET_OBJECT_WARDENSMOKE, + ASSET_OBJECT_BUBBLER, + ASSET_OBJECT_WEAPONBALLOON, + ASSET_OBJECT_WBALLOONPOP, + ASSET_OBJECT_MISSILEGLOW, + ASSET_OBJECT_HOMINGGLOW, + ASSET_OBJECT_MISSILE, + ASSET_OBJECT_HOMING, + ASSET_OBJECT_OILSLICK, + ASSET_OBJECT_SMOKECLOUD, + ASSET_OBJECT_BOMB, + ASSET_OBJECT_BUBBLEWEAPON, + ASSET_OBJECT_WORLDKEY, + ASSET_OBJECT_COINCREATOR, + ASSET_OBJECT_TREASURESUCKER, + ASSET_OBJECT_COIN, + ASSET_OBJECT_SILVERCOIN, + ASSET_OBJECT_GOLDCOIN, + ASSET_OBJECT_BONUSGEM, + ASSET_OBJECT_COLLECTEGG, + ASSET_OBJECT_EGGCREATOR, + ASSET_OBJECT_CHARACTERFLAG, + ASSET_OBJECT_ANIMATION, + ASSET_OBJECT_OVERRIDEPOS, + ASSET_OBJECT_ANIMCAMERA, + ASSET_OBJECT_ANIMCAR, + ASSET_OBJECT_ANIMDOME, + ASSET_OBJECT_WIZGHOSTS, + ASSET_OBJECT_N64LOGO, + ASSET_OBJECT_ASTEROID, + ASSET_OBJECT_PILLAR, + ASSET_OBJECT_BOULDERANIM, + ASSET_OBJECT_PIGHEADCOLOURS, + ASSET_OBJECT_PIGFACEANIMATOR, + ASSET_OBJECT_PTERODACTYL, + ASSET_OBJECT_AMULETPIECE1, + ASSET_OBJECT_AMULETPIECE2, + ASSET_OBJECT_AMULETPIECE3, + ASSET_OBJECT_AMULETPIECE4, + ASSET_OBJECT_SWAMULET1, + ASSET_OBJECT_SWAMULET2, + ASSET_OBJECT_SWAMULET3, + ASSET_OBJECT_SWAMULET4, + ASSET_OBJECT_ANIMKEY, + ASSET_OBJECT_SPACESHIP1, + ASSET_OBJECT_MINISHIP, + ASSET_OBJECT_MONORAIL, + ASSET_OBJECT_SPACESHIP2, + ASSET_OBJECT_SPACESHIP3, + ASSET_OBJECT_LIGHTHOUSE, + ASSET_OBJECT_ROCKETSIGNPOST, + ASSET_OBJECT_LIGHTHOUSE1, + ASSET_OBJECT_LIGHTHOUSE2, + ASSET_OBJECT_SELECTIONHILL, + ASSET_OBJECT_WIDESCREEN, + ASSET_OBJECT_TIGERANIMPLANE, + ASSET_OBJECT_BADGERANIMWALK, + ASSET_OBJECT_TIMBERANIMCAR, + ASSET_OBJECT_KREMSELECT, + ASSET_OBJECT_CONKSELECT, + ASSET_OBJECT_BADGERSELECT, + ASSET_OBJECT_TORTSELECT, + ASSET_OBJECT_TIGERSELECT, + ASSET_OBJECT_DIDDYSELECT, + ASSET_OBJECT_BANJOSELECT, + ASSET_OBJECT_CHICKSELECT, + ASSET_OBJECT_MOUSESELECT, + ASSET_OBJECT_MAGICCARPET, + ASSET_OBJECT_POLYGOLDBALOON, + ASSET_OBJECT_ANIMGENIE, + ASSET_OBJECT_ANIMGENIE3, + ASSET_OBJECT_BUTTERFLYBAIT, + ASSET_OBJECT_AUDIO, + ASSET_OBJECT_AUDIOLINE, + ASSET_OBJECT_AUDIOSEQLINE, + ASSET_OBJECT_AUDIOSEQ, + ASSET_OBJECT_AUDIOREVERB, + ASSET_OBJECT_FRONTTYRE, + ASSET_OBJECT_BACKTYRE, + ASSET_OBJECT_PLANETYRE, + ASSET_OBJECT_FAN, + ASSET_OBJECT_JETENGINE, + ASSET_OBJECT_GLOVE, + ASSET_OBJECT_LEEFAN, + ASSET_OBJECT_MAGICRING, + ASSET_OBJECT_DOME, + ASSET_OBJECT_DOME1, + ASSET_OBJECT_DOME2, + ASSET_OBJECT_DOME3, + ASSET_OBJECT_DOME4, + ASSET_OBJECT_DOME5, + ASSET_OBJECT_DOME6, + ASSET_OBJECT_DOME7, + ASSET_OBJECT_DOME8, + ASSET_OBJECT_DOME9, + ASSET_OBJECT_DOME10, + ASSET_OBJECT_DOME11, + ASSET_OBJECT_DOME12, + ASSET_OBJECT_DOME13, + ASSET_OBJECT_DOME14, + ASSET_OBJECT_DOME15, + ASSET_OBJECT_DOME16, + ASSET_OBJECT_DOME17, + ASSET_OBJECT_SELECTIONSHADOW, + ASSET_OBJECT_POSTFORPARTY, + ASSET_OBJECT_RARELOGO, + ASSET_OBJECT_SPARKLYTHING, + ASSET_OBJECT_DOOROPENER, + ASSET_OBJECT_ANIMDINOSAUR2, + ASSET_OBJECT_TIMERANIMHOVER, + ASSET_OBJECT_ANIMBADGERPLANE, + ASSET_OBJECT_ANIMDINOSAUR1, + ASSET_OBJECT_ANIMMOUSECAR, + ASSET_OBJECT_ANIMTORT, + ASSET_OBJECT_CHICKENANIMPLAN, + ASSET_OBJECT_EMPTYHOVERANIM, + ASSET_OBJECT_KREMANIM, + ASSET_OBJECT_MOUSEHOVERANIM, + ASSET_OBJECT_TORTRUNNER, + ASSET_OBJECT_ANIMBANJOPLANE, + ASSET_OBJECT_CONKAANIMCAR, + ASSET_OBJECT_GBPARKWARDEN, + ASSET_OBJECT_WIZPIG, + ASSET_OBJECT_WIZPIGROCKET, + ASSET_OBJECT_PIGBOSS, + ASSET_OBJECT_PIGBOSS2, + ASSET_OBJECT_PIGROCKETEER, + ASSET_OBJECT_PARTICLES2, + ASSET_OBJECT_PIGBOULDER, + ASSET_OBJECT_BIGPLANET, + ASSET_OBJECT_ROCKETBIT1, + ASSET_OBJECT_ROCKETBIT2, + ASSET_OBJECT_GENIEHEAD, + ASSET_OBJECT_PIGBOULDER2, + ASSET_OBJECT_PIGBOULDER3, + ASSET_OBJECT_PIGBOULDER4, + ASSET_OBJECT_PIGBOULDER5, + ASSET_OBJECT_TRICKYTOPS, + ASSET_OBJECT_TRICKYANIM, + ASSET_OBJECT_TRICKYANIM2, + ASSET_OBJECT_TRICKYANIM3, + ASSET_OBJECT_WALRUS_ANIM, + ASSET_OBJECT_TERRYBOSS, + ASSET_OBJECT_DRAGONBOSS, + ASSET_OBJECT_DRAGONANIM, + ASSET_OBJECT_WALRUS, + ASSET_OBJECT_SNOWBALLBOSS, + ASSET_OBJECT_ANIMOCTO, + ASSET_OBJECT_OCTOPUS, + ASSET_OBJECT_GOLDBALOONSPRIT, + ASSET_OBJECT_SPACECOLUMN1, + ASSET_OBJECT_SPACECOLUMN2, + ASSET_OBJECT_SPACECOLUMN3, + ASSET_OBJECT_HAYSTACK, + ASSET_OBJECT_ANIMGENIE2, + ASSET_OBJECT_BRIGHTSTAR, + ASSET_OBJECT_BUTTERFLY, + ASSET_OBJECT_FISH, + ASSET_OBJECT_FROG, + ASSET_OBJECT_BOOST, + ASSET_OBJECT_MAGNETFX, + ASSET_OBJECT_STILLFROG, + ASSET_OBJECT_STOPWATCHICON, + ASSET_OBJECT_STOPWATCHHAND, + ASSET_OBJECT_BRIDGE, + ASSET_OBJECT_POSARROW, + ASSET_OBJECT_HITTESTER, + ASSET_OBJECT_MIDIFADE, + ASSET_OBJECT_WINDSAIL, + ASSET_OBJECT_EFFECTBOX, + ASSET_OBJECT_TROPHYCAB, + ASSET_OBJECT_FLYCOIN, + ASSET_OBJECT_GOLDENBALLOON, + ASSET_OBJECT_LASERBOLT, + ASSET_OBJECT_LASERGUN, + ASSET_OBJECT_BOLTGLOW, + ASSET_OBJECT_GROUNDZIPPER, + ASSET_OBJECT_PWSAFETELEPOINT, + ASSET_OBJECT_HEADFORPOINT, + ASSET_OBJECT_FIREBALLATTRACT, + ASSET_OBJECT_FIREBALL, + ASSET_OBJECT_OCTOBUBBLE, + ASSET_OBJECT_OCTOBOMB, + ASSET_OBJECT_GOLDTROPHY, + ASSET_OBJECT_PARKTROPHY, + ASSET_OBJECT_TICKTROPHY, + ASSET_OBJECT_TROPHY, + ASSET_OBJECT_TELEPORT, + ASSET_OBJECT_SHIELD, + ASSET_OBJECT_LIGHTNING, + ASSET_OBJECT_MIDIFADEPOINT, + ASSET_OBJECT_LEVELNAME, + ASSET_OBJECT_MIDICHSET +} AssetObjectsEnum; /********** ASSET_AUDIO **********/ -typedef enum { +typedef enum AssetAudioEnum { ASSET_AUDIO_0, ASSET_AUDIO_1, ASSET_AUDIO_2, @@ -4663,7 +4663,7 @@ typedef enum { /********** ASSET_PARTICLES **********/ -typedef enum { +typedef enum AssetParticlesEnum { ASSET_PARTICLES_0, ASSET_PARTICLES_1, ASSET_PARTICLES_2, @@ -4738,7 +4738,7 @@ typedef enum { /********** ASSET_PARTICLE_BEHAVIORS **********/ -typedef enum { +typedef enum AssetParticleBehaviorsEnum { ASSET_PARTICLE_BEHAVIORS_0, ASSET_PARTICLE_BEHAVIORS_1, ASSET_PARTICLE_BEHAVIORS_2, @@ -4818,7 +4818,7 @@ typedef enum { /********** ASSET_FONTS **********/ -typedef enum { +typedef enum AssetFontsEnum { ASSET_FONTS_FUNFONT, ASSET_FONTS_SMALLFONT, ASSET_FONTS_BIGFONT, @@ -4827,7 +4827,7 @@ typedef enum { /********** ASSET_TTGHOSTS **********/ -typedef enum { +typedef enum AssetTtghostsEnum { ASSET_TTGHOSTS_FOSSILCANYON, ASSET_TTGHOSTS_PIRATELAGOON, ASSET_TTGHOSTS_ANCIENTLAKE, @@ -4850,4 +4850,4 @@ typedef enum { ASSET_TTGHOSTS_STARCITY } AssetTtghostsEnum; -#endif +#endif diff --git a/mods/assets/examples/ComicFansFont/asset_textures_2d.meta.json b/mods/assets/examples/ComicFansFont/asset_textures_2d.meta.json index 110f60c5..040e40ec 100644 --- a/mods/assets/examples/ComicFansFont/asset_textures_2d.meta.json +++ b/mods/assets/examples/ComicFansFont/asset_textures_2d.meta.json @@ -5,7 +5,7 @@ ], "sections": { "ASSET_TEX2D_COMICFANS": { - "filename": "comicfans.json" + "filename": "font/comicfans/comicfans.json" } } } diff --git a/src/objects.c b/src/objects.c index 24a255d4..4850769e 100644 --- a/src/objects.c +++ b/src/objects.c @@ -681,7 +681,7 @@ ObjectHeader *load_object_header(s32 index) { size = gAssetsObjectHeadersTable[index + 1] - assetOffset; address = allocate_from_pool_containing_slots((MemoryPoolSlot *) gObjectMemoryPool, size); if (address != NULL) { - load_asset_to_address(ASSET_OBJECT_HEADERS, (u32) address, assetOffset, size); + load_asset_to_address(ASSET_OBJECTS, (u32) address, assetOffset, size); address->unk24 = (ObjectHeader24 *) ((uintptr_t) address + (uintptr_t) address->unk24); address->objectParticles = (ObjHeaderParticleEntry *) ((uintptr_t) address + (uintptr_t) address->objectParticles); diff --git a/src/racer.c b/src/racer.c index f1f9bd13..f64fe8ea 100644 --- a/src/racer.c +++ b/src/racer.c @@ -6101,7 +6101,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat racer->unk88 -= racer->unk88 * 0.0625 * updateRateF; } gCurrentRacerHandlingStat = 1; - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACERSTATS_UNKNOWN0); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACERACCELERATION_UNKNOWN0); D_8011D568 = (f32 *) get_misc_asset(obj->segment.header->unk5D); if ((obj->segment.y_velocity < 4.0) && ((racer->groundedWheels >= 3) || (racer->buoyancy != 0.0))) { racer->unk1F1 = 0; @@ -6327,7 +6327,7 @@ void func_8005B818(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR CheckpointNode *checkpoint; s32 i; - gCurrentRacerMiscAssetPtr = get_misc_asset(ASSET_MISC_RACERSTATS_UNKNOWN0); + gCurrentRacerMiscAssetPtr = get_misc_asset(ASSET_MISC_RACERACCELERATION_UNKNOWN0); levelHeader = get_current_level_header(); sp11C = get_checkpoint_count(); if (sp11C != 0) { diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index eb72a489..c6824c6e 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -356,7 +356,7 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { } if (worldBit != 0) { push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); - push_level_property_stack(ASSET_LEVELNAME_WIZPIGAMULETSEQUENCE, 0, -1, + push_level_property_stack(ASSET_LEVEL_WIZPIGAMULETSEQUENCE_NAME, 0, -1, settings->wizpigAmulet - 1); push_level_property_stack(i, 6, -1, 6); } else { diff --git a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/builder/buildTypes/buildFonts.o b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/builder/buildTypes/buildFonts.o index 05bf79a7ccb36f3764035660579f5599cded04fe..0eb95fe9f1972d643371347ab91bb746ee1b2dd5 100644 GIT binary patch literal 47608 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 CAUhKP literal 33640 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 diff --git a/tools/dkr_assets_tool_src/builder/buildTypes/buildFonts.cpp b/tools/dkr_assets_tool_src/builder/buildTypes/buildFonts.cpp index 8cdfaf2f..d3b40993 100644 --- a/tools/dkr_assets_tool_src/builder/buildTypes/buildFonts.cpp +++ b/tools/dkr_assets_tool_src/builder/buildTypes/buildFonts.cpp @@ -59,7 +59,8 @@ BuildFonts::BuildFonts(DkrAssetsSettings &settings, BuildInfo &info) : _settings outFontFile->textureIndices[texIndex] = fontTextureIndex; } - std::string encodingType = fontJson->get_string("/encoding/type"); + // Assume ASCII by default. + std::string encodingType = fontJson->get_string("/encoding/type", "ASCII"); StringHelper::make_uppercase(encodingType); // Make sure string is uppercase. @@ -71,8 +72,6 @@ BuildFonts::BuildFonts(DkrAssetsSettings &settings, BuildInfo &info) : _settings } } - DebugHelper::info(info.dstPath); - FileHelper::write_binary_file(rawData, rawDataSize, _info.dstPath, true); delete rawData; diff --git a/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.cpp b/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.cpp index 98d4cd74..23db4c1f 100644 --- a/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.cpp +++ b/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.cpp @@ -5,7 +5,7 @@ #include "helpers/c/cEnumsHelper.h" AssetEnums::AssetEnums(DkrAssetsSettings &settings) : _settings(settings) { - _outFilepath = _settings.pathToInclude / "/asset_enums.h"; + _outFilepath = _settings.pathToInclude / "asset_enums.h"; _cHeader.write_comment("This file is automatically generated. Any changes you make to this file will get overwritten."); _cHeader.write_newline(); @@ -43,6 +43,8 @@ void AssetEnums::_write_asset_section_enums() { _cHeader.write_newline(); _cHeader.write_header_comment(sectionId.c_str()); _write_asset_section_enums(sectionId, sectionJson); + } else if(sectionJson->has("/filename")) { + _write_single_asset_section_enums(sectionId, sectionJson); } continue; } @@ -68,6 +70,36 @@ void AssetEnums::_write_main_asset_enum(std::vector &mainOrder) { _cHeader.write_raw_text(mainEnum.to_string()); } +void AssetEnums::_write_single_asset_section_enums(const std::string §ionId, JsonFile *sectionJson) { + if(sectionId != "ASSET_FONTS") { + return; // This function is just for the fonts. + } + _cHeader.write_newline(); + _cHeader.write_header_comment(sectionId.c_str()); + + std::string sectionEnumName = StringHelper::upper_snake_case_to_pascal_case(sectionId) + "Enum"; + WriteableCEnum sectionEnum(sectionEnumName); + + fs::path fontSubfolder = sectionJson->get_path("/folder"); + fs::path fontJsonPath = _settings.pathToAssets; + if(!fontSubfolder.empty()) { + fontJsonPath /= fontSubfolder; + } + fontJsonPath /= sectionJson->get_string("/filename"); + JsonFile *fontsJson; + DebugHelper::assert(JsonHelper::get().get_file(fontJsonPath, &fontsJson), + "(AssetEnums::_write_single_asset_section_enums) Could not load fonts json!"); + + std::vector fontIds; + fontsJson->get_array("/fonts-order", fontIds); + for(std::string &fontId : fontIds) { + sectionEnum.add_symbol(fontId); + } + + _cHeader.write_raw_text(sectionEnum.to_string()); +} + + void AssetEnums::_write_asset_section_enums(const std::string §ionId, JsonFile *sectionJson) { std::string sectionEnumName = StringHelper::upper_snake_case_to_pascal_case(sectionId) + "Enum"; WriteableCEnum sectionEnum(sectionEnumName); @@ -80,6 +112,20 @@ void AssetEnums::_write_asset_section_enums(const std::string §ionId, JsonFi } _cHeader.write_raw_text(sectionEnum.to_string()); + + if(sectionId == "ASSET_MENU_TEXT") { + std::string menuTextIdsEnumName = StringHelper::upper_snake_case_to_pascal_case(sectionId) + "IdsEnum"; + WriteableCEnum menuTextIdsEnum(menuTextIdsEnumName); + + std::vector menuTextIds; + sectionJson->get_array("/menu-text-build-ids", menuTextIds); + for(std::string &textId : menuTextIds) { + menuTextIdsEnum.add_symbol(textId); + } + + _cHeader.write_newline(); + _cHeader.write_raw_text(menuTextIdsEnum.to_string()); + } } void AssetEnums::_write_deferred_asset_section_enums(const std::string §ionId, JsonFile *mainJson, const std::string &deferInfoPtr) { diff --git a/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.h b/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.h index d0165a4a..f55d5831 100644 --- a/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.h +++ b/tools/dkr_assets_tool_src/prebuild/makeIncludes/assetEnums.h @@ -19,6 +19,7 @@ private: void _write_asset_section_enums(); void _write_main_asset_enum(std::vector &mainOrder); + void _write_single_asset_section_enums(const std::string §ionId, JsonFile *sectionJson); void _write_asset_section_enums(const std::string §ionId, JsonFile *sectionJson); void _write_deferred_asset_section_enums(const std::string §ionId, JsonFile *mainJson,