Skip to content

Commit 6f2740a

Browse files
committed
Merge pull request #1 from CreeperMario/master
Added a 'scale factor' to the TV Screen.
2 parents cf699a1 + d5008cd commit 6f2740a

File tree

1 file changed

+49
-39
lines changed

1 file changed

+49
-39
lines changed

src/loader.c

+49-39
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "loader.h"
22
#include "init.h"
3-
3+
44
void doclearstuff();
55
void drawtitle();
66
void drawmap();
@@ -25,26 +25,28 @@ void _main()
2525
);
2626
/****************************> Get Handles <****************************/
2727
//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;
2929
OSDynLoad_Acquire("coreinit.rpl", &coreinit_handle);
3030
OSDynLoad_Acquire("vpad.rpl", &vpad_handle);
3131
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+
3335
// STUFF
3436
VPADData vpad_data;
3537
int(*VPADRead)(int controller, VPADData *buffer, unsigned int num, int *err);
3638
OSDynLoad_FindExport(vpad_handle, 0, "VPADRead", &VPADRead);
37-
39+
3840
// Sysapp stuff
3941
int(*SYSLaunchMenu)();
4042
OSDynLoad_FindExport(sysapp_handle, 0, "SYSLaunchMenu", &SYSLaunchMenu);
41-
43+
4244
// please dont break stuff...
4345
int(*SYSLaunchTitle) (int bit1, int bit2);
4446
OSDynLoad_FindExport(sysapp_handle, 0, "SYSLaunchTitle", &SYSLaunchTitle);
4547
int(*_Exit)();
4648
OSDynLoad_FindExport(coreinit_handle, 0, "_Exit", &_Exit);
47-
49+
4850
/****************************> External Prototypes <****************************/
4951
//OSScreen functions
5052
void(*OSScreenInit)();
@@ -58,6 +60,8 @@ void _main()
5860
int(*IM_Open)();
5961
int(*IM_Close)(int fd);
6062
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);
6165
/****************************> Exports <****************************/
6266
//OSScreen functions
6367
OSDynLoad_FindExport(coreinit_handle, 0, "OSScreenInit", &OSScreenInit);
@@ -71,6 +75,12 @@ void _main()
7175
OSDynLoad_FindExport(coreinit_handle, 0, "IM_Open", &IM_Open);
7276
OSDynLoad_FindExport(coreinit_handle, 0, "IM_Close", &IM_Close);
7377
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+
7484
/****************************> Initial Setup <****************************/
7585
//Restart system to get lib access
7686
int fd = IM_Open();
@@ -96,7 +106,7 @@ void _main()
96106

97107
// Define struct for global variables!
98108
struct cGlobals caveGlobals;
99-
109+
100110
// Variables n stuff!
101111
caveGlobals.food = 0;
102112
caveGlobals.row = 1;
@@ -107,21 +117,21 @@ void _main()
107117
caveGlobals.mysteps = 0;
108118
caveGlobals.maxhealth = 10;
109119
caveGlobals.curhealth = 10;
110-
120+
111121
// Start at level 1 (obviously!)
112122
changelevel(&caveGlobals);
113-
123+
114124
// Draw Buffers and Initial Screen
115125
__os_snprintf(caveGlobals.mystat, 64, " ");
116126
doclearstuff();
117127
drawstuff(&caveGlobals);
118128
flipBuffers();
119-
129+
120130
int err;
121-
131+
122132
while(1) {
123133
VPADRead(0, &vpad_data, 1, &err);
124-
134+
125135
// Quit
126136
if (vpad_data.btn_trigger & BUTTON_HOME) {
127137
doclearstuff();
@@ -162,7 +172,7 @@ void _main()
162172
if (caveGlobals.curhealth > caveGlobals.maxhealth) { caveGlobals.curhealth = caveGlobals.maxhealth; }
163173
drawstuff(&caveGlobals);
164174
dog(&caveGlobals);
165-
flipBuffers();
175+
flipBuffers();
166176
}
167177
//Checks for Stairs
168178
if (caveGlobals.nMapArray[caveGlobals.col][caveGlobals.row] == 9) {
@@ -174,7 +184,7 @@ void _main()
174184
}
175185
}
176186
//Search for Hidden Traps and Doors
177-
if (vpad_data.btn_trigger & BUTTON_Y) {
187+
if (vpad_data.btn_trigger & BUTTON_Y) {
178188
doclearstuff();
179189
drawstuff(&caveGlobals);
180190
dog(&caveGlobals);
@@ -206,7 +216,7 @@ void _main()
206216
drawstuff(&caveGlobals);
207217
flipBuffers();
208218
break;
209-
}
219+
}
210220
// If nothing is found...
211221
doclearstuff();
212222
drawstuff(&caveGlobals);
@@ -223,7 +233,7 @@ void _main()
223233
__os_snprintf(caveGlobals.mystat, 64, "It's a trap!");
224234
drawString(25, 17, caveGlobals.mystat);
225235
caveGlobals.nMapArray[caveGlobals.col +1][caveGlobals.row] = 6;
226-
drawstuff(&caveGlobals);
236+
drawstuff(&caveGlobals);
227237
flipBuffers();
228238
break;
229239
}
@@ -233,10 +243,10 @@ void _main()
233243
__os_snprintf(caveGlobals.mystat, 64, "A Secret Door!");
234244
drawString(22, 17, caveGlobals.mystat);
235245
caveGlobals.nMapArray[caveGlobals.col +1][caveGlobals.row] = 4;
236-
drawstuff(&caveGlobals);
246+
drawstuff(&caveGlobals);
237247
flipBuffers();
238248
break;
239-
}
249+
}
240250
// If nothing is found...
241251
doclearstuff();
242252
drawstuff(&caveGlobals);
@@ -263,10 +273,10 @@ void _main()
263273
__os_snprintf(caveGlobals.mystat, 64, "A Secret Door!");
264274
drawString(22, 17, caveGlobals.mystat);
265275
caveGlobals.nMapArray[caveGlobals.col][caveGlobals.row +1] = 4;
266-
drawstuff(&caveGlobals);
276+
drawstuff(&caveGlobals);
267277
flipBuffers();
268278
break;
269-
}
279+
}
270280
// If nothing is found...
271281
doclearstuff();
272282
drawstuff(&caveGlobals);
@@ -283,7 +293,7 @@ void _main()
283293
__os_snprintf(caveGlobals.mystat, 64, "It's a trap!");
284294
drawString(25, 17, caveGlobals.mystat);
285295
caveGlobals.nMapArray[caveGlobals.col][caveGlobals.row -1] = 6;
286-
drawstuff(&caveGlobals);
296+
drawstuff(&caveGlobals);
287297
flipBuffers();
288298
break;
289299
}
@@ -296,7 +306,7 @@ void _main()
296306
drawstuff(&caveGlobals);
297307
flipBuffers();
298308
break;
299-
}
309+
}
300310
// If nothing is found...
301311
doclearstuff();
302312
drawstuff(&caveGlobals);
@@ -336,7 +346,7 @@ void _main()
336346
caveGlobals.nMapArray[caveGlobals.col -1][caveGlobals.row] = 4;
337347
flipBuffers();
338348
}
339-
}
349+
}
340350
if (vpad_data.btn_trigger & BUTTON_LEFT) {
341351
if (isclosedoor(&caveGlobals, caveGlobals.row -1 , caveGlobals.col ) == true ) {
342352
doclearstuff();
@@ -369,7 +379,7 @@ void _main()
369379
// Movement
370380
//Down
371381
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 ) {
373383
doclearstuff();
374384
dog(&caveGlobals);
375385
caveGlobals.col += 1;
@@ -384,13 +394,13 @@ void _main()
384394
drawString(25, 17, caveGlobals.mystat);
385395
caveGlobals.curhealth -= 1;
386396
caveGlobals.nMapArray[caveGlobals.col][caveGlobals.row] = 6;
387-
}
397+
}
388398
flipBuffers();
389399
}
390400
}
391401
//Up
392402
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 ) {
394404
doclearstuff();
395405
dog(&caveGlobals);
396406
caveGlobals.col -= 1;
@@ -405,13 +415,13 @@ void _main()
405415
drawString(25, 17, caveGlobals.mystat);
406416
caveGlobals.curhealth -= 1;
407417
caveGlobals.nMapArray[caveGlobals.col][caveGlobals.row] = 6;
408-
}
418+
}
409419
flipBuffers();
410420
}
411421
}
412422
//Left
413423
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 ) {
415425
doclearstuff();
416426
dog(&caveGlobals);
417427
caveGlobals.row -= 1;
@@ -432,7 +442,7 @@ void _main()
432442
}
433443
//Right
434444
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 ) {
436446
doclearstuff();
437447
dog(&caveGlobals);
438448
caveGlobals.row += 1;
@@ -467,7 +477,7 @@ void _main()
467477
flipBuffers();
468478
}
469479
}
470-
480+
471481
}
472482
// Check if the player is dead
473483
if(caveGlobals.curhealth == 0) {
@@ -601,7 +611,7 @@ void dog(struct cGlobals *caveGlobals) {
601611
if (caveGlobals->dogsteps > 301) {
602612
__os_snprintf(caveGlobals->dogstat, 64, "Dog: Dead");
603613
caveGlobals->dogalive = 0;
604-
}
614+
}
605615
// Puts a symbol where the player used to be (or not if dead) print his status
606616
if (caveGlobals->dogalive == 1 ) {
607617
__os_snprintf(caveGlobals->doggy, 8, "d");
@@ -661,7 +671,7 @@ void drawmap(struct cGlobals *caveGlobals) {
661671
break;
662672
case TILE_WATER:
663673
__os_snprintf(caveGlobals->mapbuff, 2800, "~"); drawString(x, y, caveGlobals->mapbuff);
664-
break;
674+
break;
665675
case TILE_CLOSEDOOR:
666676
__os_snprintf(caveGlobals->mapbuff, 2800, "+"); drawString(x, y, caveGlobals->mapbuff);
667677
break;
@@ -685,7 +695,7 @@ void drawmap(struct cGlobals *caveGlobals) {
685695
break;
686696
case TILE_POTION:
687697
__os_snprintf(caveGlobals->mapbuff, 2800, "p"); drawString(x, y, caveGlobals->mapbuff);
688-
break;
698+
break;
689699
}
690700
}
691701
}
@@ -729,7 +739,7 @@ void changelevel(struct cGlobals *caveGlobals) {
729739
__os_snprintf(caveGlobals->titlebar2, 128, "Map by: SonyUSA");
730740
}
731741
if (caveGlobals->level == 2) {
732-
unsigned char lMapArray[17][62] = {
742+
unsigned char lMapArray[17][62] = {
733743
{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},
734744
{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},
735745
{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) {
746756
{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},
747757
{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},
748758
{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}
750760
};
751761
// Put the player where she belongs!
752762
caveGlobals->row = 1;
@@ -760,8 +770,8 @@ void changelevel(struct cGlobals *caveGlobals) {
760770
}
761771
}
762772
// Who made it???
763-
__os_snprintf(caveGlobals->titlebar2, 128, "Map by: ScarletDreamz");
764-
}
773+
__os_snprintf(caveGlobals->titlebar2, 128, "Map by: ScarletDreamz");
774+
}
765775
if (caveGlobals->level == 3) {
766776
unsigned char lMapArray[17][62] = {
767777
{ 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) {
848858
{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},
849859
{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},
850860
{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}
852862
};
853863
// Put the player where she belongs!
854864
caveGlobals->row = 1;
@@ -863,5 +873,5 @@ void changelevel(struct cGlobals *caveGlobals) {
863873
}
864874
// Who made it???
865875
__os_snprintf(caveGlobals->titlebar2, 128, "Map by: Sivart0");
866-
}
876+
}
867877
}

0 commit comments

Comments
 (0)