Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Game.c
338 views
1
#include "Game.h"
2
3
// -------------------------
4
// ENGINE VARIABLES
5
// -------------------------
6
7
RSDKFunctionTable RSDK;
8
#if MANIA_USE_PLUS
9
APIFunctionTable API;
10
#endif
11
#if RETRO_USE_MOD_LOADER
12
ModFunctionTable Mod;
13
14
DLLExport ModVersionInfo modInfo = { RETRO_REVISION, GAME_VERSION, RETRO_MOD_LOADER_VER };
15
16
const char *modID = "SonicMania";
17
#endif
18
19
int32 RSDKRevision = RETRO_REVISION;
20
21
RSDKSceneInfo *SceneInfo = NULL;
22
23
RSDKGameInfo *GameInfo = NULL;
24
#if MANIA_USE_PLUS
25
RSDKSKUInfo *SKU = NULL;
26
#endif
27
28
RSDKControllerState *ControllerInfo = NULL;
29
RSDKAnalogState *AnalogStickInfoL = NULL; // should be called "AnalogStickInfo" for Pre-Plus but its easier to be consistent this way
30
#if MANIA_USE_PLUS
31
RSDKAnalogState *AnalogStickInfoR = NULL;
32
RSDKTriggerState *TriggerInfoL = NULL;
33
RSDKTriggerState *TriggerInfoR = NULL;
34
#endif
35
RSDKTouchInfo *TouchInfo = NULL;
36
37
#if MANIA_USE_PLUS
38
RSDKUnknownInfo *UnknownInfo = NULL;
39
#endif
40
41
RSDKScreenInfo *ScreenInfo = NULL;
42
43
// -------------------------
44
// GAME VARIABLES
45
// -------------------------
46
47
GlobalVariables *globals;
48
49
#if RETRO_REV0U
50
void GlobalVariables_InitCB(GlobalVariables *globals)
51
{
52
memset(globals, 0, sizeof(GlobalVariables));
53
54
globals->saveSlotID = NO_SAVE_SLOT;
55
56
globals->presenceID = -1;
57
58
#if MANIA_USE_PLUS
59
globals->replayTableID = (uint16)-1;
60
globals->taTableID = (uint16)-1;
61
62
globals->stock = (ID_RAY << 16) | (ID_KNUCKLES << 8) | ID_TAILS;
63
globals->characterFlags = ID_SONIC | ID_TAILS | ID_KNUCKLES | ID_MIGHTY | ID_RAY;
64
65
globals->superMusicEnabled = true;
66
#endif
67
}
68
#endif
69
70
void InitGameLogic(void);
71
#if RETRO_USE_MOD_LOADER
72
void InitModAPI(void);
73
#endif
74
75
#include "GameMain.h"
76
77
#if MANIA_USE_PLUS
78
void LinkGameLogicDLL(EngineInfo *info)
79
{
80
memset(&API, 0, sizeof(APIFunctionTable));
81
memset(&RSDK, 0, sizeof(RSDKFunctionTable));
82
83
if (info->functionTable)
84
memcpy(&RSDK, info->functionTable, sizeof(RSDKFunctionTable));
85
86
if (info->APITable)
87
memcpy(&API, info->APITable, sizeof(APIFunctionTable));
88
89
#if RETRO_USE_MOD_LOADER
90
if (info->modTable)
91
memcpy(&Mod, info->modTable, sizeof(ModFunctionTable));
92
#endif
93
94
GameInfo = info->gameInfo;
95
SKU = info->currentSKU;
96
SceneInfo = info->sceneInfo;
97
ControllerInfo = info->controllerInfo;
98
99
AnalogStickInfoL = info->stickInfoL;
100
AnalogStickInfoR = info->stickInfoR;
101
TriggerInfoL = info->triggerInfoL;
102
TriggerInfoR = info->triggerInfoR;
103
TouchInfo = info->touchInfo;
104
105
UnknownInfo = info->unknownInfo;
106
ScreenInfo = info->screenInfo;
107
108
InitGameLogic();
109
}
110
#else
111
void LinkGameLogicDLL(EngineInfo info)
112
{
113
// Actual params are:
114
// void LinkGameLogicDLL(void *functionTable, RSDKGameInfo *gameInfo, RSDKSceneInfo *sceneInfo, RSDKControllerState *controllerInfo,
115
// RSDKAnalogState *stickInfoL, RSDKTouchInfo *touchInfo, RSDKScreenInfo *screenInfo)
116
// But by passing EngineInfo by value we can create a sorta "container" for it, to keep things consistent & easy to manage
117
118
memset(&RSDK, 0, sizeof(RSDKFunctionTable));
119
120
if (info.functionTable)
121
memcpy(&RSDK, info.functionTable, sizeof(RSDKFunctionTable));
122
123
#if RETRO_USE_MOD_LOADER
124
if (info.modTable)
125
memcpy(&Mod, info.modTable, sizeof(ModFunctionTable));
126
#endif
127
128
GameInfo = info.gameInfo;
129
SceneInfo = info.sceneInfo;
130
ControllerInfo = info.controllerInfo;
131
AnalogStickInfoL = info.stickInfoL;
132
TouchInfo = info.touchInfo;
133
ScreenInfo = info.screenInfo;
134
135
InitGameLogic();
136
}
137
#endif
138
139
// This is actually part of "LinkGameLogicDLL" but since we have 2 versions of it, its easier to use shared code this way
140
void InitGameLogic(void)
141
{
142
#if RETRO_REV0U
143
RSDK.RegisterGlobalVariables((void **)&globals, sizeof(GlobalVariables), (void(*)(void*))GlobalVariables_InitCB);
144
#else
145
RSDK.RegisterGlobalVariables((void **)&globals, sizeof(GlobalVariables));
146
#endif
147
148
RSDK_REGISTER_OBJECT(Acetone);
149
RSDK_REGISTER_OBJECT(ActClear);
150
RSDK_REGISTER_OBJECT(AIZEggRobo);
151
#if MANIA_USE_PLUS
152
RSDK_REGISTER_OBJECT(AIZEncoreTutorial);
153
#endif
154
RSDK_REGISTER_OBJECT(AIZKingClaw);
155
#if MANIA_USE_PLUS
156
RSDK_REGISTER_OBJECT(AIZRockPile);
157
#endif
158
RSDK_REGISTER_OBJECT(AIZSetup);
159
RSDK_REGISTER_OBJECT(AIZTornado);
160
RSDK_REGISTER_OBJECT(AIZTornadoPath);
161
RSDK_REGISTER_OBJECT(AmoebaDroid);
162
RSDK_REGISTER_OBJECT(AnimalHBH);
163
RSDK_REGISTER_OBJECT(Animals);
164
RSDK_REGISTER_OBJECT(Announcer);
165
#if !MANIA_USE_PLUS
166
RSDK_REGISTER_OBJECT(APICallback);
167
#endif
168
RSDK_REGISTER_OBJECT(Aquis);
169
RSDK_REGISTER_OBJECT(Armadiloid);
170
RSDK_REGISTER_OBJECT(BadnikHelpers);
171
RSDK_REGISTER_OBJECT(Ball);
172
RSDK_REGISTER_OBJECT(BallCannon);
173
RSDK_REGISTER_OBJECT(BallHog);
174
RSDK_REGISTER_OBJECT(BarStool);
175
RSDK_REGISTER_OBJECT(Batbot);
176
RSDK_REGISTER_OBJECT(Batbrain);
177
RSDK_REGISTER_OBJECT(Beanstalk);
178
RSDK_REGISTER_OBJECT(BGSwitch);
179
RSDK_REGISTER_OBJECT(BigSqueeze);
180
RSDK_REGISTER_OBJECT(BladePole);
181
RSDK_REGISTER_OBJECT(Blaster);
182
RSDK_REGISTER_OBJECT(Blastoid);
183
#if MANIA_USE_PLUS
184
RSDK_REGISTER_OBJECT(Bloominator);
185
#endif
186
RSDK_REGISTER_OBJECT(Bomb);
187
RSDK_REGISTER_OBJECT(BouncePlant);
188
RSDK_REGISTER_OBJECT(BoundsMarker);
189
RSDK_REGISTER_OBJECT(BreakableWall);
190
RSDK_REGISTER_OBJECT(BreakBar);
191
RSDK_REGISTER_OBJECT(Bridge);
192
RSDK_REGISTER_OBJECT(BSS_Collectable);
193
RSDK_REGISTER_OBJECT(BSS_Collected);
194
RSDK_REGISTER_OBJECT(BSS_Horizon);
195
RSDK_REGISTER_OBJECT(BSS_HUD);
196
RSDK_REGISTER_OBJECT(BSS_Message);
197
RSDK_REGISTER_OBJECT(BSS_Palette);
198
RSDK_REGISTER_OBJECT(BSS_Player);
199
RSDK_REGISTER_OBJECT(BSS_Setup);
200
RSDK_REGISTER_OBJECT(Bubbler);
201
RSDK_REGISTER_OBJECT(BuckwildBall);
202
RSDK_REGISTER_OBJECT(Buggernaut);
203
RSDK_REGISTER_OBJECT(Bumpalo);
204
RSDK_REGISTER_OBJECT(Bungee);
205
RSDK_REGISTER_OBJECT(BurningLog);
206
RSDK_REGISTER_OBJECT(Button);
207
RSDK_REGISTER_OBJECT(ButtonDoor);
208
RSDK_REGISTER_OBJECT(BuzzBomber);
209
RSDK_REGISTER_OBJECT(BuzzSaw);
210
RSDK_REGISTER_OBJECT(CableWarp);
211
RSDK_REGISTER_OBJECT(Cactula);
212
RSDK_REGISTER_OBJECT(Camera);
213
RSDK_REGISTER_OBJECT(Canista);
214
RSDK_REGISTER_OBJECT(Caterkiller);
215
RSDK_REGISTER_OBJECT(CaterkillerJr);
216
RSDK_REGISTER_OBJECT(ChaosEmerald);
217
RSDK_REGISTER_OBJECT(CheckerBall);
218
RSDK_REGISTER_OBJECT(ChemBubble);
219
RSDK_REGISTER_OBJECT(ChemicalBall);
220
RSDK_REGISTER_OBJECT(ChemicalPool);
221
RSDK_REGISTER_OBJECT(Chopper);
222
RSDK_REGISTER_OBJECT(CircleBumper);
223
RSDK_REGISTER_OBJECT(Clapperboard);
224
RSDK_REGISTER_OBJECT(Clucker);
225
RSDK_REGISTER_OBJECT(CollapsingPlatform);
226
RSDK_REGISTER_OBJECT(CollapsingSand);
227
RSDK_REGISTER_OBJECT(ColorHelpers);
228
RSDK_REGISTER_OBJECT(Competition);
229
#if MANIA_USE_PLUS
230
RSDK_REGISTER_OBJECT(CompetitionMenu);
231
#endif
232
RSDK_REGISTER_OBJECT(CompetitionSession);
233
RSDK_REGISTER_OBJECT(Constellation);
234
RSDK_REGISTER_OBJECT(ContinuePlayer);
235
RSDK_REGISTER_OBJECT(ContinueSetup);
236
RSDK_REGISTER_OBJECT(ConveyorBelt);
237
RSDK_REGISTER_OBJECT(ConveyorPlatform);
238
RSDK_REGISTER_OBJECT(ConveyorWheel);
239
RSDK_REGISTER_OBJECT(CorkscrewPath);
240
RSDK_REGISTER_OBJECT(COverlay);
241
RSDK_REGISTER_OBJECT(CPZ1Intro);
242
RSDK_REGISTER_OBJECT(CPZ2Outro);
243
RSDK_REGISTER_OBJECT(CPZBoss);
244
RSDK_REGISTER_OBJECT(CPZSetup);
245
RSDK_REGISTER_OBJECT(CPZShutter);
246
RSDK_REGISTER_OBJECT(Crabmeat);
247
RSDK_REGISTER_OBJECT(Crane);
248
RSDK_REGISTER_OBJECT(CrashTest);
249
RSDK_REGISTER_OBJECT(Crate);
250
RSDK_REGISTER_OBJECT(CreditsSetup);
251
RSDK_REGISTER_OBJECT(CrimsonEye);
252
RSDK_REGISTER_OBJECT(Current);
253
RSDK_REGISTER_OBJECT(CutsceneHBH);
254
RSDK_REGISTER_OBJECT(CutsceneRules);
255
RSDK_REGISTER_OBJECT(CutsceneSeq);
256
RSDK_REGISTER_OBJECT(Cylinder);
257
RSDK_REGISTER_OBJECT(DAControl);
258
RSDK_REGISTER_OBJECT(Dango);
259
RSDK_REGISTER_OBJECT(DASetup);
260
RSDK_REGISTER_OBJECT(DashLift);
261
RSDK_REGISTER_OBJECT(DBTower);
262
RSDK_REGISTER_OBJECT(DCEvent);
263
RSDK_REGISTER_OBJECT(DDWrecker);
264
RSDK_REGISTER_OBJECT(Debris);
265
RSDK_REGISTER_OBJECT(DebugMode);
266
RSDK_REGISTER_OBJECT(Decoration);
267
RSDK_REGISTER_OBJECT(DemoMenu);
268
RSDK_REGISTER_OBJECT(DERobot);
269
#if MANIA_USE_PLUS
270
RSDK_REGISTER_OBJECT(DialogRunner);
271
#endif
272
RSDK_REGISTER_OBJECT(DirectorChair);
273
RSDK_REGISTER_OBJECT(DiveEggman);
274
RSDK_REGISTER_OBJECT(DNARiser);
275
RSDK_REGISTER_OBJECT(DoorTrigger);
276
RSDK_REGISTER_OBJECT(Dragonfly);
277
RSDK_REGISTER_OBJECT(DrawHelpers);
278
RSDK_REGISTER_OBJECT(Drillerdroid);
279
RSDK_REGISTER_OBJECT(DrillerdroidO);
280
RSDK_REGISTER_OBJECT(Dust);
281
#if !MANIA_USE_PLUS
282
RSDK_REGISTER_OBJECT(E3MenuSetup);
283
#endif
284
RSDK_REGISTER_OBJECT(EggJanken);
285
RSDK_REGISTER_OBJECT(EggJankenPart);
286
RSDK_REGISTER_OBJECT(EggLoco);
287
RSDK_REGISTER_OBJECT(Eggman);
288
RSDK_REGISTER_OBJECT(EggPistonsMKII);
289
RSDK_REGISTER_OBJECT(EggPrison);
290
RSDK_REGISTER_OBJECT(EggTower);
291
RSDK_REGISTER_OBJECT(EggTV);
292
RSDK_REGISTER_OBJECT(ElectroMagnet);
293
#if MANIA_USE_PLUS
294
RSDK_REGISTER_OBJECT(EncoreGoodEnd);
295
RSDK_REGISTER_OBJECT(EncoreIntro);
296
RSDK_REGISTER_OBJECT(EncoreRoute);
297
#endif
298
RSDK_REGISTER_OBJECT(ERZGunner);
299
RSDK_REGISTER_OBJECT(ERZKing);
300
RSDK_REGISTER_OBJECT(ERZMystic);
301
RSDK_REGISTER_OBJECT(ERZOutro);
302
RSDK_REGISTER_OBJECT(ERZRider);
303
RSDK_REGISTER_OBJECT(ERZSetup);
304
RSDK_REGISTER_OBJECT(ERZShinobi);
305
RSDK_REGISTER_OBJECT(ERZStart);
306
RSDK_REGISTER_OBJECT(EscapeCar);
307
RSDK_REGISTER_OBJECT(Explosion);
308
#if MANIA_USE_PLUS
309
RSDK_REGISTER_OBJECT(ExtrasMenu);
310
#endif
311
RSDK_REGISTER_OBJECT(Fan);
312
RSDK_REGISTER_OBJECT(FarPlane);
313
RSDK_REGISTER_OBJECT(FBZ1Outro);
314
#if MANIA_USE_PLUS
315
RSDK_REGISTER_OBJECT(FBZ2Outro);
316
#endif
317
RSDK_REGISTER_OBJECT(FBZFan);
318
RSDK_REGISTER_OBJECT(FBZMissile);
319
RSDK_REGISTER_OBJECT(FBZSetup);
320
RSDK_REGISTER_OBJECT(FBZSinkTrash);
321
RSDK_REGISTER_OBJECT(FBZStorm);
322
RSDK_REGISTER_OBJECT(FBZTrash);
323
#if MANIA_USE_PLUS
324
RSDK_REGISTER_OBJECT(FernParallax);
325
#endif
326
RSDK_REGISTER_OBJECT(FilmProjector);
327
RSDK_REGISTER_OBJECT(FilmReel);
328
RSDK_REGISTER_OBJECT(Fireball);
329
RSDK_REGISTER_OBJECT(Fireflies);
330
RSDK_REGISTER_OBJECT(Firework);
331
RSDK_REGISTER_OBJECT(Fireworm);
332
RSDK_REGISTER_OBJECT(FlameSpring);
333
RSDK_REGISTER_OBJECT(Flamethrower);
334
RSDK_REGISTER_OBJECT(FlasherMKII);
335
RSDK_REGISTER_OBJECT(FlingRamp);
336
RSDK_REGISTER_OBJECT(Flipper);
337
RSDK_REGISTER_OBJECT(FlowerPod);
338
RSDK_REGISTER_OBJECT(FoldingPlatform);
339
RSDK_REGISTER_OBJECT(ForceSpin);
340
RSDK_REGISTER_OBJECT(ForceUnstick);
341
RSDK_REGISTER_OBJECT(FrostThrower);
342
RSDK_REGISTER_OBJECT(Funnel);
343
RSDK_REGISTER_OBJECT(FXExpandRing);
344
RSDK_REGISTER_OBJECT(FXFade);
345
RSDK_REGISTER_OBJECT(FXRuby);
346
RSDK_REGISTER_OBJECT(FXSpinRay);
347
RSDK_REGISTER_OBJECT(FXTrail);
348
#if MANIA_USE_PLUS
349
RSDK_REGISTER_OBJECT(FXWaveRing);
350
#endif
351
RSDK_REGISTER_OBJECT(Gachapandora);
352
RSDK_REGISTER_OBJECT(GameOver);
353
#if MANIA_USE_PLUS
354
RSDK_REGISTER_STATIC_VARIABLES(GameProgress);
355
#else
356
RSDK_REGISTER_OBJECT(GameProgress);
357
#endif
358
RSDK_REGISTER_OBJECT(GasPlatform);
359
RSDK_REGISTER_OBJECT(GenericTrigger);
360
RSDK_REGISTER_OBJECT(GHZ2Outro);
361
RSDK_REGISTER_OBJECT(GHZCutsceneK);
362
RSDK_REGISTER_OBJECT(GHZCutsceneST);
363
RSDK_REGISTER_OBJECT(GHZSetup);
364
RSDK_REGISTER_OBJECT(GiantPistol);
365
#if MANIA_USE_PLUS
366
RSDK_REGISTER_OBJECT(GigaMetal);
367
#endif
368
RSDK_REGISTER_OBJECT(Gondola);
369
RSDK_REGISTER_OBJECT(Grabber);
370
RSDK_REGISTER_OBJECT(GreenScreen);
371
RSDK_REGISTER_OBJECT(GymBar);
372
RSDK_REGISTER_OBJECT(HandLauncher);
373
RSDK_REGISTER_OBJECT(HangConveyor);
374
#if MANIA_USE_PLUS
375
RSDK_REGISTER_OBJECT(HangGlider);
376
#endif
377
RSDK_REGISTER_OBJECT(HangPoint);
378
RSDK_REGISTER_OBJECT(Hatch);
379
RSDK_REGISTER_OBJECT(Hatterkiller);
380
RSDK_REGISTER_OBJECT(HCZ1Intro);
381
RSDK_REGISTER_OBJECT(HCZOneWayDoor);
382
RSDK_REGISTER_OBJECT(HCZSetup);
383
RSDK_REGISTER_OBJECT(HCZSpikeBall);
384
RSDK_REGISTER_OBJECT(HeavyGunner);
385
RSDK_REGISTER_OBJECT(HeavyKing);
386
RSDK_REGISTER_OBJECT(HeavyMystic);
387
RSDK_REGISTER_OBJECT(HeavyRider);
388
RSDK_REGISTER_OBJECT(HeavyShinobi);
389
RSDK_REGISTER_OBJECT(HiLoSign);
390
RSDK_REGISTER_OBJECT(Honkytonk);
391
RSDK_REGISTER_OBJECT(Hotaru);
392
RSDK_REGISTER_OBJECT(HotaruHiWatt);
393
RSDK_REGISTER_OBJECT(HotaruMKII);
394
RSDK_REGISTER_OBJECT(HPZEmerald);
395
RSDK_REGISTER_OBJECT(HUD);
396
RSDK_REGISTER_OBJECT(Ice);
397
RSDK_REGISTER_OBJECT(IceBomba);
398
RSDK_REGISTER_OBJECT(IceSpring);
399
RSDK_REGISTER_OBJECT(ImageTrail);
400
RSDK_REGISTER_OBJECT(Ink);
401
RSDK_REGISTER_OBJECT(InkWipe);
402
RSDK_REGISTER_OBJECT(InvincibleStars);
403
RSDK_REGISTER_OBJECT(InvisibleBlock);
404
RSDK_REGISTER_OBJECT(ItemBox);
405
RSDK_REGISTER_OBJECT(Iwamodoki);
406
RSDK_REGISTER_OBJECT(JacobsLadder);
407
RSDK_REGISTER_OBJECT(Jawz);
408
RSDK_REGISTER_OBJECT(Jellygnite);
409
RSDK_REGISTER_OBJECT(JuggleSaw);
410
RSDK_REGISTER_OBJECT(JunctionWheel);
411
RSDK_REGISTER_OBJECT(Kabasira);
412
RSDK_REGISTER_OBJECT(Kanabun);
413
RSDK_REGISTER_OBJECT(KingAttack);
414
RSDK_REGISTER_OBJECT(KingClaw);
415
RSDK_REGISTER_OBJECT(KleptoMobile);
416
RSDK_REGISTER_OBJECT(LargeGear);
417
RSDK_REGISTER_OBJECT(Launcher);
418
RSDK_REGISTER_OBJECT(LaunchSpring);
419
RSDK_REGISTER_OBJECT(LaundroMobile);
420
RSDK_REGISTER_OBJECT(LavaFall);
421
RSDK_REGISTER_OBJECT(LavaGeyser);
422
RSDK_REGISTER_OBJECT(LEDPanel);
423
RSDK_REGISTER_OBJECT(Letterboard);
424
RSDK_REGISTER_OBJECT(LevelSelect);
425
RSDK_REGISTER_OBJECT(LightBarrier);
426
RSDK_REGISTER_OBJECT(LightBulb);
427
RSDK_REGISTER_OBJECT(Localization);
428
RSDK_REGISTER_OBJECT(LocoSmoke);
429
RSDK_REGISTER_OBJECT(LogHelpers);
430
RSDK_REGISTER_OBJECT(LogoSetup);
431
RSDK_REGISTER_OBJECT(LottoBall);
432
RSDK_REGISTER_OBJECT(LottoMachine);
433
RSDK_REGISTER_OBJECT(LoveTester);
434
#if MANIA_USE_PLUS
435
RSDK_REGISTER_OBJECT(LRZ1Intro);
436
#endif
437
RSDK_REGISTER_OBJECT(LRZ1Outro);
438
RSDK_REGISTER_OBJECT(LRZ1Setup);
439
RSDK_REGISTER_OBJECT(LRZ2Setup);
440
RSDK_REGISTER_OBJECT(LRZ3Cutscene);
441
#if MANIA_USE_PLUS
442
RSDK_REGISTER_OBJECT(LRZ3Outro);
443
#endif
444
RSDK_REGISTER_OBJECT(LRZ3OutroK);
445
RSDK_REGISTER_OBJECT(LRZ3Setup);
446
RSDK_REGISTER_OBJECT(LRZConvControl);
447
RSDK_REGISTER_OBJECT(LRZConvDropper);
448
RSDK_REGISTER_OBJECT(LRZConveyor);
449
RSDK_REGISTER_OBJECT(LRZConvItem);
450
RSDK_REGISTER_OBJECT(LRZConvSwitch);
451
RSDK_REGISTER_OBJECT(LRZFireball);
452
RSDK_REGISTER_OBJECT(LRZRockPile);
453
RSDK_REGISTER_OBJECT(LRZSpikeBall);
454
RSDK_REGISTER_OBJECT(LRZSpiral);
455
RSDK_REGISTER_OBJECT(MagnetSphere);
456
RSDK_REGISTER_OBJECT(MagPlatform);
457
RSDK_REGISTER_OBJECT(MagSpikeBall);
458
#if MANIA_USE_PLUS
459
RSDK_REGISTER_OBJECT(MainMenu);
460
RSDK_REGISTER_OBJECT(ManiaModeMenu);
461
#endif
462
RSDK_REGISTER_OBJECT(MathHelpers);
463
RSDK_REGISTER_OBJECT(MatryoshkaBom);
464
RSDK_REGISTER_OBJECT(MechaBu);
465
RSDK_REGISTER_OBJECT(MegaChopper);
466
RSDK_REGISTER_OBJECT(MegaOctus);
467
RSDK_REGISTER_OBJECT(MenuParam);
468
RSDK_REGISTER_OBJECT(MenuSetup);
469
RSDK_REGISTER_OBJECT(MetalArm);
470
RSDK_REGISTER_OBJECT(MetalSonic);
471
RSDK_REGISTER_OBJECT(MeterDroid);
472
RSDK_REGISTER_OBJECT(MicDrop);
473
RSDK_REGISTER_OBJECT(Mine);
474
#if MANIA_USE_PLUS
475
RSDK_REGISTER_OBJECT(MMZ2Outro);
476
RSDK_REGISTER_OBJECT(MMZLightning);
477
#endif
478
RSDK_REGISTER_OBJECT(MMZSetup);
479
RSDK_REGISTER_OBJECT(MMZWheel);
480
RSDK_REGISTER_OBJECT(MonarchBG);
481
#if MANIA_USE_PLUS
482
RSDK_REGISTER_OBJECT(MonarchPlans);
483
#endif
484
RSDK_REGISTER_OBJECT(MonkeyDude);
485
RSDK_REGISTER_OBJECT(Motobug);
486
#if MANIA_USE_PLUS
487
RSDK_REGISTER_OBJECT(MSBomb);
488
#endif
489
RSDK_REGISTER_OBJECT(MSFactory);
490
RSDK_REGISTER_OBJECT(MSHologram);
491
RSDK_REGISTER_OBJECT(MSOrb);
492
RSDK_REGISTER_OBJECT(MSPanel);
493
RSDK_REGISTER_OBJECT(MSZ1KIntro);
494
RSDK_REGISTER_OBJECT(MSZ2Cutscene);
495
RSDK_REGISTER_OBJECT(MSZCutsceneK);
496
RSDK_REGISTER_OBJECT(MSZCutsceneST);
497
RSDK_REGISTER_OBJECT(MSZSetup);
498
RSDK_REGISTER_OBJECT(MSZSpotlight);
499
RSDK_REGISTER_OBJECT(Music);
500
RSDK_REGISTER_OBJECT(Newspaper);
501
RSDK_REGISTER_OBJECT(Newtron);
502
#if MANIA_USE_PLUS
503
RSDK_REGISTER_OBJECT(NoSwap);
504
#endif
505
RSDK_REGISTER_OBJECT(Octus);
506
RSDK_REGISTER_OBJECT(OneWayDoor);
507
RSDK_REGISTER_OBJECT(OOZ1Outro);
508
#if MANIA_USE_PLUS
509
RSDK_REGISTER_OBJECT(OOZ2Outro);
510
#endif
511
RSDK_REGISTER_OBJECT(OOZFlames);
512
RSDK_REGISTER_OBJECT(OOZSetup);
513
#if MANIA_USE_PLUS
514
RSDK_REGISTER_STATIC_VARIABLES(Options);
515
RSDK_REGISTER_OBJECT(OptionsMenu);
516
#else
517
RSDK_REGISTER_OBJECT(Options);
518
#endif
519
RSDK_REGISTER_OBJECT(Orbinaut);
520
RSDK_REGISTER_OBJECT(OrbitSpike);
521
RSDK_REGISTER_OBJECT(PaintingEyes);
522
#if MANIA_USE_PLUS
523
RSDK_REGISTER_OBJECT(Palette);
524
#endif
525
RSDK_REGISTER_OBJECT(PaperRoller);
526
RSDK_REGISTER_OBJECT(ParallaxSprite);
527
RSDK_REGISTER_OBJECT(ParticleHelpers);
528
RSDK_REGISTER_OBJECT(PathInverter);
529
RSDK_REGISTER_OBJECT(PauseMenu);
530
#if MANIA_USE_PLUS
531
RSDK_REGISTER_OBJECT(PBL_Bumper);
532
RSDK_REGISTER_OBJECT(PBL_Camera);
533
RSDK_REGISTER_OBJECT(PBL_Crane);
534
RSDK_REGISTER_OBJECT(PBL_Flipper);
535
RSDK_REGISTER_OBJECT(PBL_HUD);
536
RSDK_REGISTER_OBJECT(PBL_Player);
537
RSDK_REGISTER_OBJECT(PBL_Ring);
538
RSDK_REGISTER_OBJECT(PBL_Sector);
539
RSDK_REGISTER_OBJECT(PBL_Setup);
540
RSDK_REGISTER_OBJECT(PBL_TargetBumper);
541
#endif
542
RSDK_REGISTER_OBJECT(Pendulum);
543
RSDK_REGISTER_OBJECT(PetalPile);
544
RSDK_REGISTER_OBJECT(PhantomEgg);
545
RSDK_REGISTER_OBJECT(PhantomGunner);
546
RSDK_REGISTER_OBJECT(PhantomHand);
547
RSDK_REGISTER_OBJECT(PhantomKing);
548
RSDK_REGISTER_OBJECT(PhantomMissile);
549
RSDK_REGISTER_OBJECT(PhantomMystic);
550
RSDK_REGISTER_OBJECT(PhantomRider);
551
RSDK_REGISTER_OBJECT(PhantomRuby);
552
RSDK_REGISTER_OBJECT(PhantomShield);
553
RSDK_REGISTER_OBJECT(PhantomShinobi);
554
RSDK_REGISTER_OBJECT(PimPom);
555
RSDK_REGISTER_OBJECT(Pinata);
556
RSDK_REGISTER_OBJECT(Piston);
557
RSDK_REGISTER_OBJECT(PKingAttack);
558
RSDK_REGISTER_OBJECT(PlaneSeeSaw);
559
RSDK_REGISTER_OBJECT(PlaneSwitch);
560
RSDK_REGISTER_OBJECT(Platform);
561
RSDK_REGISTER_OBJECT(PlatformControl);
562
RSDK_REGISTER_OBJECT(PlatformNode);
563
RSDK_REGISTER_OBJECT(Player);
564
RSDK_REGISTER_OBJECT(PlayerHelpers);
565
RSDK_REGISTER_OBJECT(PlayerProbe);
566
RSDK_REGISTER_OBJECT(PohBee);
567
RSDK_REGISTER_OBJECT(Pointdexter);
568
RSDK_REGISTER_OBJECT(PopcornKernel);
569
RSDK_REGISTER_OBJECT(PopcornMachine);
570
RSDK_REGISTER_OBJECT(PopOut);
571
RSDK_REGISTER_OBJECT(Press);
572
RSDK_REGISTER_OBJECT(PrintBlock);
573
RSDK_REGISTER_OBJECT(Projectile);
574
RSDK_REGISTER_OBJECT(Propeller);
575
RSDK_REGISTER_OBJECT(PropellerShaft);
576
#if MANIA_USE_PLUS
577
RSDK_REGISTER_OBJECT(PSZ1Intro);
578
#endif
579
RSDK_REGISTER_OBJECT(PSZ1Setup);
580
RSDK_REGISTER_OBJECT(PSZ2Intro);
581
RSDK_REGISTER_OBJECT(PSZ2Outro);
582
RSDK_REGISTER_OBJECT(PSZ2Setup);
583
RSDK_REGISTER_OBJECT(PSZDoor);
584
RSDK_REGISTER_OBJECT(PSZEggman);
585
RSDK_REGISTER_OBJECT(PSZLauncher);
586
RSDK_REGISTER_OBJECT(PullChain);
587
RSDK_REGISTER_OBJECT(PullSwitch);
588
RSDK_REGISTER_OBJECT(PushSpring);
589
RSDK_REGISTER_OBJECT(PuyoAI);
590
RSDK_REGISTER_OBJECT(PuyoAttack);
591
RSDK_REGISTER_OBJECT(PuyoBean);
592
RSDK_REGISTER_OBJECT(PuyoGame);
593
RSDK_REGISTER_OBJECT(PuyoIndicator);
594
RSDK_REGISTER_OBJECT(PuyoLabel);
595
RSDK_REGISTER_OBJECT(PuyoLevelSelect);
596
RSDK_REGISTER_OBJECT(PuyoMatch);
597
RSDK_REGISTER_OBJECT(PuyoScore);
598
RSDK_REGISTER_OBJECT(Rattlekiller);
599
RSDK_REGISTER_OBJECT(Reagent);
600
RSDK_REGISTER_OBJECT(Redz);
601
#if MANIA_USE_PLUS
602
RSDK_REGISTER_OBJECT(ReplayDB);
603
RSDK_REGISTER_OBJECT(ReplayRecorder);
604
#endif
605
RSDK_REGISTER_OBJECT(Rexon);
606
#if MANIA_USE_PLUS
607
RSDK_REGISTER_OBJECT(Rhinobot);
608
#endif
609
RSDK_REGISTER_OBJECT(Ring);
610
RSDK_REGISTER_OBJECT(RingField);
611
RSDK_REGISTER_OBJECT(RisingLava);
612
RSDK_REGISTER_OBJECT(RockDrill);
613
RSDK_REGISTER_OBJECT(RockemSockem);
614
RSDK_REGISTER_OBJECT(RollerMKII);
615
RSDK_REGISTER_OBJECT(RotatingSpikes);
616
RSDK_REGISTER_OBJECT(RotatingStair);
617
RSDK_REGISTER_OBJECT(RPlaneShifter);
618
RSDK_REGISTER_OBJECT(RTeleporter);
619
RSDK_REGISTER_OBJECT(RubyPortal);
620
#if MANIA_USE_PLUS
621
RSDK_REGISTER_STATIC_VARIABLES(SaveGame);
622
#else
623
RSDK_REGISTER_OBJECT(SaveGame);
624
#endif
625
RSDK_REGISTER_OBJECT(Scarab);
626
#if MANIA_USE_PLUS
627
RSDK_REGISTER_OBJECT(SchrodingersCapsule);
628
#endif
629
RSDK_REGISTER_OBJECT(ScoreBonus);
630
RSDK_REGISTER_OBJECT(ScrewMobile);
631
RSDK_REGISTER_OBJECT(SDashWheel);
632
RSDK_REGISTER_OBJECT(SeeSaw);
633
RSDK_REGISTER_OBJECT(SeltzerBottle);
634
RSDK_REGISTER_OBJECT(SeltzerWater);
635
RSDK_REGISTER_OBJECT(SentryBug);
636
RSDK_REGISTER_OBJECT(Shield);
637
RSDK_REGISTER_OBJECT(Shiversaw);
638
RSDK_REGISTER_OBJECT(ShopWindow);
639
RSDK_REGISTER_OBJECT(Shuriken);
640
RSDK_REGISTER_OBJECT(Shutterbug);
641
RSDK_REGISTER_OBJECT(SideBarrel);
642
RSDK_REGISTER_OBJECT(SignPost);
643
RSDK_REGISTER_OBJECT(SilverSonic);
644
RSDK_REGISTER_OBJECT(SizeLaser);
645
RSDK_REGISTER_OBJECT(SkyTeleporter);
646
RSDK_REGISTER_OBJECT(Smog);
647
RSDK_REGISTER_OBJECT(Snowflakes);
648
RSDK_REGISTER_OBJECT(Sol);
649
RSDK_REGISTER_OBJECT(Soundboard);
650
RSDK_REGISTER_OBJECT(SP500);
651
RSDK_REGISTER_OBJECT(SP500MkII);
652
RSDK_REGISTER_OBJECT(SparkRail);
653
RSDK_REGISTER_OBJECT(Spear);
654
RSDK_REGISTER_OBJECT(SpearBlock);
655
RSDK_REGISTER_OBJECT(SpecialClear);
656
RSDK_REGISTER_OBJECT(SpecialRing);
657
RSDK_REGISTER_OBJECT(SpeedBooster);
658
RSDK_REGISTER_OBJECT(SpeedGate);
659
RSDK_REGISTER_OBJECT(SpiderMobile);
660
RSDK_REGISTER_OBJECT(SpikeCorridor);
661
RSDK_REGISTER_OBJECT(SpikeCrusher);
662
RSDK_REGISTER_OBJECT(SpikeFlail);
663
RSDK_REGISTER_OBJECT(SpikeLog);
664
RSDK_REGISTER_OBJECT(Spikes);
665
RSDK_REGISTER_OBJECT(SpinBooster);
666
RSDK_REGISTER_OBJECT(SpinSign);
667
RSDK_REGISTER_OBJECT(Spiny);
668
RSDK_REGISTER_OBJECT(SpiralPlatform);
669
RSDK_REGISTER_OBJECT(Splats);
670
RSDK_REGISTER_OBJECT(Spring);
671
RSDK_REGISTER_OBJECT(Springboard);
672
RSDK_REGISTER_OBJECT(SPZ1Intro);
673
RSDK_REGISTER_OBJECT(SPZ1Setup);
674
RSDK_REGISTER_OBJECT(SPZ2Outro);
675
RSDK_REGISTER_OBJECT(SPZ2Setup);
676
RSDK_REGISTER_OBJECT(SSZ1Intro);
677
RSDK_REGISTER_OBJECT(SSZ1Outro);
678
RSDK_REGISTER_OBJECT(SSZ1Setup);
679
RSDK_REGISTER_OBJECT(SSZ2Setup);
680
RSDK_REGISTER_OBJECT(SSZ3Cutscene);
681
#if MANIA_USE_PLUS
682
RSDK_REGISTER_OBJECT(SSZEggman);
683
#endif
684
RSDK_REGISTER_OBJECT(SSZSpikeBall);
685
RSDK_REGISTER_OBJECT(SSZSpotlight);
686
RSDK_REGISTER_OBJECT(Staircase);
687
RSDK_REGISTER_OBJECT(Stalactite);
688
RSDK_REGISTER_OBJECT(StarPost);
689
RSDK_REGISTER_OBJECT(Stegway);
690
RSDK_REGISTER_OBJECT(StickyPlatform);
691
#if MANIA_USE_PLUS
692
RSDK_REGISTER_OBJECT(Summary);
693
RSDK_REGISTER_OBJECT(SummaryEmerald);
694
#endif
695
RSDK_REGISTER_OBJECT(SuperSparkle);
696
RSDK_REGISTER_OBJECT(Sweep);
697
RSDK_REGISTER_OBJECT(SwingRope);
698
RSDK_REGISTER_OBJECT(SwitchDoor);
699
RSDK_REGISTER_OBJECT(Syringe);
700
RSDK_REGISTER_OBJECT(TAEmerald);
701
RSDK_REGISTER_OBJECT(TargetBumper);
702
RSDK_REGISTER_OBJECT(Technosqueek);
703
RSDK_REGISTER_OBJECT(TeeterTotter);
704
RSDK_REGISTER_OBJECT(TetherBall);
705
RSDK_REGISTER_OBJECT(ThanksSetup);
706
RSDK_REGISTER_OBJECT(ThoughtBubble);
707
RSDK_REGISTER_OBJECT(TilePlatform);
708
#if MANIA_USE_PLUS
709
RSDK_REGISTER_STATIC_VARIABLES(TimeAttackData);
710
#else
711
RSDK_REGISTER_OBJECT(TimeAttackData);
712
#endif
713
RSDK_REGISTER_OBJECT(TimeAttackGate);
714
#if MANIA_USE_PLUS
715
RSDK_REGISTER_OBJECT(TimeAttackMenu);
716
#endif
717
RSDK_REGISTER_OBJECT(TimePost);
718
RSDK_REGISTER_OBJECT(TimeTravelSetup);
719
RSDK_REGISTER_OBJECT(TippingPlatform);
720
RSDK_REGISTER_OBJECT(Title3DSprite);
721
RSDK_REGISTER_OBJECT(TitleBG);
722
RSDK_REGISTER_OBJECT(TitleCard);
723
#if MANIA_USE_PLUS
724
RSDK_REGISTER_OBJECT(TitleEggman);
725
#endif
726
RSDK_REGISTER_OBJECT(TitleLogo);
727
RSDK_REGISTER_OBJECT(TitleSetup);
728
RSDK_REGISTER_OBJECT(TitleSonic);
729
RSDK_REGISTER_OBJECT(TMZ1Outro);
730
RSDK_REGISTER_OBJECT(TMZ1Setup);
731
RSDK_REGISTER_OBJECT(TMZ2Outro);
732
RSDK_REGISTER_OBJECT(TMZ2Setup);
733
RSDK_REGISTER_OBJECT(TMZ3Setup);
734
RSDK_REGISTER_OBJECT(TMZAlert);
735
RSDK_REGISTER_OBJECT(TMZBarrier);
736
RSDK_REGISTER_OBJECT(TMZCable);
737
RSDK_REGISTER_OBJECT(TMZFlames);
738
RSDK_REGISTER_OBJECT(Tornado);
739
RSDK_REGISTER_OBJECT(TornadoPath);
740
RSDK_REGISTER_OBJECT(Toxomister);
741
RSDK_REGISTER_OBJECT(TransportTube);
742
RSDK_REGISTER_OBJECT(TryAgain);
743
#if MANIA_USE_PLUS
744
RSDK_REGISTER_OBJECT(TryAgainE);
745
#endif
746
RSDK_REGISTER_OBJECT(TTCutscene);
747
RSDK_REGISTER_OBJECT(TubeSpring);
748
RSDK_REGISTER_OBJECT(Tubinaut);
749
RSDK_REGISTER_OBJECT(Tuesday);
750
RSDK_REGISTER_OBJECT(Turbine);
751
RSDK_REGISTER_OBJECT(TurboSpiker);
752
RSDK_REGISTER_OBJECT(TurboTurtle);
753
RSDK_REGISTER_OBJECT(Turntable);
754
RSDK_REGISTER_OBJECT(TurretSwitch);
755
RSDK_REGISTER_OBJECT(TVFlyingBattery);
756
RSDK_REGISTER_OBJECT(TVPole);
757
RSDK_REGISTER_OBJECT(TVVan);
758
RSDK_REGISTER_OBJECT(TwistedTubes);
759
RSDK_REGISTER_OBJECT(TwistingDoor);
760
RSDK_REGISTER_OBJECT(TwistingSlide);
761
RSDK_REGISTER_OBJECT(UberCaterkiller);
762
RSDK_REGISTER_OBJECT(UFO_Camera);
763
RSDK_REGISTER_OBJECT(UFO_Circuit);
764
RSDK_REGISTER_OBJECT(UFO_Decoration);
765
RSDK_REGISTER_OBJECT(UFO_Dust);
766
RSDK_REGISTER_OBJECT(UFO_HUD);
767
RSDK_REGISTER_OBJECT(UFO_ItemBox);
768
RSDK_REGISTER_OBJECT(UFO_Message);
769
RSDK_REGISTER_OBJECT(UFO_Plasma);
770
RSDK_REGISTER_OBJECT(UFO_Player);
771
RSDK_REGISTER_OBJECT(UFO_Ring);
772
RSDK_REGISTER_OBJECT(UFO_Setup);
773
RSDK_REGISTER_OBJECT(UFO_Shadow);
774
RSDK_REGISTER_OBJECT(UFO_SpeedLines);
775
RSDK_REGISTER_OBJECT(UFO_Sphere);
776
RSDK_REGISTER_OBJECT(UFO_Springboard);
777
RSDK_REGISTER_OBJECT(UFO_Water);
778
RSDK_REGISTER_OBJECT(UIBackground);
779
RSDK_REGISTER_OBJECT(UIButton);
780
RSDK_REGISTER_OBJECT(UIButtonLabel);
781
RSDK_REGISTER_OBJECT(UIButtonPrompt);
782
#if MANIA_USE_PLUS
783
RSDK_REGISTER_OBJECT(UICarousel);
784
#endif
785
RSDK_REGISTER_OBJECT(UICharButton);
786
RSDK_REGISTER_OBJECT(UIChoice);
787
RSDK_REGISTER_OBJECT(UIControl);
788
RSDK_REGISTER_OBJECT(UICreditsText);
789
RSDK_REGISTER_OBJECT(UIDialog);
790
#if MANIA_USE_PLUS
791
RSDK_REGISTER_OBJECT(UIDiorama);
792
#endif
793
RSDK_REGISTER_OBJECT(UIHeading);
794
RSDK_REGISTER_OBJECT(UIInfoLabel);
795
RSDK_REGISTER_OBJECT(UIKeyBinder);
796
RSDK_REGISTER_OBJECT(UILeaderboard);
797
RSDK_REGISTER_OBJECT(UIMedallionPanel);
798
RSDK_REGISTER_OBJECT(UIModeButton);
799
RSDK_REGISTER_OBJECT(UIOptionPanel);
800
RSDK_REGISTER_OBJECT(UIPicture);
801
#if MANIA_USE_PLUS
802
RSDK_REGISTER_OBJECT(UIPopover);
803
RSDK_REGISTER_OBJECT(UIRankButton);
804
RSDK_REGISTER_OBJECT(UIReplayCarousel);
805
#endif
806
#if GAME_VERSION != VER_100
807
RSDK_REGISTER_OBJECT(UIResPicker);
808
#endif
809
RSDK_REGISTER_OBJECT(UISaveSlot);
810
#if MANIA_USE_PLUS
811
RSDK_REGISTER_OBJECT(UIShifter);
812
#endif
813
RSDK_REGISTER_OBJECT(UISlider);
814
RSDK_REGISTER_OBJECT(UISubHeading);
815
#if MANIA_USE_PLUS
816
RSDK_REGISTER_OBJECT(UITABanner);
817
#endif
818
RSDK_REGISTER_OBJECT(UITAZoneModule);
819
RSDK_REGISTER_OBJECT(UIText);
820
RSDK_REGISTER_OBJECT(UITransition);
821
RSDK_REGISTER_OBJECT(UIUsernamePopup);
822
RSDK_REGISTER_OBJECT(UIVideo);
823
RSDK_REGISTER_OBJECT(UIVsCharSelector);
824
RSDK_REGISTER_OBJECT(UIVsResults);
825
RSDK_REGISTER_OBJECT(UIVsRoundPicker);
826
RSDK_REGISTER_OBJECT(UIVsScoreboard);
827
RSDK_REGISTER_OBJECT(UIVsZoneButton);
828
RSDK_REGISTER_OBJECT(UIWaitSpinner);
829
RSDK_REGISTER_OBJECT(UIWidgets);
830
#if GAME_VERSION != VER_100
831
RSDK_REGISTER_OBJECT(UIWinSize);
832
#endif
833
RSDK_REGISTER_OBJECT(UncurlPlant);
834
RSDK_REGISTER_OBJECT(Valve);
835
RSDK_REGISTER_OBJECT(VanishPlatform);
836
RSDK_REGISTER_OBJECT(Vultron);
837
RSDK_REGISTER_OBJECT(WalkerLegs);
838
RSDK_REGISTER_OBJECT(WallBumper);
839
RSDK_REGISTER_OBJECT(WallCrawl);
840
RSDK_REGISTER_OBJECT(WarpDoor);
841
RSDK_REGISTER_OBJECT(Water);
842
#if MANIA_USE_PLUS
843
RSDK_REGISTER_OBJECT(WaterfallSound);
844
#endif
845
RSDK_REGISTER_OBJECT(WaterGush);
846
RSDK_REGISTER_OBJECT(WeatherMobile);
847
RSDK_REGISTER_OBJECT(WeatherTV);
848
RSDK_REGISTER_OBJECT(Whirlpool);
849
RSDK_REGISTER_OBJECT(Wisp);
850
RSDK_REGISTER_OBJECT(WoodChipper);
851
RSDK_REGISTER_OBJECT(Woodrow);
852
RSDK_REGISTER_OBJECT(YoyoPulley);
853
RSDK_REGISTER_OBJECT(ZipLine);
854
RSDK_REGISTER_OBJECT(Zone);
855
856
#if RETRO_USE_MOD_LOADER
857
InitModAPI();
858
#endif
859
}
860
861
#if RETRO_USE_MOD_LOADER
862
#include "PublicFunctions.c"
863
864
void InitModAPI(void)
865
{
866
// Init Public Functions
867
InitPublicFunctions();
868
}
869
870
bool32 LinkModLogic(EngineInfo *info, const char *id)
871
{
872
#if RETRO_REV02
873
LinkGameLogicDLL(info);
874
#else
875
LinkGameLogicDLL(*info);
876
#endif
877
return true;
878
}
879
#endif
880