Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37400163
en ru br
Репозитории ALT

Группа :: Игры/Прочее
Пакет: dd2

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: dd2-0.2.1-640x480-fullscreen.patch
Скачать


diff -up dd2-0.2.1/src/main.c~ dd2-0.2.1/src/main.c
--- dd2-0.2.1/src/main.c~	2007-08-06 11:45:11.000000000 +0200
+++ dd2-0.2.1/src/main.c	2007-08-06 11:45:52.000000000 +0200
@@ -64,6 +64,22 @@ Mix_Music *bgm=NULL, *bgm_boss=NULL;
 int sound;
 bool done;
 
+/* When fullscreen, drawing is done to screen, which then is blitted to 
+   real_screen stretched 2x, because modern LCD's cannot display 320x240,
+   resulting in a stamp fullscreen mode */
+static SDL_Surface *real_screen = NULL;
+
+void flipScreen(void)
+{
+	if(real_screen) {
+		SDL_Rect src_rect = { 0, 0, SCREENW, SCREENH };
+		SDL_Rect dst_rect = { 0, 0, 640, 480 };
+		SDL_SoftStretch(screen, &src_rect, real_screen, &dst_rect);
+		SDL_UpdateRect(real_screen, 0, 0, 640, 480);
+	} else
+		SDL_Flip(screen);
+}
+
 /* load all the sound stuff */
 void
 soundLoad()
@@ -136,7 +152,7 @@ gameLoop()
 					if(event.key.keysym.sym==SDLK_p && pause_tick<SDL_GetTicks())
 					{
 						writeCString(gfx, screen, 98, 20, "game paused", 0);
-						SDL_Flip(screen);
+						flipScreen();
 						paused=paused ? false : true;
 						pause_tick=SDL_GetTicks()+200;
 						continue;
@@ -265,7 +281,7 @@ gameLoop()
 			/* panel */
 			drawPanel(gfx,screen,player);
 
-			SDL_Flip(screen);
+			flipScreen();
 		}
 	}
 }
@@ -356,9 +372,19 @@ main (int argc, char *argv[])
 	if(vi)
 		bpp=vi->vfmt->BitsPerPixel;
 
-	if(conf.fullscreen)
-		screen=SDL_SetVideoMode(SCREENW, SCREENH, bpp, SDL_HWSURFACE|SDL_HWPALETTE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
-	else
+	if(conf.fullscreen) {
+		real_screen = SDL_SetVideoMode(640, 480, bpp, SDL_HWSURFACE|SDL_HWPALETTE|SDL_FULLSCREEN);
+		if (real_screen)
+			screen = SDL_CreateRGBSurface(SDL_SWSURFACE,
+					SCREENW, SCREENH,
+					real_screen->format->BitsPerPixel,
+					real_screen->format->Rmask,
+					real_screen->format->Gmask,
+					real_screen->format->Bmask,
+					real_screen->format->Amask);
+		else
+			screen = NULL;
+	} else
 		screen=SDL_SetVideoMode(SCREENW, SCREENH, bpp, SDL_HWSURFACE|SDL_HWPALETTE|SDL_DOUBLEBUF);
 
 	if(!screen) {
@@ -401,7 +427,7 @@ main (int argc, char *argv[])
 		engine_init();
 
 		SDL_FillRect(screen,NULL,SDL_MapRGB(screen->format,0,0,0));
-		SDL_Flip(screen);
+		flipScreen();
 
 		if(sound && bgm) {
 			Mix_VolumeMusic(MIX_MAX_VOLUME);
diff -up dd2-0.2.1/src/menu.c~ dd2-0.2.1/src/menu.c
--- dd2-0.2.1/src/menu.c~	2007-08-06 11:46:31.000000000 +0200
+++ dd2-0.2.1/src/menu.c	2007-08-06 11:46:31.000000000 +0200
@@ -40,6 +40,7 @@ extern cfg conf;
 extern float scroll,scroll2;
 
 void soundLoad(void);
+void flipScreen(void);
 
 void
 drawGetName(char *name, int place, int playern)
@@ -79,7 +80,7 @@ drawGetName(char *name, int place, int p
 
 	writeCString(gfx, screen, 175, 131, buffer, 1);
 
-	SDL_Flip(screen);
+	flipScreen();
 }
 
 int
@@ -262,7 +263,7 @@ drawHiscores(int max)
 		writeNumber(gfx, screen, 260, 23+i*17, hiscore[i].score,6);
 	}
 
-	SDL_Flip(screen);
+	flipScreen();
 }
 
 int
@@ -337,7 +338,7 @@ drawConfigure(int option)
 	else
 		writeCString(gfx, screen, 20, 156,  "   windowed", (option==4));
 
-	SDL_Flip(screen);
+	flipScreen();
 }
 
 int
@@ -507,7 +508,7 @@ drawMenu(int option)
 	b.h=16;
 	SDL_BlitSurface(gfx, &b, screen, &a);
 
-	SDL_Flip(screen);
+	flipScreen();
 }
 
 int
@@ -642,7 +643,7 @@ drawCredits()
 	writeCString(gfx, screen, 40, 105, "juan j. martinez", 0);
 	writeCString(gfx, screen, 40, 140, "thanks you for playing...", 0);
 	
-	SDL_Flip(screen);
+	flipScreen();
 }
 
 int
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin