summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@openttd.org>2005-02-10 12:26:41 +0000
committertron <tron@openttd.org>2005-02-10 12:26:41 +0000
commitdc54a3e6272a1fcf8cf66feb3b636c4e46df4665 (patch)
tree766da7d41bc990ffcc65918aba7c705d6e3c0571
parentd2703fd6724040f741722646a36b7c4134bb4136 (diff)
downloadopenttd-dc54a3e6272a1fcf8cf66feb3b636c4e46df4665.tar.xz
(svn r1855) Handle endianness of sprite headers when loading a sprite, not everytime when accessing it
-rw-r--r--gfx.c18
-rw-r--r--spritecache.c18
2 files changed, 20 insertions, 16 deletions
diff --git a/gfx.c b/gfx.c
index 48614f97f..c6fb1e1da 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 9c6f4702d..bc00feebf 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;