about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-03-25 19:06:06 -0400
committerJune McEnroe <june@causal.agency>2019-03-25 19:06:06 -0400
commit733eb9e2c1824c884c0e04387c1fa20888ce02b4 (patch)
treee4477a6aec93ba65bd9c2f4d9361e5c88889c495
parentFix gcc sign warnings (diff)
downloadcards-733eb9e2c1824c884c0e04387c1fa20888ce02b4.tar.gz
cards-733eb9e2c1824c884c0e04387c1fa20888ce02b4.zip
Only set palette length for bitsPerPixel < 16
The awful XP card backs are 24-bit.
-rw-r--r--cards.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/cards.c b/cards.c
index c6403b9..e67317d 100644
--- a/cards.c
+++ b/cards.c
@@ -51,7 +51,9 @@ dibSurface(SDL_RWops *rw, Uint32 offset, Uint32 length) {
 		if (SDL_RWseek(rw, 0x10, RW_SEEK_CUR) < 0) goto fail;
 		Uint32 paletteLength = SDL_ReadLE32(rw);
 
-		if (!paletteLength) paletteLength = 1 << bitsPerPixel;
+		if (!paletteLength && bitsPerPixel < 16) {
+			paletteLength = 1 << bitsPerPixel;
+		}
 		bitmapDataOffset += 4 * paletteLength;
 
 	} else {
@@ -143,6 +145,7 @@ static int setBlackBorders(struct Cards *cards) {
 	return 0;
 }
 
+// exefmt.txt
 static int loadNE(struct Cards *cards, SDL_RWops *rw, Uint16 neOffset) {
 	if (SDL_RWseek(rw, neOffset + 0x24, RW_SEEK_SET) < 0) return -1;
 	Uint16 resourceTableOffset = neOffset + SDL_ReadLE16(rw);