All pastes #795617 Raw Edit

tile engine OSL

public c v1 · immutable
#795617 ·published 2007-11-24 07:59 UTC
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;}