From a112455db412179abe2bace93941ab447725db0a Mon Sep 17 00:00:00 2001 From: peter1138 Date: Sat, 21 Apr 2007 07:27:16 +0000 Subject: (svn r9707) -Codechange: Add some support for NewGRF var 7D, temporary storage array. --- src/newgrf_spritegroup.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/newgrf_spritegroup.cpp') diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 2ee9951c4..2d12ce0c5 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -76,6 +76,8 @@ void InitializeSpriteGroupPool() _spritegroup_count = 0; } +static uint32 _temp_store[0x110]; + static inline uint32 GetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) { @@ -96,6 +98,8 @@ static inline uint32 GetVariable(const ResolverObject *object, byte variable, by case 0x1C: return object->last_value; case 0x20: return _opt.landscape == LT_ARCTIC ? GetSnowLine() : 0xFF; + case 0x7D: return _temp_store[parameter]; + /* Not a common variable, so evalute the feature specific variables */ default: return object->GetVariable(object, variable, parameter, available); } @@ -133,6 +137,10 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, U last_value, case DSGA_OP_AND: return last_value & value; case DSGA_OP_OR: return last_value | value; case DSGA_OP_XOR: return last_value ^ value; + case DSGA_OP_STO: + if (value < lengthof(_temp_store)) _temp_store[value] = last_value; + return last_value; + case DSGA_OP_RST: return value; default: return value; } } -- cgit v1.2.3-70-g09d2