(svn r22452) -Fix (r18708): Zero register 0x100 as specified before resolving custom station foundations.

This commit is contained in:
frosch 2011-05-14 12:36:31 +00:00
parent a63b22991d
commit 930d0c9702
2 changed files with 12 additions and 0 deletions

View File

@ -35,6 +35,17 @@ static inline uint32 GetRegister(uint i)
return _temp_store.Get(i);
}
/**
* Clears the value of a so-called newgrf "register".
* @param i index of the register
* @pre i < 0x110
*/
static inline void ClearRegister(uint i)
{
extern TemporaryStorageArray<int32, 0x110> _temp_store;
_temp_store.Store(i, 0);
}
/* List of different sprite group types */
enum SpriteGroupType {
SGT_REAL,

View File

@ -613,6 +613,7 @@ SpriteID GetCustomStationFoundationRelocation(const StationSpec *statspec, const
NewStationResolver(&object, statspec, st, tile);
object.callback_param1 = 2; // Indicate we are resolving the foundation sprites
ClearRegister(0x100);
group = ResolveStation(&object);
if (group == NULL || group->type != SGT_RESULT) return 0;
return group->GetResult() + GetRegister(0x100);