Difference between revisions of "NML:Alternative sprites"

From GRFSpecs
Jump to navigationJump to search
(Add reference to real/recolour sprites)
(Tile sizes for 2x/4x zoomed-in were wrong)
Line 11: Line 11:
 
!name !! tile size !! description
 
!name !! tile size !! description
 
|-
 
|-
|<code style="color:darkgreen">ZOOM_LEVEL_IN_4X</code> || 256 x 127 || 4x zoom in
+
|<code style="color:darkgreen">ZOOM_LEVEL_IN_4X</code> || 256 x 124 || 4x zoom in
 
|-
 
|-
|<code style="color:darkgreen">ZOOM_LEVEL_IN_2X</code> || 128 x 63 || 2x zoom in
+
|<code style="color:darkgreen">ZOOM_LEVEL_IN_2X</code> || 128 x 62 || 2x zoom in
 
|-
 
|-
 
|<code style="color:darkgreen">ZOOM_LEVEL_NORMAL</code> || 64 x 31 || normal tile size
 
|<code style="color:darkgreen">ZOOM_LEVEL_NORMAL</code> || 64 x 31 || normal tile size

Revision as of 14:06, 26 June 2012

Block Syntax

A alternative_sprites block allows you to specify alternative sprites (zoom levels and / or 32bpp) that are drop-in replacements for some real sprites in your grf. The syntax is as follows:

alternative_sprites(block_name, zoom_level, type[, filename[, mask_filename]]) {
	list of realsprites
}

block_name is the name of the replace / base_graphics, replace_new, font_glyph or spriteset-block for which you want to provide alternative sprites. zoom_level can be

name tile size description
ZOOM_LEVEL_IN_4X 256 x 124 4x zoom in
ZOOM_LEVEL_IN_2X 128 x 62 2x zoom in
ZOOM_LEVEL_NORMAL 64 x 31 normal tile size
ZOOM_LEVEL_OUT_2X 32 x 15 2x zoom out
ZOOM_LEVEL_OUT_4X 16 x 7 4x zoom out
ZOOM_LEVEL_OUT_8X 8 x 3 8x zoom out

The type argument specifies which kind of sprite follows. This may be either BIT_DEPTH_8BPP or BIT_DEPTH_32BPP.

Specifying a filename is optional, it's only useful if you have multiple sprites in the same file. If every sprite is in a separate file you'll have to specify the filename for each realsprite anyway, so you can leave it out of the alternative_sprites-block.

For 32bpp only, you can also specify a default filename to use for mask sprites. These (8bpp) sprites have the same size and offsets as the normal sprites and are used for recolouring purposes. See the real sprites page for more info.

The block then contains a list of real and/or recolour sprites. An example for an implementation

 // Foster Express tram
 spriteset(foster_express_set, "opengfx_generic_trams1.pcx") {
   [ 48,56,  8,18,   -3,-10]
   [ 64,56, 20,19,  -14, -5]
   [ 96,56, 28,15,  -14, -8]
   [144,56, 20,19,   -6, -7]
   [176,56,  8,18,   -3,-10]
   [192,56, 20,19,  -14, -9]
   [224,56, 28,15,  -14, -8]
   [272,56, 20,19,   -6, -7]
 }
 
 alternative_sprites(foster_express_set, ZOOM_LEVEL_IN_2X, BIT_DEPTH_8BPP, "opengfx_generic_trams1.pcx") {
   [ 48,56,  8,18,   -3,-10]
   [ 64,56, 20,19,  -14, -5]
   [ 96,56, 28,15,  -14, -8]
   [144,56, 20,19,   -6, -7]
   [176,56,  8,18,   -3,-10]
   [192,56, 20,19,  -14, -9]
   [224,56, 28,15,  -14, -8]
   [272,56, 20,19,   -6, -7]
 }
 
 alternative_sprites(foster_express_set, ZOOM_LEVEL_NORMAL, BIT_DEPTH_32BPP, "opengfx_generic_trams1.png") {
   [ 48,56,  8,18,   -3,-10]
   [ 64,56, 20,19,  -14, -5]
   [ 96,56, 28,15,  -14, -8]
   [144,56, 20,19,   -6, -7]
   [176,56,  8,18,   -3,-10]
   [192,56, 20,19,  -14, -9]
   [224,56, 28,15,  -14, -8]
   [272,56, 20,19,   -6, -7]
 }