Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-2-2013-Decompilation
Path: blob/main/RSDKv4/Debug.cpp
817 views
1
#include "RetroEngine.hpp"
2
3
bool endLine = true;
4
int touchFlags = 0;
5
6
int taListStore = 0;
7
8
void PrintLog(const char *msg, ...)
9
{
10
#ifndef RETRO_DISABLE_LOG
11
if (engineDebugMode || Engine.consoleEnabled) {
12
char buffer[0x100];
13
14
// make the full string
15
va_list args;
16
va_start(args, msg);
17
vsprintf(buffer, msg, args);
18
if (endLine) {
19
printf("%s\n", buffer);
20
sprintf(buffer, "%s\n", buffer);
21
}
22
else {
23
printf("%s", buffer);
24
sprintf(buffer, "%s", buffer);
25
}
26
27
if (engineDebugMode) {
28
char pathBuffer[0x100];
29
#if RETRO_PLATFORM == RETRO_UWP
30
if (!usingCWD)
31
sprintf(pathBuffer, "%s/log.txt", getResourcesPath());
32
else
33
sprintf(pathBuffer, "log.txt");
34
#elif RETRO_PLATFORM == RETRO_ANDROID
35
sprintf(pathBuffer, "%s/log.txt", gamePath);
36
__android_log_print(ANDROID_LOG_INFO, "RSDKv4", "%s", buffer);
37
#else
38
sprintf(pathBuffer, BASE_PATH "log.txt");
39
#endif
40
FileIO *file = fOpen(pathBuffer, "a");
41
if (file) {
42
fWrite(&buffer, 1, StrLength(buffer), file);
43
fClose(file);
44
}
45
}
46
}
47
#endif
48
}
49
50
void PrintLog(const ushort *msg)
51
{
52
#ifndef RETRO_DISABLE_LOG
53
if (engineDebugMode || Engine.consoleEnabled) {
54
int mPos = 0;
55
while (msg[mPos]) {
56
printf("%lc", (ushort)msg[mPos]);
57
mPos++;
58
}
59
if (endLine)
60
printf("\n");
61
62
if (engineDebugMode) {
63
char pathBuffer[0x100];
64
#if RETRO_PLATFORM == RETRO_UWP
65
if (!usingCWD)
66
sprintf(pathBuffer, "%s/log.txt", getResourcesPath());
67
else
68
sprintf(pathBuffer, "log.txt");
69
#elif RETRO_PLATFORM == RETRO_ANDROID
70
sprintf(pathBuffer, "%s/log.txt", gamePath);
71
__android_log_print(ANDROID_LOG_INFO, "RSDKv4", "%ls", (wchar_t *)msg);
72
#else
73
sprintf(pathBuffer, BASE_PATH "log.txt");
74
#endif
75
mPos = 0;
76
FileIO *file = fOpen(pathBuffer, "a");
77
if (file) {
78
while (msg[mPos]) {
79
fWrite(&msg[mPos], 2, 1, file);
80
mPos++;
81
}
82
83
ushort el = '\n';
84
if (endLine)
85
fWrite(&el, 2, 1, file);
86
fClose(file);
87
}
88
}
89
}
90
#endif
91
}
92
93
void InitDevMenu()
94
{
95
#if RETRO_USE_MOD_LOADER
96
for (int m = 0; m < modList.size(); ++m) ScanModFolder(&modList[m]);
97
#endif
98
// DrawStageGFXHQ = 0;
99
xScrollOffset = 0;
100
yScrollOffset = 0;
101
StopMusic(true);
102
StopAllSfx();
103
ReleaseStageSfx();
104
fadeMode = 0;
105
playerListPos = 0;
106
Engine.gameMode = ENGINE_DEVMENU;
107
ClearGraphicsData();
108
ClearAnimationData();
109
SetActivePalette(0, 0, 256);
110
textMenuSurfaceNo = SURFACE_COUNT - 1;
111
LoadGIFFile("Data/Game/SystemText.gif", SURFACE_COUNT - 1);
112
SetPaletteEntry(-1, 1, 0x00, 0x00, 0x00);
113
SetPaletteEntry(-1, 8, 0x80, 0x80, 0x80);
114
SetPaletteEntry(-1, 0xF0, 0x00, 0x00, 0x00);
115
SetPaletteEntry(-1, 0xFF, 0xFF, 0xFF, 0xFF);
116
SetTextMenu(DEVMENU_MAIN);
117
drawStageGFXHQ = false;
118
#if !RETRO_USE_ORIGINAL_CODE
119
RemoveNativeObjectType(PauseMenu_Create, PauseMenu_Main);
120
#endif
121
#if RETRO_HARDWARE_RENDER
122
render3DEnabled = false;
123
UpdateHardwareTextures();
124
#endif
125
}
126
void InitErrorMessage()
127
{
128
xScrollOffset = 0;
129
yScrollOffset = 0;
130
StopMusic(true);
131
StopAllSfx();
132
ReleaseStageSfx();
133
fadeMode = 0;
134
Engine.gameMode = ENGINE_DEVMENU;
135
ClearGraphicsData();
136
ClearAnimationData();
137
SetActivePalette(0, 0, 256);
138
textMenuSurfaceNo = SURFACE_COUNT - 1;
139
LoadGIFFile("Data/Game/SystemText.gif", SURFACE_COUNT - 1);
140
SetPaletteEntry(-1, 1, 0x00, 0x00, 0x00);
141
SetPaletteEntry(-1, 8, 0x80, 0x80, 0x80);
142
SetPaletteEntry(-1, 0xF0, 0x00, 0x00, 0x00);
143
SetPaletteEntry(-1, 0xFF, 0xFF, 0xFF, 0xFF);
144
gameMenu[0].alignment = 2;
145
gameMenu[0].selectionCount = 1;
146
gameMenu[0].selection1 = 0;
147
gameMenu[1].visibleRowCount = 0;
148
gameMenu[1].visibleRowOffset = 0;
149
stageMode = DEVMENU_SCRIPTERROR;
150
drawStageGFXHQ = false;
151
#if !RETRO_USE_ORIGINAL_CODE
152
RemoveNativeObjectType(PauseMenu_Create, PauseMenu_Main);
153
#endif
154
#if RETRO_HARDWARE_RENDER
155
render3DEnabled = false;
156
UpdateHardwareTextures();
157
#endif
158
}
159
void ProcessStageSelect()
160
{
161
ClearScreen(0xF0);
162
163
CheckKeyDown(&keyDown);
164
CheckKeyPress(&keyPress);
165
166
#if defined RETRO_USING_MOUSE || defined RETRO_USING_TOUCH
167
DrawSprite(32, 0x42, 16, 16, 78, 240, textMenuSurfaceNo);
168
DrawSprite(32, 0xB2, 16, 16, 95, 240, textMenuSurfaceNo);
169
DrawSprite(SCREEN_XSIZE - 32, SCREEN_YSIZE - 32, 16, 16, 112, 240, textMenuSurfaceNo);
170
#endif
171
172
if (!keyDown.start && !keyDown.up && !keyDown.down) {
173
int tFlags = touchFlags;
174
touchFlags = 0;
175
176
for (int t = 0; t < touches; ++t) {
177
if (touchDown[t]) {
178
if (touchX[t] < SCREEN_CENTERX) {
179
if (touchY[t] >= SCREEN_CENTERY) {
180
if (!(tFlags & 2))
181
keyPress.down = true;
182
else
183
touchFlags |= 1 << 1;
184
}
185
else {
186
if (!(tFlags & 1))
187
keyPress.up = true;
188
else
189
touchFlags |= 1 << 0;
190
}
191
}
192
else if (touchX[t] > SCREEN_CENTERX) {
193
if (touchY[t] > SCREEN_CENTERY) {
194
if (!(tFlags & 4))
195
keyPress.start = true;
196
else
197
touchFlags |= 1 << 2;
198
}
199
else {
200
if (!(tFlags & 8))
201
keyPress.B = true;
202
else
203
touchFlags |= 1 << 3;
204
}
205
}
206
}
207
}
208
209
touchFlags |= (int)keyPress.up << 0;
210
touchFlags |= (int)keyPress.down << 1;
211
touchFlags |= (int)keyPress.start << 2;
212
touchFlags |= (int)keyPress.B << 3;
213
}
214
215
switch (stageMode) {
216
case DEVMENU_MAIN: // Main Menu
217
{
218
if (keyPress.down)
219
gameMenu[0].selection2 += 2;
220
221
if (keyPress.up)
222
gameMenu[0].selection2 -= 2;
223
224
int count = 15;
225
#if RETRO_USE_MOD_LOADER
226
count += 2;
227
#endif
228
229
if (gameMenu[0].selection2 > count)
230
gameMenu[0].selection2 = 9;
231
if (gameMenu[0].selection2 < 9)
232
gameMenu[0].selection2 = count;
233
234
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX, 72);
235
if (keyPress.start || keyPress.A) {
236
if (gameMenu[0].selection2 == 9) {
237
ClearGraphicsData();
238
ClearAnimationData();
239
activeStageList = 0;
240
stageMode = STAGEMODE_LOAD;
241
Engine.gameMode = ENGINE_MAINGAME;
242
stageListPosition = 0;
243
}
244
else if (gameMenu[0].selection2 == 11) {
245
SetupTextMenu(&gameMenu[0], 0);
246
AddTextMenuEntry(&gameMenu[0], "SELECT A PLAYER");
247
SetupTextMenu(&gameMenu[1], 0);
248
LoadConfigListText(&gameMenu[1], 0);
249
gameMenu[1].alignment = 0;
250
gameMenu[1].selectionCount = 1;
251
gameMenu[1].selection1 = 0;
252
stageMode = DEVMENU_PLAYERSEL;
253
}
254
else if (gameMenu[0].selection2 == 13) {
255
ClearNativeObjects();
256
Engine.gameMode = ENGINE_WAIT;
257
Engine.nativeMenuFadeIn = false;
258
#if !RETRO_USE_ORIGINAL_CODE
259
if (skipStartMenu) {
260
ClearGraphicsData();
261
ClearAnimationData();
262
activeStageList = 0;
263
stageMode = STAGEMODE_LOAD;
264
Engine.gameMode = ENGINE_MAINGAME;
265
stageListPosition = 0;
266
CREATE_ENTITY(RetroGameLoop);
267
if (Engine.gameDeviceType == RETRO_MOBILE)
268
CREATE_ENTITY(VirtualDPad);
269
}
270
else {
271
#endif
272
CREATE_ENTITY(SegaSplash);
273
#if !RETRO_USE_ORIGINAL_CODE
274
}
275
#endif
276
}
277
#if RETRO_USE_MOD_LOADER
278
else if (gameMenu[0].selection2 == 15) {
279
InitMods(); // reload mods
280
SetTextMenu(DEVMENU_MODMENU);
281
}
282
#endif
283
else {
284
#if RETRO_USE_MOD_LOADER
285
ExitGame();
286
#else
287
Engine.running = false;
288
#endif
289
}
290
}
291
else if (keyPress.B) {
292
ClearGraphicsData();
293
ClearAnimationData();
294
activeStageList = 0;
295
stageMode = STAGEMODE_LOAD;
296
Engine.gameMode = ENGINE_MAINGAME;
297
stageListPosition = 0;
298
}
299
break;
300
}
301
case DEVMENU_PLAYERSEL: // Selecting Player
302
{
303
if (keyPress.down)
304
++gameMenu[1].selection1;
305
if (keyPress.up)
306
--gameMenu[1].selection1;
307
if (gameMenu[1].selection1 == gameMenu[1].rowCount)
308
gameMenu[1].selection1 = 0;
309
310
if (gameMenu[1].selection1 < 0)
311
gameMenu[1].selection1 = gameMenu[1].rowCount - 1;
312
313
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX - 4, 72);
314
DrawTextMenu(&gameMenu[1], SCREEN_CENTERX - 40, 96);
315
if (keyPress.start || keyPress.A) {
316
playerListPos = gameMenu[1].selection1;
317
SetTextMenu(DEVMENU_STAGELISTSEL);
318
}
319
else if (keyPress.B) {
320
SetTextMenu(DEVMENU_MAIN);
321
}
322
break;
323
}
324
case DEVMENU_STAGELISTSEL: // Selecting Category
325
{
326
if (keyPress.down)
327
gameMenu[0].selection2 += 2;
328
if (keyPress.up)
329
gameMenu[0].selection2 -= 2;
330
331
if (gameMenu[0].selection2 > 9)
332
gameMenu[0].selection2 = 3;
333
334
if (gameMenu[0].selection2 < 3)
335
gameMenu[0].selection2 = 9;
336
337
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX - 80, 72);
338
bool nextMenu = false;
339
switch (gameMenu[0].selection2) {
340
case 3: // Presentation
341
if (stageListCount[0] > 0)
342
nextMenu = true;
343
activeStageList = 0;
344
break;
345
case 5: // Regular
346
if (stageListCount[1] > 0)
347
nextMenu = true;
348
activeStageList = 1;
349
break;
350
case 7: // Special
351
if (stageListCount[3] > 0)
352
nextMenu = true;
353
activeStageList = 3;
354
break;
355
case 9: // Bonus
356
if (stageListCount[2] > 0)
357
nextMenu = true;
358
activeStageList = 2;
359
break;
360
default: break;
361
}
362
363
if ((keyPress.start || keyPress.A) && nextMenu) {
364
SetupTextMenu(&gameMenu[0], 0);
365
AddTextMenuEntry(&gameMenu[0], "SELECT A STAGE");
366
SetupTextMenu(&gameMenu[1], 0);
367
LoadConfigListText(&gameMenu[1], ((gameMenu[0].selection2 - 3) >> 1) + 1);
368
gameMenu[1].alignment = 1;
369
gameMenu[1].selectionCount = 3;
370
gameMenu[1].selection1 = 0;
371
if (gameMenu[1].rowCount > 18)
372
gameMenu[1].visibleRowCount = 18;
373
else
374
gameMenu[1].visibleRowCount = 0;
375
376
gameMenu[0].alignment = 2;
377
gameMenu[0].selectionCount = 1;
378
gameMenu[1].timer = 0;
379
stageMode = DEVMENU_STAGESEL;
380
}
381
else if (keyPress.B) {
382
SetupTextMenu(&gameMenu[0], 0);
383
AddTextMenuEntry(&gameMenu[0], "SELECT A PLAYER");
384
SetupTextMenu(&gameMenu[1], 0);
385
LoadConfigListText(&gameMenu[1], 0);
386
gameMenu[0].alignment = 2;
387
gameMenu[1].alignment = 0;
388
gameMenu[1].selectionCount = 1;
389
gameMenu[1].visibleRowCount = 0;
390
gameMenu[1].visibleRowOffset = 0;
391
gameMenu[1].selection1 = playerListPos;
392
stageMode = DEVMENU_PLAYERSEL;
393
}
394
break;
395
}
396
case DEVMENU_STAGESEL: // Selecting Stage
397
{
398
if (keyDown.down) {
399
gameMenu[1].timer += 1;
400
if (gameMenu[1].timer > 8) {
401
gameMenu[1].timer = 0;
402
keyPress.down = true;
403
}
404
}
405
else {
406
if (keyDown.up) {
407
gameMenu[1].timer -= 1;
408
if (gameMenu[1].timer < -8) {
409
gameMenu[1].timer = 0;
410
keyPress.up = true;
411
}
412
}
413
else {
414
gameMenu[1].timer = 0;
415
}
416
}
417
if (keyPress.down) {
418
gameMenu[1].selection1++;
419
if (gameMenu[1].selection1 - gameMenu[1].visibleRowOffset >= gameMenu[1].visibleRowCount) {
420
gameMenu[1].visibleRowOffset += 1;
421
}
422
}
423
if (keyPress.up) {
424
gameMenu[1].selection1--;
425
if (gameMenu[1].selection1 - gameMenu[1].visibleRowOffset < 0) {
426
gameMenu[1].visibleRowOffset -= 1;
427
}
428
}
429
if (gameMenu[1].selection1 == gameMenu[1].rowCount) {
430
gameMenu[1].selection1 = 0;
431
gameMenu[1].visibleRowOffset = 0;
432
}
433
if (gameMenu[1].selection1 < 0) {
434
gameMenu[1].selection1 = gameMenu[1].rowCount - 1;
435
gameMenu[1].visibleRowOffset = gameMenu[1].rowCount - gameMenu[1].visibleRowCount;
436
}
437
438
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX - 4, 40);
439
DrawTextMenu(&gameMenu[1], SCREEN_CENTERX + 100, 64);
440
if (keyPress.start || keyPress.A) {
441
debugMode = keyDown.A;
442
stageMode = STAGEMODE_LOAD;
443
Engine.gameMode = ENGINE_MAINGAME;
444
stageListPosition = gameMenu[1].selection1;
445
SetGlobalVariableByName("options.gameMode", 0);
446
SetGlobalVariableByName("lampPostID", 0); // For S1
447
SetGlobalVariableByName("starPostID", 0); // For S2
448
}
449
else if (keyPress.B) {
450
SetTextMenu(DEVMENU_STAGELISTSEL);
451
}
452
break;
453
}
454
case DEVMENU_SCRIPTERROR: // Script Error
455
{
456
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX, 72);
457
if (keyPress.start || keyPress.A) {
458
SetTextMenu(DEVMENU_MAIN);
459
}
460
else if (keyPress.B) {
461
ClearGraphicsData();
462
ClearAnimationData();
463
activeStageList = 0;
464
stageMode = DEVMENU_STAGESEL;
465
Engine.gameMode = ENGINE_MAINGAME;
466
stageListPosition = 0;
467
}
468
else if (keyPress.C) {
469
ClearGraphicsData();
470
ClearAnimationData();
471
stageMode = STAGEMODE_LOAD;
472
Engine.gameMode = ENGINE_MAINGAME;
473
}
474
break;
475
}
476
#if RETRO_USE_MOD_LOADER
477
case DEVMENU_MODMENU: // Mod Menu
478
{
479
int preOption = gameMenu[1].selection1;
480
if (keyDown.down) {
481
gameMenu[1].timer++;
482
if (gameMenu[1].timer > 8) {
483
gameMenu[1].timer = 0;
484
keyPress.down = true;
485
}
486
}
487
else {
488
if (keyDown.up) {
489
gameMenu[1].timer--;
490
if (gameMenu[1].timer < -8) {
491
gameMenu[1].timer = 0;
492
keyPress.up = true;
493
}
494
}
495
else {
496
gameMenu[1].timer = 0;
497
}
498
}
499
500
if (keyPress.down) {
501
gameMenu[1].selection1++;
502
if (gameMenu[1].selection1 - gameMenu[1].visibleRowOffset >= gameMenu[1].visibleRowCount) {
503
gameMenu[1].visibleRowOffset++;
504
}
505
}
506
507
if (keyPress.up) {
508
gameMenu[1].selection1--;
509
if (gameMenu[1].selection1 - gameMenu[1].visibleRowOffset < 0 && gameMenu[1].visibleRowOffset > 0) {
510
gameMenu[1].visibleRowOffset--;
511
}
512
}
513
514
if (gameMenu[1].selection1 >= gameMenu[1].rowCount) {
515
if (keyDown.C) {
516
gameMenu[1].selection1--;
517
gameMenu[1].visibleRowOffset--;
518
}
519
else {
520
gameMenu[1].selection1 = 0;
521
gameMenu[1].visibleRowOffset = 0;
522
}
523
}
524
525
if (gameMenu[1].selection1 < 0) {
526
if (keyDown.C) {
527
gameMenu[1].selection1++;
528
}
529
else {
530
gameMenu[1].selection1 = gameMenu[1].rowCount - 1;
531
gameMenu[1].visibleRowOffset = gameMenu[1].rowCount - gameMenu[1].visibleRowCount;
532
}
533
}
534
gameMenu[1].selection2 = gameMenu[1].selection1; // its a bug fix LOL
535
536
char buffer[0x100];
537
if (gameMenu[1].selection1 < modList.size() && (keyPress.A || keyPress.start || keyPress.left || keyPress.right)) {
538
modList[gameMenu[1].selection1].active ^= 1;
539
StrCopy(buffer, modList[gameMenu[1].selection1].name.c_str());
540
StrAdd(buffer, ": ");
541
StrAdd(buffer, (modList[gameMenu[1].selection1].active ? " Active" : "Inactive"));
542
EditTextMenuEntry(&gameMenu[1], buffer, gameMenu[1].selection1);
543
}
544
else if (keyDown.C && gameMenu[1].selection1 != preOption) {
545
int visibleOffset = gameMenu[1].visibleRowOffset;
546
int option = gameMenu[1].selection1;
547
ModInfo swap = modList[preOption];
548
modList[preOption] = modList[option];
549
modList[option] = swap;
550
SetTextMenu(DEVMENU_MODMENU);
551
gameMenu[1].selection1 = option;
552
gameMenu[1].visibleRowOffset = visibleOffset;
553
}
554
else if (keyPress.B) {
555
RefreshEngine();
556
557
if (Engine.modMenuCalled) {
558
stageMode = STAGEMODE_LOAD;
559
Engine.gameMode = ENGINE_MAINGAME;
560
Engine.modMenuCalled = false;
561
562
if (stageListPosition >= stageListCount[activeStageList]) {
563
activeStageList = 0;
564
stageListPosition = 0;
565
}
566
}
567
else {
568
SetTextMenu(DEVMENU_MAIN);
569
570
SetPaletteEntry(-1, 1, 0x00, 0x00, 0x00);
571
SetPaletteEntry(-1, 8, 0x80, 0x80, 0x80);
572
SetPaletteEntry(-1, 0xF0, 0x00, 0x00, 0x00);
573
SetPaletteEntry(-1, 0xFF, 0xFF, 0xFF, 0xFF);
574
}
575
}
576
577
DrawTextMenu(&gameMenu[0], SCREEN_CENTERX - 4, 40);
578
DrawTextMenu(&gameMenu[1], SCREEN_CENTERX + 100, 64);
579
break;
580
}
581
#endif
582
default: break;
583
}
584
}
585
586
void SetTextMenu(int sm)
587
{
588
stageMode = sm;
589
SetupTextMenu(&gameMenu[0], 0);
590
SetupTextMenu(&gameMenu[1], 0);
591
switch (sm) {
592
case DEVMENU_MAIN: {
593
AddTextMenuEntry(&gameMenu[0], "RETRO ENGINE DEV MENU");
594
AddTextMenuEntry(&gameMenu[0], " ");
595
char version[0x80];
596
StrCopy(version, Engine.gameWindowText);
597
StrAdd(version, " Version");
598
AddTextMenuEntry(&gameMenu[0], version);
599
AddTextMenuEntry(&gameMenu[0], Engine.gameVersion);
600
#ifdef RETRO_DEV_EXTRA
601
AddTextMenuEntry(&gameMenu[0], RETRO_DEV_EXTRA);
602
#else
603
AddTextMenuEntry(&gameMenu[0], " ");
604
#endif
605
AddTextMenuEntry(&gameMenu[0], " ");
606
AddTextMenuEntry(&gameMenu[0], " ");
607
AddTextMenuEntry(&gameMenu[0], " ");
608
AddTextMenuEntry(&gameMenu[0], " ");
609
AddTextMenuEntry(&gameMenu[0], "START GAME");
610
AddTextMenuEntry(&gameMenu[0], " ");
611
AddTextMenuEntry(&gameMenu[0], "STAGE SELECT");
612
#if !RETRO_USE_ORIGINAL_CODE
613
AddTextMenuEntry(&gameMenu[0], " ");
614
AddTextMenuEntry(&gameMenu[0], "START MENU");
615
#if RETRO_USE_MOD_LOADER
616
AddTextMenuEntry(&gameMenu[0], " ");
617
AddTextMenuEntry(&gameMenu[0], "MODS");
618
#endif
619
AddTextMenuEntry(&gameMenu[0], " ");
620
AddTextMenuEntry(&gameMenu[0], "EXIT GAME");
621
#endif
622
gameMenu[0].alignment = 2;
623
gameMenu[0].selectionCount = 2;
624
gameMenu[0].selection1 = 0;
625
gameMenu[0].selection2 = 9;
626
gameMenu[1].visibleRowCount = 0;
627
gameMenu[1].visibleRowOffset = 0;
628
break;
629
}
630
case DEVMENU_STAGELISTSEL:
631
AddTextMenuEntry(&gameMenu[0], "SELECT A STAGE LIST");
632
AddTextMenuEntry(&gameMenu[0], " ");
633
AddTextMenuEntry(&gameMenu[0], " ");
634
AddTextMenuEntry(&gameMenu[0], " PRESENTATION");
635
AddTextMenuEntry(&gameMenu[0], " ");
636
AddTextMenuEntry(&gameMenu[0], " REGULAR");
637
AddTextMenuEntry(&gameMenu[0], " ");
638
AddTextMenuEntry(&gameMenu[0], " SPECIAL");
639
AddTextMenuEntry(&gameMenu[0], " ");
640
AddTextMenuEntry(&gameMenu[0], " BONUS");
641
gameMenu[0].alignment = 0;
642
gameMenu[0].selection2 = 3;
643
gameMenu[0].selectionCount = 2;
644
break;
645
#if RETRO_USE_MOD_LOADER
646
case DEVMENU_MODMENU:
647
SetupTextMenu(&gameMenu[0], 0);
648
AddTextMenuEntry(&gameMenu[0], "MOD LIST");
649
SetupTextMenu(&gameMenu[1], 0);
650
651
char buffer[0x100];
652
for (int m = 0; m < modList.size(); ++m) {
653
StrCopy(buffer, modList[m].name.c_str());
654
StrAdd(buffer, ": ");
655
StrAdd(buffer, modList[m].active ? " Active" : "Inactive");
656
AddTextMenuEntry(&gameMenu[1], buffer);
657
gameMenu[1].entryHighlight[m] = false;
658
}
659
660
gameMenu[1].alignment = 1;
661
gameMenu[1].selectionCount = 3;
662
gameMenu[1].selection1 = 0;
663
if (gameMenu[1].rowCount > 18)
664
gameMenu[1].visibleRowCount = 18;
665
else
666
gameMenu[1].visibleRowCount = 0;
667
668
gameMenu[0].alignment = 2;
669
gameMenu[0].selectionCount = 1;
670
gameMenu[1].timer = 0;
671
gameMenu[1].visibleRowOffset = 0;
672
break;
673
#endif
674
}
675
}
676
677