rendered paste body#include <oslib/oslib.h>#include "handler.h"#define SCREEN_WIDTH 480#define SCREEN_HEIGHT 272#define MAP_WIDTH 30#define MAP_HEIGHT 18#define TILE_SIZE 32PSP_MODULE_INFO("Scrolling Tile Engine",0,1,1);PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);int x,y;//unsigned int MAP_WIDTH, MAP_HEIGHT;//char **map; // put the map data in thisint map[MAP_WIDTH][MAP_HEIGHT];OSL_IMAGE* tileSet;/*typedef struct{ int walkable; int tileset;} tile;*/void loadMap(char mapName[200], char tileset[200]) { //Load the files oslSetTransparentColor(RGB(0,255,255)); tileSet = oslLoadImageFile(tileset, OSL_IN_RAM, OSL_PF_5551);//background oslDisableTransparentColor(); oslAssert(tileSet); int level = fopen(mapName,"rb"); oslAssert(level); fseek(level, 0, SEEK_SET); for (y=0;y<MAP_HEIGHT;y++) { for (x=0;x<MAP_WIDTH;x++) { fscanf(level, "%d", &map[x][y]); } }fclose(level);}/*void loadMap(char mapName[200], char tileset[200]) { char line; tileSet = loadImage(tileset); if(tileSet == NULL) { pspDebugScreenPrintf("Failed to load tile set...exiting\n"); sceKernelDelayThread(100000); sceKernelExitGame(); } FILE *fp = fopen( mapName, "rb" ); // open the fileunsigned int i;fread( &MAP_WIDTH, sizeof(int), 1, fp ); // read the x size of the map into sizexfread( &MAP_HEIGHT, sizeof(int), 1, fp ); // same with ymap = (char**) malloc( sizeof(char*) * MAP_WIDTH ); // allocate memoryfor( i = 0; i < MAP_WIDTH; i++ ){ map[i] = (char*) malloc( sizeof(char) * MAP_HEIGHT );}for( i = 0; i < MAP_WIDTH*MAP_HEIGHT; i++ ){ map[i/MAP_WIDTH][i%MAP_HEIGHT] = fgetc( fp ); // read the data}fclose(fp);}*/int main() { //Initialization oslInit(0); //The lib oslInitGfx(OSL_PF_8888, 1); //Gfx oslInitConsole(); //Text //Initialize audio oslInitAudio(); //Show the logo //logoShow(); const int BUFFER_SIZE = 64; char image_save[BUFFER_SIZE]; int to_save = 0; int xmov = 0; int ymov = 0; oslDebug("loading level 1"); loadMap("level1.map", "moon_tileset.png"); oslSetBilinearFilter(1); oslCorrectImageHalfBorder(tileSet); //debug for the bilinear //Configure the joypad oslSetKeyAutorepeatInit(40); oslSetKeyAutorepeatInterval(10); oslSetScreenClipping(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); ///////////////////////////////main loop/////////////////////////////////// while (!osl_quit) { oslStartDrawing(); oslClearScreen(RGB(0,0,0)); oslReadKeys(); for(y=0;y<MAP_HEIGHT;y++) { for(x=0;x<MAP_WIDTH;x++) { // if((((x*TILE_SIZE)+xmov > 0 - TILE_SIZE) && ((x*TILE_SIZE)+xmov < SCREEN_WIDTH + TILE_SIZE)) && //(((y*TILE_SIZE)+ymov > 0 - TILE_SIZE) && ((y*TILE_SIZE)+ymov < SCREEN_HEIGHT + TILE_SIZE))) { switch(map[x][y]) { case 0: oslCreateImageTileSize(tileSet, 0, 0, TILE_SIZE, TILE_SIZE); oslDrawImageXY(tileSet, (x*TILE_SIZE)+xmov, (y*TILE_SIZE)+ymov); break; case 1: oslCreateImageTileSize(tileSet, 32, 0, TILE_SIZE, TILE_SIZE); oslDrawImageXY(tileSet, (x*TILE_SIZE)+xmov, (y*TILE_SIZE)+ymov); break; case 2: oslCreateImageTileSize(tileSet, 64, 0, TILE_SIZE, TILE_SIZE); oslDrawImageXY(tileSet, (x*TILE_SIZE)+xmov, (y*TILE_SIZE)+ymov); break; case 3: oslCreateImageTileSize(tileSet, 96, 0, TILE_SIZE, TILE_SIZE); oslDrawImageXY(tileSet, (x*TILE_SIZE)+xmov, (y*TILE_SIZE)+ymov); break; default: oslCreateImageTileSize(tileSet, 32, 0, TILE_SIZE, TILE_SIZE); oslDrawImageXY(tileSet, (x*TILE_SIZE)+xmov, (y*TILE_SIZE)+ymov); } //} } } if((osl_keys->held.left) && (xmov < 0)) { xmov += 4; }else if((osl_keys->held.right) && (xmov > (-TILE_SIZE*MAP_WIDTH) + SCREEN_WIDTH)) { xmov -= 4; } if((osl_keys->held.up) && (ymov < 0)) { ymov += 4; }else if((osl_keys->held.down) && (ymov > (-TILE_SIZE*MAP_HEIGHT) + SCREEN_HEIGHT)) { ymov -= 4; } if(osl_keys->pressed.triangle) { snprintf(image_save, BUFFER_SIZE, "ms0:/PICTURE/Snapshot_%d.png", to_save); saveImage(image_save, getVramDisplayBuffer(), 480, 272, 512, 0); to_save++; } oslEndDrawing(); oslSyncFrame(); } oslEndGfx(); oslQuit(); return 0;}