Index: engine.c
===================================================================
--- engine.c	(revision 608)
+++ engine.c	(working copy)
@@ -243,14 +243,26 @@
 	_engine_custom_sprites[engine][cargo] = *group;
 }
 
-int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo,
-                          byte loaded, byte in_motion, byte direction)
+int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction)
 {
-	struct SpriteGroup *group = &_engine_custom_sprites[engine][cargo];
+	struct SpriteGroup *group;
 	struct RealSpriteGroup *rsg;
+	uint16 overriding_engine = -1;
+	byte cargo = CID_PURCHASE;
+	byte loaded = 0;
+	byte in_motion = 0;
 	int totalsets, spriteset;
 	int r;
 
+	if (v != NULL) {
+		overriding_engine = v->type == VEH_Train ? v->u.rail.first_engine : -1;
+		cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
+		loaded = ((v->cargo_count + 1) * 100) / (v->cargo_cap + 1);
+		in_motion = !!v->cur_speed;
+	}
+
+	group = &_engine_custom_sprites[engine][cargo];
+
 	if (overriding_engine != 0xffff) {
 		struct SpriteGroup *overset;
 
Index: engine.h
===================================================================
--- engine.h	(revision 608)
+++ engine.h	(working copy)
@@ -97,14 +97,9 @@
 void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains);
 void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group);
 // loaded is in percents, overriding_engine 0xffff is none
-int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction);
-#define GetCustomVehicleSprite(v, direction) \
-	GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \
-	                      _global_cargo_id[_opt.landscape][v->cargo_type], \
-	                      ((v->cargo_count + 1) * 100) / (v->cargo_cap + 1), \
-	                      !!v->cur_speed, direction)
-#define GetCustomVehicleIcon(v, direction) \
-	GetCustomEngineSprite(v, -1, CID_PURCHASE, 0, 0, direction)
+int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction);
+#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
+#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
 
 void SetCustomEngineName(int engine, char *name);
 StringID GetCustomEngineName(int engine);
