changeset 8686:3ea1169f8044 draft

(svn r12358) -Fix: Callback 2F returns 15 bit results starting from grf version 7.
author frosch <frosch@openttd.org>
date Tue, 11 Mar 2008 12:55:41 +0000
parents a148a6ee005d
children b881df9c4b1a
files src/newgrf_industrytiles.cpp src/newgrf_spritegroup.cpp
diffstat 2 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -275,7 +275,7 @@
 		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 */
--- a/src/newgrf_spritegroup.cpp
+++ b/src/newgrf_spritegroup.cpp
@@ -83,7 +83,7 @@
 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 @@
 		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: