diff --git a/newgrf.c b/newgrf.c index 717dd95773..60ade01924 100644 --- a/newgrf.c +++ b/newgrf.c @@ -1268,6 +1268,9 @@ static void NewSpriteGroup(byte *buf, int len) dg->var_scope = numloaded == 0x82 ? VSG_SCOPE_PARENT : VSG_SCOPE_SELF; dg->variable = grf_load_byte(&buf); + /* Variables 0x60 - 0x7F include an extra parameter */ + if (IS_BYTE_INSIDE(dg->variable, 0x60, 0x80)) + dg->parameter = grf_load_byte(&buf); dg->shift_num = grf_load_byte(&buf); dg->and_mask = grf_load_byte(&buf); diff --git a/sprite.h b/sprite.h index 68c7848d1f..67dce16125 100644 --- a/sprite.h +++ b/sprite.h @@ -70,6 +70,7 @@ typedef struct DeterministicSpriteGroup { // Take this variable: VarSpriteGroupScope var_scope; byte variable; + byte parameter; ///< Used for variables between 0x60 and 0x7F inclusive. // Do this with it: byte shift_num;