1
1
#include "loader.h"
2
2
#include "init.h"
3
-
3
+
4
4
void doclearstuff ();
5
5
void drawtitle ();
6
6
void drawmap ();
@@ -25,26 +25,28 @@ void _main()
25
25
);
26
26
/****************************> Get Handles <****************************/
27
27
//Get a handle to coreinit.rpl
28
- unsigned int coreinit_handle , vpad_handle , sysapp_handle ;
28
+ unsigned int coreinit_handle , vpad_handle , sysapp_handle , avm_handle ;
29
29
OSDynLoad_Acquire ("coreinit.rpl" , & coreinit_handle );
30
30
OSDynLoad_Acquire ("vpad.rpl" , & vpad_handle );
31
31
OSDynLoad_Acquire ("sysapp.rpl" , & sysapp_handle );
32
-
32
+ // CreeperMario: Get a handle to the audio/video manager - avm.rpl
33
+ OSDynLoad_Acquire ("avm.rpl" , & avm_handle );
34
+
33
35
// STUFF
34
36
VPADData vpad_data ;
35
37
int (* VPADRead )(int controller , VPADData * buffer , unsigned int num , int * err );
36
38
OSDynLoad_FindExport (vpad_handle , 0 , "VPADRead" , & VPADRead );
37
-
39
+
38
40
// Sysapp stuff
39
41
int (* SYSLaunchMenu )();
40
42
OSDynLoad_FindExport (sysapp_handle , 0 , "SYSLaunchMenu" , & SYSLaunchMenu );
41
-
43
+
42
44
// please dont break stuff...
43
45
int (* SYSLaunchTitle ) (int bit1 , int bit2 );
44
46
OSDynLoad_FindExport (sysapp_handle , 0 , "SYSLaunchTitle" , & SYSLaunchTitle );
45
47
int (* _Exit )();
46
48
OSDynLoad_FindExport (coreinit_handle , 0 , "_Exit" , & _Exit );
47
-
49
+
48
50
/****************************> External Prototypes <****************************/
49
51
//OSScreen functions
50
52
void (* OSScreenInit )();
@@ -58,6 +60,8 @@ void _main()
58
60
int (* IM_Open )();
59
61
int (* IM_Close )(int fd );
60
62
int (* IM_SetDeviceState )(int fd , void * mem , int state , int a , int b );
63
+ // CreeperMario: TV Screen scaling functions
64
+ bool (* AVMSetTVScale )(int width , int height );
61
65
/****************************> Exports <****************************/
62
66
//OSScreen functions
63
67
OSDynLoad_FindExport (coreinit_handle , 0 , "OSScreenInit" , & OSScreenInit );
@@ -71,6 +75,12 @@ void _main()
71
75
OSDynLoad_FindExport (coreinit_handle , 0 , "IM_Open" , & IM_Open );
72
76
OSDynLoad_FindExport (coreinit_handle , 0 , "IM_Close" , & IM_Close );
73
77
OSDynLoad_FindExport (coreinit_handle , 0 , "IM_SetDeviceState" , & IM_SetDeviceState );
78
+ // CreeperMario: TV Screen scaling functions
79
+ OSDynLoad_FindExport (avm_handle , 0 , "AVMSetTVScale" , & AVMSetTVScale );
80
+
81
+ /*** CreeperMario: Set the TV screen to the proper 'scale factor'. ***/
82
+ AVMSetTVScale (854 , 480 );
83
+
74
84
/****************************> Initial Setup <****************************/
75
85
//Restart system to get lib access
76
86
int fd = IM_Open ();
@@ -96,7 +106,7 @@ void _main()
96
106
97
107
// Define struct for global variables!
98
108
struct cGlobals caveGlobals ;
99
-
109
+
100
110
// Variables n stuff!
101
111
caveGlobals .food = 0 ;
102
112
caveGlobals .row = 1 ;
@@ -107,21 +117,21 @@ void _main()
107
117
caveGlobals .mysteps = 0 ;
108
118
caveGlobals .maxhealth = 10 ;
109
119
caveGlobals .curhealth = 10 ;
110
-
120
+
111
121
// Start at level 1 (obviously!)
112
122
changelevel (& caveGlobals );
113
-
123
+
114
124
// Draw Buffers and Initial Screen
115
125
__os_snprintf (caveGlobals .mystat , 64 , " " );
116
126
doclearstuff ();
117
127
drawstuff (& caveGlobals );
118
128
flipBuffers ();
119
-
129
+
120
130
int err ;
121
-
131
+
122
132
while (1 ) {
123
133
VPADRead (0 , & vpad_data , 1 , & err );
124
-
134
+
125
135
// Quit
126
136
if (vpad_data .btn_trigger & BUTTON_HOME ) {
127
137
doclearstuff ();
@@ -162,7 +172,7 @@ void _main()
162
172
if (caveGlobals .curhealth > caveGlobals .maxhealth ) { caveGlobals .curhealth = caveGlobals .maxhealth ; }
163
173
drawstuff (& caveGlobals );
164
174
dog (& caveGlobals );
165
- flipBuffers ();
175
+ flipBuffers ();
166
176
}
167
177
//Checks for Stairs
168
178
if (caveGlobals .nMapArray [caveGlobals .col ][caveGlobals .row ] == 9 ) {
@@ -174,7 +184,7 @@ void _main()
174
184
}
175
185
}
176
186
//Search for Hidden Traps and Doors
177
- if (vpad_data .btn_trigger & BUTTON_Y ) {
187
+ if (vpad_data .btn_trigger & BUTTON_Y ) {
178
188
doclearstuff ();
179
189
drawstuff (& caveGlobals );
180
190
dog (& caveGlobals );
@@ -206,7 +216,7 @@ void _main()
206
216
drawstuff (& caveGlobals );
207
217
flipBuffers ();
208
218
break ;
209
- }
219
+ }
210
220
// If nothing is found...
211
221
doclearstuff ();
212
222
drawstuff (& caveGlobals );
@@ -223,7 +233,7 @@ void _main()
223
233
__os_snprintf (caveGlobals .mystat , 64 , "It's a trap!" );
224
234
drawString (25 , 17 , caveGlobals .mystat );
225
235
caveGlobals .nMapArray [caveGlobals .col + 1 ][caveGlobals .row ] = 6 ;
226
- drawstuff (& caveGlobals );
236
+ drawstuff (& caveGlobals );
227
237
flipBuffers ();
228
238
break ;
229
239
}
@@ -233,10 +243,10 @@ void _main()
233
243
__os_snprintf (caveGlobals .mystat , 64 , "A Secret Door!" );
234
244
drawString (22 , 17 , caveGlobals .mystat );
235
245
caveGlobals .nMapArray [caveGlobals .col + 1 ][caveGlobals .row ] = 4 ;
236
- drawstuff (& caveGlobals );
246
+ drawstuff (& caveGlobals );
237
247
flipBuffers ();
238
248
break ;
239
- }
249
+ }
240
250
// If nothing is found...
241
251
doclearstuff ();
242
252
drawstuff (& caveGlobals );
@@ -263,10 +273,10 @@ void _main()
263
273
__os_snprintf (caveGlobals .mystat , 64 , "A Secret Door!" );
264
274
drawString (22 , 17 , caveGlobals .mystat );
265
275
caveGlobals .nMapArray [caveGlobals .col ][caveGlobals .row + 1 ] = 4 ;
266
- drawstuff (& caveGlobals );
276
+ drawstuff (& caveGlobals );
267
277
flipBuffers ();
268
278
break ;
269
- }
279
+ }
270
280
// If nothing is found...
271
281
doclearstuff ();
272
282
drawstuff (& caveGlobals );
@@ -283,7 +293,7 @@ void _main()
283
293
__os_snprintf (caveGlobals .mystat , 64 , "It's a trap!" );
284
294
drawString (25 , 17 , caveGlobals .mystat );
285
295
caveGlobals .nMapArray [caveGlobals .col ][caveGlobals .row - 1 ] = 6 ;
286
- drawstuff (& caveGlobals );
296
+ drawstuff (& caveGlobals );
287
297
flipBuffers ();
288
298
break ;
289
299
}
@@ -296,7 +306,7 @@ void _main()
296
306
drawstuff (& caveGlobals );
297
307
flipBuffers ();
298
308
break ;
299
- }
309
+ }
300
310
// If nothing is found...
301
311
doclearstuff ();
302
312
drawstuff (& caveGlobals );
@@ -336,7 +346,7 @@ void _main()
336
346
caveGlobals .nMapArray [caveGlobals .col - 1 ][caveGlobals .row ] = 4 ;
337
347
flipBuffers ();
338
348
}
339
- }
349
+ }
340
350
if (vpad_data .btn_trigger & BUTTON_LEFT ) {
341
351
if (isclosedoor (& caveGlobals , caveGlobals .row - 1 , caveGlobals .col ) == true ) {
342
352
doclearstuff ();
@@ -369,7 +379,7 @@ void _main()
369
379
// Movement
370
380
//Down
371
381
if (vpad_data .btn_trigger & BUTTON_DOWN ) {
372
- if (canmove (& caveGlobals , caveGlobals .row , caveGlobals .col + 1 ) == true ) {
382
+ if (canmove (& caveGlobals , caveGlobals .row , caveGlobals .col + 1 ) == true ) {
373
383
doclearstuff ();
374
384
dog (& caveGlobals );
375
385
caveGlobals .col += 1 ;
@@ -384,13 +394,13 @@ void _main()
384
394
drawString (25 , 17 , caveGlobals .mystat );
385
395
caveGlobals .curhealth -= 1 ;
386
396
caveGlobals .nMapArray [caveGlobals .col ][caveGlobals .row ] = 6 ;
387
- }
397
+ }
388
398
flipBuffers ();
389
399
}
390
400
}
391
401
//Up
392
402
if (vpad_data .btn_trigger & BUTTON_UP ) {
393
- if (canmove (& caveGlobals , caveGlobals .row , caveGlobals .col - 1 ) == true ) {
403
+ if (canmove (& caveGlobals , caveGlobals .row , caveGlobals .col - 1 ) == true ) {
394
404
doclearstuff ();
395
405
dog (& caveGlobals );
396
406
caveGlobals .col -= 1 ;
@@ -405,13 +415,13 @@ void _main()
405
415
drawString (25 , 17 , caveGlobals .mystat );
406
416
caveGlobals .curhealth -= 1 ;
407
417
caveGlobals .nMapArray [caveGlobals .col ][caveGlobals .row ] = 6 ;
408
- }
418
+ }
409
419
flipBuffers ();
410
420
}
411
421
}
412
422
//Left
413
423
if (vpad_data .btn_trigger & BUTTON_LEFT ) {
414
- if (canmove (& caveGlobals , caveGlobals .row - 1 , caveGlobals .col ) == true ) {
424
+ if (canmove (& caveGlobals , caveGlobals .row - 1 , caveGlobals .col ) == true ) {
415
425
doclearstuff ();
416
426
dog (& caveGlobals );
417
427
caveGlobals .row -= 1 ;
@@ -432,7 +442,7 @@ void _main()
432
442
}
433
443
//Right
434
444
if (vpad_data .btn_trigger & BUTTON_RIGHT ) {
435
- if (canmove (& caveGlobals , caveGlobals .row + 1 , caveGlobals .col ) == true ) {
445
+ if (canmove (& caveGlobals , caveGlobals .row + 1 , caveGlobals .col ) == true ) {
436
446
doclearstuff ();
437
447
dog (& caveGlobals );
438
448
caveGlobals .row += 1 ;
@@ -467,7 +477,7 @@ void _main()
467
477
flipBuffers ();
468
478
}
469
479
}
470
-
480
+
471
481
}
472
482
// Check if the player is dead
473
483
if (caveGlobals .curhealth == 0 ) {
@@ -601,7 +611,7 @@ void dog(struct cGlobals *caveGlobals) {
601
611
if (caveGlobals -> dogsteps > 301 ) {
602
612
__os_snprintf (caveGlobals -> dogstat , 64 , "Dog: Dead" );
603
613
caveGlobals -> dogalive = 0 ;
604
- }
614
+ }
605
615
// Puts a symbol where the player used to be (or not if dead) print his status
606
616
if (caveGlobals -> dogalive == 1 ) {
607
617
__os_snprintf (caveGlobals -> doggy , 8 , "d" );
@@ -661,7 +671,7 @@ void drawmap(struct cGlobals *caveGlobals) {
661
671
break ;
662
672
case TILE_WATER :
663
673
__os_snprintf (caveGlobals -> mapbuff , 2800 , "~" ); drawString (x , y , caveGlobals -> mapbuff );
664
- break ;
674
+ break ;
665
675
case TILE_CLOSEDOOR :
666
676
__os_snprintf (caveGlobals -> mapbuff , 2800 , "+" ); drawString (x , y , caveGlobals -> mapbuff );
667
677
break ;
@@ -685,7 +695,7 @@ void drawmap(struct cGlobals *caveGlobals) {
685
695
break ;
686
696
case TILE_POTION :
687
697
__os_snprintf (caveGlobals -> mapbuff , 2800 , "p" ); drawString (x , y , caveGlobals -> mapbuff );
688
- break ;
698
+ break ;
689
699
}
690
700
}
691
701
}
@@ -729,7 +739,7 @@ void changelevel(struct cGlobals *caveGlobals) {
729
739
__os_snprintf (caveGlobals -> titlebar2 , 128 , "Map by: SonyUSA" );
730
740
}
731
741
if (caveGlobals -> level == 2 ) {
732
- unsigned char lMapArray [17 ][62 ] = {
742
+ unsigned char lMapArray [17 ][62 ] = {
733
743
{1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 },
734
744
{1 ,6 ,2 ,8 ,2 ,6 ,1 ,0 ,0 ,0 ,1 ,7 ,1 ,0 ,0 ,0 ,1 ,8 ,1 ,0 ,0 ,0 ,1 ,7 ,1 ,0 ,0 ,1 ,2 ,8 ,2 ,2 ,2 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,2 ,1 ,0 ,0 ,1 ,6 ,1 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,2 ,2 ,7 ,2 ,1 },
735
745
{1 ,2 ,2 ,2 ,2 ,2 ,1 ,0 ,0 ,0 ,1 ,2 ,1 ,0 ,0 ,0 ,1 ,2 ,1 ,0 ,0 ,0 ,1 ,2 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,2 ,7 ,2 ,1 ,0 ,0 ,1 ,8 ,1 ,0 ,0 ,1 ,1 ,1 ,2 ,1 ,1 ,1 ,1 ,2 ,1 },
@@ -746,7 +756,7 @@ void changelevel(struct cGlobals *caveGlobals) {
746
756
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,6 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,0 ,0 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,2 ,1 ,0 ,0 ,1 ,2 ,1 },
747
757
{1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,2 ,8 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,1 ,8 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,2 ,1 ,1 ,1 ,1 ,2 ,1 },
748
758
{1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,6 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,1 ,7 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,8 ,2 ,2 ,2 ,7 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,9 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 },
749
- {1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 }
759
+ {1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 }
750
760
};
751
761
// Put the player where she belongs!
752
762
caveGlobals -> row = 1 ;
@@ -760,8 +770,8 @@ void changelevel(struct cGlobals *caveGlobals) {
760
770
}
761
771
}
762
772
// Who made it???
763
- __os_snprintf (caveGlobals -> titlebar2 , 128 , "Map by: ScarletDreamz" );
764
- }
773
+ __os_snprintf (caveGlobals -> titlebar2 , 128 , "Map by: ScarletDreamz" );
774
+ }
765
775
if (caveGlobals -> level == 3 ) {
766
776
unsigned char lMapArray [17 ][62 ] = {
767
777
{ 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
@@ -848,7 +858,7 @@ void changelevel(struct cGlobals *caveGlobals) {
848
858
{0 ,1 ,2 ,1 ,7 ,1 ,6 ,1 ,0 ,1 ,2 ,1 ,0 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,2 ,2 ,1 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,2 ,9 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 },
849
859
{0 ,1 ,2 ,1 ,7 ,1 ,6 ,1 ,0 ,1 ,2 ,1 ,1 ,1 ,2 ,2 ,2 ,7 ,2 ,2 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,2 ,1 ,2 ,1 ,1 ,1 ,1 ,10 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 },
850
860
{0 ,1 ,8 ,1 ,8 ,1 ,11 ,1 ,0 ,1 ,2 ,2 ,2 ,4 ,2 ,2 ,6 ,2 ,7 ,2 ,5 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,10 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 },
851
- {0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 }
861
+ {0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 }
852
862
};
853
863
// Put the player where she belongs!
854
864
caveGlobals -> row = 1 ;
@@ -863,5 +873,5 @@ void changelevel(struct cGlobals *caveGlobals) {
863
873
}
864
874
// Who made it???
865
875
__os_snprintf (caveGlobals -> titlebar2 , 128 , "Map by: Sivart0" );
866
- }
876
+ }
867
877
}
0 commit comments