Difference between revisions of "NML:Replace new sprites"

From GRFSpecs
Jump to navigationJump to search
(New OpenTTD GUI button)
(new unified SIGNALS type)
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
{{NMLNavBlocksyntax}}
 
{{NMLNavBlocksyntax}}
   
Over time, several features have been added to TTDPatch and OpenTTD that require new sprites. As these sprites are not present in the original base graphics, they cannot be replaced using a normal <code style="color:darkgreen">replace</code> block. Instead, a <code style="color:darkgreen">replacenew</code> block has to be used. The semantics are like this:
+
Over time, several features have been added to OpenTTD that require new sprites. As these sprites are not present in the original base graphics and only found in the extra grf of each base set. They cannot be replaced using a normal <code style="color:darkgreen">replace</code> block. Instead, a <code style="color:darkgreen">replacenew</code> block has to be used. The semantics are like this:
   
 
replacenew [&lt;block-name&gt;](&lt;type&gt;, [&lt;image-file&gt;[, &lt;offset&gt;]]) {
 
replacenew [&lt;block-name&gt;](&lt;type&gt;, [&lt;image-file&gt;[, &lt;offset&gt;]]) {
Line 11: Line 11:
 
The <code style="color:darkgreen">&lt;type&gt;</code> parameter indicates the type of sprites that will be replaced. It should be an identifier from the first column of the following table.
 
The <code style="color:darkgreen">&lt;type&gt;</code> parameter indicates the type of sprites that will be replaced. It should be an identifier from the first column of the following table.
   
For information on what sprites are needed and in what order, it's generally best to look at the OpenGFX source [http://hg.openttdcoop.org/opengfx/file/tip/sprites/extra], in the sprites/extra directory.
+
For information on what sprites are needed and in what order, it's generally best to look at the OpenGFX source [https://github.com/OpenTTD/OpenGFX/tree/master/sprites/extra], in the sprites/extra directory.
  +
  +
{| class="wikitable sortable"
   
{| class="t"
 
 
! Type
 
! Type
 
! Number of sprites
 
! Number of sprites
 
|-
 
|-
  +
| SIGNALS <ref>In older versions this was named PRE_SIGNAL, PRE_SIGNAL_SEMAPHORE and PRE_SIGNAL_SEMAPHORE_PBS.</ref>
| PRE_SIGNAL
 
| 48
 
|-
 
| PRE_SIGNAL_SEMAPHORE
 
| 112
 
|-
 
| PRE_SIGNAL_SEMAPHORE_PBS
 
 
| 240
 
| 240
 
|-
 
|-
Line 34: Line 29:
 
| FOUNDATIONS_SLOPES_HALFTILES
 
| FOUNDATIONS_SLOPES_HALFTILES
 
| 90
 
| 90
|-
+
|-
  +
<!-- This is not usable anyway, as NML 0.3 is grf v8
 
| TTDP_GUI_25
 
| TTDP_GUI_25
 
| 73<ref name="no_offset" />
 
| 73<ref name="no_offset" />
Line 40: Line 36:
 
| TTDP_GUI
 
| TTDP_GUI
 
| 93<ref name="no_offset" />
 
| 93<ref name="no_offset" />
|-
+
|-
  +
-->
 
| CANALS
 
| CANALS
 
| 65
 
| 65
Line 51: Line 48:
 
|-
 
|-
 
| TRAMWAY
 
| TRAMWAY
  +
| 113 {{ottdp|1.10|no}} {{nml|0.5}} 119
| 113
 
 
|-
 
|-
  +
<!--
 
| SNOWY_TEMPERATE_TREES
 
| SNOWY_TEMPERATE_TREES
 
| 133<ref name="no_offset" />
 
| 133<ref name="no_offset" />
 
|-
 
|-
  +
-->
 
| COAST_TILES
 
| COAST_TILES
 
| 16<ref name="no_offset">This type does not support the use of an offset. Thus the exact amount of sprites must be supplied.</ref>
 
| 16<ref name="no_offset">This type does not support the use of an offset. Thus the exact amount of sprites must be supplied.</ref>
Line 65: Line 64:
 
| 18<ref name="no_offset" />
 
| 18<ref name="no_offset" />
 
|-
 
|-
  +
<!--
 
| NEW_SIGNALS
 
| NEW_SIGNALS
 
| any <ref name="not_supported">Any number of sprites is allowed here, however both OpenTTD and NML don't (yet) support the other features required to use these sprites.</ref>
 
| any <ref name="not_supported">Any number of sprites is allowed here, however both OpenTTD and NML don't (yet) support the other features required to use these sprites.</ref>
 
|-
 
|-
  +
-->
 
| SLOPED_RAILS
 
| SLOPED_RAILS
 
| 12
 
| 12
Line 87: Line 88:
 
|-
 
|-
 
| OTTD_GUI
 
| OTTD_GUI
| 169
+
| 191
 
|-
 
|-
 
| AIRPORT_PREVIEW
 
| AIRPORT_PREVIEW
Line 94: Line 95:
 
| RAILTYPE_TUNNELS
 
| RAILTYPE_TUNNELS
 
| 16
 
| 16
 
|-
  +
| OTTD_RECOLOUR
 
| 1
 
|}
 
|}
   

Latest revision as of 21:18, 27 June 2023

Block Syntax

Over time, several features have been added to OpenTTD that require new sprites. As these sprites are not present in the original base graphics and only found in the extra grf of each base set. They cannot be replaced using a normal replace block. Instead, a replacenew block has to be used. The semantics are like this:

replacenew [<block-name>](<type>, [<image-file>[, <offset>]]) {
	list of realsprites
}

A <block_name> is optional but required, if you want to define alternative sprites for the sprite block so that it can be referenced there.

The <type> parameter indicates the type of sprites that will be replaced. It should be an identifier from the first column of the following table.

For information on what sprites are needed and in what order, it's generally best to look at the OpenGFX source [1], in the sprites/extra directory.

Type Number of sprites
SIGNALS [1] 240
CATENARY 48
FOUNDATIONS_SLOPES 74
FOUNDATIONS_SLOPES_HALFTILES 90
CANALS 65
ONE_WAY_ROAD 6
COLOURMAP_2CC 256
TRAMWAY 113 Supported by OpenTTD 1.101.10 Not supported by TTDPatch NML 0.5 119
COAST_TILES 16[2]
COAST_TILES_BASEGFX 10[2]
COAST_TILES_DIAGONAL 18[2]
SLOPED_RAILS 12
AIRPORTS 15
ROAD_STOPS 8
AQUEDUCTS 8
AUTORAIL 55
FLAGS 36
OTTD_GUI 191
AIRPORT_PREVIEW 9
RAILTYPE_TUNNELS 16
OTTD_RECOLOUR 1

Parameter two <image-file> (optional) is a literal (quoted) string that specifies the default file where the sprites are located. This may be overridden per-sprite.

Parameter <offset> is optional and has a default value of 0. Setting this value sets an offset into the block of sprites, so only a subset of the sprites (starting at offset) will be replaced. An offset is not allowed in the case of the sprite types marked with [2]. Don't use offsets, if you want you NewGRF compatible with TTDPatch.

  1. In older versions this was named PRE_SIGNAL, PRE_SIGNAL_SEMAPHORE and PRE_SIGNAL_SEMAPHORE_PBS.
  2. 2.0 2.1 2.2 2.3 This type does not support the use of an offset. Thus the exact amount of sprites must be supplied.