changeset 6281:027018edadd1 draft

(svn r9093) -Codechange: variable scope / type
author peter1138 <peter1138@openttd.org>
date Sat, 10 Mar 2007 09:55:11 +0000
parents 73d35d062702
children 5f3344ef3890
files src/newgrf.cpp
diffstat 1 files changed, 130 insertions(+), 245 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -100,14 +100,14 @@
 
 typedef void (*SpecialSpriteHandler)(byte *buf, int len);
 
-static const int _vehcounts[4] = {
+static const uint _vehcounts[4] = {
 	/* GSF_TRAIN */    NUM_TRAIN_ENGINES,
 	/* GSF_ROAD */     NUM_ROAD_ENGINES,
 	/* GSF_SHIP */     NUM_SHIP_ENGINES,
 	/* GSF_AIRCRAFT */ NUM_AIRCRAFT_ENGINES
 };
 
-static const int _vehshifts[4] = {
+static const uint _vehshifts[4] = {
 	/* GSF_TRAIN */    0,
 	/* GSF_ROAD */     ROAD_ENGINES_INDEX,
 	/* GSF_SHIP */     SHIP_ENGINES_INDEX,
@@ -881,13 +881,11 @@
 	switch (prop) {
 		case 0x08: /* Class ID */
 			FOR_EACH_OBJECT {
-				uint32 classid;
-
 				/* Property 0x08 is special; it is where the station is allocated */
 				if (statspec[i] == NULL) statspec[i] = CallocT<StationSpec>(1);
 
 				/* Swap classid because we read it in BE meaning WAYP or DFLT */
-				classid = grf_load_dword(&buf);
+				uint32 classid = grf_load_dword(&buf);
 				statspec[i]->sclass = AllocateStationClass(BSWAP32(classid));
 			}
 			break;
@@ -895,13 +893,12 @@
 		case 0x09: /* Define sprite layout */
 			FOR_EACH_OBJECT {
 				StationSpec *statspec = _cur_grffile->stations[stid + i];
-				uint t;
 
 				statspec->tiles = grf_load_extended(&buf);
 				statspec->renderdata = CallocT<DrawTileSprites>(statspec->tiles);
 				statspec->copied_renderdata = false;
 
-				for (t = 0; t < statspec->tiles; t++) {
+				for (uint t = 0; t < statspec->tiles; t++) {
 					DrawTileSprites *dts = &statspec->renderdata[t];
 					uint seq_count = 0;
 
@@ -1127,11 +1124,9 @@
 				}
 
 				for (; numtables-- != 0; tableid++) {
-					byte sprite;
-
 					if (tableid >= 7) { // skip invalid data
 						grfmsg(1, "BridgeChangeInfo: Table %d >= 7, skipping", tableid);
-						for (sprite = 0; sprite < 32; sprite++) grf_load_dword(&buf);
+						for (byte sprite = 0; sprite < 32; sprite++) grf_load_dword(&buf);
 						continue;
 					}
 
@@ -1139,7 +1134,7 @@
 						bridge->sprite_table[tableid] = MallocT<PalSpriteID>(32);
 					}
 
-					for (sprite = 0; sprite < 32; sprite++) {
+					for (byte sprite = 0; sprite < 32; sprite++) {
 						SpriteID image = grf_load_word(&buf);
 						SpriteID pal   = grf_load_word(&buf);
 
@@ -1388,10 +1383,6 @@
 		/* GSF_SOUNDFX */      SoundEffectChangeInfo,
 	};
 
-	uint8 feature;
-	uint8 numprops;
-	uint8 numinfo;
-	byte engine;
 	EngineInfo *ei = NULL;
 
 	if (len == 1) {
@@ -1401,10 +1392,10 @@
 
 	if (!check_length(len, 6, "FeatureChangeInfo")) return;
 	buf++;
-	feature  = grf_load_byte(&buf);
-	numprops = grf_load_byte(&buf);
-	numinfo  = grf_load_byte(&buf);
-	engine   = grf_load_byte(&buf);
+	uint8 feature  = grf_load_byte(&buf);
+	uint8 numprops = grf_load_byte(&buf);
+	uint8 numinfo  = grf_load_byte(&buf);
+	uint8 engine   = grf_load_byte(&buf);
 
 	grfmsg(6, "FeatureChangeInfo: feature %d, %d properties, to apply to %d+%d",
 	               feature, numprops, engine, numinfo);
@@ -1461,15 +1452,17 @@
 						break;
 
 					default:
-						if (handler[feature](engine, numinfo, prop, &buf, bufend - buf))
+						if (handler[feature](engine, numinfo, prop, &buf, bufend - buf)) {
 							ignoring = true;
+						}
 						break;
 				}
 				break;
 
 			default:
-				if (handler[feature](engine, numinfo, prop, &buf, bufend - buf))
+				if (handler[feature](engine, numinfo, prop, &buf, bufend - buf)) {
 					ignoring = true;
+				}
 				break;
 		}
 
@@ -1480,11 +1473,6 @@
 /* Action 0x00 (GLS_SAFETYSCAN) */
 static void SafeChangeInfo(byte *buf, int len)
 {
-	uint8 feature;
-	uint8 numprops;
-	uint8 numinfo;
-	uint8 index;
-
 	if (len == 1) {
 		grfmsg(8, "Silently ignoring one-byte special sprite 0x00");
 		return;
@@ -1492,10 +1480,10 @@
 
 	if (!check_length(len, 6, "SafeChangeInfo")) return;
 	buf++;
-	feature  = grf_load_byte(&buf);
-	numprops = grf_load_byte(&buf);
-	numinfo  = grf_load_byte(&buf);
-	index    = grf_load_byte(&buf);
+	uint8 feature  = grf_load_byte(&buf);
+	uint8 numprops = grf_load_byte(&buf);
+	grf_load_byte(&buf);
+	grf_load_byte(&buf);
 
 	if (feature == GSF_BRIDGE && numprops == 1) {
 		uint8 prop = grf_load_byte(&buf);
@@ -1514,10 +1502,6 @@
 static void InitChangeInfo(byte *buf, int len)
 {
 	byte *bufend = buf + len;
-	uint8 feature;
-	uint8 numprops;
-	uint8 numinfo;
-	uint8 index;
 
 	if (len == 1) {
 		grfmsg(8, "Silently ignoring one-byte special sprite 0x00");
@@ -1526,10 +1510,10 @@
 
 	if (!check_length(len, 6, "InitChangeInfo")) return;
 	buf++;
-	feature  = grf_load_byte(&buf);
-	numprops = grf_load_byte(&buf);
-	numinfo  = grf_load_byte(&buf);
-	index    = grf_load_byte(&buf);
+	uint8 feature  = grf_load_byte(&buf);
+	uint8 numprops = grf_load_byte(&buf);
+	uint8 numinfo  = grf_load_byte(&buf);
+	uint8 index    = grf_load_byte(&buf);
 
 	while (numprops-- && buf < bufend) {
 		uint8 prop = grf_load_byte(&buf);
@@ -1613,19 +1597,13 @@
 	 *                         vehicle directions in each sprite set
 	 *                         Set num-dirs=8, unless your sprites are symmetric.
 	 *                         In that case, use num-dirs=4.
-	 *                 For stations, must be 12 (hex) for the eighteen
-	 *                         different sprites that make up a station */
-	/* TODO: No stations support. */
-	uint8 feature;
-	uint num_sets;
-	uint num_ents;
-	uint i;
+	 */
 
 	if (!check_length(len, 4, "NewSpriteSet")) return;
 	buf++;
-	feature  = grf_load_byte(&buf);
-	num_sets = grf_load_byte(&buf);
-	num_ents = grf_load_extended(&buf);
+	uint8 feature   = grf_load_byte(&buf);
+	uint8 num_sets  = grf_load_byte(&buf);
+	uint16 num_ents = grf_load_extended(&buf);
 
 	_cur_grffile->spriteset_start = _cur_spriteid;
 	_cur_grffile->spriteset_feature = feature;
@@ -1636,7 +1614,7 @@
 		_cur_spriteid, feature, num_sets, num_ents, num_sets * num_ents
 	);
 
-	for (i = 0; i < num_sets * num_ents; i++) {
+	for (uint i = 0; i < num_sets * num_ents; i++) {
 		LoadNextSprite(_cur_spriteid++, _file_index);
 		_nfo_line++;
 	}
@@ -1699,18 +1677,15 @@
 	 *                 otherwise it specifies a number of entries, the exact
 	 *                 meaning depends on the feature
 	 * V feature-specific-data (huge mess, don't even look it up --pasky) */
-	uint8 feature;
-	uint8 setid;
-	uint8 type;
 	SpriteGroup *group = NULL;
 	byte *bufend = buf + len;
 
 	if (!check_length(len, 5, "NewSpriteGroup")) return;
 	buf++;
 
-	feature = grf_load_byte(&buf);
-	setid   = grf_load_byte(&buf);
-	type    = grf_load_byte(&buf);
+	uint8 feature = grf_load_byte(&buf);
+	uint8 setid   = grf_load_byte(&buf);
+	uint8 type    = grf_load_byte(&buf);
 
 	if (setid >= _cur_grffile->spritegroups_count) {
 		// Allocate memory for new sprite group references.
@@ -1731,7 +1706,6 @@
 		{
 			byte varadjust;
 			byte varsize;
-			uint i;
 
 			/* Check we can load the var size parameter */
 			if (!check_length(bufend - buf, 1, "NewSpriteGroup (Deterministic) (1)")) return;
@@ -1794,7 +1768,7 @@
 
 			if (!check_length(bufend - buf, 2 + (2 + 2 * varsize) * group->g.determ.num_ranges, "NewSpriteGroup (Deterministic)")) return;
 
-			for (i = 0; i < group->g.determ.num_ranges; i++) {
+			for (uint i = 0; i < group->g.determ.num_ranges; i++) {
 				group->g.determ.ranges[i].group = GetGroupFromGroupID(setid, type, grf_load_word(&buf));
 				group->g.determ.ranges[i].low   = grf_load_var(varsize, &buf);
 				group->g.determ.ranges[i].high  = grf_load_var(varsize, &buf);
@@ -1808,16 +1782,13 @@
 		case 0x80: // Self scope
 		case 0x83: // Parent scope
 		{
-			byte triggers;
-			uint i;
-
 			if (!check_length(bufend - buf, 7, "NewSpriteGroup (Randomized) (1)")) return;
 
 			group = AllocateSpriteGroup();
 			group->type = SGT_RANDOMIZED;
 			group->g.random.var_scope = HASBIT(type, 1) ? VSG_SCOPE_PARENT : VSG_SCOPE_SELF;
 
-			triggers = grf_load_byte(&buf);
+			uint8 triggers = grf_load_byte(&buf);
 			group->g.random.triggers       = GB(triggers, 0, 7);
 			group->g.random.cmp_mode       = HASBIT(triggers, 7) ? RSG_CMP_ALL : RSG_CMP_ANY;
 			group->g.random.lowest_randbit = grf_load_byte(&buf);
@@ -1826,7 +1797,7 @@
 
 			if (!check_length(bufend - buf, 2 * group->g.random.num_groups, "NewSpriteGroup (Randomized) (2)")) return;
 
-			for (i = 0; i < group->g.random.num_groups; i++) {
+			for (uint i = 0; i < group->g.random.num_groups; i++) {
 				group->g.random.groups[i] = GetGroupFromGroupID(setid, type, grf_load_word(&buf));
 			}
 
@@ -1848,7 +1819,6 @@
 					byte sprites     = _cur_grffile->spriteset_numents;
 					byte num_loaded  = type;
 					byte num_loading = grf_load_byte(&buf);
-					uint i;
 
 					if (_cur_grffile->spriteset_start == 0) {
 						grfmsg(0, "NewSpriteGroup: No sprite set to work on! Skipping");
@@ -1868,13 +1838,13 @@
 					grfmsg(6, "NewSpriteGroup: New SpriteGroup 0x%02X, %u views, %u loaded, %u loading",
 							setid, sprites, num_loaded, num_loading);
 
-					for (i = 0; i < num_loaded; i++) {
+					for (uint i = 0; i < num_loaded; i++) {
 						uint16 spriteid = grf_load_word(&buf);
 						group->g.real.loaded[i] = CreateGroupFromGroupID(feature, setid, type, spriteid, sprites);
 						grfmsg(8, "NewSpriteGroup: + rg->loaded[%i]  = subset %u", i, spriteid);
 					}
 
-					for (i = 0; i < num_loading; i++) {
+					for (uint i = 0; i < num_loading; i++) {
 						uint16 spriteid = grf_load_word(&buf);
 						group->g.real.loading[i] = CreateGroupFromGroupID(feature, setid, type, spriteid, sprites);
 						grfmsg(8, "NewSpriteGroup: + rg->loading[%i] = subset %u", i, spriteid);
@@ -1943,26 +1913,22 @@
 
 	static byte *last_engines;
 	static int last_engines_count;
-	uint8 feature;
-	uint8 idcount;
-	bool wagover;
-	uint8 cidcount;
-	int c, i;
 
 	if (!check_length(len, 6, "FeatureMapSpriteGroup")) return;
-	feature = buf[1];
-	idcount = buf[2] & 0x7F;
-	wagover = (buf[2] & 0x80) == 0x80;
+
+	uint8 feature = buf[1];
+	uint8 idcount = buf[2] & 0x7F;
+	bool wagover = (buf[2] & 0x80) == 0x80;
+
 	if (!check_length(len, 3 + idcount, "FeatureMapSpriteGroup")) return;
 
-	/* If ``n-id'' (or ``idcount'') is zero, this is a ``feature
-	 * callback''. */
+	/* If idcount is zero, this is a feature callback */
 	if (idcount == 0) {
 		grfmsg(2, "FeatureMapSpriteGroup: Feature callbacks not implemented yet");
 		return;
 	}
 
-	cidcount = buf[3 + idcount];
+	uint8 cidcount = buf[3 + idcount];
 	if (!check_length(len, 4 + idcount + cidcount * 3, "FeatureMapSpriteGroup")) return;
 
 	grfmsg(6, "FeatureMapSpriteGroup: Feature %d, %d ids, %d cids, wagon override %d",
@@ -1977,12 +1943,12 @@
 	if (feature == GSF_STATION) {
 		// We do things differently for stations.
 
-		for (i = 0; i < idcount; i++) {
+		for (uint i = 0; i < idcount; i++) {
 			uint8 stid = buf[3 + i];
 			StationSpec *statspec = _cur_grffile->stations[stid];
 			byte *bp = &buf[4 + idcount];
 
-			for (c = 0; c < cidcount; c++) {
+			for (uint c = 0; c < cidcount; c++) {
 				uint8 ctype = grf_load_byte(&bp);
 				uint16 groupid = grf_load_word(&bp);
 
@@ -2009,7 +1975,7 @@
 				return;
 			}
 
-			for (i = 0; i < idcount; i++) {
+			for (uint i = 0; i < idcount; i++) {
 				uint8 stid = buf[3 + i];
 				StationSpec *statspec = _cur_grffile->stations[stid];
 
@@ -2046,7 +2012,7 @@
 	}
 
 
-	for (i = 0; i < idcount; i++) {
+	for (uint i = 0; i < idcount; i++) {
 		uint8 engine_id = buf[3 + i];
 		uint8 engine = engine_id + _vehshifts[feature];
 		byte *bp = &buf[4 + idcount];
@@ -2058,7 +2024,7 @@
 
 		grfmsg(7, "FeatureMapSpriteGroup: [%d] Engine %d...", i, engine);
 
-		for (c = 0; c < cidcount; c++) {
+		for (uint c = 0; c < cidcount; c++) {
 			uint8 ctype = grf_load_byte(&bp);
 			uint16 groupid = grf_load_word(&bp);
 
@@ -2087,7 +2053,7 @@
 
 		grfmsg(8, "-- Default group id 0x%04X", groupid);
 
-		for (i = 0; i < idcount; i++) {
+		for (uint i = 0; i < idcount; i++) {
 			uint8 engine = buf[3 + i] + _vehshifts[feature];
 
 			// Don't tell me you don't love duplicated code!
@@ -2132,35 +2098,23 @@
 	 *                 Word : ID of string to change/add
 	 * S data          new texts, each of them zero-terminated, after
 	 *                 which the next name begins. */
-	/* TODO: No support for changing non-vehicle text. Perhaps we shouldn't
-	 * implement it at all, but it could be useful for some "modpacks"
-	 * (completely new scenarios changing all graphics and logically also
-	 * factory names etc). We should then also support all languages (by
-	 * name), not only the original four ones. --pasky
-	 * All of the above are coming.  In Time.  Some sooner than others :)*/
-
-	uint8 feature;
-	uint8 lang;
-	uint8 num;
-	uint16 id;
-	uint16 endid;
+
 	bool new_scheme = _cur_grffile->grf_version >= 7;
-	bool generic;
 
 	if (!check_length(len, 6, "FeatureNewName")) return;
 	buf++;
-	feature  = grf_load_byte(&buf);
-	lang     = grf_load_byte(&buf);
-	num      = grf_load_byte(&buf);
-	generic  = HASBIT(lang, 7);
-	id       = generic ? grf_load_word(&buf) : grf_load_byte(&buf);
+	uint8 feature  = grf_load_byte(&buf);
+	uint8 lang     = grf_load_byte(&buf);
+	uint8 num      = grf_load_byte(&buf);
+	bool generic   = HASBIT(lang, 7);
+	uint16 id      = generic ? grf_load_word(&buf) : grf_load_byte(&buf);
 
 	CLRBIT(lang, 7);
 
 	if (feature <= GSF_AIRCRAFT && id < _vehcounts[feature]) {
 		id += _vehshifts[feature];
 	}
-	endid    = id + num;
+	uint16 endid = id + num;
 
 	grfmsg(6, "FeatureNewName: About to rename engines %d..%d (feature %d) in language 0x%02X",
 	               id, endid, feature, lang);
@@ -2260,14 +2214,12 @@
 	 * V other data    Graphics type specific data.  Currently unused. */
 	/* TODO */
 
-	uint8 type;
-	uint16 num;
 	SpriteID replace = 0;
 
 	if (!check_length(len, 2, "GraphicsNew")) return;
 	buf++;
-	type = grf_load_byte(&buf);
-	num  = grf_load_extended(&buf);
+	uint8 type = grf_load_byte(&buf);
+	uint16 num = grf_load_extended(&buf);
 
 	switch (type) {
 		case 0x04: /* Signal graphics */
@@ -2484,22 +2436,15 @@
 	 * V value
 	 * B num-sprites */
 	/* TODO: More params. More condition types. */
-	uint8 param;
-	uint8 paramsize;
-	uint8 condtype;
-	uint8 numsprites;
-	uint32 param_val = 0;
 	uint32 cond_val = 0;
 	uint32 mask = 0;
 	bool result;
-	GRFLabel *label;
-	GRFLabel *choice = NULL;
 
 	if (!check_length(len, 6, "SkipIf")) return;
 	buf++;
-	param     = grf_load_byte(&buf);
-	paramsize = grf_load_byte(&buf);
-	condtype  = grf_load_byte(&buf);
+	uint8 param     = grf_load_byte(&buf);
+	uint8 paramsize = grf_load_byte(&buf);
+	uint8 condtype  = grf_load_byte(&buf);
 
 	if (condtype < 2) {
 		/* Always 1 for bit tests, the given value should be ignored. */
@@ -2518,7 +2463,7 @@
 		return;
 	}
 
-	param_val = GetParamVal(param, &cond_val);
+	uint32 param_val = GetParamVal(param, &cond_val);
 
 	grfmsg(7, "Test condtype %d, param 0x%08X, condval 0x%08X", condtype, param_val, cond_val);
 
@@ -2582,13 +2527,14 @@
 		return;
 	}
 
-	numsprites = grf_load_byte(&buf);
+	uint8 numsprites = grf_load_byte(&buf);
 
 	/* numsprites can be a GOTO label if it has been defined in the GRF
 	 * file. The jump will always be the first matching label that follows
 	 * the current nfo_line. If no matching label is found, the first matching
 	 * label in the file is used. */
-	for (label = _cur_grffile->label; label != NULL; label = label->next) {
+	GRFLabel *choice = NULL;
+	for (GRFLabel *label = _cur_grffile->label; label != NULL; label = label->next) {
 		if (label->label != numsprites) continue;
 
 		/* Remember a goto before the current line */
@@ -2624,14 +2570,10 @@
 /* Action 0x08 (GLS_FILESCAN) */
 static void ScanInfo(byte *buf, int len)
 {
-	uint8 version;
-	uint32 grfid;
-	const char *name;
-	const char *info;
-
-	if (!check_length(len, 8, "Info")) return; buf++;
-	version = grf_load_byte(&buf);
-	grfid = grf_load_dword(&buf);
+	if (!check_length(len, 8, "Info")) return;
+	buf++;
+	grf_load_byte(&buf);
+	uint32 grfid  = grf_load_dword(&buf);
 
 	_cur_grfconfig->grfid = grfid;
 
@@ -2639,12 +2581,12 @@
 	if (GB(grfid, 24, 8) == 0xFF) SETBIT(_cur_grfconfig->flags, GCF_SYSTEM);
 
 	len -= 6;
-	name = grf_load_string(&buf, len);
+	const char *name = grf_load_string(&buf, len);
 	_cur_grfconfig->name = TranslateTTDPatchCodes(name);
 
 	len -= strlen(name) + 1;
 	if (len > 0) {
-		info = grf_load_string(&buf, len);
+		const char *info = grf_load_string(&buf, len);
 		_cur_grfconfig->info = TranslateTTDPatchCodes(info);
 	}
 
@@ -2661,15 +2603,12 @@
 	 * 4*B grf-id      globally unique ID of this .grf file
 	 * S name          name of this .grf set
 	 * S info          string describing the set, and e.g. author and copyright */
-	/* TODO: Check version. (We should have own versioning done somehow.) */
-	uint8 version;
-	uint32 grfid;
-	const char *name;
-
-	if (!check_length(len, 8, "GRFInfo")) return; buf++;
-	version = grf_load_byte(&buf);
-	grfid = grf_load_dword(&buf);
-	name = grf_load_string(&buf, len - 6);
+
+	if (!check_length(len, 8, "GRFInfo")) return;
+	buf++;
+	uint8 version    = grf_load_byte(&buf);
+	uint32 grfid     = grf_load_dword(&buf);
+	const char *name = grf_load_string(&buf, len - 6);
 
 	_cur_grffile->grfid = grfid;
 	_cur_grffile->grf_version = version;
@@ -2689,22 +2628,19 @@
 	 * Each set:
 	 * B num-sprites   How many sprites are in this set
 	 * W first-sprite  First sprite number to replace */
-	uint8 num_sets;
-	uint i;
 
 	buf++; /* skip action byte */
-	num_sets = grf_load_byte(&buf);
-
-	for (i = 0; i < num_sets; i++) {
+	uint8 num_sets = grf_load_byte(&buf);
+
+	for (uint i = 0; i < num_sets; i++) {
 		uint8 num_sprites = grf_load_byte(&buf);
 		uint16 first_sprite = grf_load_word(&buf);
-		uint j;
 
 		grfmsg(2, "SpriteReplace: [Set %d] Changing %d sprites, beginning with %d",
 			i, num_sprites, first_sprite
 		);
 
-		for (j = 0; j < num_sprites; j++) {
+		for (uint j = 0; j < num_sprites; j++) {
 			LoadNextSprite(first_sprite + j, _file_index); // XXX
 			_nfo_line++;
 		}
@@ -2844,11 +2780,9 @@
 /* Action 0x0D (GLS_SAFETYSCAN) */
 static void SafeParamSet(byte *buf, int len)
 {
-	uint8 target;
-
 	if (!check_length(len, 5, "SafeParamSet")) return;
 	buf++;
-	target = grf_load_byte(&buf);
+	uint8 target = grf_load_byte(&buf);
 
 	/* Only writing GRF parameters is considered safe */
 	if (target < 0x80) return;
@@ -2889,20 +2823,14 @@
 	 *         (source2 like in 05, and source1 as well)
 	 */
 
-	byte target;
-	byte oper;
-	uint32 src1;
-	uint32 src2;
-	uint32 data = 0;
-	uint32 res;
-
 	if (!check_length(len, 5, "ParamSet")) return;
 	buf++;
-	target = grf_load_byte(&buf);
-	oper = grf_load_byte(&buf);
-	src1 = grf_load_byte(&buf);
-	src2 = grf_load_byte(&buf);
-
+	uint8 target = grf_load_byte(&buf);
+	uint8 oper   = grf_load_byte(&buf);
+	uint32 src1  = grf_load_byte(&buf);
+	uint32 src2  = grf_load_byte(&buf);
+
+	uint32 data = 0;
 	if (len >= 8) data = grf_load_dword(&buf);
 
 	/* You can add 80 to the operation to make it apply only if the target
@@ -2911,13 +2839,13 @@
 	 * - it has been set to any value in the newgrf(w).cfg parameter list
 	 * - it OR A PARAMETER WITH HIGHER NUMBER has been set to any value by
 	 *   an earlier action D */
-	if (oper & 0x80) {
+	if (HASBIT(oper, 7)) {
 		if (target < 0x80 && target < _cur_grffile->param_end) {
 			grfmsg(7, "Param %u already defined, skipping", target);
 			return;
 		}
 
-		oper &= 0x7F;
+		oper = GB(oper, 0, 7);
 	}
 
 	if (src2 == 0xFE) {
@@ -2945,7 +2873,6 @@
 							uint start = 0;
 							uint size  = 0;
 							uint shift = _vehshifts[feature];
-							int i;
 
 							if (op == 6) {
 								/* Return GRFID of set that reserved ID */
@@ -2956,7 +2883,7 @@
 							/* With an operation of 2 or 3, we want to reserve a specific block of IDs */
 							if (op == 2 || op == 3) start = _cur_grffile->param[target];
 
-							for (i = start; i < _vehcounts[feature]; i++) {
+							for (uint i = start; i < _vehcounts[feature]; i++) {
 								if (_grm_engines[shift + i] == 0) {
 									size++;
 								} else {
@@ -2972,7 +2899,7 @@
 								/* Got the slot... */
 								if (op == 0 || op == 3) {
 									grfmsg(2, "GRM: Reserving %d vehicles at %d", count, start);
-									for (i = 0; i < count; i++) _grm_engines[shift + start + i] = _cur_grffile->grfid;
+									for (uint i = 0; i < count; i++) _grm_engines[shift + start + i] = _cur_grffile->grfid;
 								}
 								src1 = start;
 							} else {
@@ -3048,6 +2975,7 @@
 	 * cannot be found, a value of 0 is used for the parameter value
 	 * instead. */
 
+	uint32 res;
 	switch (oper) {
 		case 0x00:
 			res = src1;
@@ -3169,15 +3097,12 @@
 	 * B num           Number of GRFIDs that follow
 	 * D grfids        GRFIDs of the files to deactivate */
 
-	byte num;
-	int i;
-
-	if (!check_length(len, 1, "GRFInhibit")) return;
-	buf++, len--;
-	num = grf_load_byte(&buf); len--;
-	if (!check_length(len, 4 * num, "GRFInhibit")) return;
-
-	for (i = 0; i < num; i++) {
+	if (!check_length(len, 2, "GRFInhibit")) return;
+	buf++;
+	uint8 num = grf_load_byte(&buf);
+	if (!check_length(len, 2 + 4 * num, "GRFInhibit")) return;
+
+	for (uint i = 0; i < num; i++) {
 		uint32 grfid = grf_load_dword(&buf);
 
 		/* GRF is unsafe it if tries to deactivate other GRFs */
@@ -3200,15 +3125,12 @@
 	 * B num           Number of GRFIDs that follow
 	 * D grfids        GRFIDs of the files to deactivate */
 
-	byte num;
-	int i;
-
-	if (!check_length(len, 1, "GRFInhibit")) return;
-	buf++, len--;
-	num = grf_load_byte(&buf); len--;
-	if (!check_length(len, 4 * num, "GRFInhibit")) return;
-
-	for (i = 0; i < num; i++) {
+	if (!check_length(len, 2, "GRFInhibit")) return;
+	buf++;
+	uint8 num = grf_load_byte(&buf);
+	if (!check_length(len, 2 + 4 * num, "GRFInhibit")) return;
+
+	for (uint i = 0; i < num; i++) {
 		uint32 grfid = grf_load_dword(&buf);
 		GRFConfig *file = GetGRFConfig(grfid);
 
@@ -3228,12 +3150,10 @@
 	 * B label      The label to define
 	 * V comment    Optional comment - ignored */
 
-	GRFLabel *label;
-
 	if (!check_length(len, 1, "DefineGotoLabel")) return;
 	buf++; len--;
 
-	label = MallocT<GRFLabel>(1);
+	GRFLabel *label = MallocT<GRFLabel>(1);
 	label->label    = grf_load_byte(&buf);
 	label->nfo_line = _nfo_line;
 	label->pos      = FioGetPos();
@@ -3259,11 +3179,9 @@
 	 *
 	 * W num      Number of sound files that follow */
 
-	uint16 num;
-
 	if (!check_length(len, 1, "GRFSound")) return;
 	buf++;
-	num = grf_load_word(&buf);
+	uint16 num = grf_load_word(&buf);
 
 	_grf_data_blocks = num;
 	_grf_data_type   = GDT_SOUND;
@@ -3325,11 +3243,10 @@
 static void LoadGRFSound(byte *buf, int len)
 {
 	byte *buf_start = buf;
-	FileEntry *se;
 
 	/* Allocate a sound entry. This is done even if the data is not loaded
 	 * so that the indices used elsewhere are still correct. */
-	se = AllocateFileEntry();
+	FileEntry *se = AllocateFileEntry();
 
 	if (grf_load_dword(&buf) != BSWAP32('RIFF')) {
 		grfmsg(1, "LoadGRFSound: Missing RIFF header");
@@ -3394,25 +3311,21 @@
 	 * B num_char     Number of consecutive glyphs
 	 * W base_char    First character index */
 
-	uint8 num_def;
-	uint i;
-
 	buf++; len--;
 	if (!check_length(len, 1, "LoadFontGlyph")) return;
 
-	num_def = grf_load_byte(&buf);
+	uint8 num_def = grf_load_byte(&buf);
 
 	if (!check_length(len, 1 + num_def * 4, "LoadFontGlyph")) return;
 
-	for (i = 0; i < num_def; i++) {
+	for (uint i = 0; i < num_def; i++) {
 		FontSize size    = (FontSize)grf_load_byte(&buf);
 		uint8  num_char  = grf_load_byte(&buf);
 		uint16 base_char = grf_load_word(&buf);
-		uint c;
 
 		grfmsg(7, "LoadFontGlyph: Loading %u glyph(s) at 0x%04X for size %u", num_char, base_char, size);
 
-		for (c = 0; c < num_char; c++) {
+		for (uint c = 0; c < num_char; c++) {
 			SetUnicodeGlyph(size, base_char + c, _cur_spriteid);
 			LoadNextSprite(_cur_spriteid++, _file_index);
 			_nfo_line++;
@@ -3489,17 +3402,14 @@
 /* 'Action 0xFF' */
 static void GRFDataBlock(byte *buf, int len)
 {
-	byte name_len;
-	const char *name;
-
 	if (_grf_data_blocks == 0) {
 		grfmsg(2, "GRFDataBlock: unexpected data block, skipping");
 		return;
 	}
 
 	buf++;
-	name_len = grf_load_byte(&buf);
-	name = (const char *)buf;
+	uint8 name_len = grf_load_byte(&buf);
+	const char *name = (const char *)buf;
 	buf += name_len + 1;
 
 	grfmsg(2, "GRFDataBlock: block name '%s'...", name);
@@ -3604,20 +3514,15 @@
 
 static void ResetCustomStations()
 {
-	StationSpec *statspec;
-	GRFFile *file;
-	uint i;
-	uint t;
-
-	for (file = _first_grffile; file != NULL; file = file->next) {
+	for (GRFFile *file = _first_grffile; file != NULL; file = file->next) {
 		if (file->stations == NULL) continue;
-		for (i = 0; i < MAX_STATIONS; i++) {
+		for (uint i = 0; i < MAX_STATIONS; i++) {
 			if (file->stations[i] == NULL) continue;
-			statspec = file->stations[i];
+			StationSpec *statspec = file->stations[i];
 
 			/* Release renderdata, if it wasn't copied from another custom station spec  */
 			if (!statspec->copied_renderdata) {
-				for (t = 0; t < statspec->tiles; t++) {
+				for (uint t = 0; t < statspec->tiles; t++) {
 					free((void*)statspec->renderdata[t].seq);
 				}
 				free(statspec->renderdata);
@@ -3625,9 +3530,8 @@
 
 			/* Release platforms and layouts */
 			if (!statspec->copied_layouts) {
-				uint l, p;
-				for (l = 0; l < statspec->lengths; l++) {
-					for (p = 0; p < statspec->platforms[l]; p++) {
+				for (uint l = 0; l < statspec->lengths; l++) {
+					for (uint p = 0; p < statspec->platforms[l]; p++) {
 						free(statspec->layouts[l][p]);
 					}
 					free(statspec->layouts[l]);
@@ -3648,9 +3552,9 @@
 
 static void ResetNewGRF()
 {
-	GRFFile *f, *next;
-
-	for (f = _first_grffile; f != NULL; f = next) {
+	GRFFile *next;
+
+	for (GRFFile *f = _first_grffile; f != NULL; f = next) {
 		next = f->next;
 
 		free(f->filename);
@@ -3667,8 +3571,6 @@
  */
 static void ResetNewGRFData()
 {
-	uint i;
-
 	CleanUpStrings();
 
 	// Copy/reset original engine info data
@@ -3680,11 +3582,9 @@
 
 	// Copy/reset original bridge info data
 	// First, free sprite table data
-	for (i = 0; i < MAX_BRIDGES; i++) {
+	for (uint i = 0; i < MAX_BRIDGES; i++) {
 		if (_bridge[i].sprite_table != NULL) {
-			uint j;
-
-			for (j = 0; j < 7; j++) free(_bridge[i].sprite_table[j]);
+			for (uint j = 0; j < 7; j++) free(_bridge[i].sprite_table[j]);
 			free(_bridge[i].sprite_table);
 		}
 	}
@@ -3746,8 +3646,7 @@
 static void ClearTemporaryNewGRFData()
 {
 	/* Clear the GOTO labels used for GRF processing */
-	GRFLabel *l;
-	for (l = _cur_grffile->label; l != NULL;) {
+	for (GRFLabel *l = _cur_grffile->label; l != NULL;) {
 		GRFLabel *l2 = l->next;
 		free(l);
 		l = l2;
@@ -3785,9 +3684,7 @@
 
 static void InitNewGRFFile(const GRFConfig *config, int sprite_offset)
 {
-	GRFFile *newfile;
-
-	newfile = GetFileByFilename(config->filename);
+	GRFFile *newfile = GetFileByFilename(config->filename);
 	if (newfile != NULL) {
 		/* We already loaded it once. */
 		newfile->sprite_offset = sprite_offset;
@@ -3854,17 +3751,14 @@
  */
 static void CalculateRefitMasks()
 {
-	EngineID engine;
-
-	for (engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
+	for (EngineID engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
 		uint32 mask = 0;
 		uint32 not_mask = 0;
 		uint32 xor_mask = _engine_info[engine].refit_mask;
-		byte i;
 
 		if (cargo_allowed[engine] != 0) {
 			// Build up the list of cargo types from the set cargo classes.
-			for (i = 0; i < NUM_CARGO; i++) {
+			for (CargoID i = 0; i < NUM_CARGO; i++) {
 				const CargoSpec *cs = GetCargo(i);
 				if (cargo_allowed[engine]    & cs->classes) SETBIT(mask,     i);
 				if (cargo_disallowed[engine] & cs->classes) SETBIT(not_mask, i);
@@ -3958,7 +3852,6 @@
 	};
 
 	byte* buf;
-	byte action;
 
 	if (_preload_sprite == NULL) {
 		/* No preloaded sprite to work with; allocate and read the
@@ -3976,7 +3869,7 @@
 		FioSeekTo(num, SEEK_CUR);
 	}
 
-	action = buf[0];
+	byte action = buf[0];
 
 	if (action == 0xFF) {
 		grfmsg(7, "Handling data block in stage %d", stage);
@@ -4082,8 +3975,6 @@
 
 void LoadNewGRF(uint load_index, uint file_index)
 {
-	GrfLoadingStage stage;
-
 	InitializeGRFSpecial();
 
 	ResetNewGRFData();
@@ -4091,13 +3982,12 @@
 	/* Load newgrf sprites
 	 * in each loading stage, (try to) open each file specified in the config
 	 * and load information from it. */
-	for (stage = GLS_LABELSCAN; stage <= GLS_ACTIVATION; stage++) {
+	for (GrfLoadingStage stage = GLS_LABELSCAN; stage <= GLS_ACTIVATION; stage++) {
 		uint slot = file_index;
-		GRFConfig *c;
 
 		_cur_stage = stage;
 		_cur_spriteid = load_index;
-		for (c = _grfconfig; c != NULL; c = c->next) {
+		for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
 			if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue;
 
 			// TODO usererror()
@@ -4119,8 +4009,3 @@
 	/* Set the block size in the depot windows based on vehicle sprite sizes */
 	InitDepotWindowBlockSizes();
 }
-
-
-
-
-