| author | dessaya
<dessaya> 2004-06-26 01:49:18 UTC |
| committer | dessaya
<dessaya> 2004-06-26 01:49:18 UTC |
| parent | 71944282e19444f9f7aece7682ae24cc2425d818 |
| FP/src/include/map_defs.h | +4 | -7 |
| FP/src/include/output.h | +7 | -5 |
| FP/src/include/resources.h | +0 | -13 |
| FP/src/ker/kernel.c | +19 | -10 |
| FP/src/main.c | +1 | -0 |
| FP/src/out/output.c | +109 | -80 |
| FP/src/res/compress.c | +3 | -3 |
| FP/src/res/config.c | +6 | -5 |
| FP/src/res/dat.c | +17 | -8 |
| FP/src/res/disk.c | +9 | -8 |
| FP/src/res/maps.c | +102 | -102 |
| FP/src/res/resources.c | +14 | -11 |
diff --git a/FP/src/include/map_defs.h b/FP/src/include/map_defs.h index 3966701..77b1793 100644 --- a/FP/src/include/map_defs.h +++ b/FP/src/include/map_defs.h @@ -42,9 +42,7 @@ Len Offs BlockName & Description #define MAPS_MAX_SCREENS 24 #define MAPS_MAX_LENGTH 49 -//MAPS_MAX_SCREENS*2+1 #define MAPS_LINKMAP_CENTER 24 -//(char)(MAPS_MAX_SCREENS*2+1)/2 #define MAPS_DIRECTION_RIGHT 0x00 #define MAPS_DIRECTION_LEFT 0xFF @@ -79,7 +77,6 @@ Len Offs BlockName & Description #define MAPS_BLOCK_OFFSET_UNKNOWN_7 2288 #define MAPS_BLOCK_SIZEOF_GATE_1 18 #define MAPS_BLOCK_SIZEOF_GATE 18 -//256 #define MAPS_BLOCK_OFFSET_GATE_1 1441 #define MAPS_BLOCK_SIZEOF_GATE_2 18 #define MAPS_BLOCK_OFFSET_GATE_2 1697 @@ -87,15 +84,15 @@ Len Offs BlockName & Description -//Constantes copadas +/* Constantes copadas */ #define MAPS_sUp 2 #define MAPS_sDown 3 #define MAPS_sLeft 0 #define MAPS_sRight 1 -//Definicion de cosas: +/* Definicion de cosas: */ -//WALLS +/* WALLS */ #define MAPS_OBJ_ANT_1 0x13 #define MAPS_OBJ_ANT_2 0x33 #define MAPS_OBJ_BAL_1 0x01 @@ -130,7 +127,7 @@ Len Offs BlockName & Description #define MAPS_OBJ_VEN_L 0x37 #define MAPS_OBJ_VEN_R 0x38 -//BACKS +/* BACKS */ #define MAPS_BCK_VEN_R 0x00 #define MAPS_BCK_BRK_1 0x01 #define MAPS_BCK_BRK_2 0x02 diff --git a/FP/src/include/output.h b/FP/src/include/output.h index 07455d0..2ace89b 100644 --- a/FP/src/include/output.h +++ b/FP/src/include/output.h @@ -38,6 +38,8 @@ resources.h: Free Prince : Output Devices Handler #ifndef _OUTPUT_H_ #define _OUTPUT_H_ +#include <SDL/SDL.h> /* SDL stuff */ + /* Text Primitives*/ void outputDrawText(const char* text, int x, int y); void outputDrawMessage(const char* text); @@ -59,19 +61,19 @@ void outputFreeBitmap(void* image); */ /* Graph: Primitives for the kernel */ -void outputDrawBitmap(void* image,int x, int y); +void outputDrawBitmap(SDL_Surface *screen, void* image,int x, int y); /* Draws an abstract image */ -void outputClearScreen(); +void outputClearScreen(SDL_Surface *screen); /* Crears the screen */ /* Initialization */ -void outputInit(); +SDL_Surface *outputInit(); /* This function must be called before starting using the output functions - * it will initialize the screen and the output module - */ + * it will initialize the screen and the output module. Returns a pointer + * to the initialized screen, or NULL if an error occurs. */ void outputStop(); /* Finish all output modes, including the screen mode diff --git a/FP/src/include/resources.h b/FP/src/include/resources.h index 9a4298e..8aa6759 100644 --- a/FP/src/include/resources.h +++ b/FP/src/include/resources.h @@ -35,19 +35,6 @@ resources.h: Free Prince : Resource Handler #include "config.h" -//int resOpenFile(const char* file); - /* Opens file, loads the data into memory, closes the file and - * returns an ID number (data descriptor) for the new structure. */ -//resCloseFile(int dd); /* dd = data descriptor */ - /* Frees the data from memory. */ -//resCloseAllFiles(); - -/* Functions for getting data previously loaded into memory. Each dd points - * to an array of elements, and resId indicates the index in this array. */ -//tMidi resGetMidi(int dd, int resId); -//tWave resGetWave(int dd, int resId); -//tImage resGetImage(int dd, int resId); - typedef enum {eImages=2,eWave,eMidi,eLevels}tDataType; #define MAX_FILENAME_SIZE 260 diff --git a/FP/src/ker/kernel.c b/FP/src/ker/kernel.c index 113256c..fc15541 100644 --- a/FP/src/ker/kernel.c +++ b/FP/src/ker/kernel.c @@ -30,6 +30,7 @@ resources.h: Princed Resources : Resource Handler headers DO NOT remove this copyright notice */ +#include <SDL/SDL.h> #include "kernel.h" #include "resources.h" #include "output.h" @@ -38,33 +39,41 @@ int kernel(int optionflag,int level) { /* levels=-1 is default * levels from 0 to n is the level number * - * optionflag may be read using hasFlag(name_flag); Note that the variable must be called optionflag + * optionflag may be read using hasFlag(name_flag); Note that the variable + * must be called optionflag */ tData* testResource; + SDL_Surface *screen; int i; - outputInit(); - printf("Hello, I'm a dummy kernel, I was called to do the stuff\nwith '%x' options and go to the level '%d'\n",optionflag,level); - testResource=resLoad(RES_ANIM_RUN_LEFT); - - /* How to use a resource */ + screen = outputInit(); + + if (!screen) { + fprintf(stderr, "Unable to initialize screen: %s\n", SDL_GetError()); + exit(1); + } + + testResource=resLoad(RES_ANIM_RUN_LEFT); if (!testResource) { printf("The resource couldn't be loaded!\n"); exit(1); } - + printf("Resource number: %d. Frames: %d. Type: %d.\n", RES_ANIM_RUN_LEFT, testResource->frames, testResource->type ); - + for (i=0;i<testResource->frames;i++) { printf("frame %d\n",i); - outputDrawBitmap(testResource->pFrames[i],3,3); + outputDrawBitmap(screen, testResource->pFrames[i], 3, 3); + SDL_UpdateRect(screen, 0, 0, 320, 200); + outputClearScreen(screen); + getchar(); } - + outputStop(); return 0; } diff --git a/FP/src/main.c b/FP/src/main.c index b21a666..e7cf985 100644 --- a/FP/src/main.c +++ b/FP/src/main.c @@ -36,6 +36,7 @@ main.c: FreePrince : Main function - parsing #include "kernel.h" #include "main.h" #include <stdio.h> +#include <stdlib.h> /* atoi */ /***************************************************************\ | Standard executable command line parsing function | diff --git a/FP/src/out/output.c b/FP/src/out/output.c index 2ca3bf3..ac5497f 100644 --- a/FP/src/out/output.c +++ b/FP/src/out/output.c @@ -19,7 +19,7 @@ */ /* -resources.h: Free Prince : Output Devices Handler +resources.c: Free Prince : Output Devices Handler \xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf Description: @@ -35,11 +35,9 @@ resources.h: Free Prince : Output Devices Handler DO NOT remove this copyright notice */ -#ifndef _OUTPUT_H_ -#define _OUTPUT_H_ - -#include "resources.h" /* tMemory structure */ #include <stdlib.h> /* malloc */ +#include "resources.h" /* tMemory structure */ +#include "output.h" /* tMemory structure */ /* Text Primitives*/ void outputDrawText(const char* text, int x, int y) {} @@ -49,35 +47,84 @@ void outputDrawMessage(const char* text) {} void outputPlayWav(tMemory sound) {} /* Starts the reproduction of the sample and returns */ void outputPlayMid(tMemory music) {} /* Starts the music reproduction and returns */ -/* Graph */ +/* Graphics */ + +void putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel) +/* Set the pixel at (x, y) to the given value + * NOTE: The surface must be locked before calling this!*/ +{ + int bpp = surface->format->BytesPerPixel; + /* Here p is the address to the pixel we want to set */ + Uint8 *p = (Uint8 *) surface->pixels + y * surface->pitch + x * bpp; + + switch (bpp) { + case 1: + *p = pixel; + break; + + case 2: + *(Uint16 *) p = pixel; + break; + + case 3: + if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { + p[0] = (pixel >> 16) & 0xff; + p[1] = (pixel >> 8) & 0xff; + p[2] = pixel & 0xff; + } else { + p[0] = pixel & 0xff; + p[1] = (pixel >> 8) & 0xff; + p[2] = (pixel >> 16) & 0xff; + } + break; -/* Define a dummy private structure */ -typedef struct { - char* picture; - unsigned char palette[3*16]; - int h,w; -}SDL_very_cool_structure; + case 4: + *(Uint32 *) p = pixel; + break; + } +} - /* Graph: Primitives for resources module */ -void* outputLoadBitmap(const unsigned char* data, int size, const unsigned char* palette, int h,int w,int invert, int firstColorTransparent) { - /* Returns an abstract object allocated in memory using the data information ti build it - * invert is 0 when no invertion is needed and non-zero when an inversion is performed - */ +/* Graphics: Primitives for resources module */ +void* outputLoadBitmap(const unsigned char* data, int size, + const unsigned char* palette, int h, int w, int invert, + int firstColorTransparent) { + /* Returns an abstract object allocated in memory using the data + * information ti build it invert is 0 when no invertion is needed and + * non-zero when an inversion is performed */ /* Dummy function */ - SDL_very_cool_structure* result; - static char printed[]=" *+@#$%&=|SVHG/OP"; + SDL_Surface* result; int i,j; - - result=(SDL_very_cool_structure*)malloc(sizeof(SDL_very_cool_structure)); - + Uint32 rmask, gmask, bmask, amask; + printf("outputLoadBitmap: I'm creating an SDL structure :p\n"); - printf("outputLoadBitmap: invert=%d. transparent=%d. size=%d\n",invert,firstColorTransparent,size); + printf("outputLoadBitmap: invert=%d. transparent=%d. size=%d\n", + invert, firstColorTransparent, size); + +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + rmask = 0xff000000; + gmask = 0x00ff0000; + bmask = 0x0000ff00; + amask = 0x000000ff; +#else + rmask = 0x000000ff; + gmask = 0x0000ff00; + bmask = 0x00ff0000; + amask = 0xff000000; +#endif + result = SDL_CreateRGBSurface(0, w, h, 8, rmask, gmask, bmask, amask); + if (!result) + { + fprintf(stderr, "CreateRGBSurface failed: %s\n", SDL_GetError()); + exit(1); + } + /* Notes: * - the image is serialized - * this means that the last bits in the row to complete a full byte are garbage + * this means that the last bits in the row to complete a full byte + * are garbage * - there are 2 types of images: * 1 bit/pixel (b/w) * 4 bit/pixel (16 cols) @@ -87,19 +134,28 @@ void* outputLoadBitmap(const unsigned char* data, int size, const unsigned char* * we have to add 1 because of the serialization * division by 2 is because 4bpp are 2 pixel/byte (0.5 byte/pixel) */ - w=(w+1)/2; - result->picture=malloc(h*w*4+10); - result->w=w; - result->h=h; - - for (i=0,j=0;i<h*w;i++) { /* transform a 4 bpp array into an ASCII draw 16 bpp*/ - result->picture[j++]=printed[data[i]>>4]; - result->picture[j++]=printed[data[i]>>4]; - result->picture[j++]=printed[data[i]&0x0f]; - result->picture[j++]=printed[data[i]&0x0f]; + w = (w + 1) / 2; + + /* Lock the screen for direct access to the pixels */ + if (SDL_MUSTLOCK(result)) { + if (SDL_LockSurface(result) < 0) { + fprintf(stderr, "Can't lock surface: %s\n", SDL_GetError()); + exit(1); + } + } + + for (i = 0; i < w; i++) { + for (j = 0; j < h; j++) { + putpixel(result, i, j, + SDL_MapRGB(result->format, 0xff, 0xff, 0x00)); + } } - memcpy(result->palette,palette,3*16); /* copy palette */ + if (SDL_MUSTLOCK(result)) { + SDL_UnlockSurface(result); + } + +/* memcpy(result->palette, palette, 3 * 16); * copy palette */ return (void*)result; } @@ -108,56 +164,29 @@ void outputFreeBitmap(void* image) {} /* Frees the abstract object created by the loadBitmap function */ - /* Graph: Primitives for the kernel */ -void outputDrawBitmap(void* image,int x, int y) { - /* Draws an abstract image - */ - -#define myImage ((SDL_very_cool_structure*)image) - - int h,w,i,j; - w=myImage->w*4; - h=myImage->h; - - /* Draw image */ - for (i=0;i<y;i++) printf("\n"); - for (i=0;i<h;i++) { - for (j=0;j<x;j++) printf(" "); - for (j=0;j<w;j++) { - printf("%c", - myImage->picture[i*w+j] - ); - } - printf("\n"); - } - - /* show palette */ - for (i=0;i<16;i++) { - printf("rgb[%d]=(%d,%d,%d) #%02x%02x%02x\n", - i+1, - myImage->palette[3*i], - myImage->palette[3*i+1], - myImage->palette[3*i+2], - (myImage->palette[3*i])<<2, - (myImage->palette[3*i+1])<<2, - (myImage->palette[3*i+2])<<2 - ); - } - +/* Graphics: Primitives for the kernel */ +void outputDrawBitmap(SDL_Surface *screen, void* image, int x, int y) { +/* Draws an abstract image */ + SDL_Surface *s = (SDL_Surface *)image; + /* SDL_Rect destrect = {x, y, s->w, s->h};*/ + SDL_BlitSurface(s, NULL, screen, NULL); } -void outputClearScreen() {} - /* Crears the screen - */ +void outputClearScreen(SDL_Surface *screen) { +} /* Initialization */ -void outputInit() {} -/* This function must be called before starting using the output functions - * it will initialize the screen and the output module - */ +SDL_Surface *outputInit() +{ + SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO); + atexit(outputStop); + return SDL_SetVideoMode(320, 200, 8, 0); +} -void outputStop() {} +void outputStop() /* Finish all output modes, including the screen mode */ +{ + SDL_Quit(); +} -#endif diff --git a/FP/src/res/compress.c b/FP/src/res/compress.c index 4f45131..916659c 100644 --- a/FP/src/res/compress.c +++ b/FP/src/res/compress.c @@ -36,7 +36,7 @@ compress.c: Princed Resources : Image Compression Library #include <string.h> #include "compress.h" #include "memory.h" -//#include "pr.h" +/*#include "pr.h"*/ #include "disk.h" /* array2short */ /***************************************************************\ @@ -215,9 +215,9 @@ int mExpandGraphic(const unsigned char* data,tImage *image, int dataSizeInBytes) int result; data++; - image->height=array2short(data);//((unsigned char)data[0])+((unsigned char)data[1]<<8);data+=2; + image->height=array2short(data);/*((unsigned char)data[0])+((unsigned char)data[1]<<8);data+=2;*/ data+=2; - image->width =array2short(data);//((unsigned char)data[0])+((unsigned char)data[1]<<8);data+=2; + image->width =array2short(data);/*((unsigned char)data[0])+((unsigned char)data[1]<<8);data+=2;*/ data+=2; if (*(data++)) return COMPRESS_RESULT_FATAL; /* Verify format */ diff --git a/FP/src/res/config.c b/FP/src/res/config.c index bfe0176..21027ee 100644 --- a/FP/src/res/config.c +++ b/FP/src/res/config.c @@ -34,20 +34,21 @@ config.c: Free Prince : Configuration Handler #include "freeprince.h" #include <stdlib.h> #include "resources.h" +#include "dat.h" static tMemory options[CONFIG_MAX_ITEMS]; int configInit() { int id; - unsigned char* aux; + /*unsigned char* aux;*/ for (id=0;id<CONFIG_MAX_ITEMS;id++) { options[id].size=-1; options[id].array=NULL; } - +#if 0 /* READ INDEX */ - if (!mReadBeginDatFile(&id,FP_CONFIG_FILE)) return -1; + if (!mReadBeginDatFile((unsigned short int *)&id,FP_CONFIG_FILE)) return -1; for (id=0;id<DATA_END_ITEMS;id++) { if (res_getDataById(id,DATA_END_ITEMS,options+id)) { aux=options[id].array; @@ -57,13 +58,13 @@ int configInit() { return -3; } } - +#endif mReadCloseDatFile(); return 0; } void configStop() { - //use CONFIG_FILE from freeprince.h + /*use CONFIG_FILE from freeprince.h*/ int i; for (i=0;i<CONFIG_MAX_ITEMS;i++) { diff --git a/FP/src/res/dat.c b/FP/src/res/dat.c index 05e40b8..b4a2f57 100644 --- a/FP/src/res/dat.c +++ b/FP/src/res/dat.c @@ -32,6 +32,7 @@ dat.c: Princed Resources : DAT library */ #include <stdio.h> +#include <stdlib.h> #include <string.h> #include "disk.h" @@ -64,13 +65,21 @@ int mReadBeginDatFile(unsigned short int *numberOfItems,const char* vFiledat){ 1 Ok */ - int ok; unsigned char* readDatFilePoint; /* Open file */ readDatFileSize=mLoadFileArray(vFiledat,&readDatFile); - if (!readDatFileSize) return 0; - if (readDatFileSize<=6) {free(readDatFile);return 0;} + if (!readDatFileSize) + { + fprintf(stderr, "mReadBeginDatFile: %s not found\n", vFiledat); + return 0; + } + if (readDatFileSize<=6) + { + fprintf(stderr, "mReadBeginDatFile: File too short\n"); + free(readDatFile); + return 0; + } readDatFilePoint=readDatFile; @@ -80,6 +89,7 @@ int mReadBeginDatFile(unsigned short int *numberOfItems,const char* vFiledat){ indexSize=array2short(readDatFilePoint); if ((indexOffset>readDatFileSize)&&((indexOffset+indexSize)!=readDatFileSize)) { + fprintf(stderr, "mReadBeginDatFile: Invalid format\n"); free(readDatFile); return 0; /* this is not a valid prince dat file */ } @@ -105,11 +115,10 @@ int mReadFileInDatFile(int k,unsigned char* *data,unsigned long int *size) { unsigned short int id; /* for each archived file the index is read */ - id= array2short(indexPointer+ofk+k*recordSize);//(indexPointer[ofk+k*recordSize])+(indexPointer[ofk+k*recordSize+1]<<8); - //printf("a ver: %d %d\n",id,(indexPointer[ofk+k*recordSize])+(indexPointer[ofk+k*recordSize+1]<<8)); + id=array2short(indexPointer+ofk+k*recordSize); - offset=array2long(indexPointer+ofk+k*recordSize+2);//indexPointer[ofk+k*recordSize+2])+(indexPointer[ofk+k*recordSize+3]<<8)+(indexPointer[ofk+k*recordSize+4]<<16)+(indexPointer[ofk+k*recordSize+5]<<24); - *size= array2short(indexPointer+ofk+k*recordSize+6);//indexPointer[ofk+k*recordSize+6])+(indexPointer[ofk+k*recordSize+7]<<8)+1; + offset=array2long(indexPointer+ofk+k*recordSize+2); + *size= array2short(indexPointer+ofk+k*recordSize+6); if ((!pop1)&&(!(indexPointer[ofk+k*recordSize+8]==0x40)&&(!indexPointer[ofk+k*recordSize+9])&&(!indexPointer[ofk+k*recordSize+10]))) return -1; if (offset+indexSize>readDatFileSize) return -1; *data=readDatFile+offset; @@ -130,7 +139,7 @@ int mReadInitResource(tResource** res,const unsigned char* data,long size) { (*res)->offset=(unsigned short)offset; /* TODO delete this line */ /* (*res)->type=verifyHeader(data,(unsigned short int)size); */ } else { /* If resource type is invalid or 0, the type will be decided by PR */ - if (!((*res)->type)) (*res)->type=0;//verifyHeader(data,(unsigned short int)size); + if (!((*res)->type)) (*res)->type=0; /*verifyHeader(data,(unsigned short int)size);*/ } return 0; } diff --git a/FP/src/res/disk.c b/FP/src/res/disk.c index e5b3074..3053709 100644 --- a/FP/src/res/disk.c +++ b/FP/src/res/disk.c @@ -40,12 +40,12 @@ disk.c: Princed Resources : Disk Access & File handling functions #include "memory.h" #include <string.h> #include "disk.h" -//#include "xmlparse.h" /* equalsIgnoreCase */ #define IGNORERECURSIVEFUNCTIONS #define UNIX #include <sys/types.h> #include <sys/stat.h> + #include "resources.h" #ifdef UNIX @@ -174,7 +174,7 @@ int writeClose(FILE* fp,int dontSave,int optionflag,const char* backupExtension) char* fileName; unsigned long int size; - //if (getFromOpenFilesList(fp,&fileName,&content,&size)) { + /*if (getFromOpenFilesList(fp,&fileName,&content,&size)) {*/ if (dontSave) { fclose(fp); if (size) { @@ -184,7 +184,7 @@ int writeClose(FILE* fp,int dontSave,int optionflag,const char* backupExtension) } else { remove(fileName); } - //} + /*}*/ #if 0 else { /* File Existed before and we need to back it up */ @@ -244,8 +244,8 @@ int writeOpen(const char* vFileext, FILE* *fp, int optionflag) { if not, we need to know the name in case we need to delete it */ -// addFileToOpenFilesList(file,hasFlag(backup_flag)); - result=((*fp=fopen(file,"wb"))!=NULL);// addPointerToOpenFilesList(*fp); +/* addFileToOpenFilesList(file,hasFlag(backup_flag));*/ + result=((*fp=fopen(file,"wb"))!=NULL);/* addPointerToOpenFilesList(*fp);*/ return result; } @@ -272,7 +272,7 @@ int writeData(const unsigned char* data, int ignoreChars, char* vFileext, int si /* Verify parameters */ size-=ignoreChars; if (size<0) return 0; - //if (size==0) return 1; /* Wrote 0 bytes */ + /*if (size==0) return 1; * Wrote 0 bytes */ /* Save file */ ok=writeOpen(vFileext,&target,optionflag); @@ -293,8 +293,8 @@ int mLoadFileArray(const char* vFile,unsigned char** array) { int aux; /* Open the file */ - fp=fopen(repairFolders(vFile),"rb"); if ((fp=fopen(repairFolders(vFile),"rb"))==NULL) { + fprintf(stderr, "mLoadFileArray: Unable to open file\n"); return 0; } else { /* get file size */ @@ -303,6 +303,7 @@ int mLoadFileArray(const char* vFile,unsigned char** array) { if ( !aux || (aux>SIZE_OF_FILE) || ( ((*array=(unsigned char*)malloc(sizeof(char)*aux))==NULL) ) ) { /* if the file was null or bigger than the max size or couldn't allocate the file in memory */ fclose(fp); + fprintf(stderr, "mLoadFileArray: Wrong size\n"); return 0; } else { /* if the file was successfully open */ @@ -372,7 +373,7 @@ whatIs isDir(const char *path) { struct stat buf; if(stat(path,&buf)==-1) return eNotFound; - return (S_IFDIR&buf.st_mode)?eDirectory:eFile; + return (S_ISDIR(buf.st_mode))?eDirectory:eFile; } #ifndef IGNORERECURSIVEFUNCTIONS diff --git a/FP/src/res/maps.c b/FP/src/res/maps.c index bb81357..b0bfebc 100644 --- a/FP/src/res/maps.c +++ b/FP/src/res/maps.c @@ -35,7 +35,7 @@ maps.c: Freeprince : Map handling library static unsigned char* slevel; static int sscreen; -//Privates +/* Privates */ void maps_getStartPosition(int* pantalla, int* p, int *b,tDirection *sentido,tDirection *sentido2) { int valor; @@ -49,20 +49,20 @@ void maps_getStartPosition(int* pantalla, int* p, int *b,tDirection *sentido,tDi } void maps_getGuard(int pantalla,int *p,int *b,int *skill,int *color,tDirection *sentido,int *exists) { - //Posicion + /* Posicion */ unsigned char valor=(slevel[(MAPS_BLOCK_OFFSET_GUARD_POSITION+sscreen-1)]); *exists = (valor<30); *b = (valor%10); *p = (valor/10); - //sentido + /* sentido */ *sentido=slevel[MAPS_BLOCK_OFFSET_GUARD_DIRECTION+pantalla-1]?eRight:eLeft; - //skill + /* skill */ *skill =slevel[MAPS_BLOCK_OFFSET_GUARD_SKILL+pantalla-1]; - //Color + /* Color */ *color =slevel[MAPS_BLOCK_OFFSET_GUARD_COLOR+pantalla-1]; } -//Publics +/* Publics */ int levelUse(void* level) { /* Sets the level for future use using the resource given @@ -71,10 +71,10 @@ int levelUse(void* level) { * Return 0 on success */ - //Remember level + /* Remember level */ slevel=level; - //Set start screen + /* Set start screen */ sscreen=slevel[MAPS_BLOCK_OFFSET_START_POSITION]; printf("levelUse: using new level\n"); @@ -126,8 +126,8 @@ int levelGetDoorMap(/* TODO: idem */); int levelGetStarPosition(int* screen, int* position) { /* TODO: define position as an int or using x,y coordinate system*/ - //maps_getStartPosition(screen, position, int *b,tDirection *sentido,tDirection *sentido2); - + /* maps_getStartPosition(screen, position, int *b,tDirection *sentido,tDirection *sentido2); */ + return 0; } int levelGetInformation(int *thisScreen, unsigned char* LRUDscreens, unsigned char* cornerScreens) { @@ -143,31 +143,31 @@ int levelGetInformation(int *thisScreen, unsigned char* LRUDscreens, unsigned ch | Prototipos | \***************************************************************/ - //File management procedures + /* File management procedures */ char mLoadPED(char* vFile,tLevel* lev); - char mLoadDAT(char* vFile,tLevel* lev,char levelNumber); //Tested 5 - char mSavePED(char* vFile,tLevel* lev); //Tested 8 - char mSaveDAT(char* vFile,tLevel* lev); //Tested 3 + char mLoadDAT(char* vFile,tLevel* lev,char levelNumber); /* Tested 5 */ + char mSavePED(char* vFile,tLevel* lev); /* Tested 8 */ + char mSaveDAT(char* vFile,tLevel* lev); /* Tested 3 */ - //char mChangeLevel(tLevel* lev,char newLevel); //0 si no hay cambios; si hay cambios en paredes devuelve la camtidad de paredes cambiadas - //char mAllowedOn(char levelnumber,char wall); //1 si wall es permitido en levelnumber; 0 si no + /* char mChangeLevel(tLevel* lev,char newLevel); //0 si no hay cambios; si hay cambios en paredes devuelve la camtidad de paredes cambiadas */ + /* char mAllowedOn(char levelnumber,char wall); //1 si wall es permitido en levelnumber; 0 si no */ - //Information methods + /* Information methods */ void mSetText (tLevel* lev,char* text); void mGetText (tLevel* lev,char* text); - //tLevel Set methods + /* tLevel Set methods */ void mSetWall (tLevel* lev,char pantalla,char p,char b,char valor); void mSetLink (tLevel* lev,char pantalla,char tipo,char valor); void mSetGuard(tLevel* lev,char pantalla,char p,char b,char vidas,char color,char sentido,char erase); void mSetBack (tLevel* lev,char pantalla,char p,char b,char valor); - //tLevel Get Methods + /* tLevel Get Methods */ char mGetWall (tLevel* lev,char pantalla,char p,char b); char mGetLink (tLevel* lev,char pantalla,char tipo); void mGetGuard(tLevel* lev,char pantalla,char* p,char* b,char* vidas,char* color,char* sentido,char* erase); char mGetBack (tLevel* lev,char pantalla,char p,char b); - //Gate handling Methods + /* Gate handling Methods */ /* Public: mCreateEventList @@ -183,22 +183,22 @@ int levelGetInformation(int *thisScreen, unsigned char* LRUDscreens, unsigned ch */ - //Screen Links Handling Methods + /* Screen Links Handling Methods */ char mGetScreen (tLevel* lev, char i,char j, char* error); void mGetMainScreen(tLevel* lev, char* i,char* j); void mRemScreen (tLevel* lev, char i,char j, char* error); void mAddScreen (tLevel* lev, char i,char j, char* error); void mGetSize (tLevel* lev, char* i,char* j); char mGetScrCount (tLevel* lev); - //Nota: si mGetScrCount(lev) es 24, entonces el nivel esta lleno + /* Nota: si mGetScrCount(lev) es 24, entonces el nivel esta lleno */ void mCpyScreen (tLevel* lev, char fromi,char fromj,char toi,char toj, char* error); - //Start position handling + /* Start position handling */ void mGetStartPosition(tLevel* lev,char* pantalla, char* p, char *b,char *sentido,char *sentido2); void mSetStartPosition(tLevel* lev,char pantalla, char p, char b,char sentido,char sentido2); void mGetDebugPosition(tLevel* lev,char* pantalla, char* p, char *b,char *sentido); void mSetDebugPosition(tLevel* lev,char pantalla, char p, char b,char sentido); - //Nota: DebugPosition puede no existir en lev, en ese caso la convension es no existe si pantalla igual a 0, de lo contrario existe y la pantalla inicial es pantalla + /* Nota: DebugPosition puede no existir en lev, en ese caso la convension es no existe si pantalla igual a 0, de lo contrario existe y la pantalla inicial es pantalla */ /***************************************************************\ | I M P L E M E N T A T I O N | @@ -231,14 +231,14 @@ void mGetArray(tLevel* lev, char *pos,int from,int length) { | Gate handling | \***************************************************************/ -//Privados -void getRawEvent(tLevel* lev,char id,tGateEvent* event) { //private +/* Privados */ +void getRawEvent(tLevel* lev,char id,tGateEvent* event) { /* private */ unsigned char x1,x2,valor; (*event).pos[0] =(*lev).levelArray[MAPS_BLOCK_OFFSET_GATE_1+id]; (*event).pos[1] =(*lev).levelArray[MAPS_BLOCK_OFFSET_GATE_2+id]; } -void setRawEvent(tLevel* lev,char id,tGateEvent* event) { //private +void setRawEvent(tLevel* lev,char id,tGateEvent* event) { /* private */ unsigned char x1,x2,validate; x1=(*event).pos[0]; x2=(*event).pos[1]; @@ -249,13 +249,13 @@ void setRawEvent(tLevel* lev,char id,tGateEvent* event) { //private (*lev).levelArray[MAPS_BLOCK_OFFSET_VALIDATOR_WALL]+=validate; } -//Privado, pero publico dentro de maps.c +/* Privado, pero publico dentro de maps.c */ void mLoadEventList(tLevel* lev) { - //Esta funcion carga el TDA con los datos que lee del rigido + /* Esta funcion carga el TDA con los datos que lee del rigido */ char a=0; char b=0; - //Cargar gateList con las asociaciones del mapa + /* Cargar gateList con las asociaciones del mapa */ int j=0; for (int i=0;i<MAPS_BLOCK_SIZEOF_WALL;i++) { switch ((*lev).levelArray[MAPS_BLOCK_OFFSET_WALL+i]) { @@ -267,7 +267,7 @@ void mLoadEventList(tLevel* lev) { } (*lev).gateList.size=j; - //Cargar gateTDA con datos de la tabla + /* Cargar gateTDA con datos de la tabla */ j=0; for (tGateEvent evento;j<MAPS_BLOCK_SIZEOF_GATE;j++) { getRawEvent(lev,j,&evento); @@ -283,7 +283,7 @@ void mLoadEventList(tLevel* lev) { (*lev).gateTDA.size=a; } -//mSevEventList private functions +/* mSevEventList private functions */ void anularEvento(tGateEvent *e) { (*e).pos[0]=0; @@ -316,7 +316,7 @@ char belongsToDiskList(tLevel* lev, tGateRow *fila,int i) { char total=0; char pertenece; - //recorrer la lista de eventos + /* recorrer la lista de eventos */ for (int k=i;((*lev).gateEvents.event[k].pos[0]<(0x80));k++) { total++; pertenece=0; @@ -342,10 +342,10 @@ void apuntar(tLevel* lev,unsigned char i) { #define MAPS_GATE_SINGLE_EVENT 0 #define MAPS_GATE_MULTIPLE_EVENT 1 char intertLeft(tLevel* lev,tGateRow fila,int inicioFila,int numeroFila,char mode) { - //Esta funcion inserta en gateEvents el o los eventos de fila que no estan insertados - //Por cada insersion deben ser modificados los ids correspondientes en la gateList - //devuelve 1 si entro - //devuelve 0 en caso de superarse lso 256 bytes + /* Esta funcion inserta en gateEvents el o los eventos de fila que no estan insertados */ + /* Por cada insersion deben ser modificados los ids correspondientes en la gateList */ + /* devuelve 1 si entro */ + /* devuelve 0 en caso de superarse lso 256 bytes */ /* 1) En caso de MULTIPLE EVENT los elementos de la fila @@ -384,27 +384,27 @@ char intertLeft(tLevel* lev,tGateRow fila,int inicioFila,int numeroFila,char mod */ for (j=0;(j<fila.size);j++) { - if (fila.event[j].pos[0]) { //Para cada evento nonulo de la fila - //Adelantar todos los eventos posteriores a inicioFila + if (fila.event[j].pos[0]) { /* Para cada evento nonulo de la fila */ + /* Adelantar todos los eventos posteriores a inicioFila */ for (int k=(*lev).gateEvents.size;k>inicioFila;k--) { (*lev).gateEvents.event[k+1]=(*lev).gateEvents.event[k]; } - //Insertar (*fila).event[j] en la gateEvents en la posicion generada en inicioFila. - //Se tendra en cuenta el flag de de fin de lista + /* Insertar (*fila).event[j] en la gateEvents en la posicion generada en inicioFila. */ + /* Se tendra en cuenta el flag de de fin de lista */ (*lev).gateEvents.event[inicioFila]=setFlag(fila.event[j],c); - //El flag del fin de lista se cancela + /* El flag del fin de lista se cancela */ c=0; - //Incrementar la cantidad de eventos de la gateEvent, en caso de no poder abortar + /* Incrementar la cantidad de eventos de la gateEvent, en caso de no poder abortar */ if ((*lev).gateEvents.size==255) { return 0; } else { (*lev).gateEvents.size++; } - //Finalmente se debe recorrer la gate list e incrementar el contenido que supere a inicioFila + /* Finalmente se debe recorrer la gate list e incrementar el contenido que supere a inicioFila */ for (int k=0;k<(*lev).gateList.size;k++) { if ((*lev).gateList.item[k].id>=inicioFila) ((*lev).gateList.item[k].id)++; @@ -414,13 +414,13 @@ char intertLeft(tLevel* lev,tGateRow fila,int inicioFila,int numeroFila,char mod return 1; } -//Main function +/* Main function */ char mSaveEventList(tLevel* lev) { - //Lee el TDA, optimiza el espacio que ocupan los datos y lo guardaen disco - //devuelve 1 en caso de que entre en disco - //devuelve 0 en caso de que no hayan entrado los datos en disco + /* Lee el TDA, optimiza el espacio que ocupan los datos y lo guardaen disco */ + /* devuelve 1 en caso de que entre en disco */ + /* devuelve 0 en caso de que no hayan entrado los datos en disco */ - //Inicializar variables + /* Inicializar variables */ unsigned char n=(*lev).gateTDA.size; unsigned char c=1; char x; @@ -428,14 +428,14 @@ char mSaveEventList(tLevel* lev) { (*lev).gateEvents.size=0; (*lev).gateList.size=0; - //Generar a partir de gateTDA la lista de eventos gateEventList y de asociaciones gateList - while (n) { //Para todos los elementos - for (int k=0;k<(*lev).gateTDA.size;k++) { //Recorrer filas de gateTDA - if (obtenerFila(&fila,c,k,lev)) { //mietras haya elementos con tamagno=c sin procesar fila=(*lev).gateTDA.row[n] where fila=(*lev).gateTDA.row[n].size=c; - //entra con fila seteada en la fila k con c elementos adentro. + /* Generar a partir de gateTDA la lista de eventos gateEventList y de asociaciones gateList */ + while (n) { /* Para todos los elementos */ + for (int k=0;k<(*lev).gateTDA.size;k++) { /* Recorrer filas de gateTDA */ + if (obtenerFila(&fila,c,k,lev)) { /* mietras haya elementos con tamagno=c sin procesar fila=(*lev).gateTDA.row[n] where fila=(*lev).gateTDA.row[n].size=c; */ + /* entra con fila seteada en la fila k con c elementos adentro. */ n--; x=0; - for (int i=0;((i<(*lev).gateEvents.size) && (!x));i++) { //recorrer lo ya creado de gateEvents + for (int i=0;((i<(*lev).gateEvents.size) && (!x));i++) { /* recorrer lo ya creado de gateEvents */ x=belongsToDiskList(lev,&fila,i); switch (x) { case MAPS_GATE_BELONGS: @@ -466,8 +466,8 @@ char mSaveEventList(tLevel* lev) { c++; } - //Guardar gateEvents y gateList en el formato. - //gateList + /* Guardar gateEvents y gateList en el formato. */ + /* gateList */ for (int i=0;i<(*lev).gateEvents.size;i++) { setRawEvent(lev,i,&((*lev).gateEvents.event[i])); } @@ -492,7 +492,7 @@ void getGateAsociation(tLevel* lev,char id,char* scr,char* p,char* b, char *term valor =(x1%(0x20)); *b =(valor%10); *p =(valor/10); - *termino =(x1/(0x80)); //c=(Se pasa a la siguiente)?0:1 + *termino =(x1/(0x80)); /* c=(Se pasa a la siguiente)?0:1 */ } void setGateAsociation(tLevel* lev,char id,char scr,char p,char b, char termino) { @@ -507,7 +507,7 @@ void setGateAsociation(tLevel* lev,char id,char scr,char p,char b, char termino) (*lev).levelArray[MAPS_BLOCK_OFFSET_VALIDATOR_WALL]+=validate; } -void shiftEventId(tLevel* lev,char from,char delta) { //private +void shiftEventId(tLevel* lev,char from,char delta) { /* private */ char validate=0; char aux; for (int i=0;i<MAPS_BLOCK_SIZEOF_WALL;i++) { @@ -539,7 +539,7 @@ void insertEvent(tLevel* lev,char id,char scr,char p,char b) { \***************************************************************/ #define MAPS_BLOCK_OFFSET_START_POSITION_SIZE3 3 -//Actualmente guarda 1+MAPS_BLOCK_SIZEOF_UNKNOWN_1+MAPS_BLOCK_SIZEOF_UNKNOWN_2+MAPS_BLOCK_SIZEOF_UNKNOWN_4+unk_5+unk_6+unk_7 = 564 caracteres. *text debe medir 565 incluyendo el caracter nulo. +/* Actualmente guarda 1+MAPS_BLOCK_SIZEOF_UNKNOWN_1+MAPS_BLOCK_SIZEOF_UNKNOWN_2+MAPS_BLOCK_SIZEOF_UNKNOWN_4+unk_5+unk_6+unk_7 = 564 caracteres. *text debe medir 565 incluyendo el caracter nulo. */ void mSetText (tLevel* lev,char* text) { mSetArray(lev,text,MAPS_BLOCK_OFFSET_START_POSITION+MAPS_BLOCK_OFFSET_START_POSITION_SIZE3,1,MAPS_BLOCK_OFFSET_VALIDATOR_LINK); mSetArray(lev,&(text[1]),MAPS_BLOCK_OFFSET_UNKNOWN_1,MAPS_BLOCK_SIZEOF_UNKNOWN_1,MAPS_BLOCK_OFFSET_VALIDATOR_WALL); @@ -588,16 +588,16 @@ void mSetStartPosition(tLevel* lev,char pantalla, char p, char b,char sentido,ch int location=MAPS_BLOCK_OFFSET_START_POSITION; unsigned char offsetval=0; - //pantalla + /* pantalla */ offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location++]=valor; - //Posicion + /* Posicion */ valor =p*10+b; offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location++]=valor; - //sentidos + /* sentidos */ valor =sentido?MAPS_DIRECTION_RIGHT:MAPS_DIRECTION_LEFT; offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location]=valor; @@ -607,7 +607,7 @@ void mSetStartPosition(tLevel* lev,char pantalla, char p, char b,char sentido,ch offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location]=valor; - //Validacion + /* Validacion */ (*lev).levelArray[MAPS_BLOCK_OFFSET_VALIDATOR_LINK]+=offsetval; } @@ -637,42 +637,42 @@ void mSetBack (tLevel* lev,char pantalla,char p,char b,char valor) { void mSetGuard(tLevel* lev,char pantalla,char p,char b,char vidas,char color,char sentido,char erase) { - //Posicion + /* Posicion */ unsigned char valor=erase?30:p*10+b; int location=MAPS_BLOCK_OFFSET_GUARD_POSITION-1+pantalla; unsigned char offsetval=((*lev).levelArray[MAPS_BLOCK_OFFSET_VALIDATOR_LINK]+(256-valor)+(*lev).levelArray[location]); (*lev).levelArray[location]=valor; - //sentido + /* sentido */ valor =sentido?MAPS_DIRECTION_RIGHT:MAPS_DIRECTION_LEFT; location =MAPS_BLOCK_OFFSET_GUARD_DIRECTION-1+pantalla; offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location]=valor; - //skill + /* skill */ valor =erase?1:vidas; location =MAPS_BLOCK_OFFSET_GUARD_SKILL-1+pantalla; offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location]=valor; - //Color + /* Color */ valor =erase?0:color; location =MAPS_BLOCK_OFFSET_GUARD_COLOR-1+pantalla; offsetval+=(256-valor)+(*lev).levelArray[location]; (*lev).levelArray[location]=valor; - //Validar + /* Validar */ (*lev).levelArray[MAPS_BLOCK_OFFSET_VALIDATOR_LINK]=offsetval/*+(256-valor)+(*lev).levelArray[location]*/; } void mGetGuard(tLevel* lev,char pantalla,char* p,char* b,char* vidas,char* color,char* sentido,char* exists) { - //Posicion + /* Posicion */ unsigned char valor=((*lev).levelArray[(MAPS_BLOCK_OFFSET_GUARD_POSITION-1+pantalla)]); *exists = (valor<30); *b = (valor%10); *p = (valor/10); - //sentido + /* sentido */ *sentido=!(*lev).levelArray[MAPS_BLOCK_OFFSET_GUARD_DIRECTION-1+pantalla]; - //skill + /* skill */ *vidas =(*lev).levelArray[MAPS_BLOCK_OFFSET_GUARD_SKILL-1+pantalla]; - //Color + /* Color */ *color =(*lev).levelArray[MAPS_BLOCK_OFFSET_GUARD_COLOR-1+pantalla]; } @@ -680,8 +680,8 @@ void mGetGuard(tLevel* lev,char pantalla,char* p,char* b,char* vidas,char* color | Screen Link Handling | \***************************************************************/ -//Recursive mapping sub procedures -void mRecLink(char i, char j, tLevel* lev); //prototype +/* Recursive mapping sub procedures */ +void mRecLink(char i, char j, tLevel* lev); /* prototype */ void mRecIndirect(char i, char j, tLevel* lev, char scr, char pos) { char aux; char auxb; @@ -758,24 +758,24 @@ void mCalcularLimRight (tLevel* lev) { } -// Main mCreateLinkMap -void mCreateLinkMap(tLevel* lev) { //private +/* Main mCreateLinkMap */ +void mCreateLinkMap(tLevel* lev) { /* private */ char i,j,start; - //Initialize arrays + /* Initialize arrays */ for (j=0;j<MAPS_MAX_LENGTH;j++) for (i=0;i<MAPS_MAX_LENGTH;(*lev).handledLinks.linkMap[i++][j]=255); for (j=1;j<=MAPS_MAX_SCREENS;(*lev).handledLinks.linkList[j++]=0); - //Inicializar start en la pantalla de inicio + /* Inicializar start en la pantalla de inicio */ mGetStartPosition(lev,&start,&i,&i,&i,&i); (*lev).handledLinks.linkMap[MAPS_LINKMAP_CENTER][MAPS_LINKMAP_CENTER]=start; (*lev).handledLinks.linkList[start]=1; - //Start Recursive Mapper + /* Start Recursive Mapper */ mRecLink(MAPS_LINKMAP_CENTER,MAPS_LINKMAP_CENTER,lev); - //Buscar limites del nivel + /* Buscar limites del nivel */ mCalcularLimUp (lev); mCalcularLimDown (lev); mCalcularLimLeft (lev); @@ -818,41 +818,41 @@ void mAddScreen (tLevel* lev, char i,char j, char* error) { if ((*lev).handledLinks.linkList[l]) { *error=1; } else { - //Pedir pantalla + /* Pedir pantalla */ (*lev).handledLinks.linkList[l]=1; i+=(*lev).handledLinks.limLeft; j+=(*lev).handledLinks.limUp; - //En caso de agregar una pantalla en alguno de los bordes, estos se amplian + /* En caso de agregar una pantalla en alguno de los bordes, estos se amplian */ if ((*lev).handledLinks.limLeft=i) (*lev).handledLinks.limLeft--; if ((*lev).handledLinks.limUp=j) (*lev).handledLinks.limUp--; if ((*lev).handledLinks.limRight=i) (*lev).handledLinks.limRight++; if ((*lev).handledLinks.limDown=j) (*lev).handledLinks.limDown++; - //Poner 0 alrededor de l + /* Poner 0 alrededor de l */ (*lev).handledLinks.linkMap[i][j-1]%=255; (*lev).handledLinks.linkMap[i][j+1]%=255; (*lev).handledLinks.linkMap[i+1][j]%=255; (*lev).handledLinks.linkMap[i-1][j]%=255; - //Poner l en l + /* Poner l en l */ (*lev).handledLinks.linkMap[i][j]=l; - //Setear links desde l a las 4 pantallas adyacentes + /* Setear links desde l a las 4 pantallas adyacentes */ mSetLink (lev,l,MAPS_sUp,(*lev).handledLinks.linkMap[i][j-1]); mSetLink (lev,l,MAPS_sDown,(*lev).handledLinks.linkMap[i][j+1]); mSetLink (lev,l,MAPS_sRight,(*lev).handledLinks.linkMap[i+1][j]); mSetLink (lev,l,MAPS_sLeft,(*lev).handledLinks.linkMap[i-1][j]); - //Setear links desde las 4 pantallas adyacentes a l + /* Setear links desde las 4 pantallas adyacentes a l */ mSetLink (lev,(*lev).handledLinks.linkMap[i][j+1],MAPS_sUp,l); mSetLink (lev,(*lev).handledLinks.linkMap[i][j-1],MAPS_sDown,l); mSetLink (lev,(*lev).handledLinks.linkMap[i-1][j],MAPS_sRight,l); mSetLink (lev,(*lev).handledLinks.linkMap[i+1][j],MAPS_sLeft,l); - //Limpiar contenido de la pantalla l + /* Limpiar contenido de la pantalla l */ for (i=0;i<3;i++) { for (j=0;j<10;j++) { mSetWall(lev,l,i,j,0); @@ -860,7 +860,7 @@ void mAddScreen (tLevel* lev, char i,char j, char* error) { } } mSetGuard(lev,l,1,1,1,1,1,1); - //Listo, ya cree la pantalla y la linkie + /* Listo, ya cree la pantalla y la linkie */ } } } @@ -873,23 +873,23 @@ void mRemScreen (tLevel* lev, char i,char j, char* error) { unsigned char l=mGetScreen(lev,i,j,error); *error=*error || (!l); if (!*error) { - //Liberar pantalla + /* Liberar pantalla */ (*lev).handledLinks.linkList[l]=0; - //Seteo posiciones absolutas + /* Seteo posiciones absolutas */ i+=(*lev).handledLinks.limLeft; j+=(*lev).handledLinks.limUp; - //Poner 0 en l + /* Poner 0 en l */ (*lev).handledLinks.linkMap[i][j]=0; - //En caso de remover una pantalla en alguno de los bordes, estos se recalculan + /* En caso de remover una pantalla en alguno de los bordes, estos se recalculan */ if ((*lev).handledLinks.limLeft=i) mCalcularLimLeft(lev); if ((*lev).handledLinks.limUp=j) mCalcularLimUp(lev); if ((*lev).handledLinks.limRight=i) mCalcularLimRight(lev); if ((*lev).handledLinks.limDown=j) mCalcularLimDown(lev); - //Borrar links desds las 4 pantallas adyacentes a l + /* Borrar links desds las 4 pantallas adyacentes a l */ mSetLink (lev,(*lev).handledLinks.linkMap[i][j+1],MAPS_sLeft,0); mSetLink (lev,(*lev).handledLinks.linkMap[i][j-1],MAPS_sRight,0); mSetLink (lev,(*lev).handledLinks.linkMap[i-1][j],MAPS_sDown,0); @@ -901,27 +901,27 @@ void mCpyScreen (tLevel* lev, char fromi,char fromj,char toi,char toj, char* char fromscr,toscr,i,j,k,l; char sentido,existe; - //Verificar que la pantalla source y la pantalla target existan - fromscr=mGetScreen(lev,fromi,fromj,error); //Verifico que existe la pantalla from + /* Verificar que la pantalla source y la pantalla target existan */ + fromscr=mGetScreen(lev,fromi,fromj,error); /* Verifico que existe la pantalla from */ *error=(*error || fromscr); - if (!*error) { //Verifico que existe la pantalla to + if (!*error) { /* Verifico que existe la pantalla to */ toscr=mGetScreen(lev,toi,toj,error); *error=(*error || toscr); } - if (!*error) { //Si existen ambas pantallas - //Copiar contenido de la pantalla from a la pantalla to: + if (!*error) { /* Si existen ambas pantallas */ + /* Copiar contenido de la pantalla from a la pantalla to: */ - //Copiar wall y back + /* Copiar wall y back */ char contenido[30]; mGetArray(lev,contenido,MAPS_BLOCK_OFFSET_WALL-30+fromscr*30,30); mSetArray(lev,contenido,MAPS_BLOCK_OFFSET_WALL-30+toscr*30,30,MAPS_BLOCK_OFFSET_VALIDATOR_WALL); mGetArray(lev,contenido,MAPS_BLOCK_OFFSET_BACK-30+fromscr*30,30); mSetArray(lev,contenido,MAPS_BLOCK_OFFSET_BACK-30+toscr*30,30,MAPS_BLOCK_OFFSET_VALIDATOR_WALL); - //Copiar Guards + /* Copiar Guards */ mGetGuard(lev,fromscr,&i,&j,&k,&l,&sentido,&existe); mSetGuard(lev,toscr,i,j,k,l,sentido,existe); - //Listo, ya se copio el contenido y el guardia + /* Listo, ya se copio el contenido y el guardia */ } } diff --git a/FP/src/res/resources.c b/FP/src/res/resources.c index e1dca3c..f0d4320 100644 --- a/FP/src/res/resources.c +++ b/FP/src/res/resources.c @@ -34,9 +34,11 @@ resources.c: Princed Resources : DAT Extractor */ #include <stdio.h> +#include <stdlib.h> #include <string.h> #include "freeprince.h" #include "resources.h" +#include "output.h" #include "compress.h" @@ -61,7 +63,7 @@ tData* res_createData(int nFrames,int type) { case RES_TYPE_IMG_TR_RIGHT: case RES_TYPE_IMG_BL_LEFT: case RES_TYPE_IMG_BL_RIGHT: - result->type=eImages;//res_getVirtualTypeFromReal(res_getIdxType); + result->type=eImages;/*res_getVirtualTypeFromReal(res_getIdxType);*/ nFrames--; break; } @@ -82,13 +84,12 @@ void res_createFrames(tMemory data,int type,void** returnValue,int number) { case RES_TYPE_IMG_BL_LEFT: case RES_TYPE_IMG_BL_RIGHT: if (!number) { - //loadPalette; if (data.size!=100) { printf("Fatal error: res_createFrames: invalid palette\n"); exit(1); } memcpy(image.pal,data.array+5,16*3); - printf("res_createFrames: Remembering palette\n",number,type); + printf("res_createFrames: Remembering palette\n"); return; } else { number--; @@ -101,8 +102,6 @@ void res_createFrames(tMemory data,int type,void** returnValue,int number) { (type==RES_TYPE_IMG_TR_RIGHT||type==RES_TYPE_IMG_TR_LEFT) ); - //result=(tMemory*)malloc(sizeof(tMemory)); /* both sides are void* :) */ - //*result=(tMemory)data; printf("res_createFrames: Allocating frame[%d]=? (image type %d)\n",number,type); break; case RES_TYPE_SND_MIDI: @@ -112,7 +111,7 @@ void res_createFrames(tMemory data,int type,void** returnValue,int number) { result=(tMemory*)malloc(sizeof(tMemory)); /* both sides are void* :) */ /* TODO: data->array must be copied or it wont be available after the file is closed */ *result=(tMemory)data; - printf("res_createFrames: Allocating resource[%d]=@%p (type %d, size %d)\n",number,type,data.array,data.size); + printf("res_createFrames: Allocating resource[%d]\n",number); break; } @@ -134,8 +133,10 @@ int res_getDataById(int id,int maxItems,tMemory* result) { /* main loop */ for (indexNumber=0;indexNumber<maxItems;indexNumber++) { - gotId=mReadFileInDatFile((indexNumber+id-DATA_START_ITEMS)%maxItems,&(result->array),&(result->size)); - //printf("Debug: res_getData: indexNumber=%d gotId=%d id=%d\n",indexNumber,gotId,id); + gotId=mReadFileInDatFile( + (indexNumber+id-DATA_START_ITEMS)%maxItems, + &(result->array), + (unsigned long *)&(result->size)); if (gotId==id) break; } @@ -162,7 +163,7 @@ int res_getDataByArray(short int* id,int maxItems,void** result,int ids,int type gotId=mReadFileInDatFile( indexNumber, &(data.array), - &(data.size) + (unsigned long *)&(data.size) ); if (gotId==id[i]) { res_createFrames(data,type,result,i); @@ -194,7 +195,7 @@ tData* resLoad(int id) { tData* result; int i; char file1[25]; - char file2[25]; + /*char file2[25];*/ short int* frames; int nFrames; tMemory index; @@ -218,6 +219,8 @@ tData* resLoad(int id) { frames[i]=res_getIdxFrames[i]; } + strncpy(file1,res_getIdxFile1,14); + mReadCloseDatFile(); /* READ FILE */ @@ -226,7 +229,7 @@ tData* resLoad(int id) { printf("frames[%d]=%d\n",i,frames[i]); } - if (!mReadBeginDatFile(&numberOfItems,res_getIdxFile1)) { + if (!mReadBeginDatFile(&numberOfItems,file1)) { printf("Fatal Error: resLoad: resource file not found!\n"); free(frames); return NULL;