# HG changeset patch # User peter1138 # Date 1138346038 0 # Node ID ed5ede8a97214386613d711c199dc3a257be76e9 # Parent dbb8b26c7c8d9630c3a0e693121ac5ed9399ba64 (svn r3449) - NewGRF Fix: When changing the sprite ID of a vehicle, if it is not FD (custom graphics), the value needs to changed from a 16bit array offset to an array index. (fixes tropicstw.grf) diff --git a/newgrf.c b/newgrf.c --- a/newgrf.c +++ b/newgrf.c @@ -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;