diff --git a/project/jni/application/pachi/AndroidAppSettings.cfg b/project/jni/application/pachi/AndroidAppSettings.cfg index 839d83046..2d447acf8 100644 --- a/project/jni/application/pachi/AndroidAppSettings.cfg +++ b/project/jni/application/pachi/AndroidAppSettings.cfg @@ -19,8 +19,8 @@ RedefinedKeys="SPACE RETURN" AppTouchscreenKeyboardKeysAmount=1 AppTouchscreenKeyboardKeysAmountAutoFire=0 MultiABI=n -AppVersionCode=101 -AppVersionName="1.01" +AppVersionCode=102 +AppVersionName="1.02 - fixed level background not shown" CompiledLibraries="sdl_mixer" CustomBuildScript=n AppCflags='-O2 -finline-functions' diff --git a/project/jni/application/pachi/src/file.h b/project/jni/application/pachi/src/file.h index d2e3cab67..16097c24e 100644 --- a/project/jni/application/pachi/src/file.h +++ b/project/jni/application/pachi/src/file.h @@ -19,7 +19,7 @@ void load_gamedata() { background=LoadT8(DATADIR"/Tgfx/gamepanel.T8"); - backs=LoadT8(DATADIR"/Tgfx/backgrounds.T8"); + backs=LoadT8(DATADIR"/Tgfx/backgrounds.T8", false); player=LoadT8(DATADIR"/Tgfx/pachi.T8"); monsters=LoadT8(DATADIR"/Tgfx/monsters.T8"); tiles=LoadT8(DATADIR"/Tgfx/tiles.T8"); @@ -69,6 +69,10 @@ void unload_gamedata() SDL_FreeSurface(menufont); SDL_FreeSurface(left); SDL_FreeSurface(right); + + if( currentBack ) + SDL_FreeSurface(currentBack); + currentBack = NULL; Mix_FreeChunk(exitlevel); Mix_FreeChunk(jump); @@ -242,6 +246,34 @@ void load_room() } fclose(bck); + + if( currentBack ) + SDL_FreeSurface(currentBack); + currentBack = SDL_CreateRGBSurface(SDL_HWSURFACE, R_back_x*R_maxbacks_h, R_back_y*R_maxbacks_v, screen->format->BitsPerPixel, + screen->format->Rmask, screen->format->Gmask, screen->format->Bmask, screen->format->Amask); + + SDL_Rect backs_dst; + backs_dst.w = R_back_x; + backs_dst.h = R_back_y; + + SDL_Rect backs_src; + backs_src.w = R_back_x; + backs_src.h = R_back_y; + for(x=0;x < R_maxbacks_h;x++) + { + for(y=0;y < R_maxbacks_v;y++) + { + backs_dst.x = (x*R_back_x); + backs_dst.y = (y*R_back_y); + + backs_src.y = (int(R_backdata[x][y]/6) * R_back_y); + backs_src.x = (R_backdata[x][y] - (int(R_backdata[x][y]/6) * 6))*R_back_x; + SDL_BlitSurface(backs,&backs_src,currentBack,&backs_dst); + } + } + + + FILE *lvl = fopen(DATADIR"/data/rooms_v2.dat","rb"); filepos = (200 + ((R_current-1) * (R_maxtiles_h*R_maxtiles_v))+R_current); // filepos es el puntero del archivo, lo utilizamos para leer la habitacion donde estemos fseek(lvl,filepos,SEEK_SET); diff --git a/project/jni/application/pachi/src/gfx.h b/project/jni/application/pachi/src/gfx.h index de5481a2d..92e75e36f 100644 --- a/project/jni/application/pachi/src/gfx.h +++ b/project/jni/application/pachi/src/gfx.h @@ -69,7 +69,7 @@ void LoadT(SDL_Surface **Tsurface, char *str) fclose(Tsrc); } -SDL_Surface * LoadT8(char *str) +SDL_Surface * LoadT8(char *str, bool HW=true) { SDL_Surface *Tsurface; FILE *Tsrc; @@ -110,7 +110,10 @@ SDL_Surface * LoadT8(char *str) } if(SDL_MUSTLOCK(temp)) SDL_UnlockSurface(temp); - Tsurface = SDL_DisplayFormat(temp); + if( HW ) + Tsurface = SDL_DisplayFormat(temp); + else + Tsurface = SDL_ConvertSurface(temp, screen->format, SDL_SWSURFACE); SDL_FreeSurface(temp); fclose(Tsrc); return(Tsurface); diff --git a/project/jni/application/pachi/src/output.h b/project/jni/application/pachi/src/output.h index 98b269910..7326af4fb 100644 --- a/project/jni/application/pachi/src/output.h +++ b/project/jni/application/pachi/src/output.h @@ -164,26 +164,11 @@ void print_room() SDL_FillRect(screen,&gamearea,0); SDL_Rect backs_dst; - SDL_Rect backs_src; - SDL_Rect backs_dstbak; - backs_src.w = R_back_x; - backs_src.h = R_back_y; - backs_dst.w = R_back_x; - backs_dst.h = R_back_y; - for(x=0;x < R_maxbacks_h;x++) - { - for(y=0;y < R_maxbacks_v;y++) - { - backs_dst.x = R_gamearea_x + (x*R_back_x); - backs_dst.y = R_gamearea_y + (y*R_back_y); - backs_dstbak.x = x*R_back_x; - backs_dstbak.y = y*R_back_y; - - backs_src.y = (int(R_backdata[x][y]/6) * R_back_y); - backs_src.x = (R_backdata[x][y] - (int(R_backdata[x][y]/6) * 6))*R_back_x; - SDL_BlitSurface(backs,&backs_src,screen,&backs_dst); - } - } + backs_dst.w = R_back_x*R_maxbacks_h; + backs_dst.h = R_back_y*R_maxbacks_v; + backs_dst.x = R_gamearea_x; + backs_dst.y = R_gamearea_y; + SDL_BlitSurface(currentBack,NULL,screen,&backs_dst); SDL_Rect tiles_dst; SDL_Rect tiles_dstbak; diff --git a/project/jni/application/pachi/src/surfaces.h b/project/jni/application/pachi/src/surfaces.h index a6a8c31e6..8788c2922 100644 --- a/project/jni/application/pachi/src/surfaces.h +++ b/project/jni/application/pachi/src/surfaces.h @@ -10,6 +10,7 @@ SDL_Surface *menufont1; SDL_Surface *screen; SDL_Surface *background; SDL_Surface *backs; +SDL_Surface *currentBack = NULL; SDL_Surface *tiles; SDL_Surface *screenbak;