# HG changeset patch # User frosch # Date 2008-03-11 12:55:41 # Node ID b62b4bde9653b15ccb83a6b5c5f1bdd25975ef3b # Parent e1dcf6a6ad159378f7c12d4e8983de17c794e904 (svn r12358) -Fix: Callback 2F returns 15 bit results starting from grf version 7. diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -275,7 +275,7 @@ bool PerformIndustryTileSlopeCheck(TileI return !IsSlopeRefused(GetTileSlope(ind_tile, NULL), its->slopes_refused); } if (its->grf_prop.grffile->grf_version < 7) { - return callback_res != 0; + return (callback_res & 0xFF) != 0; // mask to 8 bit callback result } /* Copy some parameters from the registers to the error message text ref. stack */ diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -83,7 +83,7 @@ TemporaryStorageArray _te static inline bool Is8BitCallback(const ResolverObject *object) { /* Var 0x7E procedure results are always 15 bit */ - if (object == NULL | object->procedure_call) return false; + if (object == NULL || object->procedure_call) return false; switch (object->callback) { /* All these functions are 15 bit callbacks */ @@ -96,6 +96,7 @@ static inline bool Is8BitCallback(const case CBID_INDTILE_ACCEPT_CARGO: case CBID_VEHICLE_COLOUR_MAPPING: case CBID_HOUSE_PRODUCE_CARGO: + case CBID_INDTILE_SHAPE_CHECK: // depends on grf version, masked to 8 bit in PerformIndustryTileSlopeCheck() if needed case CBID_VEHICLE_SOUND_EFFECT: case CBID_VEHICLE_MODIFY_PROPERTY: // depends on queried property case CBID_CARGO_PROFIT_CALC: