From 9031e0369eeb2c11c5a4a671fb812645b2ea69a2 Mon Sep 17 00:00:00 2001 From: tron Date: Thu, 10 Feb 2005 12:26:41 +0000 Subject: [PATCH] (svn r1855) Handle endianness of sprite headers when loading a sprite, not everytime when accessing it --- gfx.c | 18 +++++++++--------- spritecache.c | 18 +++++++++++------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gfx.c b/gfx.c index 48614f97fb..c6fb1e1dad 100644 --- a/gfx.c +++ b/gfx.c @@ -1335,9 +1335,9 @@ static void GfxMainBlitter(Sprite *sprite, int x, int y, int mode) }; /* decode sprite header */ - x += (int16)TO_LE16(sprite->x_offs); - y += (int16)TO_LE16(sprite->y_offs); - bp.width_org = bp.width = TO_LE16(sprite->width); + x += sprite->x_offs; + y += sprite->y_offs; + bp.width_org = bp.width = sprite->width; bp.height_org = bp.height = sprite->height; info = sprite->info; bp.info = info; @@ -1628,15 +1628,15 @@ void LoadStringWidthTable(void) // 2 equals space. for(i=2; i != 0xE2; i++) { - *b++ = (byte)((i < 93 || i >= 129 || i == 98) ? TO_LE16(GetSprite(i)->width) : 0); + *b++ = (byte)((i < 93 || i >= 129 || i == 98) ? GetSprite(i)->width : 0); } for(i=0xE2; i != 0x1C2; i++) { - *b++ = (byte)((i < 317 || i >= 353) ? TO_LE16(GetSprite(i)->width) + 1 : 0); + *b++ = (byte)((i < 317 || i >= 353) ? GetSprite(i)->width + 1 : 0); } for(i=0x1C2; i != 0x2A2; i++) { - *b++ = (byte)((i < 541 || i >= 577) ? TO_LE16(GetSprite(i)->width) + 1 : 0); + *b++ = (byte)((i < 541 || i >= 577) ? GetSprite(i)->width + 1 : 0); } } @@ -1914,9 +1914,9 @@ static void SetCursorSprite(uint cursor) p = GetSprite(cursor & 0x3FFF); cv->sprite = cursor; cv->size.y = p->height; - cv->size.x = TO_LE16(p->width); - cv->offs.x = (int16)TO_LE16(p->x_offs); - cv->offs.y = (int16)TO_LE16(p->y_offs); + cv->size.x = p->width; + cv->offs.x = p->x_offs; + cv->offs.y = p->y_offs; cv->dirty = true; } diff --git a/spritecache.c b/spritecache.c index 9c6f4702d7..bc00feebf1 100644 --- a/spritecache.c +++ b/spritecache.c @@ -149,15 +149,19 @@ static void ReadSprite(int num, byte *dest) byte type; byte *rel; int8 i; - int j, dist; + int dist; type = FioReadByte(); /* We've decoded special sprites when reading headers. */ if (type != 0xFF) { /* read sprite hdr */ - *dest++ = type; - for(j=0; j!=7; j++) - *dest++ = FioReadByte(); + Sprite* sprite = dest; + sprite->info = type; + sprite->height = FioReadByte(); + sprite->width = FioReadWord(); + sprite->x_offs = FioReadWord(); + sprite->y_offs = FioReadWord(); + dest = sprite->data; num -= 8; } @@ -996,9 +1000,9 @@ const SpriteDimension *GetSpriteDimension(SpriteID sprite) /* decode sprite header */ sd = &sd_static; - sd->xoffs = (int16)TO_LE16(p->x_offs); - sd->yoffs = (int16)TO_LE16(p->y_offs); - sd->xsize = TO_LE16(p->width); + sd->xoffs = p->x_offs; + sd->yoffs = p->y_offs; + sd->xsize = p->width; sd->ysize = p->height; #else sd = &sd_static;