--- a/newgrf.c Thu Jan 26 22:09:25 2006 +0000
+++ b/newgrf.c Fri Jan 27 07:13:58 2006 +0000
@@ -272,6 +272,11 @@
FOR_EACH_OBJECT {
uint8 spriteid = grf_load_byte(&buf);
+ /* TTD sprite IDs point to a location in a 16bit array, but we use it
+ * as an array index, so we need it to be half the original value. */
+ if (spriteid < 0xFD)
+ spriteid >>= 1;
+
rvi[i].image_index = spriteid;
}
} break;
@@ -481,6 +486,9 @@
if (spriteid == 0xFF)
spriteid = 0xFD; // cars have different custom id in the GRF file
+ if (spriteid < 0xFD)
+ spriteid >>= 1;
+
rvi[i].image_index = spriteid;
}
} break;
@@ -582,6 +590,9 @@
if (spriteid == 0xFF)
spriteid = 0xFD; // ships have different custom id in the GRF file
+ if (spriteid < 0xFD)
+ spriteid >>= 1;
+
svi[i].image_index = spriteid;
}
} break;
@@ -699,6 +710,9 @@
if (spriteid == 0xFF)
spriteid = 0xFD; // ships have different custom id in the GRF file
+ if (spriteid < 0xFD)
+ spriteid >>= 1;
+
avi[i].image_index = spriteid;
}
} break;