Path: blob/master/SonicMania/Game.c
338 views
#include "Game.h"12// -------------------------3// ENGINE VARIABLES4// -------------------------56RSDKFunctionTable RSDK;7#if MANIA_USE_PLUS8APIFunctionTable API;9#endif10#if RETRO_USE_MOD_LOADER11ModFunctionTable Mod;1213DLLExport ModVersionInfo modInfo = { RETRO_REVISION, GAME_VERSION, RETRO_MOD_LOADER_VER };1415const char *modID = "SonicMania";16#endif1718int32 RSDKRevision = RETRO_REVISION;1920RSDKSceneInfo *SceneInfo = NULL;2122RSDKGameInfo *GameInfo = NULL;23#if MANIA_USE_PLUS24RSDKSKUInfo *SKU = NULL;25#endif2627RSDKControllerState *ControllerInfo = NULL;28RSDKAnalogState *AnalogStickInfoL = NULL; // should be called "AnalogStickInfo" for Pre-Plus but its easier to be consistent this way29#if MANIA_USE_PLUS30RSDKAnalogState *AnalogStickInfoR = NULL;31RSDKTriggerState *TriggerInfoL = NULL;32RSDKTriggerState *TriggerInfoR = NULL;33#endif34RSDKTouchInfo *TouchInfo = NULL;3536#if MANIA_USE_PLUS37RSDKUnknownInfo *UnknownInfo = NULL;38#endif3940RSDKScreenInfo *ScreenInfo = NULL;4142// -------------------------43// GAME VARIABLES44// -------------------------4546GlobalVariables *globals;4748#if RETRO_REV0U49void GlobalVariables_InitCB(GlobalVariables *globals)50{51memset(globals, 0, sizeof(GlobalVariables));5253globals->saveSlotID = NO_SAVE_SLOT;5455globals->presenceID = -1;5657#if MANIA_USE_PLUS58globals->replayTableID = (uint16)-1;59globals->taTableID = (uint16)-1;6061globals->stock = (ID_RAY << 16) | (ID_KNUCKLES << 8) | ID_TAILS;62globals->characterFlags = ID_SONIC | ID_TAILS | ID_KNUCKLES | ID_MIGHTY | ID_RAY;6364globals->superMusicEnabled = true;65#endif66}67#endif6869void InitGameLogic(void);70#if RETRO_USE_MOD_LOADER71void InitModAPI(void);72#endif7374#include "GameMain.h"7576#if MANIA_USE_PLUS77void LinkGameLogicDLL(EngineInfo *info)78{79memset(&API, 0, sizeof(APIFunctionTable));80memset(&RSDK, 0, sizeof(RSDKFunctionTable));8182if (info->functionTable)83memcpy(&RSDK, info->functionTable, sizeof(RSDKFunctionTable));8485if (info->APITable)86memcpy(&API, info->APITable, sizeof(APIFunctionTable));8788#if RETRO_USE_MOD_LOADER89if (info->modTable)90memcpy(&Mod, info->modTable, sizeof(ModFunctionTable));91#endif9293GameInfo = info->gameInfo;94SKU = info->currentSKU;95SceneInfo = info->sceneInfo;96ControllerInfo = info->controllerInfo;9798AnalogStickInfoL = info->stickInfoL;99AnalogStickInfoR = info->stickInfoR;100TriggerInfoL = info->triggerInfoL;101TriggerInfoR = info->triggerInfoR;102TouchInfo = info->touchInfo;103104UnknownInfo = info->unknownInfo;105ScreenInfo = info->screenInfo;106107InitGameLogic();108}109#else110void LinkGameLogicDLL(EngineInfo info)111{112// Actual params are:113// void LinkGameLogicDLL(void *functionTable, RSDKGameInfo *gameInfo, RSDKSceneInfo *sceneInfo, RSDKControllerState *controllerInfo,114// RSDKAnalogState *stickInfoL, RSDKTouchInfo *touchInfo, RSDKScreenInfo *screenInfo)115// But by passing EngineInfo by value we can create a sorta "container" for it, to keep things consistent & easy to manage116117memset(&RSDK, 0, sizeof(RSDKFunctionTable));118119if (info.functionTable)120memcpy(&RSDK, info.functionTable, sizeof(RSDKFunctionTable));121122#if RETRO_USE_MOD_LOADER123if (info.modTable)124memcpy(&Mod, info.modTable, sizeof(ModFunctionTable));125#endif126127GameInfo = info.gameInfo;128SceneInfo = info.sceneInfo;129ControllerInfo = info.controllerInfo;130AnalogStickInfoL = info.stickInfoL;131TouchInfo = info.touchInfo;132ScreenInfo = info.screenInfo;133134InitGameLogic();135}136#endif137138// This is actually part of "LinkGameLogicDLL" but since we have 2 versions of it, its easier to use shared code this way139void InitGameLogic(void)140{141#if RETRO_REV0U142RSDK.RegisterGlobalVariables((void **)&globals, sizeof(GlobalVariables), (void(*)(void*))GlobalVariables_InitCB);143#else144RSDK.RegisterGlobalVariables((void **)&globals, sizeof(GlobalVariables));145#endif146147RSDK_REGISTER_OBJECT(Acetone);148RSDK_REGISTER_OBJECT(ActClear);149RSDK_REGISTER_OBJECT(AIZEggRobo);150#if MANIA_USE_PLUS151RSDK_REGISTER_OBJECT(AIZEncoreTutorial);152#endif153RSDK_REGISTER_OBJECT(AIZKingClaw);154#if MANIA_USE_PLUS155RSDK_REGISTER_OBJECT(AIZRockPile);156#endif157RSDK_REGISTER_OBJECT(AIZSetup);158RSDK_REGISTER_OBJECT(AIZTornado);159RSDK_REGISTER_OBJECT(AIZTornadoPath);160RSDK_REGISTER_OBJECT(AmoebaDroid);161RSDK_REGISTER_OBJECT(AnimalHBH);162RSDK_REGISTER_OBJECT(Animals);163RSDK_REGISTER_OBJECT(Announcer);164#if !MANIA_USE_PLUS165RSDK_REGISTER_OBJECT(APICallback);166#endif167RSDK_REGISTER_OBJECT(Aquis);168RSDK_REGISTER_OBJECT(Armadiloid);169RSDK_REGISTER_OBJECT(BadnikHelpers);170RSDK_REGISTER_OBJECT(Ball);171RSDK_REGISTER_OBJECT(BallCannon);172RSDK_REGISTER_OBJECT(BallHog);173RSDK_REGISTER_OBJECT(BarStool);174RSDK_REGISTER_OBJECT(Batbot);175RSDK_REGISTER_OBJECT(Batbrain);176RSDK_REGISTER_OBJECT(Beanstalk);177RSDK_REGISTER_OBJECT(BGSwitch);178RSDK_REGISTER_OBJECT(BigSqueeze);179RSDK_REGISTER_OBJECT(BladePole);180RSDK_REGISTER_OBJECT(Blaster);181RSDK_REGISTER_OBJECT(Blastoid);182#if MANIA_USE_PLUS183RSDK_REGISTER_OBJECT(Bloominator);184#endif185RSDK_REGISTER_OBJECT(Bomb);186RSDK_REGISTER_OBJECT(BouncePlant);187RSDK_REGISTER_OBJECT(BoundsMarker);188RSDK_REGISTER_OBJECT(BreakableWall);189RSDK_REGISTER_OBJECT(BreakBar);190RSDK_REGISTER_OBJECT(Bridge);191RSDK_REGISTER_OBJECT(BSS_Collectable);192RSDK_REGISTER_OBJECT(BSS_Collected);193RSDK_REGISTER_OBJECT(BSS_Horizon);194RSDK_REGISTER_OBJECT(BSS_HUD);195RSDK_REGISTER_OBJECT(BSS_Message);196RSDK_REGISTER_OBJECT(BSS_Palette);197RSDK_REGISTER_OBJECT(BSS_Player);198RSDK_REGISTER_OBJECT(BSS_Setup);199RSDK_REGISTER_OBJECT(Bubbler);200RSDK_REGISTER_OBJECT(BuckwildBall);201RSDK_REGISTER_OBJECT(Buggernaut);202RSDK_REGISTER_OBJECT(Bumpalo);203RSDK_REGISTER_OBJECT(Bungee);204RSDK_REGISTER_OBJECT(BurningLog);205RSDK_REGISTER_OBJECT(Button);206RSDK_REGISTER_OBJECT(ButtonDoor);207RSDK_REGISTER_OBJECT(BuzzBomber);208RSDK_REGISTER_OBJECT(BuzzSaw);209RSDK_REGISTER_OBJECT(CableWarp);210RSDK_REGISTER_OBJECT(Cactula);211RSDK_REGISTER_OBJECT(Camera);212RSDK_REGISTER_OBJECT(Canista);213RSDK_REGISTER_OBJECT(Caterkiller);214RSDK_REGISTER_OBJECT(CaterkillerJr);215RSDK_REGISTER_OBJECT(ChaosEmerald);216RSDK_REGISTER_OBJECT(CheckerBall);217RSDK_REGISTER_OBJECT(ChemBubble);218RSDK_REGISTER_OBJECT(ChemicalBall);219RSDK_REGISTER_OBJECT(ChemicalPool);220RSDK_REGISTER_OBJECT(Chopper);221RSDK_REGISTER_OBJECT(CircleBumper);222RSDK_REGISTER_OBJECT(Clapperboard);223RSDK_REGISTER_OBJECT(Clucker);224RSDK_REGISTER_OBJECT(CollapsingPlatform);225RSDK_REGISTER_OBJECT(CollapsingSand);226RSDK_REGISTER_OBJECT(ColorHelpers);227RSDK_REGISTER_OBJECT(Competition);228#if MANIA_USE_PLUS229RSDK_REGISTER_OBJECT(CompetitionMenu);230#endif231RSDK_REGISTER_OBJECT(CompetitionSession);232RSDK_REGISTER_OBJECT(Constellation);233RSDK_REGISTER_OBJECT(ContinuePlayer);234RSDK_REGISTER_OBJECT(ContinueSetup);235RSDK_REGISTER_OBJECT(ConveyorBelt);236RSDK_REGISTER_OBJECT(ConveyorPlatform);237RSDK_REGISTER_OBJECT(ConveyorWheel);238RSDK_REGISTER_OBJECT(CorkscrewPath);239RSDK_REGISTER_OBJECT(COverlay);240RSDK_REGISTER_OBJECT(CPZ1Intro);241RSDK_REGISTER_OBJECT(CPZ2Outro);242RSDK_REGISTER_OBJECT(CPZBoss);243RSDK_REGISTER_OBJECT(CPZSetup);244RSDK_REGISTER_OBJECT(CPZShutter);245RSDK_REGISTER_OBJECT(Crabmeat);246RSDK_REGISTER_OBJECT(Crane);247RSDK_REGISTER_OBJECT(CrashTest);248RSDK_REGISTER_OBJECT(Crate);249RSDK_REGISTER_OBJECT(CreditsSetup);250RSDK_REGISTER_OBJECT(CrimsonEye);251RSDK_REGISTER_OBJECT(Current);252RSDK_REGISTER_OBJECT(CutsceneHBH);253RSDK_REGISTER_OBJECT(CutsceneRules);254RSDK_REGISTER_OBJECT(CutsceneSeq);255RSDK_REGISTER_OBJECT(Cylinder);256RSDK_REGISTER_OBJECT(DAControl);257RSDK_REGISTER_OBJECT(Dango);258RSDK_REGISTER_OBJECT(DASetup);259RSDK_REGISTER_OBJECT(DashLift);260RSDK_REGISTER_OBJECT(DBTower);261RSDK_REGISTER_OBJECT(DCEvent);262RSDK_REGISTER_OBJECT(DDWrecker);263RSDK_REGISTER_OBJECT(Debris);264RSDK_REGISTER_OBJECT(DebugMode);265RSDK_REGISTER_OBJECT(Decoration);266RSDK_REGISTER_OBJECT(DemoMenu);267RSDK_REGISTER_OBJECT(DERobot);268#if MANIA_USE_PLUS269RSDK_REGISTER_OBJECT(DialogRunner);270#endif271RSDK_REGISTER_OBJECT(DirectorChair);272RSDK_REGISTER_OBJECT(DiveEggman);273RSDK_REGISTER_OBJECT(DNARiser);274RSDK_REGISTER_OBJECT(DoorTrigger);275RSDK_REGISTER_OBJECT(Dragonfly);276RSDK_REGISTER_OBJECT(DrawHelpers);277RSDK_REGISTER_OBJECT(Drillerdroid);278RSDK_REGISTER_OBJECT(DrillerdroidO);279RSDK_REGISTER_OBJECT(Dust);280#if !MANIA_USE_PLUS281RSDK_REGISTER_OBJECT(E3MenuSetup);282#endif283RSDK_REGISTER_OBJECT(EggJanken);284RSDK_REGISTER_OBJECT(EggJankenPart);285RSDK_REGISTER_OBJECT(EggLoco);286RSDK_REGISTER_OBJECT(Eggman);287RSDK_REGISTER_OBJECT(EggPistonsMKII);288RSDK_REGISTER_OBJECT(EggPrison);289RSDK_REGISTER_OBJECT(EggTower);290RSDK_REGISTER_OBJECT(EggTV);291RSDK_REGISTER_OBJECT(ElectroMagnet);292#if MANIA_USE_PLUS293RSDK_REGISTER_OBJECT(EncoreGoodEnd);294RSDK_REGISTER_OBJECT(EncoreIntro);295RSDK_REGISTER_OBJECT(EncoreRoute);296#endif297RSDK_REGISTER_OBJECT(ERZGunner);298RSDK_REGISTER_OBJECT(ERZKing);299RSDK_REGISTER_OBJECT(ERZMystic);300RSDK_REGISTER_OBJECT(ERZOutro);301RSDK_REGISTER_OBJECT(ERZRider);302RSDK_REGISTER_OBJECT(ERZSetup);303RSDK_REGISTER_OBJECT(ERZShinobi);304RSDK_REGISTER_OBJECT(ERZStart);305RSDK_REGISTER_OBJECT(EscapeCar);306RSDK_REGISTER_OBJECT(Explosion);307#if MANIA_USE_PLUS308RSDK_REGISTER_OBJECT(ExtrasMenu);309#endif310RSDK_REGISTER_OBJECT(Fan);311RSDK_REGISTER_OBJECT(FarPlane);312RSDK_REGISTER_OBJECT(FBZ1Outro);313#if MANIA_USE_PLUS314RSDK_REGISTER_OBJECT(FBZ2Outro);315#endif316RSDK_REGISTER_OBJECT(FBZFan);317RSDK_REGISTER_OBJECT(FBZMissile);318RSDK_REGISTER_OBJECT(FBZSetup);319RSDK_REGISTER_OBJECT(FBZSinkTrash);320RSDK_REGISTER_OBJECT(FBZStorm);321RSDK_REGISTER_OBJECT(FBZTrash);322#if MANIA_USE_PLUS323RSDK_REGISTER_OBJECT(FernParallax);324#endif325RSDK_REGISTER_OBJECT(FilmProjector);326RSDK_REGISTER_OBJECT(FilmReel);327RSDK_REGISTER_OBJECT(Fireball);328RSDK_REGISTER_OBJECT(Fireflies);329RSDK_REGISTER_OBJECT(Firework);330RSDK_REGISTER_OBJECT(Fireworm);331RSDK_REGISTER_OBJECT(FlameSpring);332RSDK_REGISTER_OBJECT(Flamethrower);333RSDK_REGISTER_OBJECT(FlasherMKII);334RSDK_REGISTER_OBJECT(FlingRamp);335RSDK_REGISTER_OBJECT(Flipper);336RSDK_REGISTER_OBJECT(FlowerPod);337RSDK_REGISTER_OBJECT(FoldingPlatform);338RSDK_REGISTER_OBJECT(ForceSpin);339RSDK_REGISTER_OBJECT(ForceUnstick);340RSDK_REGISTER_OBJECT(FrostThrower);341RSDK_REGISTER_OBJECT(Funnel);342RSDK_REGISTER_OBJECT(FXExpandRing);343RSDK_REGISTER_OBJECT(FXFade);344RSDK_REGISTER_OBJECT(FXRuby);345RSDK_REGISTER_OBJECT(FXSpinRay);346RSDK_REGISTER_OBJECT(FXTrail);347#if MANIA_USE_PLUS348RSDK_REGISTER_OBJECT(FXWaveRing);349#endif350RSDK_REGISTER_OBJECT(Gachapandora);351RSDK_REGISTER_OBJECT(GameOver);352#if MANIA_USE_PLUS353RSDK_REGISTER_STATIC_VARIABLES(GameProgress);354#else355RSDK_REGISTER_OBJECT(GameProgress);356#endif357RSDK_REGISTER_OBJECT(GasPlatform);358RSDK_REGISTER_OBJECT(GenericTrigger);359RSDK_REGISTER_OBJECT(GHZ2Outro);360RSDK_REGISTER_OBJECT(GHZCutsceneK);361RSDK_REGISTER_OBJECT(GHZCutsceneST);362RSDK_REGISTER_OBJECT(GHZSetup);363RSDK_REGISTER_OBJECT(GiantPistol);364#if MANIA_USE_PLUS365RSDK_REGISTER_OBJECT(GigaMetal);366#endif367RSDK_REGISTER_OBJECT(Gondola);368RSDK_REGISTER_OBJECT(Grabber);369RSDK_REGISTER_OBJECT(GreenScreen);370RSDK_REGISTER_OBJECT(GymBar);371RSDK_REGISTER_OBJECT(HandLauncher);372RSDK_REGISTER_OBJECT(HangConveyor);373#if MANIA_USE_PLUS374RSDK_REGISTER_OBJECT(HangGlider);375#endif376RSDK_REGISTER_OBJECT(HangPoint);377RSDK_REGISTER_OBJECT(Hatch);378RSDK_REGISTER_OBJECT(Hatterkiller);379RSDK_REGISTER_OBJECT(HCZ1Intro);380RSDK_REGISTER_OBJECT(HCZOneWayDoor);381RSDK_REGISTER_OBJECT(HCZSetup);382RSDK_REGISTER_OBJECT(HCZSpikeBall);383RSDK_REGISTER_OBJECT(HeavyGunner);384RSDK_REGISTER_OBJECT(HeavyKing);385RSDK_REGISTER_OBJECT(HeavyMystic);386RSDK_REGISTER_OBJECT(HeavyRider);387RSDK_REGISTER_OBJECT(HeavyShinobi);388RSDK_REGISTER_OBJECT(HiLoSign);389RSDK_REGISTER_OBJECT(Honkytonk);390RSDK_REGISTER_OBJECT(Hotaru);391RSDK_REGISTER_OBJECT(HotaruHiWatt);392RSDK_REGISTER_OBJECT(HotaruMKII);393RSDK_REGISTER_OBJECT(HPZEmerald);394RSDK_REGISTER_OBJECT(HUD);395RSDK_REGISTER_OBJECT(Ice);396RSDK_REGISTER_OBJECT(IceBomba);397RSDK_REGISTER_OBJECT(IceSpring);398RSDK_REGISTER_OBJECT(ImageTrail);399RSDK_REGISTER_OBJECT(Ink);400RSDK_REGISTER_OBJECT(InkWipe);401RSDK_REGISTER_OBJECT(InvincibleStars);402RSDK_REGISTER_OBJECT(InvisibleBlock);403RSDK_REGISTER_OBJECT(ItemBox);404RSDK_REGISTER_OBJECT(Iwamodoki);405RSDK_REGISTER_OBJECT(JacobsLadder);406RSDK_REGISTER_OBJECT(Jawz);407RSDK_REGISTER_OBJECT(Jellygnite);408RSDK_REGISTER_OBJECT(JuggleSaw);409RSDK_REGISTER_OBJECT(JunctionWheel);410RSDK_REGISTER_OBJECT(Kabasira);411RSDK_REGISTER_OBJECT(Kanabun);412RSDK_REGISTER_OBJECT(KingAttack);413RSDK_REGISTER_OBJECT(KingClaw);414RSDK_REGISTER_OBJECT(KleptoMobile);415RSDK_REGISTER_OBJECT(LargeGear);416RSDK_REGISTER_OBJECT(Launcher);417RSDK_REGISTER_OBJECT(LaunchSpring);418RSDK_REGISTER_OBJECT(LaundroMobile);419RSDK_REGISTER_OBJECT(LavaFall);420RSDK_REGISTER_OBJECT(LavaGeyser);421RSDK_REGISTER_OBJECT(LEDPanel);422RSDK_REGISTER_OBJECT(Letterboard);423RSDK_REGISTER_OBJECT(LevelSelect);424RSDK_REGISTER_OBJECT(LightBarrier);425RSDK_REGISTER_OBJECT(LightBulb);426RSDK_REGISTER_OBJECT(Localization);427RSDK_REGISTER_OBJECT(LocoSmoke);428RSDK_REGISTER_OBJECT(LogHelpers);429RSDK_REGISTER_OBJECT(LogoSetup);430RSDK_REGISTER_OBJECT(LottoBall);431RSDK_REGISTER_OBJECT(LottoMachine);432RSDK_REGISTER_OBJECT(LoveTester);433#if MANIA_USE_PLUS434RSDK_REGISTER_OBJECT(LRZ1Intro);435#endif436RSDK_REGISTER_OBJECT(LRZ1Outro);437RSDK_REGISTER_OBJECT(LRZ1Setup);438RSDK_REGISTER_OBJECT(LRZ2Setup);439RSDK_REGISTER_OBJECT(LRZ3Cutscene);440#if MANIA_USE_PLUS441RSDK_REGISTER_OBJECT(LRZ3Outro);442#endif443RSDK_REGISTER_OBJECT(LRZ3OutroK);444RSDK_REGISTER_OBJECT(LRZ3Setup);445RSDK_REGISTER_OBJECT(LRZConvControl);446RSDK_REGISTER_OBJECT(LRZConvDropper);447RSDK_REGISTER_OBJECT(LRZConveyor);448RSDK_REGISTER_OBJECT(LRZConvItem);449RSDK_REGISTER_OBJECT(LRZConvSwitch);450RSDK_REGISTER_OBJECT(LRZFireball);451RSDK_REGISTER_OBJECT(LRZRockPile);452RSDK_REGISTER_OBJECT(LRZSpikeBall);453RSDK_REGISTER_OBJECT(LRZSpiral);454RSDK_REGISTER_OBJECT(MagnetSphere);455RSDK_REGISTER_OBJECT(MagPlatform);456RSDK_REGISTER_OBJECT(MagSpikeBall);457#if MANIA_USE_PLUS458RSDK_REGISTER_OBJECT(MainMenu);459RSDK_REGISTER_OBJECT(ManiaModeMenu);460#endif461RSDK_REGISTER_OBJECT(MathHelpers);462RSDK_REGISTER_OBJECT(MatryoshkaBom);463RSDK_REGISTER_OBJECT(MechaBu);464RSDK_REGISTER_OBJECT(MegaChopper);465RSDK_REGISTER_OBJECT(MegaOctus);466RSDK_REGISTER_OBJECT(MenuParam);467RSDK_REGISTER_OBJECT(MenuSetup);468RSDK_REGISTER_OBJECT(MetalArm);469RSDK_REGISTER_OBJECT(MetalSonic);470RSDK_REGISTER_OBJECT(MeterDroid);471RSDK_REGISTER_OBJECT(MicDrop);472RSDK_REGISTER_OBJECT(Mine);473#if MANIA_USE_PLUS474RSDK_REGISTER_OBJECT(MMZ2Outro);475RSDK_REGISTER_OBJECT(MMZLightning);476#endif477RSDK_REGISTER_OBJECT(MMZSetup);478RSDK_REGISTER_OBJECT(MMZWheel);479RSDK_REGISTER_OBJECT(MonarchBG);480#if MANIA_USE_PLUS481RSDK_REGISTER_OBJECT(MonarchPlans);482#endif483RSDK_REGISTER_OBJECT(MonkeyDude);484RSDK_REGISTER_OBJECT(Motobug);485#if MANIA_USE_PLUS486RSDK_REGISTER_OBJECT(MSBomb);487#endif488RSDK_REGISTER_OBJECT(MSFactory);489RSDK_REGISTER_OBJECT(MSHologram);490RSDK_REGISTER_OBJECT(MSOrb);491RSDK_REGISTER_OBJECT(MSPanel);492RSDK_REGISTER_OBJECT(MSZ1KIntro);493RSDK_REGISTER_OBJECT(MSZ2Cutscene);494RSDK_REGISTER_OBJECT(MSZCutsceneK);495RSDK_REGISTER_OBJECT(MSZCutsceneST);496RSDK_REGISTER_OBJECT(MSZSetup);497RSDK_REGISTER_OBJECT(MSZSpotlight);498RSDK_REGISTER_OBJECT(Music);499RSDK_REGISTER_OBJECT(Newspaper);500RSDK_REGISTER_OBJECT(Newtron);501#if MANIA_USE_PLUS502RSDK_REGISTER_OBJECT(NoSwap);503#endif504RSDK_REGISTER_OBJECT(Octus);505RSDK_REGISTER_OBJECT(OneWayDoor);506RSDK_REGISTER_OBJECT(OOZ1Outro);507#if MANIA_USE_PLUS508RSDK_REGISTER_OBJECT(OOZ2Outro);509#endif510RSDK_REGISTER_OBJECT(OOZFlames);511RSDK_REGISTER_OBJECT(OOZSetup);512#if MANIA_USE_PLUS513RSDK_REGISTER_STATIC_VARIABLES(Options);514RSDK_REGISTER_OBJECT(OptionsMenu);515#else516RSDK_REGISTER_OBJECT(Options);517#endif518RSDK_REGISTER_OBJECT(Orbinaut);519RSDK_REGISTER_OBJECT(OrbitSpike);520RSDK_REGISTER_OBJECT(PaintingEyes);521#if MANIA_USE_PLUS522RSDK_REGISTER_OBJECT(Palette);523#endif524RSDK_REGISTER_OBJECT(PaperRoller);525RSDK_REGISTER_OBJECT(ParallaxSprite);526RSDK_REGISTER_OBJECT(ParticleHelpers);527RSDK_REGISTER_OBJECT(PathInverter);528RSDK_REGISTER_OBJECT(PauseMenu);529#if MANIA_USE_PLUS530RSDK_REGISTER_OBJECT(PBL_Bumper);531RSDK_REGISTER_OBJECT(PBL_Camera);532RSDK_REGISTER_OBJECT(PBL_Crane);533RSDK_REGISTER_OBJECT(PBL_Flipper);534RSDK_REGISTER_OBJECT(PBL_HUD);535RSDK_REGISTER_OBJECT(PBL_Player);536RSDK_REGISTER_OBJECT(PBL_Ring);537RSDK_REGISTER_OBJECT(PBL_Sector);538RSDK_REGISTER_OBJECT(PBL_Setup);539RSDK_REGISTER_OBJECT(PBL_TargetBumper);540#endif541RSDK_REGISTER_OBJECT(Pendulum);542RSDK_REGISTER_OBJECT(PetalPile);543RSDK_REGISTER_OBJECT(PhantomEgg);544RSDK_REGISTER_OBJECT(PhantomGunner);545RSDK_REGISTER_OBJECT(PhantomHand);546RSDK_REGISTER_OBJECT(PhantomKing);547RSDK_REGISTER_OBJECT(PhantomMissile);548RSDK_REGISTER_OBJECT(PhantomMystic);549RSDK_REGISTER_OBJECT(PhantomRider);550RSDK_REGISTER_OBJECT(PhantomRuby);551RSDK_REGISTER_OBJECT(PhantomShield);552RSDK_REGISTER_OBJECT(PhantomShinobi);553RSDK_REGISTER_OBJECT(PimPom);554RSDK_REGISTER_OBJECT(Pinata);555RSDK_REGISTER_OBJECT(Piston);556RSDK_REGISTER_OBJECT(PKingAttack);557RSDK_REGISTER_OBJECT(PlaneSeeSaw);558RSDK_REGISTER_OBJECT(PlaneSwitch);559RSDK_REGISTER_OBJECT(Platform);560RSDK_REGISTER_OBJECT(PlatformControl);561RSDK_REGISTER_OBJECT(PlatformNode);562RSDK_REGISTER_OBJECT(Player);563RSDK_REGISTER_OBJECT(PlayerHelpers);564RSDK_REGISTER_OBJECT(PlayerProbe);565RSDK_REGISTER_OBJECT(PohBee);566RSDK_REGISTER_OBJECT(Pointdexter);567RSDK_REGISTER_OBJECT(PopcornKernel);568RSDK_REGISTER_OBJECT(PopcornMachine);569RSDK_REGISTER_OBJECT(PopOut);570RSDK_REGISTER_OBJECT(Press);571RSDK_REGISTER_OBJECT(PrintBlock);572RSDK_REGISTER_OBJECT(Projectile);573RSDK_REGISTER_OBJECT(Propeller);574RSDK_REGISTER_OBJECT(PropellerShaft);575#if MANIA_USE_PLUS576RSDK_REGISTER_OBJECT(PSZ1Intro);577#endif578RSDK_REGISTER_OBJECT(PSZ1Setup);579RSDK_REGISTER_OBJECT(PSZ2Intro);580RSDK_REGISTER_OBJECT(PSZ2Outro);581RSDK_REGISTER_OBJECT(PSZ2Setup);582RSDK_REGISTER_OBJECT(PSZDoor);583RSDK_REGISTER_OBJECT(PSZEggman);584RSDK_REGISTER_OBJECT(PSZLauncher);585RSDK_REGISTER_OBJECT(PullChain);586RSDK_REGISTER_OBJECT(PullSwitch);587RSDK_REGISTER_OBJECT(PushSpring);588RSDK_REGISTER_OBJECT(PuyoAI);589RSDK_REGISTER_OBJECT(PuyoAttack);590RSDK_REGISTER_OBJECT(PuyoBean);591RSDK_REGISTER_OBJECT(PuyoGame);592RSDK_REGISTER_OBJECT(PuyoIndicator);593RSDK_REGISTER_OBJECT(PuyoLabel);594RSDK_REGISTER_OBJECT(PuyoLevelSelect);595RSDK_REGISTER_OBJECT(PuyoMatch);596RSDK_REGISTER_OBJECT(PuyoScore);597RSDK_REGISTER_OBJECT(Rattlekiller);598RSDK_REGISTER_OBJECT(Reagent);599RSDK_REGISTER_OBJECT(Redz);600#if MANIA_USE_PLUS601RSDK_REGISTER_OBJECT(ReplayDB);602RSDK_REGISTER_OBJECT(ReplayRecorder);603#endif604RSDK_REGISTER_OBJECT(Rexon);605#if MANIA_USE_PLUS606RSDK_REGISTER_OBJECT(Rhinobot);607#endif608RSDK_REGISTER_OBJECT(Ring);609RSDK_REGISTER_OBJECT(RingField);610RSDK_REGISTER_OBJECT(RisingLava);611RSDK_REGISTER_OBJECT(RockDrill);612RSDK_REGISTER_OBJECT(RockemSockem);613RSDK_REGISTER_OBJECT(RollerMKII);614RSDK_REGISTER_OBJECT(RotatingSpikes);615RSDK_REGISTER_OBJECT(RotatingStair);616RSDK_REGISTER_OBJECT(RPlaneShifter);617RSDK_REGISTER_OBJECT(RTeleporter);618RSDK_REGISTER_OBJECT(RubyPortal);619#if MANIA_USE_PLUS620RSDK_REGISTER_STATIC_VARIABLES(SaveGame);621#else622RSDK_REGISTER_OBJECT(SaveGame);623#endif624RSDK_REGISTER_OBJECT(Scarab);625#if MANIA_USE_PLUS626RSDK_REGISTER_OBJECT(SchrodingersCapsule);627#endif628RSDK_REGISTER_OBJECT(ScoreBonus);629RSDK_REGISTER_OBJECT(ScrewMobile);630RSDK_REGISTER_OBJECT(SDashWheel);631RSDK_REGISTER_OBJECT(SeeSaw);632RSDK_REGISTER_OBJECT(SeltzerBottle);633RSDK_REGISTER_OBJECT(SeltzerWater);634RSDK_REGISTER_OBJECT(SentryBug);635RSDK_REGISTER_OBJECT(Shield);636RSDK_REGISTER_OBJECT(Shiversaw);637RSDK_REGISTER_OBJECT(ShopWindow);638RSDK_REGISTER_OBJECT(Shuriken);639RSDK_REGISTER_OBJECT(Shutterbug);640RSDK_REGISTER_OBJECT(SideBarrel);641RSDK_REGISTER_OBJECT(SignPost);642RSDK_REGISTER_OBJECT(SilverSonic);643RSDK_REGISTER_OBJECT(SizeLaser);644RSDK_REGISTER_OBJECT(SkyTeleporter);645RSDK_REGISTER_OBJECT(Smog);646RSDK_REGISTER_OBJECT(Snowflakes);647RSDK_REGISTER_OBJECT(Sol);648RSDK_REGISTER_OBJECT(Soundboard);649RSDK_REGISTER_OBJECT(SP500);650RSDK_REGISTER_OBJECT(SP500MkII);651RSDK_REGISTER_OBJECT(SparkRail);652RSDK_REGISTER_OBJECT(Spear);653RSDK_REGISTER_OBJECT(SpearBlock);654RSDK_REGISTER_OBJECT(SpecialClear);655RSDK_REGISTER_OBJECT(SpecialRing);656RSDK_REGISTER_OBJECT(SpeedBooster);657RSDK_REGISTER_OBJECT(SpeedGate);658RSDK_REGISTER_OBJECT(SpiderMobile);659RSDK_REGISTER_OBJECT(SpikeCorridor);660RSDK_REGISTER_OBJECT(SpikeCrusher);661RSDK_REGISTER_OBJECT(SpikeFlail);662RSDK_REGISTER_OBJECT(SpikeLog);663RSDK_REGISTER_OBJECT(Spikes);664RSDK_REGISTER_OBJECT(SpinBooster);665RSDK_REGISTER_OBJECT(SpinSign);666RSDK_REGISTER_OBJECT(Spiny);667RSDK_REGISTER_OBJECT(SpiralPlatform);668RSDK_REGISTER_OBJECT(Splats);669RSDK_REGISTER_OBJECT(Spring);670RSDK_REGISTER_OBJECT(Springboard);671RSDK_REGISTER_OBJECT(SPZ1Intro);672RSDK_REGISTER_OBJECT(SPZ1Setup);673RSDK_REGISTER_OBJECT(SPZ2Outro);674RSDK_REGISTER_OBJECT(SPZ2Setup);675RSDK_REGISTER_OBJECT(SSZ1Intro);676RSDK_REGISTER_OBJECT(SSZ1Outro);677RSDK_REGISTER_OBJECT(SSZ1Setup);678RSDK_REGISTER_OBJECT(SSZ2Setup);679RSDK_REGISTER_OBJECT(SSZ3Cutscene);680#if MANIA_USE_PLUS681RSDK_REGISTER_OBJECT(SSZEggman);682#endif683RSDK_REGISTER_OBJECT(SSZSpikeBall);684RSDK_REGISTER_OBJECT(SSZSpotlight);685RSDK_REGISTER_OBJECT(Staircase);686RSDK_REGISTER_OBJECT(Stalactite);687RSDK_REGISTER_OBJECT(StarPost);688RSDK_REGISTER_OBJECT(Stegway);689RSDK_REGISTER_OBJECT(StickyPlatform);690#if MANIA_USE_PLUS691RSDK_REGISTER_OBJECT(Summary);692RSDK_REGISTER_OBJECT(SummaryEmerald);693#endif694RSDK_REGISTER_OBJECT(SuperSparkle);695RSDK_REGISTER_OBJECT(Sweep);696RSDK_REGISTER_OBJECT(SwingRope);697RSDK_REGISTER_OBJECT(SwitchDoor);698RSDK_REGISTER_OBJECT(Syringe);699RSDK_REGISTER_OBJECT(TAEmerald);700RSDK_REGISTER_OBJECT(TargetBumper);701RSDK_REGISTER_OBJECT(Technosqueek);702RSDK_REGISTER_OBJECT(TeeterTotter);703RSDK_REGISTER_OBJECT(TetherBall);704RSDK_REGISTER_OBJECT(ThanksSetup);705RSDK_REGISTER_OBJECT(ThoughtBubble);706RSDK_REGISTER_OBJECT(TilePlatform);707#if MANIA_USE_PLUS708RSDK_REGISTER_STATIC_VARIABLES(TimeAttackData);709#else710RSDK_REGISTER_OBJECT(TimeAttackData);711#endif712RSDK_REGISTER_OBJECT(TimeAttackGate);713#if MANIA_USE_PLUS714RSDK_REGISTER_OBJECT(TimeAttackMenu);715#endif716RSDK_REGISTER_OBJECT(TimePost);717RSDK_REGISTER_OBJECT(TimeTravelSetup);718RSDK_REGISTER_OBJECT(TippingPlatform);719RSDK_REGISTER_OBJECT(Title3DSprite);720RSDK_REGISTER_OBJECT(TitleBG);721RSDK_REGISTER_OBJECT(TitleCard);722#if MANIA_USE_PLUS723RSDK_REGISTER_OBJECT(TitleEggman);724#endif725RSDK_REGISTER_OBJECT(TitleLogo);726RSDK_REGISTER_OBJECT(TitleSetup);727RSDK_REGISTER_OBJECT(TitleSonic);728RSDK_REGISTER_OBJECT(TMZ1Outro);729RSDK_REGISTER_OBJECT(TMZ1Setup);730RSDK_REGISTER_OBJECT(TMZ2Outro);731RSDK_REGISTER_OBJECT(TMZ2Setup);732RSDK_REGISTER_OBJECT(TMZ3Setup);733RSDK_REGISTER_OBJECT(TMZAlert);734RSDK_REGISTER_OBJECT(TMZBarrier);735RSDK_REGISTER_OBJECT(TMZCable);736RSDK_REGISTER_OBJECT(TMZFlames);737RSDK_REGISTER_OBJECT(Tornado);738RSDK_REGISTER_OBJECT(TornadoPath);739RSDK_REGISTER_OBJECT(Toxomister);740RSDK_REGISTER_OBJECT(TransportTube);741RSDK_REGISTER_OBJECT(TryAgain);742#if MANIA_USE_PLUS743RSDK_REGISTER_OBJECT(TryAgainE);744#endif745RSDK_REGISTER_OBJECT(TTCutscene);746RSDK_REGISTER_OBJECT(TubeSpring);747RSDK_REGISTER_OBJECT(Tubinaut);748RSDK_REGISTER_OBJECT(Tuesday);749RSDK_REGISTER_OBJECT(Turbine);750RSDK_REGISTER_OBJECT(TurboSpiker);751RSDK_REGISTER_OBJECT(TurboTurtle);752RSDK_REGISTER_OBJECT(Turntable);753RSDK_REGISTER_OBJECT(TurretSwitch);754RSDK_REGISTER_OBJECT(TVFlyingBattery);755RSDK_REGISTER_OBJECT(TVPole);756RSDK_REGISTER_OBJECT(TVVan);757RSDK_REGISTER_OBJECT(TwistedTubes);758RSDK_REGISTER_OBJECT(TwistingDoor);759RSDK_REGISTER_OBJECT(TwistingSlide);760RSDK_REGISTER_OBJECT(UberCaterkiller);761RSDK_REGISTER_OBJECT(UFO_Camera);762RSDK_REGISTER_OBJECT(UFO_Circuit);763RSDK_REGISTER_OBJECT(UFO_Decoration);764RSDK_REGISTER_OBJECT(UFO_Dust);765RSDK_REGISTER_OBJECT(UFO_HUD);766RSDK_REGISTER_OBJECT(UFO_ItemBox);767RSDK_REGISTER_OBJECT(UFO_Message);768RSDK_REGISTER_OBJECT(UFO_Plasma);769RSDK_REGISTER_OBJECT(UFO_Player);770RSDK_REGISTER_OBJECT(UFO_Ring);771RSDK_REGISTER_OBJECT(UFO_Setup);772RSDK_REGISTER_OBJECT(UFO_Shadow);773RSDK_REGISTER_OBJECT(UFO_SpeedLines);774RSDK_REGISTER_OBJECT(UFO_Sphere);775RSDK_REGISTER_OBJECT(UFO_Springboard);776RSDK_REGISTER_OBJECT(UFO_Water);777RSDK_REGISTER_OBJECT(UIBackground);778RSDK_REGISTER_OBJECT(UIButton);779RSDK_REGISTER_OBJECT(UIButtonLabel);780RSDK_REGISTER_OBJECT(UIButtonPrompt);781#if MANIA_USE_PLUS782RSDK_REGISTER_OBJECT(UICarousel);783#endif784RSDK_REGISTER_OBJECT(UICharButton);785RSDK_REGISTER_OBJECT(UIChoice);786RSDK_REGISTER_OBJECT(UIControl);787RSDK_REGISTER_OBJECT(UICreditsText);788RSDK_REGISTER_OBJECT(UIDialog);789#if MANIA_USE_PLUS790RSDK_REGISTER_OBJECT(UIDiorama);791#endif792RSDK_REGISTER_OBJECT(UIHeading);793RSDK_REGISTER_OBJECT(UIInfoLabel);794RSDK_REGISTER_OBJECT(UIKeyBinder);795RSDK_REGISTER_OBJECT(UILeaderboard);796RSDK_REGISTER_OBJECT(UIMedallionPanel);797RSDK_REGISTER_OBJECT(UIModeButton);798RSDK_REGISTER_OBJECT(UIOptionPanel);799RSDK_REGISTER_OBJECT(UIPicture);800#if MANIA_USE_PLUS801RSDK_REGISTER_OBJECT(UIPopover);802RSDK_REGISTER_OBJECT(UIRankButton);803RSDK_REGISTER_OBJECT(UIReplayCarousel);804#endif805#if GAME_VERSION != VER_100806RSDK_REGISTER_OBJECT(UIResPicker);807#endif808RSDK_REGISTER_OBJECT(UISaveSlot);809#if MANIA_USE_PLUS810RSDK_REGISTER_OBJECT(UIShifter);811#endif812RSDK_REGISTER_OBJECT(UISlider);813RSDK_REGISTER_OBJECT(UISubHeading);814#if MANIA_USE_PLUS815RSDK_REGISTER_OBJECT(UITABanner);816#endif817RSDK_REGISTER_OBJECT(UITAZoneModule);818RSDK_REGISTER_OBJECT(UIText);819RSDK_REGISTER_OBJECT(UITransition);820RSDK_REGISTER_OBJECT(UIUsernamePopup);821RSDK_REGISTER_OBJECT(UIVideo);822RSDK_REGISTER_OBJECT(UIVsCharSelector);823RSDK_REGISTER_OBJECT(UIVsResults);824RSDK_REGISTER_OBJECT(UIVsRoundPicker);825RSDK_REGISTER_OBJECT(UIVsScoreboard);826RSDK_REGISTER_OBJECT(UIVsZoneButton);827RSDK_REGISTER_OBJECT(UIWaitSpinner);828RSDK_REGISTER_OBJECT(UIWidgets);829#if GAME_VERSION != VER_100830RSDK_REGISTER_OBJECT(UIWinSize);831#endif832RSDK_REGISTER_OBJECT(UncurlPlant);833RSDK_REGISTER_OBJECT(Valve);834RSDK_REGISTER_OBJECT(VanishPlatform);835RSDK_REGISTER_OBJECT(Vultron);836RSDK_REGISTER_OBJECT(WalkerLegs);837RSDK_REGISTER_OBJECT(WallBumper);838RSDK_REGISTER_OBJECT(WallCrawl);839RSDK_REGISTER_OBJECT(WarpDoor);840RSDK_REGISTER_OBJECT(Water);841#if MANIA_USE_PLUS842RSDK_REGISTER_OBJECT(WaterfallSound);843#endif844RSDK_REGISTER_OBJECT(WaterGush);845RSDK_REGISTER_OBJECT(WeatherMobile);846RSDK_REGISTER_OBJECT(WeatherTV);847RSDK_REGISTER_OBJECT(Whirlpool);848RSDK_REGISTER_OBJECT(Wisp);849RSDK_REGISTER_OBJECT(WoodChipper);850RSDK_REGISTER_OBJECT(Woodrow);851RSDK_REGISTER_OBJECT(YoyoPulley);852RSDK_REGISTER_OBJECT(ZipLine);853RSDK_REGISTER_OBJECT(Zone);854855#if RETRO_USE_MOD_LOADER856InitModAPI();857#endif858}859860#if RETRO_USE_MOD_LOADER861#include "PublicFunctions.c"862863void InitModAPI(void)864{865// Init Public Functions866InitPublicFunctions();867}868869bool32 LinkModLogic(EngineInfo *info, const char *id)870{871#if RETRO_REV02872LinkGameLogicDLL(info);873#else874LinkGameLogicDLL(*info);875#endif876return true;877}878#endif879880