From 733eb9e2c1824c884c0e04387c1fa20888ce02b4 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 25 Mar 2019 19:06:06 -0400 Subject: Only set palette length for bitsPerPixel < 16 The awful XP card backs are 24-bit. --- cards.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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); -- cgit 1.4.1