summaryrefslogtreecommitdiff
path: root/trunk/libsprite.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/libsprite.c')
-rw-r--r--trunk/libsprite.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/trunk/libsprite.c b/trunk/libsprite.c
index 1b8bf16..67f7bad 100644
--- a/trunk/libsprite.c
+++ b/trunk/libsprite.c
@@ -165,7 +165,7 @@ uint32_t sprite_upscale_color(uint32_t pixel, uint32_t bpp)
case 32:
return pixel;
case 24:
- return pixel & (23 << 8); /* TODO: mask out alpha -- any point? */
+ return pixel & 0x00001700; /* TODO: mask out alpha -- any point? */
case 16:
/* TODO */
return pixel;
@@ -195,16 +195,17 @@ void sprite_load_high_color(uint8_t* image_in, uint8_t* mask, struct sprite* spr
assert(header->first_used_bit == 0);
for (uint32_t y = 0; y < sprite->height; y++) {
+ uint32_t x_pixels = 0;
for (uint32_t x = 0; x < row_max_bit; x += bpp) {
uint32_t pixel = 0;
for (uint32_t j = 0; j < bytesPerPixel; j++) {
uint8_t b = image_in[currentByteIndex++];
- pixel = pixel | (b << (j * 8));
+ pixel = pixel | (b << ((bytesPerPixel - j - 1) * 8));
}
pixel = sprite_upscale_color(pixel, bpp);
- sprite->image[y*sprite->width + x] = pixel;
- /* TODO: put pixels in sprite->image */
+ sprite->image[y*sprite->width + x_pixels] = pixel;
+ x_pixels++;
}
/* Ensure byte index is pointing at start of next row */
@@ -277,7 +278,7 @@ struct sprite* sprite_load_sprite(FILE* spritefile)
assert(sprite->mode->xdpi > 0);
assert(sprite->mode->ydpi > 0);
- /* TODO l/r wastage */
+ /* TODO left-hand wastage */
assert((header->last_used_bit + 1) % sprite->mode->colorbpp == 0);
/*assert(header->width_words % sprite->mode->colorbpp == 0);*/