shithub: hexen

Download patch

ref: b29e042630023016ae6b293904ac34bf285bd19c
parent: b6146102110b725bd42a04d74519de8c61f3886f
author: Jacob Moody <moody@posixcafe.org>
date: Wed Jan 25 05:07:59 EST 2023

use border flat for background instead of black

--- a/i_video.c
+++ b/i_video.c
@@ -25,6 +25,9 @@
 
 static uchar cmap[3*256];
 
+static Image *backtile = nil;
+static uchar tiledata[4096*3];
+
 static void
 catch(void *, char *msg)
 {
@@ -34,15 +37,40 @@
 	noted(NDFLT);
 }
 
+static void I_UpdateTile(void)
+{
+	uchar *s, *d, *m;
+	uchar *e;
+
+	if(backtile == nil){
+		s = W_CacheLumpName("F_022", PU_CACHE);
+		d = tiledata;
+		e = s + 4096;
+		for(; s < e; s++){
+			m = &cmap[*s * 3];
+			*d++ = m[2];
+			*d++ = m[1];
+			*d++ = m[0];
+		}
+		backtile = allocimage(display, Rect(0, 0, 64, 64), RGB24, 1, DNofill);
+		loadimage(backtile, backtile->r, tiledata, sizeof tiledata);
+		if(backtile == nil)
+			sysfatal("allocimage: %r");
+	}
+	draw(screen, screen->r, backtile, nil, ZP);
+}
+
 void I_InitGraphics(void)
 {
 
 	notify(catch);
 
+	I_SetPalette ((byte *)W_CacheLumpName("PLAYPAL", PU_CACHE));
+
 	if(initdraw(nil, nil, "hexen") < 0)
 		I_Error("I_InitGraphics failed");
 
-	draw(screen, screen->r, display->black, nil, ZP);
+	I_UpdateTile();
 
 	center = addpt(screen->r.min, Pt(Dx(screen->r)/2, Dy(screen->r)/2));
 	grabout = insetrect(screen->r, Dx(screen->r)/8);
@@ -56,8 +84,6 @@
 		mouseproc();
 		exits(nil);
 	}
-
-	I_SetPalette ((byte *)W_CacheLumpName("PLAYPAL", PU_CACHE));
 }
 
 void I_ShutdownGraphics(void)
@@ -99,9 +125,7 @@
 		if(getwindow(display, Refnone) < 0)
 			sysfatal("getwindow: %r");
 
-		/* make black background */
-		draw(screen, screen->r, display->black, nil, ZP);
-
+		I_UpdateTile();
 		center = addpt(screen->r.min, Pt(Dx(screen->r)/2, Dy(screen->r)/2));
 		grabout = insetrect(screen->r, Dx(screen->r)/8);
 	}