<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.tt-wiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Planetmaker</id>
	<title>TTWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://www.tt-wiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Planetmaker"/>
	<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/wiki/Special:Contributions/Planetmaker"/>
	<updated>2026-05-03T16:12:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=10101</id>
		<title>NFO Foundations</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=10101"/>
		<updated>2019-01-29T11:17:52Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* 4. Encode and decode again your own file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NFOTutorial}}&lt;br /&gt;
&lt;br /&gt;
The fundamental files that control your new graphics are the .nfo and the .pcx file. The .pcx file contains the actual drawings, and the .nfo file the instructions what to do with them.&lt;br /&gt;
&lt;br /&gt;
==To get started==&lt;br /&gt;
&lt;br /&gt;
To draw a new train, you first need a base from which to start working. Since you probably aren&#039;t familiar with all the intricacies yet, it&#039;s best to copy one of TTD&#039;s vehicles and then draw your own graphics. Basically, you follow these steps:&lt;br /&gt;
# Extract TTD&#039;s trg1r.grf (or trg1.grf for the DOS version or ogfx1_base.grf when using OpenGFX)&lt;br /&gt;
# Look through trg1r.pcx (TTD) or ogfx1_base.grf (OpenGFX) for a vehicle similar to the one you&#039;re going to make&lt;br /&gt;
# Copy the corresponding data from the .nfo file into your own file&lt;br /&gt;
# Encode and decode again your own file&lt;br /&gt;
&lt;br /&gt;
Now to look at these steps in a bit more details. If you de-compiled OpenGFX&#039;s file, use the appropriate filenames instead in the subsequent text.&lt;br /&gt;
&lt;br /&gt;
==1. Extract TTD&#039;s trg1r.grf / OpenGFX&#039;s ogfx1_base.grf==&lt;br /&gt;
&lt;br /&gt;
First of all, you need to download [http://www.openttd.org/download-grfcodec grfcodec] and unzip it into your TTD folder. Then you open a DOS command window. If you are using Windows 2000 or Windows XP you can open a DOS command window by typing cmd in the execute option in the start menu. When you see the command window run grfcodec like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd C:\TTD&lt;br /&gt;
grfcodec -d trg1r.grf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obviously, change &amp;lt;tt&amp;gt;C:\TTD&amp;lt;/tt&amp;gt; to point to your TTD directory. If you&#039;re using the DOS version of TTD, use &amp;lt;tt&amp;gt;trg1.grf&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;trg1r.grf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This will make a new folder called sprites, and will put trg1r.pcx and trg1r.nfo in it.&lt;br /&gt;
&lt;br /&gt;
You can also use [http://www.divxland.org/ttd/grfwizard.htm GRFWizard] with grfcodec. It will add a user interface to grfcodec. Just follow the options in the wizard to decode a .grf file, it will also add a sprites folder and generate the .nfo and .pcx files.&lt;br /&gt;
&lt;br /&gt;
==2. Look through trg1r.pcx / ogfx1_base.pcx==&lt;br /&gt;
&lt;br /&gt;
You now open trg1r.pcx from the sprites folder. There are many graphics programs to view and edit .pcx files.&lt;br /&gt;
&lt;br /&gt;
Look for a vehicle that is similar to the one you want to make. For example, if you want to make a train engine with 8 views, you can use the SH 125. So you go looking for its graphics in trg1r.pcx. For the SH 125, you&#039;ll find them at numbers 2941 to 2948 (those are the little numbers above the images). Write down those numbers. For example, this is what it might look like:&lt;br /&gt;
&lt;br /&gt;
[[File:sh125.png]]&lt;br /&gt;
&lt;br /&gt;
==3. Copy the corresponding data from the .nfo file into your own file==&lt;br /&gt;
&lt;br /&gt;
So now that we know what sprites to base the graphics on, we need to copy those into a new file. Open the trg1r.nfo file in a text editor, for example Notepad. Also, open another .nfo file for your own graphics, say for example &amp;quot;mytrain.nfo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now, copy and paste the first three lines beginning with &amp;quot;//&amp;quot; to your mytrain.nfo file. While they may look like comments, they are actually important.&lt;br /&gt;
&lt;br /&gt;
In the next step, find the lines beginning with the sprite numbers you&#039;re written down in the previous step. In the example above, we&#039;d find the lines with numbers 2941 to 2948. Copy those eight (or however many) lines to your mytrain.nfo file as well.&lt;br /&gt;
&lt;br /&gt;
==4. Encode and decode again your own file==&lt;br /&gt;
&lt;br /&gt;
Now we want to make our own .grf file. Unfortunately, grfcodec is a bit picky and will complain loudly if your lines are not numbered properly. To make grfcodec shut up, you have to go through your .nfo file, and change the numbers at the beginning of the lines to go from 0 to 7 (nforenum can do that for you).&lt;br /&gt;
&lt;br /&gt;
At this point, your .nfo file should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Automatically generated by GRFCODEC. Do not modify!&lt;br /&gt;
// (Info version 6)&lt;br /&gt;
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel&lt;br /&gt;
 0 C:\TTD\SPRITES\trg1.pcx 530 10664 01 18 8 -3 -10&lt;br /&gt;
 1 C:\TTD\SPRITES\trg1.pcx 546 10664 09 15 20 -14 -6&lt;br /&gt;
 2 C:\TTD\SPRITES\trg1.pcx 578 10664 01 12 28 -14 -6&lt;br /&gt;
 3 C:\TTD\SPRITES\trg1.pcx 626 10664 09 16 20 -4 -8&lt;br /&gt;
 4 C:\TTD\SPRITES\trg1.pcx 658 10664 01 18 8 -3 -10&lt;br /&gt;
 5 C:\TTD\SPRITES\trg1.pcx 674 10664 09 16 20 -14 -7&lt;br /&gt;
 6 C:\TTD\SPRITES\trg1.pcx 706 10664 01 12 28 -14 -6&lt;br /&gt;
 7 C:\TTD\SPRITES\trg1.pcx 754 10664 09 15 20 -4 -7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run grfcodec again, first to encode and then to decode your file. This creates mytrain.pcx and changes your .nfo to refer to that copy of the sprites:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;grfcodec -e mytrain.grf&lt;br /&gt;
grfcodec -d mytrain.grf -p 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leave off the &amp;quot;-p 2&amp;quot; if you&#039;re working with the DOS graphics instead of the Windows graphics.&lt;br /&gt;
&lt;br /&gt;
==Good job!==&lt;br /&gt;
&lt;br /&gt;
Now you have your own mytrain.grf file with the corresponding mytrain.nfo and mytrain.pcx files. We&#039;ll use this as a base for making these graphics TTDPatch compatible.&lt;br /&gt;
&lt;br /&gt;
Note that you can&#039;t yet take your mytrain.grf file and put it in TTDPatch&#039;s newgrfw.cfg file yet, because it doesn&#039;t have the necessary information to allow TTDPatch to know what to do with it.&lt;br /&gt;
&lt;br /&gt;
However, you can go ahead and edit the graphics in mytrain.pcx to your liking and make them look like your train.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;re ready, go on to the [[TheFirstVehicle|next section]].&lt;br /&gt;
[[Category:Tutorials]][[Category:GRF Tutorial]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Starting_an_NML_file&amp;diff=9162</id>
		<title>NMLTutorial/Starting an NML file</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Starting_an_NML_file&amp;diff=9162"/>
		<updated>2015-02-04T22:12:53Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: NML doesn&amp;#039;t work with TTDP anyway&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
It&#039;s time to create your first NML file! All this reading must have made you hungry by now, so let&#039;s continue right quick.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Where to put the NML file ==&lt;br /&gt;
&lt;br /&gt;
From the [[NMLTutorial/Language files|Language files]] section you may remember this folder structure:&lt;br /&gt;
&lt;br /&gt;
 mygrf&lt;br /&gt;
  |- lang&lt;br /&gt;
  |   |- english.lng&lt;br /&gt;
  |   |- other_language.lng&lt;br /&gt;
  |- custom_tags.txt&lt;br /&gt;
  |- mygrf.nml&lt;br /&gt;
&lt;br /&gt;
This is exactly where the NML file should go: one folder above the language files, and in the same folder as custom_tags.txt. You can name the file any way you want, but try to avoid spaces. Create it either from the file explorer or from your text editor.&lt;br /&gt;
&lt;br /&gt;
== The grf block ==&lt;br /&gt;
Nearly all NML files will start with a grf block. The grf block takes no parameters and is one of the simplest blocks there is. Your NML file also has no more than one grf block. NML files without a grf block are only useful for &#039;&#039;base graphic&#039;&#039; files such as the grf files from OpenGFX. So chances are that you need a grf block.&lt;br /&gt;
&lt;br /&gt;
The general syntax of the grf block is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;pseudo&amp;quot;&amp;gt;&lt;br /&gt;
grf {&lt;br /&gt;
	grfid: &amp;lt;literal-string&amp;gt;;&lt;br /&gt;
	name: &amp;lt;string&amp;gt;;&lt;br /&gt;
	desc: &amp;lt;string&amp;gt;;&lt;br /&gt;
	version: &amp;lt;expression&amp;gt;;&lt;br /&gt;
	min_compatible_version: &amp;lt;expression&amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;ll be looking at every line of this grf block and give you an example how to fill it in.&lt;br /&gt;
&lt;br /&gt;
=== Line 1: grf { ===&lt;br /&gt;
This indicates the start of the grf block and the &#039;&#039;opening curly bracket&#039;&#039; defines the start of it&#039;s contents. Just type it in your editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
grf {&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 2: grfid: &amp;lt;literal-string&amp;gt;; ===&lt;br /&gt;
This defines the GRFID of your NewGRF. A GRFID is a four-byte string that should be unique. If two NewGRFs have the same GRFID, only one can be used at a time and in OpenTTD chances are only one shows up in the NewGRF list. It&#039;s a convention to use the first two bytes for the creator&#039;s initials. The last two bytes should be numbers, typically the first number identifying which of the author&#039;s sets this is, and the second number being a version number.&lt;br /&gt;
&lt;br /&gt;
The GRFID must be written as a quoted string, but now comes the complicated part: one character is one byte, but one byte is two hexadecimal characters. The first two bytes are best written as a normal quoted string. The last two are best written as escaped bytes, as this allows for 256 sets/versions rather than just 10.&lt;br /&gt;
&lt;br /&gt;
So if your name is Simon Foster and you&#039;re starting the first version of your first set, your GRFID can be &amp;lt;code&amp;gt;&amp;quot;SF\01\01&amp;quot;&amp;lt;/code&amp;gt;. This way, your GRFID is exactly four bytes: two normal characters S and F, and two escaped bytes 01. The backslash indicates that the next two characters together make one byte. When using escaped bytes, remember that they are in hex and as such can only consist the numbers 0-9 and letters A-F. See [http://en.wikipedia.org/wiki/Hexadecimal Wikipedia] for more details on the hexadecimal numeral system.&lt;br /&gt;
&lt;br /&gt;
Now your second line of the nml file will be (but then with your own GRFID):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	grfid: &amp;quot;SF\01\01&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 3: name: &amp;lt;string&amp;gt;; ===&lt;br /&gt;
This is the name of your NewGRF, as displayed ingame. NML expects a reference to a string in your language file here. Luckily, we [[NMLTutorial/Language files|already]] put a name for our NewGRF in there. Open the language file and check what name you attached to the string. In our example that would be &amp;lt;code&amp;gt;STR_GRF_NAME&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To tell NML to use a string from the language file, you have to use the function &amp;lt;code&amp;gt;string(&amp;lt;string-name&amp;gt;)&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;&amp;lt;string-name&amp;gt;&amp;lt;/code&amp;gt; with the actual name of the string. This gives us &amp;lt;code&amp;gt;string(STR_GRF_NAME)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Put this in the third line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	name: string(STR_GRF_NAME);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 4: desc: &amp;lt;string&amp;gt;; ===&lt;br /&gt;
The description is similar to the name of the NewGRF. Again look up the name of the string in the language file and use the &amp;lt;code&amp;gt;string()&amp;lt;/code&amp;gt; function to put it in the grf block. Line four:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	desc: string(STR_GRF_DESCRIPTION);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 5: version: &amp;lt;expression&amp;gt;; ===&lt;br /&gt;
Another version? Yes. If your NewGRF is aimed at (but not limited to) OpenTTD you should use this to indicate the actual version and leave the GRFID constant. If your NewGRF is aimed at (but not limited to) TTDPatch you still should provide this version number, but &#039;&#039;bump the GRFID&#039;&#039; whenever a new release is not compatible with the previous release. More on this at the end of this page.&lt;br /&gt;
&lt;br /&gt;
The first release of your NewGRF will start with version 0 and every subsequent release you will increase this value. In case you use a version control system, set this to the revision number.&lt;br /&gt;
&lt;br /&gt;
This gives line five:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	version: 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 6: min_compatible_version: &amp;lt;expression&amp;gt;; ===&lt;br /&gt;
For the first release, the minimal compatible version is also 0. Leave it at 0 for as long as subsequent releases are compatible with all previous releases. Whenever you need to break compatibility, you set this to the version number (from above) in which you have broken the compatibility.&lt;br /&gt;
&lt;br /&gt;
Line six:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	min_compatible_version: 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Line 7: } ===&lt;br /&gt;
The &#039;&#039;closing curly bracket&#039;&#039; defines the end of the grf block; it closes it if you will.&lt;br /&gt;
&lt;br /&gt;
Just type a curly bracket on line seven:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summarizing ==&lt;br /&gt;
Already? You haven&#039;t told us about the semicolons at the end of each line in the grf block!&lt;br /&gt;
&lt;br /&gt;
I haven&#039;t? Well, let&#039;s do that now then...&lt;br /&gt;
&lt;br /&gt;
=== Semicolons ===&lt;br /&gt;
Like in a lot of other programming languages, a semicolon defines the end of an instruction. You must use these at the end of every instruction inside and outside a block, but not on lines that open or close a block (with a curly bracket).&lt;br /&gt;
&lt;br /&gt;
The usage of semicolons in NML is identical (with the exception of templates) to that in Java or C-family (or PHP) languages. It allows to have multiple instructions on one line, which is useful in some cases.&lt;br /&gt;
&lt;br /&gt;
=== Summarizing ===&lt;br /&gt;
This completes our grf block. All lines together, the example looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
grf {&lt;br /&gt;
	grfid: &amp;quot;SF\01\01&amp;quot;;&lt;br /&gt;
	name: string(STR_GRF_NAME);&lt;br /&gt;
	desc: string(STR_GRF_DESCRIPTION);&lt;br /&gt;
	version: 0;&lt;br /&gt;
	min_compatible_version: 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you like, you can encode this into a grf to see if it works. The grf will not do anything, but it should show up in the game if you add it.&lt;br /&gt;
&lt;br /&gt;
You still remember how to use &#039;&#039;nmlc&#039; on the command line, right? If not, check the [[NMLTutorial/Installation|Installation page]] with the details for your operating system, or maybe the following pointer is enough to get you going:&lt;br /&gt;
&lt;br /&gt;
 nmlc --grf mygrf.grf mygrf.nml&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar|NML Syntax|Road vehicle}} &amp;lt;!-- this is here a second time because not everybody may need to read the following section --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Breaking compatibility ==&lt;br /&gt;
Sometimes it happens that you have to break compatibility between different releases of your NewGRF. The NML Documentation has a separate chapter on [http://newgrf-specs.tt-wiki.net/wiki/NML:NewGRF_compatibility NewGRF compatibility] and what actions break compatibility and how to avoid breaking it in the first place.&lt;br /&gt;
&lt;br /&gt;
However, if you must break compatibility, here&#039;s how to handle the version information in your NML file:&lt;br /&gt;
&lt;br /&gt;
* Keep the GRFID you have;&lt;br /&gt;
* Don&#039;t forget to update &amp;lt;code&amp;gt;grf { version }&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Set &amp;lt;code&amp;gt;grf { min_compatible_version }&amp;lt;/code&amp;gt; to the value of &amp;lt;code&amp;gt;grf { version }&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This way, OpenTTD will hide the old release from the NewGRF window while keeping it available for older savegames to use (provided the user doesn&#039;t delete the old release). Old releases can still be downloaded from BaNaNaS for old savegames.&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar|NML Syntax|Road vehicle}}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=File:0913POTM_pm.jpg&amp;diff=8922</id>
		<title>File:0913POTM pm.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=File:0913POTM_pm.jpg&amp;diff=8922"/>
		<updated>2013-09-20T18:17:43Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: amend description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;industrial: abandoned production site of rocket engines in the former forced labour camp &amp;quot;Mittelbau Dora&amp;quot;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=File:0913POTM_pm.jpg&amp;diff=8921</id>
		<title>File:0913POTM pm.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=File:0913POTM_pm.jpg&amp;diff=8921"/>
		<updated>2013-09-20T16:16:51Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: industrial: abandoned production site of rocket engines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;industrial: abandoned production site of rocket engines&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=POTM_September_2013&amp;diff=8920</id>
		<title>POTM September 2013</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=POTM_September_2013&amp;diff=8920"/>
		<updated>2013-09-20T16:09:01Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Entries */ add entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The September 2013 [[Photo of the Month]] competition is now open.&lt;br /&gt;
* [http://www.tt-forums.net/viewtopic.php?f=49&amp;amp;t=68626 Entries topic] &lt;br /&gt;
* [http://www.tt-forums.net/viewtopic.php?f=49&amp;amp;t=68626 Voting topic (Not yet available)]&lt;br /&gt;
&lt;br /&gt;
The theme for this month is &#039;&#039;&#039;Industrial&#039;&#039;&#039; - Set by last months winner, vear.&lt;br /&gt;
&lt;br /&gt;
=== Winner ===&lt;br /&gt;
&lt;br /&gt;
The winner of the August Photo of the Month competition was: TBA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entries ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:0913POTM_pm.jpg|planetmaker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voting results ===&lt;br /&gt;
&lt;br /&gt;
Not yet available.&lt;br /&gt;
&lt;br /&gt;
=== External links ===&lt;br /&gt;
* [http://www.tt-forums.net/viewtopic.php?f=49&amp;amp;t=68626 Entries topic] &lt;br /&gt;
* [http://www.tt-forums.net/viewtopic.php?f=49&amp;amp;t=68626 Voting topic (Not yet available)]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NFOTutorial&amp;diff=8856</id>
		<title>NFOTutorial</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NFOTutorial&amp;diff=8856"/>
		<updated>2013-07-10T16:57:09Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* NFO tutorial */ add station&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NFOTutorial}}&lt;br /&gt;
&lt;br /&gt;
This section collects tutorials targeting at creating NewGRFs for TTDPatch and OpenTTD using the NFO language.&lt;br /&gt;
&lt;br /&gt;
For authors: please write these in order and always explain changes from one step/page to the next. Also ideally each topic would have a downloadable demo file that shows these steps &amp;quot;in action&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== NFO tutorial ==&lt;br /&gt;
This will be a step-by-step guide that teaches how to make new graphics sets using NFO, from the first simple train engine to the most sophisticated train sets with liveries that change in time and special effects such as wagon backlights. How to draw graphics is covered in the [[GraphicsTutorial]].&lt;br /&gt;
&lt;br /&gt;
While the tutorial will be mostly covering train vehicles, all the steps apply to other vehicle types as well, although with slight (but obvious) changes.&lt;br /&gt;
&lt;br /&gt;
Some pages may have sections labelled &amp;quot;advanced concepts&amp;quot;, in which the more advanced uses of certain features are explained. You should perhaps not try to understand these at the first reading, but keep them in mind and come back later if you&#039;re ready for a little more sophisticated graphics.&lt;br /&gt;
&lt;br /&gt;
* [[Preliminaries]] - What you need to know and do when making new graphics&lt;br /&gt;
* [[NFOFoundations]] - How to get started on .nfo editing&lt;br /&gt;
* [[TheFirstVehicle]] - Getting your first vehicle into the game&lt;br /&gt;
* [[SelectiveGrfLoading]] - Selectively loading GRF files&lt;br /&gt;
* [[VariableVehicleID]] - How to implement grfs with variable vehicle IDs&lt;br /&gt;
* [[CallbacksTut]] - Tutorial on using callbacks&lt;br /&gt;
* [[GeneralNfoStrategy]] - General strategy for writing NFO files&lt;br /&gt;
* [[SampleNfoFile]] - A simple NFO file&lt;br /&gt;
* [[SimpleNFOStation]] - A simple NFO station&lt;br /&gt;
* [[PoweredWagons]] - How to make trains which have powered wagons&lt;br /&gt;
&lt;br /&gt;
== Unfinished Tutorials ==&lt;br /&gt;
* [[TestingChanges]] - How to test changes you make to your graphics files&lt;br /&gt;
* [[SettingSpeedEtc]] - How to set speed and other properties of your vehicle&lt;br /&gt;
* [[NamingYourVehicle]] - How to give your new vehicle a name&lt;br /&gt;
* [[EnsuringCompatibility]] - How to make your file compatible with others&lt;br /&gt;
* [[ShowingLoadingStates]] - How to show gradual loading effects&lt;br /&gt;
* [[DifferentCargoTypes]] - How to have your wagon show different cargo types&lt;br /&gt;
* [[WagonOverride]] - How to make train sets with matching wagons&lt;br /&gt;
* [[LiveryChanges]] - How to have your vehicle&#039;s graphics change with time or other factors&lt;br /&gt;
* [[RandomLivery]] - How to get random livery&lt;br /&gt;
* [[SpecialEffects]] - Various special effects you can use for new graphics&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
Here tutorials on coding NFO are listed.&lt;br /&gt;
&lt;br /&gt;
=== GRFMaker ===&lt;br /&gt;
GRFMaker is a tool that provides a graphical user interface for coding NewGRFs in NFO. You still need to be able to understand the concepts of NFO to be able to use it.&lt;br /&gt;
&lt;br /&gt;
* [[UsingGRFMaker]] - Information about how to use GRFMaker&lt;br /&gt;
&lt;br /&gt;
=== Lakie&#039;s tutorials ===&lt;br /&gt;
These are tutorials that Lakie from [http://www.tt-forums.net/ TT-Forums] wrote, these are on his website for the moment.&lt;br /&gt;
&lt;br /&gt;
Please note these are being worked on, and are not fully complete.&lt;br /&gt;
&lt;br /&gt;
* [http://users2.tt-forums.net/lakie/NfoCoding.php?id=1 Train Refitting - The Basics]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8817</id>
		<title>GraphicsTemplates</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8817"/>
		<updated>2013-06-11T13:13:36Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Infrastructure */ Add description of template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall just provide a list of templates for easy use and to avoid re-doing the alignment task&lt;br /&gt;
&lt;br /&gt;
== Landscape ==&lt;br /&gt;
=== Ground tiles ===&lt;br /&gt;
[[File:ground_tiles.png]]&lt;br /&gt;
Normal terrain has 19 different slopes as in the order in the image above. Shown are the grid lines which are part of each ground tile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_groundsprites(x, y) {&lt;br /&gt;
    [   0+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [  80+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 160+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 240+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 320+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 398+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 478+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 558+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 638+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 718+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 798+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [ 878+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
&lt;br /&gt;
    [ 958+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1038+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1118+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1196+x,   y, 64, 47, -31,-16 ]&lt;br /&gt;
&lt;br /&gt;
    [1276+x,   y, 64, 15, -31,  0 ]&lt;br /&gt;
    [1356+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1436+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four additional flat rough tiles. They need to be inserted after the usual 19 rough tiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_rough(x, y) {&lt;br /&gt;
    tmpl_level_ground(    x, y)&lt;br /&gt;
    tmpl_level_ground( 80+x, y)&lt;br /&gt;
    tmpl_level_ground(160+x, y)&lt;br /&gt;
    tmpl_level_ground(240+x, y)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template tmpl_additional_rough(x, y) {&lt;br /&gt;
	tmpl_rough(1510+x, y)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
Roads and (default) tracks share a common layout to ease drawing of level crossings and avoid much copy &amp;amp; paste of the underlaying ground tiles, best done by using a layered graphics file.&lt;br /&gt;
=== Roads ===&lt;br /&gt;
Not all tiles are covered by road. The tiles without road can be savely ignored when only adressing roads.&lt;br /&gt;
[[File:template_roads.png]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_level_ground(x, y) { [ x, y, 64, 31, -31,  0 ] }&lt;br /&gt;
template tmpl_short_slope(x, y)  { [ x, y, 64, 23, -31,  0 ] }&lt;br /&gt;
template tmpl_long_slope(x, y)   { [ x, y, 64, 39, -31, -8 ] }&lt;br /&gt;
&lt;br /&gt;
template tmpl_infrastructure_road() {&lt;br /&gt;
    /* Level road tiles */&lt;br /&gt;
    tmpl_level_ground( 82, 40)&lt;br /&gt;
    tmpl_level_ground(162, 40)&lt;br /&gt;
    tmpl_level_ground(242, 40)&lt;br /&gt;
    tmpl_level_ground(322, 40)&lt;br /&gt;
    tmpl_level_ground(402, 40)&lt;br /&gt;
    tmpl_level_ground(482, 40)&lt;br /&gt;
    tmpl_level_ground(562, 40)&lt;br /&gt;
    tmpl_level_ground(642, 40)&lt;br /&gt;
    tmpl_level_ground(722, 40)&lt;br /&gt;
    tmpl_level_ground(  2, 88)&lt;br /&gt;
    tmpl_level_ground( 82, 88)&lt;br /&gt;
&lt;br /&gt;
    /* slopes */&lt;br /&gt;
    tmpl_long_slope (  82, 152)&lt;br /&gt;
    tmpl_short_slope( 162, 152)&lt;br /&gt;
    tmpl_short_slope( 242, 152)&lt;br /&gt;
    tmpl_long_slope ( 322, 152)&lt;br /&gt;
&lt;br /&gt;
    /* Half road tiles */&lt;br /&gt;
    tmpl_level_ground(402, 152)&lt;br /&gt;
    tmpl_level_ground(482, 152)&lt;br /&gt;
    tmpl_level_ground(562, 152)&lt;br /&gt;
    tmpl_level_ground(642, 152)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=File:Template_roads.png&amp;diff=8816</id>
		<title>File:Template roads.png</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=File:Template_roads.png&amp;diff=8816"/>
		<updated>2013-06-11T13:10:36Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8815</id>
		<title>GraphicsTemplates</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8815"/>
		<updated>2013-06-11T13:10:10Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Add templates for roads&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall just provide a list of templates for easy use and to avoid re-doing the alignment task&lt;br /&gt;
&lt;br /&gt;
== Landscape ==&lt;br /&gt;
=== Ground tiles ===&lt;br /&gt;
[[File:ground_tiles.png]]&lt;br /&gt;
Normal terrain has 19 different slopes as in the order in the image above. Shown are the grid lines which are part of each ground tile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_groundsprites(x, y) {&lt;br /&gt;
    [   0+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [  80+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 160+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 240+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 320+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 398+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 478+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 558+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 638+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 718+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 798+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [ 878+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
&lt;br /&gt;
    [ 958+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1038+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1118+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1196+x,   y, 64, 47, -31,-16 ]&lt;br /&gt;
&lt;br /&gt;
    [1276+x,   y, 64, 15, -31,  0 ]&lt;br /&gt;
    [1356+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1436+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four additional flat rough tiles. They need to be inserted after the usual 19 rough tiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_rough(x, y) {&lt;br /&gt;
    tmpl_level_ground(    x, y)&lt;br /&gt;
    tmpl_level_ground( 80+x, y)&lt;br /&gt;
    tmpl_level_ground(160+x, y)&lt;br /&gt;
    tmpl_level_ground(240+x, y)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template tmpl_additional_rough(x, y) {&lt;br /&gt;
	tmpl_rough(1510+x, y)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
=== Roads ===&lt;br /&gt;
[[File:template_roads.png]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_level_ground(x, y) { [ x, y, 64, 31, -31,  0 ] }&lt;br /&gt;
template tmpl_short_slope(x, y)  { [ x, y, 64, 23, -31,  0 ] }&lt;br /&gt;
template tmpl_long_slope(x, y)   { [ x, y, 64, 39, -31, -8 ] }&lt;br /&gt;
&lt;br /&gt;
template tmpl_infrastructure_road() {&lt;br /&gt;
    /* Level road tiles */&lt;br /&gt;
    tmpl_level_ground( 82, 40)&lt;br /&gt;
    tmpl_level_ground(162, 40)&lt;br /&gt;
    tmpl_level_ground(242, 40)&lt;br /&gt;
    tmpl_level_ground(322, 40)&lt;br /&gt;
    tmpl_level_ground(402, 40)&lt;br /&gt;
    tmpl_level_ground(482, 40)&lt;br /&gt;
    tmpl_level_ground(562, 40)&lt;br /&gt;
    tmpl_level_ground(642, 40)&lt;br /&gt;
    tmpl_level_ground(722, 40)&lt;br /&gt;
    tmpl_level_ground(  2, 88)&lt;br /&gt;
    tmpl_level_ground( 82, 88)&lt;br /&gt;
&lt;br /&gt;
    /* slopes */&lt;br /&gt;
    tmpl_long_slope (  82, 152)&lt;br /&gt;
    tmpl_short_slope( 162, 152)&lt;br /&gt;
    tmpl_short_slope( 242, 152)&lt;br /&gt;
    tmpl_long_slope ( 322, 152)&lt;br /&gt;
&lt;br /&gt;
    /* Half road tiles */&lt;br /&gt;
    tmpl_level_ground(402, 152)&lt;br /&gt;
    tmpl_level_ground(482, 152)&lt;br /&gt;
    tmpl_level_ground(562, 152)&lt;br /&gt;
    tmpl_level_ground(642, 152)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8814</id>
		<title>GraphicsTemplates</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8814"/>
		<updated>2013-06-11T12:28:07Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Ground tiles */ explain ground tile image a bit more&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall just provide a list of templates for easy use and to avoid re-doing the alignment task&lt;br /&gt;
&lt;br /&gt;
== Landscape ==&lt;br /&gt;
=== Ground tiles ===&lt;br /&gt;
[[File:ground_tiles.png]]&lt;br /&gt;
Normal terrain has 19 different slopes as in the order in the image above. Shown are the grid lines which are part of each ground tile.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_groundsprites(x, y) {&lt;br /&gt;
    [   0+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [  80+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 160+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 240+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 320+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 398+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 478+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 558+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 638+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 718+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 798+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [ 878+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
&lt;br /&gt;
    [ 958+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1038+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1118+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1196+x,   y, 64, 47, -31,-16 ]&lt;br /&gt;
&lt;br /&gt;
    [1276+x,   y, 64, 15, -31,  0 ]&lt;br /&gt;
    [1356+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1436+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four additional flat rough tiles. They need to be inserted after the usual 19 rough tiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_rough(x, y) {&lt;br /&gt;
    tmpl_level_ground(    x, y)&lt;br /&gt;
    tmpl_level_ground( 80+x, y)&lt;br /&gt;
    tmpl_level_ground(160+x, y)&lt;br /&gt;
    tmpl_level_ground(240+x, y)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template tmpl_additional_rough(x, y) {&lt;br /&gt;
	tmpl_rough(1510+x, y)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=File:Ground_tiles.png&amp;diff=8813</id>
		<title>File:Ground tiles.png</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=File:Ground_tiles.png&amp;diff=8813"/>
		<updated>2013-06-11T12:26:47Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Template for ground tiles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Template for ground tiles&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8812</id>
		<title>GraphicsTemplates</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=GraphicsTemplates&amp;diff=8812"/>
		<updated>2013-06-11T12:25:11Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Add template for plain ground tiles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall just provide a list of templates for easy use and to avoid re-doing the alignment task&lt;br /&gt;
&lt;br /&gt;
== Landscape ==&lt;br /&gt;
=== Ground tiles ===&lt;br /&gt;
[[File:ground_tiles.png]]&lt;br /&gt;
Normal terrain has 19 different slopes as in the order in the image above&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_groundsprites(x, y) {&lt;br /&gt;
    [   0+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [  80+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 160+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 240+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 320+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 398+x,   y, 64, 31, -31,  0 ]&lt;br /&gt;
    [ 478+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
    [ 558+x,   y, 64, 23, -31,  0 ]&lt;br /&gt;
&lt;br /&gt;
    [ 638+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 718+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [ 798+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [ 878+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
&lt;br /&gt;
    [ 958+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1038+x,   y, 64, 39, -31, -8 ]&lt;br /&gt;
    [1118+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1196+x,   y, 64, 47, -31,-16 ]&lt;br /&gt;
&lt;br /&gt;
    [1276+x,   y, 64, 15, -31,  0 ]&lt;br /&gt;
    [1356+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
    [1436+x,   y, 64, 31, -31, -8 ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four additional flat rough tiles. They need to be inserted after the usual 19 rough tiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template tmpl_rough(x, y) {&lt;br /&gt;
    tmpl_level_ground(    x, y)&lt;br /&gt;
    tmpl_level_ground( 80+x, y)&lt;br /&gt;
    tmpl_level_ground(160+x, y)&lt;br /&gt;
    tmpl_level_ground(240+x, y)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template tmpl_additional_rough(x, y) {&lt;br /&gt;
	tmpl_rough(1510+x, y)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=GraphicsTutorial&amp;diff=8811</id>
		<title>GraphicsTutorial</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=GraphicsTutorial&amp;diff=8811"/>
		<updated>2013-06-11T12:16:23Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Other */ Add link to template list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects several individually written tutorials about drawing 8bpp sprites for OpenTTD and TTDPatch. These graphics can then be coded using either [[NFOTutorial|NFO]] or [[NMLTutorial|NML]].&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[grfspecs:PalettesAndCoordinates|Palettes and Coordinates]] - How to work with palettes, and the 2D and 3D coordinates.&lt;br /&gt;
* [[Save paletted image files]] - How to save image files with the correct palette applied.&lt;br /&gt;
&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
* [[DrawingSprites]] - George&#039;s tutorial on how to draw road vehicles in his Long Vehicles scale.&lt;br /&gt;
* [http://users.tt-forums.net/purno/PDT/ Purno&#039;s Drawing Tutorial] - Purno&#039;s extensive tutorial on drawing train vehicles.&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* [[StationDrawingTutorial]] - How to draw new stations.&lt;br /&gt;
* [[GraphicsTemplates]] - List of example templates with alignment&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Object_slopes&amp;diff=8777</id>
		<title>NMLTutorial/Object slopes</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Object_slopes&amp;diff=8777"/>
		<updated>2013-05-24T13:17:11Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: off by one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&#039;&#039;The example used here is from the [http://dev.openttdcoop.org/projects/dutchroadfurniture/repository Dutch Road Furniture]. The original graphics for this are by FooBar. The code is by FooBar, based on code for the object example from the [http://dev.openttdcoop.org/projects/nml/repository/show/examples NML source] by planetmaker and Hirundo. Code and graphics are both licensed according to the GPL v2 or later. The code has been modified for the purpose of this tutorial.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This continues and concludes the [[NMLTutorial/Object graphics|second part]] of the object example. In this last part we&#039;ll make the object compatible with sloped terrain as well as snow and desert terrain. For this some recent features of OpenTTD will be used, which makes this last part of the example &#039;&#039;&#039;incompatible with OpenTTD earlier than 1.2.0 (r22723)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version check ==&lt;br /&gt;
As indicated, the particular code on this page only works on OpenTTD 1.2.0 (r22723) or higher. Therefore, we want to disable this NewGRF on older versions. This is done by comparing said version number with the &amp;lt;code&amp;gt;openttd_version&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:General#General_variables variable] in an &#039;&#039;if statement&#039;&#039;. To avoid having to write the version number in hex, we can use the &amp;lt;code&amp;gt;version_openttd()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function] and have NML do that for us. If the current game version is older than said version number generate a fatal [http://newgrf-specs.tt-wiki.net/wiki/NML:Error error] message, otherwise skip the error message and continue with the rest of the NewGRF:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
if (version_openttd(1,2,0,22723) &amp;gt; openttd_version) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_OPENTTD_VERSION));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the error message we set that it must be &amp;lt;code&amp;gt;FATAL&amp;lt;/code&amp;gt;, which means that an error message is issued and loading the NewGRF is aborted. As message we use the builtin string &amp;lt;code&amp;gt;REQUIRES_OPENTTD&amp;lt;/code&amp;gt; (automatically translated by the game). This default string must be supplied with the actual version number, provided via the custom string &amp;lt;code&amp;gt;string(STR_OPENTTD_VERSION)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Due to this custom string reference, we of course also must define it in the language file (it&#039;s sufficient to only have this in the default language file):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
STR_OPENTTD_VERSION :1.2.0 (r22723)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sloped ground sprites ==&lt;br /&gt;
So far our object can only show flat ground tiles. Now we could make a spritelayout for each different slope (19) and each different view of the object (4) which would give us 76 spritelayouts. Luckily, recent versions of OpenTTD allow us to use temporary variable storage to be used inside spritelayouts, which means we can write a small piece of NML code that makes the game calculate what ground sprite to use for a given slope.&lt;br /&gt;
&lt;br /&gt;
This calculation is done in a switch block, so we need to reference a different switch block from the graphics block. This new switch block in turn will reference the switch block we already have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
        default:            switch_fingerpost_3_object;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new switch block will make the calculation based on the &amp;lt;code&amp;gt;tile_slope&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] using the &amp;lt;code&amp;gt;slope_to_sprite_offset()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function]. This calculates how many sprites (the offset) after the flat ground sprite the sprite for the slope is located at. This is then stored in temporary storage register 0 using the &amp;lt;code&amp;gt;STORE_TEMP()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function].&lt;br /&gt;
&lt;br /&gt;
Because we don&#039;t actually need to make a decision in this switch (it&#039;s just used to store the slope sprite offset), we only have a default value inside this switch referencing the original switch block that selected the proper spritelayout block depending on the object view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, STORE_TEMP(slope_to_sprite_offset(tile_slope), 0)) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that we have the calculation, we must actually use it in the four spritelayout blocks for the ground sprite. This means that instead of only referencing the flat ground sprite, we must add the calculated slope sprite offset to this to actually get the sprite number for the slope we want:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: GROUNDSPRITE_NORMAL + LOAD_TEMP(0);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we take the sprite number of the flat ground sprite (&amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;) and add the calculated offset to this. We get this offset from the temporary storage using the &amp;lt;code&amp;gt;LOAD_TEMP()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function]. The argument &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; defines what storage register we want to get a value from. Because we stored in 0, we need to load from 0 as well.&lt;br /&gt;
&lt;br /&gt;
The ground sprite for the other spritelayouts is changed in the same way. We will not give you the other spritelayout blocks here, as they need to be changed once more.&lt;br /&gt;
&lt;br /&gt;
=== Purchase menu ===&lt;br /&gt;
Now we have a small problem with the purchase menu. The &amp;lt;code&amp;gt;tile_slope&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] isn&#039;t available there, so we cannot use the calculation for the purchase menu! This can be solved easily by not doing the calculation for the purchase menu and always have a sprite offset of 0 there (always giving the flat ground sprite). So for the purchase menu we just set the temporary storage value to 0.&lt;br /&gt;
&lt;br /&gt;
First reference the purchase callback from the graphics block and link to a switch block where we will set the temporary storage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
        purchase:           switch_fingerpost_3_purchase;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The switch block itself will only set temporary storage register 0 to a value of 0 and then immediately reference the switch block that makes the decision based on the object views:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, STORE_TEMP(0, 0)) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the purchase menu works again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Snow and desert tiles ==&lt;br /&gt;
Now our object works fine on slopes, but still shows a grass tile on snow and desert tiles. Not good! This is because we always use &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt; as a base for the ground sprite to draw, which is the grass tile in all climates.&lt;br /&gt;
&lt;br /&gt;
The solution here is to use the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] to check what terrain we&#039;re actually building on. Now you can again have a bunch of spritelayouts for each different terrain type, but also here we can use the temporary storage to save what terrain sprite to use and retrieve this again in the spritelayouts. Let&#039;s give that a go, shall we?&lt;br /&gt;
* For this we will use the second storage register (with index 1).&lt;br /&gt;
* The default case is the normal grounds sprite, so store that in the register: &amp;lt;code&amp;gt;STORE_TEMP(GROUNDSPRITE_NORMAL, 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In case of the tropic climate, we need to choose between grass and desert depending on the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; variable. If grass, use the storage we already had, otherwise change the storage: &amp;lt;code&amp;gt;STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1)&amp;lt;/code&amp;gt;. What this does is store in register 1: if the terrain is desert the sprite number of the desert flat ground sprite from &amp;lt;code&amp;gt;GROUNDSPRITE_DESERT&amp;lt;/code&amp;gt; and if the terrain is not desert what we already had in register 1.&lt;br /&gt;
* In case of the arctic climate, we need to choose between grass and snow depending on the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; variable. If grass, use the storage we already had, otherwise change the storage: &amp;lt;code&amp;gt;STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&amp;lt;/code&amp;gt;. What this does is store in register 1: if the terrain is snow the sprite number of the snow flat ground sprite from &amp;lt;code&amp;gt;GROUNDSPRITE_SNOW&amp;lt;/code&amp;gt; and if the terrain is not snow what we already had in register 1.&lt;br /&gt;
&lt;br /&gt;
These three expressions need to be put somewhere in our NML file. Each expression can go in a separate switch block all linked together, but luckily we may provide an array of expressions in a single switch block. This is done by separating each command by a comma and grouping them together between straight brackets. The decision of the switch block is based on the last expression in the chain (but that is in this case not important as we only have a default return for the switch block).&lt;br /&gt;
&lt;br /&gt;
Change the switch block we made earlier on this page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, [&lt;br /&gt;
        //tile slope offset in storage register 0&lt;br /&gt;
        STORE_TEMP(slope_to_sprite_offset(tile_slope), 0),&lt;br /&gt;
        //terrain type in storage register 1&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this new calculation to work, we must also change the spritelayout blocks. The choice of the flat ground sprite number is now stored in temporary storage register 1, so we must use this instead of the hardcoded &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;. Just replace &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt; for the ground sprite with &amp;lt;code&amp;gt;LOAD_TEMP(1)&amp;lt;/code&amp;gt; in all spritelayout blocks. If you haven&#039;t made the first change to all four spritelayout blocks, do that now all in one go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//south west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(1);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 12; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(2);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 0; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(3);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 0; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Purchase menu ===&lt;br /&gt;
Now we have again broken the purchase menu, because the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] is also not available there. This can be solved easily by again not doing the calculation for the purchase menu and always have the grass terrain sprite in the purchase menu. So for the purchase menu we just set the temporary storage register 1 value to &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This change is similar to the change of the other switch block we just did:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, [&lt;br /&gt;
        //use flat gound sprite for purchase menu&lt;br /&gt;
        STORE_TEMP(0, 0),&lt;br /&gt;
        //use normal terrain for purchase menu&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        ]) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So for the purchase menu we just use the flat sprite of the grass terrain. Now the purchase menu works again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this the end of the object example is reached. You can now encode this as a NewGRF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The complete code ==&lt;br /&gt;
If you put everything in the correct order, this will be the complete NML file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example small&amp;quot;&amp;gt;&lt;br /&gt;
// define the newgrf&lt;br /&gt;
grf {&lt;br /&gt;
    grfid:                  &amp;quot;\FB\FB\05\01&amp;quot;;&lt;br /&gt;
    name:                   string(STR_GRF_NAME);&lt;br /&gt;
    desc:                   string(STR_GRF_DESCRIPTION);&lt;br /&gt;
    version:                0;&lt;br /&gt;
    min_compatible_version: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//check OpenTTD version&lt;br /&gt;
//parameterized spritelayout is only supported since OpenTTD 1.2.0 r22723&lt;br /&gt;
if (version_openttd(1,2,0,22723) &amp;gt; openttd_version) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_OPENTTD_VERSION));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//templates&lt;br /&gt;
template template_fingerpost(x,y,filename) {&lt;br /&gt;
    [x,     y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+30,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+60,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+90,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//spriteset with four directions&lt;br /&gt;
spriteset (spriteset_fingerpost_3) {&lt;br /&gt;
    template_fingerpost(0,0,&amp;quot;gfx/dutch_fingerpost.png&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* spritelayouts */&lt;br /&gt;
&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//south west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(1);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 12; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(2);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 0; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(3);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 0; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//decide spritelayout for each of the 4 views&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_view, view) {&lt;br /&gt;
    1:  spritelayout_fingerpost_3_SW;&lt;br /&gt;
    2:  spritelayout_fingerpost_3_NW;&lt;br /&gt;
    3:  spritelayout_fingerpost_3_NE;&lt;br /&gt;
    spritelayout_fingerpost_3_SE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//calculate ground sprite for object&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, [&lt;br /&gt;
        //tile slope offset in storage register 0&lt;br /&gt;
        STORE_TEMP(slope_to_sprite_offset(tile_slope), 0),&lt;br /&gt;
        //terrain type in storage register 1&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//calculate ground sprite for purchase menu&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, [&lt;br /&gt;
        //use flat gound sprite for purchase menu&lt;br /&gt;
        STORE_TEMP(0, 0),&lt;br /&gt;
        //use normal terrain for purchase menu&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
item (FEAT_OBJECTS, item_fingerpost_3) {&lt;br /&gt;
    property {&lt;br /&gt;
        class:                  &amp;quot;NLRF&amp;quot;;&lt;br /&gt;
        classname:              string(STR_NLRF);&lt;br /&gt;
        name:                   string(STR_FINGERPOST_3);&lt;br /&gt;
        climates_available:     ALL_CLIMATES;&lt;br /&gt;
        size:                   [1,1];&lt;br /&gt;
        build_cost_multiplier:  2;&lt;br /&gt;
        remove_cost_multiplier: 8;&lt;br /&gt;
        introduction_date:      date(1961,1,1);&lt;br /&gt;
        end_of_life_date:       0xFFFFFFFF;&lt;br /&gt;
        object_flags:           bitmask(OBJ_FLAG_REMOVE_IS_INCOME, OBJ_FLAG_NO_FOUNDATIONS, OBJ_FLAG_ALLOW_BRIDGE);&lt;br /&gt;
        height:                 2;&lt;br /&gt;
        num_views:              4;&lt;br /&gt;
    }&lt;br /&gt;
    graphics {&lt;br /&gt;
        default:            switch_fingerpost_3_object;&lt;br /&gt;
        purchase:           switch_fingerpost_3_purchase;&lt;br /&gt;
        autoslope:          return(CB_RESULT_AUTOSLOPE);&lt;br /&gt;
        additional_text:    string(STR_FINGERPOST_3_PURCHASE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language file will now contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example small&amp;quot;&amp;gt;&lt;br /&gt;
##grflangid 0x01&lt;br /&gt;
&lt;br /&gt;
#Main grf title and description&lt;br /&gt;
STR_GRF_NAME        :{TITLE}&lt;br /&gt;
STR_GRF_DESCRIPTION :Description: {SILVER}Dutch Road Furniture is an eyecandy object NewGRF that features road furniture that can be found alongside Dutch roads. {}(c)2011 FooBar. {}{BLACK}License: {SILVER}GPLv2 or higher.&lt;br /&gt;
&lt;br /&gt;
#error messages&lt;br /&gt;
STR_OPENTTD_VERSION :1.2.0 (r22723)&lt;br /&gt;
&lt;br /&gt;
#object classes&lt;br /&gt;
STR_NLRF            :Dutch Road Furniture&lt;br /&gt;
&lt;br /&gt;
#object name and description&lt;br /&gt;
STR_FINGERPOST_3            :Dutch Fingerpost three-way&lt;br /&gt;
STR_FINGERPOST_3_PURCHASE   :The three-way fingerpost is centered at one side of the tile and facing outward. Intended to be placed directly opposite of the secondary road at a three-way junction.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next part of the tutorial will teach you some things about adding 32 bit sprites to your NewGRFs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar|Version check|32 bit sprites}}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Object_slopes&amp;diff=8776</id>
		<title>NMLTutorial/Object slopes</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Object_slopes&amp;diff=8776"/>
		<updated>2013-05-24T13:16:02Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: simplify some wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&#039;&#039;The example used here is from the [http://dev.openttdcoop.org/projects/dutchroadfurniture/repository Dutch Road Furniture]. The original graphics for this are by FooBar. The code is by FooBar, based on code for the object example from the [http://dev.openttdcoop.org/projects/nml/repository/show/examples NML source] by planetmaker and Hirundo. Code and graphics are both licensed according to the GPL v2 or later. The code has been modified for the purpose of this tutorial.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This continues and concludes the [[NMLTutorial/Object graphics|second part]] of the object example. In this last part we&#039;ll make the object compatible with sloped terrain as well as snow and desert terrain. For this some recent features of OpenTTD will be used, which makes this last part of the example &#039;&#039;&#039;incompatible with OpenTTD 1.2.0 (r22723) or earlier&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version check ==&lt;br /&gt;
As indicated, the particular code on this page only works on OpenTTD 1.2.0 (r22723) or higher. Therefore, we want to disable this NewGRF on older versions. This is done by comparing said version number with the &amp;lt;code&amp;gt;openttd_version&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:General#General_variables variable] in an &#039;&#039;if statement&#039;&#039;. To avoid having to write the version number in hex, we can use the &amp;lt;code&amp;gt;version_openttd()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function] and have NML do that for us. If the current game version is older than said version number generate a fatal [http://newgrf-specs.tt-wiki.net/wiki/NML:Error error] message, otherwise skip the error message and continue with the rest of the NewGRF:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
if (version_openttd(1,2,0,22723) &amp;gt; openttd_version) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_OPENTTD_VERSION));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the error message we set that it must be &amp;lt;code&amp;gt;FATAL&amp;lt;/code&amp;gt;, which means that an error message is issued and loading the NewGRF is aborted. As message we use the builtin string &amp;lt;code&amp;gt;REQUIRES_OPENTTD&amp;lt;/code&amp;gt; (automatically translated by the game). This default string must be supplied with the actual version number, provided via the custom string &amp;lt;code&amp;gt;string(STR_OPENTTD_VERSION)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Due to this custom string reference, we of course also must define it in the language file (it&#039;s sufficient to only have this in the default language file):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
STR_OPENTTD_VERSION :1.2.0 (r22723)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sloped ground sprites ==&lt;br /&gt;
So far our object can only show flat ground tiles. Now we could make a spritelayout for each different slope (19) and each different view of the object (4) which would give us 76 spritelayouts. Luckily, recent versions of OpenTTD allow us to use temporary variable storage to be used inside spritelayouts, which means we can write a small piece of NML code that makes the game calculate what ground sprite to use for a given slope.&lt;br /&gt;
&lt;br /&gt;
This calculation is done in a switch block, so we need to reference a different switch block from the graphics block. This new switch block in turn will reference the switch block we already have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
        default:            switch_fingerpost_3_object;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new switch block will make the calculation based on the &amp;lt;code&amp;gt;tile_slope&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] using the &amp;lt;code&amp;gt;slope_to_sprite_offset()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function]. This calculates how many sprites (the offset) after the flat ground sprite the sprite for the slope is located at. This is then stored in temporary storage register 0 using the &amp;lt;code&amp;gt;STORE_TEMP()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function].&lt;br /&gt;
&lt;br /&gt;
Because we don&#039;t actually need to make a decision in this switch (it&#039;s just used to store the slope sprite offset), we only have a default value inside this switch referencing the original switch block that selected the proper spritelayout block depending on the object view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, STORE_TEMP(slope_to_sprite_offset(tile_slope), 0)) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that we have the calculation, we must actually use it in the four spritelayout blocks for the ground sprite. This means that instead of only referencing the flat ground sprite, we must add the calculated slope sprite offset to this to actually get the sprite number for the slope we want:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: GROUNDSPRITE_NORMAL + LOAD_TEMP(0);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we take the sprite number of the flat ground sprite (&amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;) and add the calculated offset to this. We get this offset from the temporary storage using the &amp;lt;code&amp;gt;LOAD_TEMP()&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function]. The argument &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; defines what storage register we want to get a value from. Because we stored in 0, we need to load from 0 as well.&lt;br /&gt;
&lt;br /&gt;
The ground sprite for the other spritelayouts is changed in the same way. We will not give you the other spritelayout blocks here, as they need to be changed once more.&lt;br /&gt;
&lt;br /&gt;
=== Purchase menu ===&lt;br /&gt;
Now we have a small problem with the purchase menu. The &amp;lt;code&amp;gt;tile_slope&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] isn&#039;t available there, so we cannot use the calculation for the purchase menu! This can be solved easily by not doing the calculation for the purchase menu and always have a sprite offset of 0 there (always giving the flat ground sprite). So for the purchase menu we just set the temporary storage value to 0.&lt;br /&gt;
&lt;br /&gt;
First reference the purchase callback from the graphics block and link to a switch block where we will set the temporary storage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
        purchase:           switch_fingerpost_3_purchase;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The switch block itself will only set temporary storage register 0 to a value of 0 and then immediately reference the switch block that makes the decision based on the object views:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, STORE_TEMP(0, 0)) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the purchase menu works again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Snow and desert tiles ==&lt;br /&gt;
Now our object works fine on slopes, but still shows a grass tile on snow and desert tiles. Not good! This is because we always use &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt; as a base for the ground sprite to draw, which is the grass tile in all climates.&lt;br /&gt;
&lt;br /&gt;
The solution here is to use the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] to check what terrain we&#039;re actually building on. Now you can again have a bunch of spritelayouts for each different terrain type, but also here we can use the temporary storage to save what terrain sprite to use and retrieve this again in the spritelayouts. Let&#039;s give that a go, shall we?&lt;br /&gt;
* For this we will use the second storage register (with index 1).&lt;br /&gt;
* The default case is the normal grounds sprite, so store that in the register: &amp;lt;code&amp;gt;STORE_TEMP(GROUNDSPRITE_NORMAL, 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In case of the tropic climate, we need to choose between grass and desert depending on the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; variable. If grass, use the storage we already had, otherwise change the storage: &amp;lt;code&amp;gt;STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1)&amp;lt;/code&amp;gt;. What this does is store in register 1: if the terrain is desert the sprite number of the desert flat ground sprite from &amp;lt;code&amp;gt;GROUNDSPRITE_DESERT&amp;lt;/code&amp;gt; and if the terrain is not desert what we already had in register 1.&lt;br /&gt;
* In case of the arctic climate, we need to choose between grass and snow depending on the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; variable. If grass, use the storage we already had, otherwise change the storage: &amp;lt;code&amp;gt;STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&amp;lt;/code&amp;gt;. What this does is store in register 1: if the terrain is snow the sprite number of the snow flat ground sprite from &amp;lt;code&amp;gt;GROUNDSPRITE_SNOW&amp;lt;/code&amp;gt; and if the terrain is not snow what we already had in register 1.&lt;br /&gt;
&lt;br /&gt;
These three expressions need to be put somewhere in our NML file. Each expression can go in a separate switch block all linked together, but luckily we may provide an array of expressions in a single switch block. This is done by separating each command by a comma and grouping them together between straight brackets. The decision of the switch block is based on the last expression in the chain (but that is in this case not important as we only have a default return for the switch block).&lt;br /&gt;
&lt;br /&gt;
Change the switch block we made earlier on this page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, [&lt;br /&gt;
        //tile slope offset in storage register 0&lt;br /&gt;
        STORE_TEMP(slope_to_sprite_offset(tile_slope), 0),&lt;br /&gt;
        //terrain type in storage register 1&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this new calculation to work, we must also change the spritelayout blocks. The choice of the flat ground sprite number is now stored in temporary storage register 1, so we must use this instead of the hardcoded &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;. Just replace &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt; for the ground sprite with &amp;lt;code&amp;gt;LOAD_TEMP(1)&amp;lt;/code&amp;gt; in all spritelayout blocks. If you haven&#039;t made the first change to all four spritelayout blocks, do that now all in one go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//south west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(1);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 12; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(2);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 0; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(3);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 0; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Purchase menu ===&lt;br /&gt;
Now we have again broken the purchase menu, because the &amp;lt;code&amp;gt;terrain_type&amp;lt;/code&amp;gt; [http://newgrf-specs.tt-wiki.net/wiki/NML:Objects#Object_variables object variable] is also not available there. This can be solved easily by again not doing the calculation for the purchase menu and always have the grass terrain sprite in the purchase menu. So for the purchase menu we just set the temporary storage register 1 value to &amp;lt;code&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This change is similar to the change of the other switch block we just did:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example&amp;quot;&amp;gt;&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, [&lt;br /&gt;
        //use flat gound sprite for purchase menu&lt;br /&gt;
        STORE_TEMP(0, 0),&lt;br /&gt;
        //use normal terrain for purchase menu&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        ]) {&lt;br /&gt;
	switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So for the purchase menu we just use the flat sprite of the grass terrain. Now the purchase menu works again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this the end of the object example is reached. You can now encode this as a NewGRF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The complete code ==&lt;br /&gt;
If you put everything in the correct order, this will be the complete NML file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example small&amp;quot;&amp;gt;&lt;br /&gt;
// define the newgrf&lt;br /&gt;
grf {&lt;br /&gt;
    grfid:                  &amp;quot;\FB\FB\05\01&amp;quot;;&lt;br /&gt;
    name:                   string(STR_GRF_NAME);&lt;br /&gt;
    desc:                   string(STR_GRF_DESCRIPTION);&lt;br /&gt;
    version:                0;&lt;br /&gt;
    min_compatible_version: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//check OpenTTD version&lt;br /&gt;
//parameterized spritelayout is only supported since OpenTTD 1.2.0 r22723&lt;br /&gt;
if (version_openttd(1,2,0,22723) &amp;gt; openttd_version) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_OPENTTD_VERSION));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//templates&lt;br /&gt;
template template_fingerpost(x,y,filename) {&lt;br /&gt;
    [x,     y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+30,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+60,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
    [x+90,  y,      20,     32,     -10,    -28,    filename]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//spriteset with four directions&lt;br /&gt;
spriteset (spriteset_fingerpost_3) {&lt;br /&gt;
    template_fingerpost(0,0,&amp;quot;gfx/dutch_fingerpost.png&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* spritelayouts */&lt;br /&gt;
&lt;br /&gt;
//south east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(0);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 12; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//south west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_SW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(1);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 12; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north west&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NW {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(2);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 6; //from NE edge&lt;br /&gt;
        yoffset: 0; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//north east&lt;br /&gt;
spritelayout spritelayout_fingerpost_3_NE {&lt;br /&gt;
    ground {&lt;br /&gt;
        sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
    }&lt;br /&gt;
    building {&lt;br /&gt;
        sprite: spriteset_fingerpost_3(3);&lt;br /&gt;
        xextent: 4;&lt;br /&gt;
        yextent: 4;&lt;br /&gt;
        zextent: 24;&lt;br /&gt;
        xoffset: 0; //from NE edge&lt;br /&gt;
        yoffset: 6; //from NW edge&lt;br /&gt;
        zoffset: 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//decide spritelayout for each of the 4 views&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_view, view) {&lt;br /&gt;
    1:  spritelayout_fingerpost_3_SW;&lt;br /&gt;
    2:  spritelayout_fingerpost_3_NW;&lt;br /&gt;
    3:  spritelayout_fingerpost_3_NE;&lt;br /&gt;
    spritelayout_fingerpost_3_SE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//calculate ground sprite for object&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_object, [&lt;br /&gt;
        //tile slope offset in storage register 0&lt;br /&gt;
        STORE_TEMP(slope_to_sprite_offset(tile_slope), 0),&lt;br /&gt;
        //terrain type in storage register 1&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_DESERT ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1),&lt;br /&gt;
        STORE_TEMP(terrain_type == TILETYPE_SNOW   ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1)&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//calculate ground sprite for purchase menu&lt;br /&gt;
switch (FEAT_OBJECTS, SELF, switch_fingerpost_3_purchase, [&lt;br /&gt;
        //use flat gound sprite for purchase menu&lt;br /&gt;
        STORE_TEMP(0, 0),&lt;br /&gt;
        //use normal terrain for purchase menu&lt;br /&gt;
        STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
        ]) {&lt;br /&gt;
    switch_fingerpost_3_view;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
item (FEAT_OBJECTS, item_fingerpost_3) {&lt;br /&gt;
    property {&lt;br /&gt;
        class:                  &amp;quot;NLRF&amp;quot;;&lt;br /&gt;
        classname:              string(STR_NLRF);&lt;br /&gt;
        name:                   string(STR_FINGERPOST_3);&lt;br /&gt;
        climates_available:     ALL_CLIMATES;&lt;br /&gt;
        size:                   [1,1];&lt;br /&gt;
        build_cost_multiplier:  2;&lt;br /&gt;
        remove_cost_multiplier: 8;&lt;br /&gt;
        introduction_date:      date(1961,1,1);&lt;br /&gt;
        end_of_life_date:       0xFFFFFFFF;&lt;br /&gt;
        object_flags:           bitmask(OBJ_FLAG_REMOVE_IS_INCOME, OBJ_FLAG_NO_FOUNDATIONS, OBJ_FLAG_ALLOW_BRIDGE);&lt;br /&gt;
        height:                 2;&lt;br /&gt;
        num_views:              4;&lt;br /&gt;
    }&lt;br /&gt;
    graphics {&lt;br /&gt;
        default:            switch_fingerpost_3_object;&lt;br /&gt;
        purchase:           switch_fingerpost_3_purchase;&lt;br /&gt;
        autoslope:          return(CB_RESULT_AUTOSLOPE);&lt;br /&gt;
        additional_text:    string(STR_FINGERPOST_3_PURCHASE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language file will now contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;example small&amp;quot;&amp;gt;&lt;br /&gt;
##grflangid 0x01&lt;br /&gt;
&lt;br /&gt;
#Main grf title and description&lt;br /&gt;
STR_GRF_NAME        :{TITLE}&lt;br /&gt;
STR_GRF_DESCRIPTION :Description: {SILVER}Dutch Road Furniture is an eyecandy object NewGRF that features road furniture that can be found alongside Dutch roads. {}(c)2011 FooBar. {}{BLACK}License: {SILVER}GPLv2 or higher.&lt;br /&gt;
&lt;br /&gt;
#error messages&lt;br /&gt;
STR_OPENTTD_VERSION :1.2.0 (r22723)&lt;br /&gt;
&lt;br /&gt;
#object classes&lt;br /&gt;
STR_NLRF            :Dutch Road Furniture&lt;br /&gt;
&lt;br /&gt;
#object name and description&lt;br /&gt;
STR_FINGERPOST_3            :Dutch Fingerpost three-way&lt;br /&gt;
STR_FINGERPOST_3_PURCHASE   :The three-way fingerpost is centered at one side of the tile and facing outward. Intended to be placed directly opposite of the secondary road at a three-way junction.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next part of the tutorial will teach you some things about adding 32 bit sprites to your NewGRFs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar|Version check|32 bit sprites}}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=8546</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=8546"/>
		<updated>2012-08-29T07:34:11Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add link to wiki page with NewGRF debugging tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Playing OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[PreSignalsTutorial]]: How to use pre-signals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coding NewGRFs for OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[NFOTutorial|NFO Tutorial]]: How to make NewGRFs using NFO (incomplete)&lt;br /&gt;
* [[NMLTutorial|NML Tutorial]]: How to make NewGRFs using the NewGRF Meta Language (NML)&lt;br /&gt;
* [http://www.tt-forums.net/viewtopic.php?f=26&amp;amp;t=62069 Station Tutorial]: Complete tutorial on station coding from scratch in NFO.&lt;br /&gt;
&lt;br /&gt;
* [[Releasing a NewGRF]]: How to release your NewGRF to the public once you made one.&lt;br /&gt;
&lt;br /&gt;
== General sprite drawing ==&lt;br /&gt;
&lt;br /&gt;
* [[GraphicsTutorial]]: How to draw new 8bpp graphics sprites&lt;br /&gt;
* [[Creating_new_Sprites_with_3dsMax|Using 3dsmax]]: Creating sprites using 3DSMax (aimed at Locomotion currently)&lt;br /&gt;
&lt;br /&gt;
== Debugging NewGRFs ==&lt;br /&gt;
* [http://wiki.openttd.org/NewGRF_Debugging| Debugging tools] in OpenTTD&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Preliminaries&amp;diff=8392</id>
		<title>Preliminaries</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Preliminaries&amp;diff=8392"/>
		<updated>2012-06-14T11:08:00Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: update link to grfcodec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NFOTutorial}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE TO AUTHORS&#039;&#039;&#039;: Read the LocalStyleGuide, otherwise the page may be rolled back to the last well-commented edit. (This applies everywhere, not just on the pages that mention it.)&lt;br /&gt;
&lt;br /&gt;
To write:&lt;br /&gt;
&lt;br /&gt;
* explain GRFCodec / GRFWizard&lt;br /&gt;
* explain hex codes: specific examples using Windows calculator, ideally with screenshots&lt;br /&gt;
* maybe: explain DOS/Windows version and how to convert between them&lt;br /&gt;
* other things?&lt;br /&gt;
&lt;br /&gt;
==What&#039;s a .GRF file?==&lt;br /&gt;
&lt;br /&gt;
As you probably already found out ttd can load new graphics files with help of the patch. These files have the extension .grf and are located in the newgrf folder.&lt;br /&gt;
&lt;br /&gt;
These .grf files are made by [http://dev.openttdcoop.org/projects/grfcodec GRFcodec], this program merges a [[DrawingSprites|.pcx]] file and a .nfo file. &amp;lt;span style=&#039;color:#808080&#039;&amp;gt;(links to george his tut now, but I think on top of that page should be an explanation about pcx files and their palette)&amp;lt;/span&amp;gt; In this tutorial we won&#039;t look at those 2 file types yet, at first we shall try to explain the basics.&lt;br /&gt;
&lt;br /&gt;
== The GRFCodec and the GRFWizard ==&lt;br /&gt;
&lt;br /&gt;
Like said before a .grf file is a file made by the GRFCodec. The codec is a package of 3 programs:&lt;br /&gt;
&lt;br /&gt;
# GRFCodec: Convert a GRF into an editable PCX file and vice versa&lt;br /&gt;
# GRFDiff: Compare two GRF files for differences, and write only the differences to a GRD file&lt;br /&gt;
# GRFMerge: Take a GRD file and merge it back into the GRF file&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will only use the first program, if you want more info about the other programs look [http://www.ttdpatch.net/grfcodec/grfcodec.html here].&lt;br /&gt;
&lt;br /&gt;
The GRFCodec is a command line program. This means it&#039;s option are only been set in the command line, there is no nice user interface. For the nice interface you can download the [http://www.divxland.org/ttd/ttdsolutions.htm GRFWizard] This program is really helpful. Be warned though for the GRFWizard to work you need the GRFCodec too.&lt;br /&gt;
&lt;br /&gt;
When you run the GRFWizard for the first time you have to point it to the codec, when you have done this everything is really straight forward, you can encode your homemade sprites (sprites are the little drawings that represent one side of a building/vehicle) or you can decode a grf from someone else.&lt;br /&gt;
&lt;br /&gt;
When you want to encode graphics you have to point the wizard which grf file you want to encode the 2nd step is to tell it in which you placed the NFO and PCX. All these file should have the same name.&lt;br /&gt;
&lt;br /&gt;
If you want to encode totally new graphics you have to make a &amp;quot;fake&amp;quot; grf. Just make a new txt file and rename it to the grf you want to encode.&lt;br /&gt;
&lt;br /&gt;
If you choose to decode a grf, the nfo and pcx will be extracted to a map called sprites in the in the folder where you placed the grfcodec in.&lt;br /&gt;
&lt;br /&gt;
==Hex==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unless noted clearly (yes, there are a very few exceptions), assume that all the code on these pages is in hex.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
hex &amp;lt;nowiki&amp;gt;[heks]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
# verb - to bewitch; practice witchcraft on&lt;br /&gt;
# adjective - of or pertaining to a numbering system that uses 16 as the radix, employing the numerals 0 through 9 and representing digits greater than 9 with the letters A through F.&lt;br /&gt;
# adjective - relating to or encoded in a hexadecimal system, esp. for use by a digital computer.&lt;br /&gt;
&lt;br /&gt;
The guts of your computer consist of a bunch of circuits connecting processor chips, memory chips and a bunch of other stuff.&lt;br /&gt;
&lt;br /&gt;
Each chip consists of a bunch of switches that are off (0) or on (1). A series of switches would look something like this: 1001 0001 1110 0101. This is called binary code. A program that you run on your PC reads and/or writes this code. Unless you are a computer genius, mathematician or a nerd, you would probably need definition 1 above to make this work. Consequently, several people from the aforementioned group devised a way for chips to understand a more manageable numbering system called hex (Definitions 2 and 3 above). They called it Assembly Language, probably because it assembles something called a program. TTDX and TTDPatch are programs. They are written in Assembly Language. This is why you need hex to code an nfo code for your new graphics.&lt;br /&gt;
&lt;br /&gt;
HEX is a way of counting. You normally count from 1 till 9 and then go to 10,11 etc. In HEX it works a bit differently: you count from 0 till 9 but then you go one with A, B,C,D,E,F. So 1 till 9 is just 1 till 9, but then it gets funky A=10, B=11, C=12 and so one till F= 15. when you reach F you just do like you would do normally, you start at 0 again but now with a 1 in front thus 10 (gee that&#039;s almost like normal counting! :P) so 10=16 If you want a better understandable explanation visit [http://oss.oetiker.ch/rrdtool/tut/bin_dec_hex.en.html this] link.&lt;br /&gt;
&lt;br /&gt;
Now it would be rather uneasy if you have to count it all by yourself (or at least for me being of the lazy generation) so you can use the windows calculator for that.&lt;br /&gt;
&lt;br /&gt;
If you open it it take any hex, so you have to go to scientific. Just open view and click on scientific mode.&lt;br /&gt;
&lt;br /&gt;
If you did it correctly it will look like this:&lt;br /&gt;
&lt;br /&gt;
(sorry I had to eat, I will see this page later on again)&lt;br /&gt;
&lt;br /&gt;
(He&#039;s been out to lunch since last modification: Monday 24 of October, 2005 [20:31:32] by dmccoy. [[File:icon_eek.gif]] Meanwhile I have added a reason why you need hex to the hex section. [[File:icon_cool.gif]])&lt;br /&gt;
&lt;br /&gt;
Hopefully the document on these pages will help you to avoid resorting to hex definition 1 too often.&lt;br /&gt;
[[Category:Tutorials]][[Category:GRF Tutorial]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Ttd-palette-for-gimp&amp;diff=8278</id>
		<title>Ttd-palette-for-gimp</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Ttd-palette-for-gimp&amp;diff=8278"/>
		<updated>2012-04-16T07:54:00Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: moved Ttd-palette-for-gimp to Ttd-dos-palette-for-gimp:&amp;amp;#32;non-unique naming would lead to confusion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Ttd-dos-palette-for-gimp]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Ttd-dos-palette-for-gimp&amp;diff=8277</id>
		<title>Ttd-dos-palette-for-gimp</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Ttd-dos-palette-for-gimp&amp;diff=8277"/>
		<updated>2012-04-16T07:54:00Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: moved Ttd-palette-for-gimp to Ttd-dos-palette-for-gimp:&amp;amp;#32;non-unique naming would lead to confusion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TTD Palette File for GIMP ==&lt;br /&gt;
&lt;br /&gt;
The following code will allow you to create a TTD palette file for GIMP. Copy the text below into a plain text editor and save as a plain text file with a .gpl extension. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GIMP Palette&lt;br /&gt;
Name: ttd-newgrf-dos&lt;br /&gt;
Columns: 16&lt;br /&gt;
#&lt;br /&gt;
  0   0 255	Index 0&lt;br /&gt;
 16  16  16	Index 1&lt;br /&gt;
 32  32  32	Index 2&lt;br /&gt;
 48  48  48	Index 3&lt;br /&gt;
 64  64  64	Index 4&lt;br /&gt;
 80  80  80	Index 5&lt;br /&gt;
100 100 100	Index 6&lt;br /&gt;
116 116 116	Index 7&lt;br /&gt;
132 132 132	Index 8&lt;br /&gt;
148 148 148	Index 9&lt;br /&gt;
168 168 168	Index 10&lt;br /&gt;
184 184 184	Index 11&lt;br /&gt;
200 200 200	Index 12&lt;br /&gt;
216 216 216	Index 13&lt;br /&gt;
232 232 232	Index 14&lt;br /&gt;
252 252 252	Index 15&lt;br /&gt;
 52  60  72	Index 16&lt;br /&gt;
 68  76  92	Index 17&lt;br /&gt;
 88  96 112	Index 18&lt;br /&gt;
108 116 132	Index 19&lt;br /&gt;
132 140 152	Index 20&lt;br /&gt;
156 160 172	Index 21&lt;br /&gt;
176 184 196	Index 22&lt;br /&gt;
204 208 220	Index 23&lt;br /&gt;
 48  44   4	Index 24&lt;br /&gt;
 64  60  12	Index 25&lt;br /&gt;
 80  76  20	Index 26&lt;br /&gt;
 96  92  28	Index 27&lt;br /&gt;
120 120  64	Index 28&lt;br /&gt;
148 148 100	Index 29&lt;br /&gt;
176 176 132	Index 30&lt;br /&gt;
204 204 168	Index 31&lt;br /&gt;
 72  44   4	Index 32&lt;br /&gt;
 88  60  20	Index 33&lt;br /&gt;
104  80  44	Index 34&lt;br /&gt;
124 104  72	Index 35&lt;br /&gt;
152 132  92	Index 36&lt;br /&gt;
184 160 120	Index 37&lt;br /&gt;
212 188 148	Index 38&lt;br /&gt;
244 220 176	Index 39&lt;br /&gt;
 64   0   4	Index 40&lt;br /&gt;
 88   4  16	Index 41&lt;br /&gt;
112  16  32	Index 42&lt;br /&gt;
136  32  52	Index 43&lt;br /&gt;
160  56  76	Index 44&lt;br /&gt;
188  84 108	Index 45&lt;br /&gt;
204 104 124	Index 46&lt;br /&gt;
220 132 144	Index 47&lt;br /&gt;
236 156 164	Index 48&lt;br /&gt;
252 188 192	Index 49&lt;br /&gt;
252 208   0	Index 50&lt;br /&gt;
252 232  60	Index 51&lt;br /&gt;
252 252 128	Index 52&lt;br /&gt;
 76  40   0	Index 53&lt;br /&gt;
 96  60   8	Index 54&lt;br /&gt;
116  88  28	Index 55&lt;br /&gt;
136 116  56	Index 56&lt;br /&gt;
156 136  80	Index 57&lt;br /&gt;
176 156 108	Index 58&lt;br /&gt;
196 180 136	Index 59&lt;br /&gt;
 68  24   0	Index 60&lt;br /&gt;
 96  44   4	Index 61&lt;br /&gt;
128  68   8	Index 62&lt;br /&gt;
156  96  16	Index 63&lt;br /&gt;
184 120  24	Index 64&lt;br /&gt;
212 156  32	Index 65&lt;br /&gt;
232 184  16	Index 66&lt;br /&gt;
252 212   0	Index 67&lt;br /&gt;
252 248 128	Index 68&lt;br /&gt;
252 252 192	Index 69&lt;br /&gt;
 32   4   0	Index 70&lt;br /&gt;
 64  20   8	Index 71&lt;br /&gt;
 84  28  16	Index 72&lt;br /&gt;
108  44  28	Index 73&lt;br /&gt;
128  56  40	Index 74&lt;br /&gt;
148  72  56	Index 75&lt;br /&gt;
168  92  76	Index 76&lt;br /&gt;
184 108  88	Index 77&lt;br /&gt;
196 128 108	Index 78&lt;br /&gt;
212 148 128	Index 79&lt;br /&gt;
  8  52   0	Index 80&lt;br /&gt;
 16  64   0	Index 81&lt;br /&gt;
 32  80   4	Index 82&lt;br /&gt;
 48  96   4	Index 83&lt;br /&gt;
 64 112  12	Index 84&lt;br /&gt;
 84 132  20	Index 85&lt;br /&gt;
104 148  28	Index 86&lt;br /&gt;
128 168  44	Index 87&lt;br /&gt;
 28  52  24	Index 88&lt;br /&gt;
 44  68  32	Index 89&lt;br /&gt;
 60  88  48	Index 90&lt;br /&gt;
 80 104  60	Index 91&lt;br /&gt;
104 124  76	Index 92&lt;br /&gt;
128 148  92	Index 93&lt;br /&gt;
152 176 108	Index 94&lt;br /&gt;
180 204 124	Index 95&lt;br /&gt;
 16  52  24	Index 96&lt;br /&gt;
 32  72  44	Index 97&lt;br /&gt;
 56  96  72	Index 98&lt;br /&gt;
 76 116  88	Index 99&lt;br /&gt;
 96 136 108	Index 100&lt;br /&gt;
120 164 136	Index 101&lt;br /&gt;
152 192 168	Index 102&lt;br /&gt;
184 220 200	Index 103&lt;br /&gt;
 32  24   0	Index 104&lt;br /&gt;
 56  28   0	Index 105&lt;br /&gt;
 72  40   4	Index 106&lt;br /&gt;
 88  52  12	Index 107&lt;br /&gt;
104  64  24	Index 108&lt;br /&gt;
124  84  44	Index 109&lt;br /&gt;
140 108  64	Index 110&lt;br /&gt;
160 128  88	Index 111&lt;br /&gt;
 76  40  16	Index 112&lt;br /&gt;
 96  52  24	Index 113&lt;br /&gt;
116  68  40	Index 114&lt;br /&gt;
136  84  56	Index 115&lt;br /&gt;
164  96  64	Index 116&lt;br /&gt;
184 112  80	Index 117&lt;br /&gt;
204 128  96	Index 118&lt;br /&gt;
212 148 112	Index 119&lt;br /&gt;
224 168 128	Index 120&lt;br /&gt;
236 188 148	Index 121&lt;br /&gt;
 80  28   4	Index 122&lt;br /&gt;
100  40  20	Index 123&lt;br /&gt;
120  56  40	Index 124&lt;br /&gt;
140  76  64	Index 125&lt;br /&gt;
160 100  96	Index 126&lt;br /&gt;
184 136 136	Index 127&lt;br /&gt;
 36  40  68	Index 128&lt;br /&gt;
 48  52  84	Index 129&lt;br /&gt;
 64  64 100	Index 130&lt;br /&gt;
 80  80 116	Index 131&lt;br /&gt;
100 100 136	Index 132&lt;br /&gt;
132 132 164	Index 133&lt;br /&gt;
172 172 192	Index 134&lt;br /&gt;
212 212 224	Index 135&lt;br /&gt;
 40  20 112	Index 136&lt;br /&gt;
 64  44 144	Index 137&lt;br /&gt;
 88  64 172	Index 138&lt;br /&gt;
104  76 196	Index 139&lt;br /&gt;
120  88 224	Index 140&lt;br /&gt;
140 104 252	Index 141&lt;br /&gt;
160 136 252	Index 142&lt;br /&gt;
188 168 252	Index 143&lt;br /&gt;
  0  24 108	Index 144&lt;br /&gt;
  0  36 132	Index 145&lt;br /&gt;
  0  52 160	Index 146&lt;br /&gt;
  0  72 184	Index 147&lt;br /&gt;
  0  96 212	Index 148&lt;br /&gt;
 24 120 220	Index 149&lt;br /&gt;
 56 144 232	Index 150&lt;br /&gt;
 88 168 240	Index 151&lt;br /&gt;
128 196 252	Index 152&lt;br /&gt;
188 224 252	Index 153&lt;br /&gt;
 16  64  96	Index 154&lt;br /&gt;
 24  80 108	Index 155&lt;br /&gt;
 40  96 120	Index 156&lt;br /&gt;
 52 112 132	Index 157&lt;br /&gt;
 80 140 160	Index 158&lt;br /&gt;
116 172 192	Index 159&lt;br /&gt;
156 204 220	Index 160&lt;br /&gt;
204 240 252	Index 161&lt;br /&gt;
172  52  52	Index 162&lt;br /&gt;
212  52  52	Index 163&lt;br /&gt;
252  52  52	Index 164&lt;br /&gt;
252 100  88	Index 165&lt;br /&gt;
252 144 124	Index 166&lt;br /&gt;
252 184 160	Index 167&lt;br /&gt;
252 216 200	Index 168&lt;br /&gt;
252 244 236	Index 169&lt;br /&gt;
 72  20 112	Index 170&lt;br /&gt;
 92  44 140	Index 171&lt;br /&gt;
112  68 168	Index 172&lt;br /&gt;
140 100 196	Index 173&lt;br /&gt;
168 136 224	Index 174&lt;br /&gt;
200 176 248	Index 175&lt;br /&gt;
208 184 255	Index 176&lt;br /&gt;
232 208 252	Index 177&lt;br /&gt;
 60   0   0	Index 178&lt;br /&gt;
 92   0   0	Index 179&lt;br /&gt;
128   0   0	Index 180&lt;br /&gt;
160   0   0	Index 181&lt;br /&gt;
196   0   0	Index 182&lt;br /&gt;
224   0   0	Index 183&lt;br /&gt;
252   0   0	Index 184&lt;br /&gt;
252  80   0	Index 185&lt;br /&gt;
252 108   0	Index 186&lt;br /&gt;
252 136   0	Index 187&lt;br /&gt;
252 164   0	Index 188&lt;br /&gt;
252 192   0	Index 189&lt;br /&gt;
252 220   0	Index 190&lt;br /&gt;
252 252   0	Index 191&lt;br /&gt;
204 136   8	Index 192&lt;br /&gt;
228 144   4	Index 193&lt;br /&gt;
252 156   0	Index 194&lt;br /&gt;
252 176  48	Index 195&lt;br /&gt;
252 196 100	Index 196&lt;br /&gt;
252 216 152	Index 197&lt;br /&gt;
  8  24  88	Index 198&lt;br /&gt;
 12  36 104	Index 199&lt;br /&gt;
 20  52 124	Index 200&lt;br /&gt;
 28  68 140	Index 201&lt;br /&gt;
 40  92 164	Index 202&lt;br /&gt;
 56 120 188	Index 203&lt;br /&gt;
 72 152 216	Index 204&lt;br /&gt;
100 172 224	Index 205&lt;br /&gt;
 92 156  52	Index 206&lt;br /&gt;
108 176  64	Index 207&lt;br /&gt;
124 200  76	Index 208&lt;br /&gt;
144 224  92	Index 209&lt;br /&gt;
224 244 252	Index 210&lt;br /&gt;
200 236 248	Index 211&lt;br /&gt;
180 220 236	Index 212&lt;br /&gt;
132 188 216	Index 213&lt;br /&gt;
 88 152 172	Index 214&lt;br /&gt;
244   0 244	Index 215&lt;br /&gt;
245   0 245	Index 216&lt;br /&gt;
246   0 246	Index 217&lt;br /&gt;
247   0 247	Index 218&lt;br /&gt;
248   0 248	Index 219&lt;br /&gt;
249   0 249	Index 220&lt;br /&gt;
250   0 250	Index 221&lt;br /&gt;
251   0 251	Index 222&lt;br /&gt;
252   0 252	Index 223&lt;br /&gt;
253   0 253	Index 224&lt;br /&gt;
254   0 254	Index 225&lt;br /&gt;
255   0 255	Index 226&lt;br /&gt;
 76  24   8	Index 227&lt;br /&gt;
108  44  24	Index 228&lt;br /&gt;
144  72  52	Index 229&lt;br /&gt;
176 108  84	Index 230&lt;br /&gt;
210 146 126	Index 231&lt;br /&gt;
252  60   0	Index 232&lt;br /&gt;
252  84   0	Index 233&lt;br /&gt;
252 104   0	Index 234&lt;br /&gt;
252 124   0	Index 235&lt;br /&gt;
252 148   0	Index 236&lt;br /&gt;
252 172   0	Index 237&lt;br /&gt;
252 196   0	Index 238&lt;br /&gt;
 64   0   0	Index 239&lt;br /&gt;
255   0   0	Index 240&lt;br /&gt;
 48  48   0	Index 241&lt;br /&gt;
 64  64   0	Index 242&lt;br /&gt;
 80  80   0	Index 243&lt;br /&gt;
255 255   0	Index 244&lt;br /&gt;
 32  68 112	Index 245&lt;br /&gt;
 36  72 116	Index 246&lt;br /&gt;
 40  76 120	Index 247&lt;br /&gt;
 44  80 124	Index 248&lt;br /&gt;
 48  84 128	Index 249&lt;br /&gt;
 72 100 144	Index 250&lt;br /&gt;
100 132 168	Index 251&lt;br /&gt;
216 244 252	Index 252&lt;br /&gt;
 96 128 164	Index 253&lt;br /&gt;
 68  96 140	Index 254&lt;br /&gt;
255 255 255	Index 255&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Ttd-dos-palette-for-gimp&amp;diff=8276</id>
		<title>Ttd-dos-palette-for-gimp</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Ttd-dos-palette-for-gimp&amp;diff=8276"/>
		<updated>2012-04-16T07:53:24Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Replace with proper colour indices&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TTD Palette File for GIMP ==&lt;br /&gt;
&lt;br /&gt;
The following code will allow you to create a TTD palette file for GIMP. Copy the text below into a plain text editor and save as a plain text file with a .gpl extension. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GIMP Palette&lt;br /&gt;
Name: ttd-newgrf-dos&lt;br /&gt;
Columns: 16&lt;br /&gt;
#&lt;br /&gt;
  0   0 255	Index 0&lt;br /&gt;
 16  16  16	Index 1&lt;br /&gt;
 32  32  32	Index 2&lt;br /&gt;
 48  48  48	Index 3&lt;br /&gt;
 64  64  64	Index 4&lt;br /&gt;
 80  80  80	Index 5&lt;br /&gt;
100 100 100	Index 6&lt;br /&gt;
116 116 116	Index 7&lt;br /&gt;
132 132 132	Index 8&lt;br /&gt;
148 148 148	Index 9&lt;br /&gt;
168 168 168	Index 10&lt;br /&gt;
184 184 184	Index 11&lt;br /&gt;
200 200 200	Index 12&lt;br /&gt;
216 216 216	Index 13&lt;br /&gt;
232 232 232	Index 14&lt;br /&gt;
252 252 252	Index 15&lt;br /&gt;
 52  60  72	Index 16&lt;br /&gt;
 68  76  92	Index 17&lt;br /&gt;
 88  96 112	Index 18&lt;br /&gt;
108 116 132	Index 19&lt;br /&gt;
132 140 152	Index 20&lt;br /&gt;
156 160 172	Index 21&lt;br /&gt;
176 184 196	Index 22&lt;br /&gt;
204 208 220	Index 23&lt;br /&gt;
 48  44   4	Index 24&lt;br /&gt;
 64  60  12	Index 25&lt;br /&gt;
 80  76  20	Index 26&lt;br /&gt;
 96  92  28	Index 27&lt;br /&gt;
120 120  64	Index 28&lt;br /&gt;
148 148 100	Index 29&lt;br /&gt;
176 176 132	Index 30&lt;br /&gt;
204 204 168	Index 31&lt;br /&gt;
 72  44   4	Index 32&lt;br /&gt;
 88  60  20	Index 33&lt;br /&gt;
104  80  44	Index 34&lt;br /&gt;
124 104  72	Index 35&lt;br /&gt;
152 132  92	Index 36&lt;br /&gt;
184 160 120	Index 37&lt;br /&gt;
212 188 148	Index 38&lt;br /&gt;
244 220 176	Index 39&lt;br /&gt;
 64   0   4	Index 40&lt;br /&gt;
 88   4  16	Index 41&lt;br /&gt;
112  16  32	Index 42&lt;br /&gt;
136  32  52	Index 43&lt;br /&gt;
160  56  76	Index 44&lt;br /&gt;
188  84 108	Index 45&lt;br /&gt;
204 104 124	Index 46&lt;br /&gt;
220 132 144	Index 47&lt;br /&gt;
236 156 164	Index 48&lt;br /&gt;
252 188 192	Index 49&lt;br /&gt;
252 208   0	Index 50&lt;br /&gt;
252 232  60	Index 51&lt;br /&gt;
252 252 128	Index 52&lt;br /&gt;
 76  40   0	Index 53&lt;br /&gt;
 96  60   8	Index 54&lt;br /&gt;
116  88  28	Index 55&lt;br /&gt;
136 116  56	Index 56&lt;br /&gt;
156 136  80	Index 57&lt;br /&gt;
176 156 108	Index 58&lt;br /&gt;
196 180 136	Index 59&lt;br /&gt;
 68  24   0	Index 60&lt;br /&gt;
 96  44   4	Index 61&lt;br /&gt;
128  68   8	Index 62&lt;br /&gt;
156  96  16	Index 63&lt;br /&gt;
184 120  24	Index 64&lt;br /&gt;
212 156  32	Index 65&lt;br /&gt;
232 184  16	Index 66&lt;br /&gt;
252 212   0	Index 67&lt;br /&gt;
252 248 128	Index 68&lt;br /&gt;
252 252 192	Index 69&lt;br /&gt;
 32   4   0	Index 70&lt;br /&gt;
 64  20   8	Index 71&lt;br /&gt;
 84  28  16	Index 72&lt;br /&gt;
108  44  28	Index 73&lt;br /&gt;
128  56  40	Index 74&lt;br /&gt;
148  72  56	Index 75&lt;br /&gt;
168  92  76	Index 76&lt;br /&gt;
184 108  88	Index 77&lt;br /&gt;
196 128 108	Index 78&lt;br /&gt;
212 148 128	Index 79&lt;br /&gt;
  8  52   0	Index 80&lt;br /&gt;
 16  64   0	Index 81&lt;br /&gt;
 32  80   4	Index 82&lt;br /&gt;
 48  96   4	Index 83&lt;br /&gt;
 64 112  12	Index 84&lt;br /&gt;
 84 132  20	Index 85&lt;br /&gt;
104 148  28	Index 86&lt;br /&gt;
128 168  44	Index 87&lt;br /&gt;
 28  52  24	Index 88&lt;br /&gt;
 44  68  32	Index 89&lt;br /&gt;
 60  88  48	Index 90&lt;br /&gt;
 80 104  60	Index 91&lt;br /&gt;
104 124  76	Index 92&lt;br /&gt;
128 148  92	Index 93&lt;br /&gt;
152 176 108	Index 94&lt;br /&gt;
180 204 124	Index 95&lt;br /&gt;
 16  52  24	Index 96&lt;br /&gt;
 32  72  44	Index 97&lt;br /&gt;
 56  96  72	Index 98&lt;br /&gt;
 76 116  88	Index 99&lt;br /&gt;
 96 136 108	Index 100&lt;br /&gt;
120 164 136	Index 101&lt;br /&gt;
152 192 168	Index 102&lt;br /&gt;
184 220 200	Index 103&lt;br /&gt;
 32  24   0	Index 104&lt;br /&gt;
 56  28   0	Index 105&lt;br /&gt;
 72  40   4	Index 106&lt;br /&gt;
 88  52  12	Index 107&lt;br /&gt;
104  64  24	Index 108&lt;br /&gt;
124  84  44	Index 109&lt;br /&gt;
140 108  64	Index 110&lt;br /&gt;
160 128  88	Index 111&lt;br /&gt;
 76  40  16	Index 112&lt;br /&gt;
 96  52  24	Index 113&lt;br /&gt;
116  68  40	Index 114&lt;br /&gt;
136  84  56	Index 115&lt;br /&gt;
164  96  64	Index 116&lt;br /&gt;
184 112  80	Index 117&lt;br /&gt;
204 128  96	Index 118&lt;br /&gt;
212 148 112	Index 119&lt;br /&gt;
224 168 128	Index 120&lt;br /&gt;
236 188 148	Index 121&lt;br /&gt;
 80  28   4	Index 122&lt;br /&gt;
100  40  20	Index 123&lt;br /&gt;
120  56  40	Index 124&lt;br /&gt;
140  76  64	Index 125&lt;br /&gt;
160 100  96	Index 126&lt;br /&gt;
184 136 136	Index 127&lt;br /&gt;
 36  40  68	Index 128&lt;br /&gt;
 48  52  84	Index 129&lt;br /&gt;
 64  64 100	Index 130&lt;br /&gt;
 80  80 116	Index 131&lt;br /&gt;
100 100 136	Index 132&lt;br /&gt;
132 132 164	Index 133&lt;br /&gt;
172 172 192	Index 134&lt;br /&gt;
212 212 224	Index 135&lt;br /&gt;
 40  20 112	Index 136&lt;br /&gt;
 64  44 144	Index 137&lt;br /&gt;
 88  64 172	Index 138&lt;br /&gt;
104  76 196	Index 139&lt;br /&gt;
120  88 224	Index 140&lt;br /&gt;
140 104 252	Index 141&lt;br /&gt;
160 136 252	Index 142&lt;br /&gt;
188 168 252	Index 143&lt;br /&gt;
  0  24 108	Index 144&lt;br /&gt;
  0  36 132	Index 145&lt;br /&gt;
  0  52 160	Index 146&lt;br /&gt;
  0  72 184	Index 147&lt;br /&gt;
  0  96 212	Index 148&lt;br /&gt;
 24 120 220	Index 149&lt;br /&gt;
 56 144 232	Index 150&lt;br /&gt;
 88 168 240	Index 151&lt;br /&gt;
128 196 252	Index 152&lt;br /&gt;
188 224 252	Index 153&lt;br /&gt;
 16  64  96	Index 154&lt;br /&gt;
 24  80 108	Index 155&lt;br /&gt;
 40  96 120	Index 156&lt;br /&gt;
 52 112 132	Index 157&lt;br /&gt;
 80 140 160	Index 158&lt;br /&gt;
116 172 192	Index 159&lt;br /&gt;
156 204 220	Index 160&lt;br /&gt;
204 240 252	Index 161&lt;br /&gt;
172  52  52	Index 162&lt;br /&gt;
212  52  52	Index 163&lt;br /&gt;
252  52  52	Index 164&lt;br /&gt;
252 100  88	Index 165&lt;br /&gt;
252 144 124	Index 166&lt;br /&gt;
252 184 160	Index 167&lt;br /&gt;
252 216 200	Index 168&lt;br /&gt;
252 244 236	Index 169&lt;br /&gt;
 72  20 112	Index 170&lt;br /&gt;
 92  44 140	Index 171&lt;br /&gt;
112  68 168	Index 172&lt;br /&gt;
140 100 196	Index 173&lt;br /&gt;
168 136 224	Index 174&lt;br /&gt;
200 176 248	Index 175&lt;br /&gt;
208 184 255	Index 176&lt;br /&gt;
232 208 252	Index 177&lt;br /&gt;
 60   0   0	Index 178&lt;br /&gt;
 92   0   0	Index 179&lt;br /&gt;
128   0   0	Index 180&lt;br /&gt;
160   0   0	Index 181&lt;br /&gt;
196   0   0	Index 182&lt;br /&gt;
224   0   0	Index 183&lt;br /&gt;
252   0   0	Index 184&lt;br /&gt;
252  80   0	Index 185&lt;br /&gt;
252 108   0	Index 186&lt;br /&gt;
252 136   0	Index 187&lt;br /&gt;
252 164   0	Index 188&lt;br /&gt;
252 192   0	Index 189&lt;br /&gt;
252 220   0	Index 190&lt;br /&gt;
252 252   0	Index 191&lt;br /&gt;
204 136   8	Index 192&lt;br /&gt;
228 144   4	Index 193&lt;br /&gt;
252 156   0	Index 194&lt;br /&gt;
252 176  48	Index 195&lt;br /&gt;
252 196 100	Index 196&lt;br /&gt;
252 216 152	Index 197&lt;br /&gt;
  8  24  88	Index 198&lt;br /&gt;
 12  36 104	Index 199&lt;br /&gt;
 20  52 124	Index 200&lt;br /&gt;
 28  68 140	Index 201&lt;br /&gt;
 40  92 164	Index 202&lt;br /&gt;
 56 120 188	Index 203&lt;br /&gt;
 72 152 216	Index 204&lt;br /&gt;
100 172 224	Index 205&lt;br /&gt;
 92 156  52	Index 206&lt;br /&gt;
108 176  64	Index 207&lt;br /&gt;
124 200  76	Index 208&lt;br /&gt;
144 224  92	Index 209&lt;br /&gt;
224 244 252	Index 210&lt;br /&gt;
200 236 248	Index 211&lt;br /&gt;
180 220 236	Index 212&lt;br /&gt;
132 188 216	Index 213&lt;br /&gt;
 88 152 172	Index 214&lt;br /&gt;
244   0 244	Index 215&lt;br /&gt;
245   0 245	Index 216&lt;br /&gt;
246   0 246	Index 217&lt;br /&gt;
247   0 247	Index 218&lt;br /&gt;
248   0 248	Index 219&lt;br /&gt;
249   0 249	Index 220&lt;br /&gt;
250   0 250	Index 221&lt;br /&gt;
251   0 251	Index 222&lt;br /&gt;
252   0 252	Index 223&lt;br /&gt;
253   0 253	Index 224&lt;br /&gt;
254   0 254	Index 225&lt;br /&gt;
255   0 255	Index 226&lt;br /&gt;
 76  24   8	Index 227&lt;br /&gt;
108  44  24	Index 228&lt;br /&gt;
144  72  52	Index 229&lt;br /&gt;
176 108  84	Index 230&lt;br /&gt;
210 146 126	Index 231&lt;br /&gt;
252  60   0	Index 232&lt;br /&gt;
252  84   0	Index 233&lt;br /&gt;
252 104   0	Index 234&lt;br /&gt;
252 124   0	Index 235&lt;br /&gt;
252 148   0	Index 236&lt;br /&gt;
252 172   0	Index 237&lt;br /&gt;
252 196   0	Index 238&lt;br /&gt;
 64   0   0	Index 239&lt;br /&gt;
255   0   0	Index 240&lt;br /&gt;
 48  48   0	Index 241&lt;br /&gt;
 64  64   0	Index 242&lt;br /&gt;
 80  80   0	Index 243&lt;br /&gt;
255 255   0	Index 244&lt;br /&gt;
 32  68 112	Index 245&lt;br /&gt;
 36  72 116	Index 246&lt;br /&gt;
 40  76 120	Index 247&lt;br /&gt;
 44  80 124	Index 248&lt;br /&gt;
 48  84 128	Index 249&lt;br /&gt;
 72 100 144	Index 250&lt;br /&gt;
100 132 168	Index 251&lt;br /&gt;
216 244 252	Index 252&lt;br /&gt;
 96 128 164	Index 253&lt;br /&gt;
 68  96 140	Index 254&lt;br /&gt;
255 255 255	Index 255&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Save_paletted_image_files&amp;diff=8275</id>
		<title>Save paletted image files</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Save_paletted_image_files&amp;diff=8275"/>
		<updated>2012-04-16T07:51:11Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Directly link to palette. Previously linked wiki page with palette has faulty entries.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This pagecovers how to apply a palette to a graphics file in several graphics editor. If your editor is not listed here and you know how to work with palettes using it, please add it here.&lt;br /&gt;
&lt;br /&gt;
You find a range of palettes with and without action colours (which might be useful for conversions) for various graphics programmes on the [http://dev.openttdcoop.org/documents/1| DevZone]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Photoshop ==&lt;br /&gt;
[[Image:Photoshop palette window with windows ttd palette.png|thumb|50%|Fig. 1: Photoshop palette window showing in this case the Windows palette]]&lt;br /&gt;
[[Image:Photoshop indexed color window.png|thumb|50%|Fig. 2: Photoshop indexed color window]]&lt;br /&gt;
&lt;br /&gt;
In this subsection it is explained how to create a palette file and how to apply it using Adobe Photoshop (CS5 is used here, but identical or similar procedures apply in other versions of Photoshop). It is assumed that you have a clue about working with Photoshop.&lt;br /&gt;
&lt;br /&gt;
=== Retreiving a palette file ===&lt;br /&gt;
You can use an existing graphics file that has the correct palette applied to retrieve the palette and save it to a separate file. This palette can then be applied to graphics files that don&#039;t have a palette. You can skip this part if you have [http://dev.openttdcoop.org/attachments/1749/photoshop-ttd-dos.act| downloaded a premade palette file].&lt;br /&gt;
&lt;br /&gt;
# Open a graphics file of which you know it has the correct palette in Photoshop. Decoded NewGRFs (using GRFCodec) surely will have the correct palette applied.&lt;br /&gt;
# Go to Image &amp;gt; Mode &amp;gt; Color Table... The window from Fig. 1 will appear. &lt;br /&gt;
# Click Save... and store the palette file (*.act) somewhere on your computer.&lt;br /&gt;
&lt;br /&gt;
=== Applying a palette from file ===&lt;br /&gt;
The Windows or DOS TTD palette must be applied to your graphics file for them to work in GRFCodec and NML. For the next steps we assume that you have a palette file (*.act) with the palette of your choice stored somewhere on your computer.&lt;br /&gt;
&lt;br /&gt;
# Open a graphics file in Photoshop.&lt;br /&gt;
# Go to Image &amp;gt; Mode and check if RGB Color is checked. Select it if that is not the case, which will convert your graphics file to full-colour, maintaining the colours as they appear.&lt;br /&gt;
# Go to Image &amp;gt; Mode &amp;gt; Indexed Color... The window from Fig. 2 will appear. &lt;br /&gt;
# From the Palette drop-down, select Custom... The palette window (see Fig. 1) appears.&lt;br /&gt;
# Click Load... and browse the palette file. Click OK to close the palette window.&lt;br /&gt;
# In the indexed color window, you may select your choise of Dither. The dither will convert all colours that are in the graphics file but not in the palette to the palette colours. Either use the Diffusion dither (with preserving exact colors) or the Noise dither. Play around with the settings using the Preview to see the result and pick whatever looks best. If the sprites in the image file were drawn properly (using only palette colours), you should see no difference.&lt;br /&gt;
# Click OK to apply the palette file (and dither) to this image file. Note that this will flatten all layers (if any) in your graphics file.&lt;br /&gt;
# Save the file as (preferrably) a PNG image.&lt;br /&gt;
&lt;br /&gt;
=== Important note on PCX files in Photoshop ===&lt;br /&gt;
Photoshop has a quirk in which palettes from PCX files are read and written backwards. This is no problem is you stay with pcx, but it is if you convert from pcx to png (and the other way round). Any such conversion will have the palette stored backwards in the target file, making it unusable by GRFCodec or NML. Note:&lt;br /&gt;
* You cannot use the palette file saved from a PCX file for a PNG file;&lt;br /&gt;
* You cannot use the palette file saved from a PNG file for a PCX file;&lt;br /&gt;
* When converting PCX &amp;lt;-&amp;gt; PNG, you must convert to RGB Color first and then back to Indexed Color, applying the palette file of your target file format (e.g. when converting to PNG, apply the palette retrieved from a PNG file).&lt;br /&gt;
&lt;br /&gt;
== GIMP ==&lt;br /&gt;
[[Image:GIMP palette window.png|thumb|50%|Fig. 3: GIMP palette window]]&lt;br /&gt;
[[Image:GIMP import palette window.png|thumb|50%|Fig. 4: GIMP import pallete window showing the TTD Windows palette]]&lt;br /&gt;
[[Image:GIMP indexed color conversion window.png|thumb|50%|Fig. 5: GIMP indexed color conversion window]]&lt;br /&gt;
&lt;br /&gt;
In this subsection it is explained how to create a palette file and how to apply it using the GNU Image Manipulation Program (2.6 is used here, but identical or similar procedures should apply in other versions). It is assumed that you have a clue about working with GIMP.&lt;br /&gt;
&lt;br /&gt;
=== Download a palette file ===&lt;br /&gt;
In case of doubt you simply want to get the [http://dev.openttdcoop.org/attachments/1741/ttd-newgrf-dos.gpl| DOS palette]. See the above link to the DevZone for more options.&lt;br /&gt;
&lt;br /&gt;
=== Import a palette file ===&lt;br /&gt;
Before you can use a palette in GIMP you must import it. You can import a palette form a file that has the correct palette applied or import a downloaded palette (*.gpl) file.&lt;br /&gt;
&lt;br /&gt;
# Open a graphics file of which you know it has the correct palette in GIMP if you want to get the palette from that file (otherwise go to the next step). Decoded NewGRFs (using GRFCodec) surely will have the correct palette applied.&lt;br /&gt;
# Go to Windows &amp;gt; Dockable Dialogs &amp;gt; Palettes... The window from Fig. 3 with a list of builtin palettes will appear. &lt;br /&gt;
# Rightclick anywhere in the list with palettes and click Import Palette... from the context menu. The window from Fig 4. will appear. &lt;br /&gt;
# Now choose if you want to retrieve the palette from the opened image or if you want to import a palette from a palette file.&lt;br /&gt;
## Select Image below Select Source to get the palette from the current image file.&lt;br /&gt;
## Select Palette file below Select Source and browse to a *.gpl palette file to get the palette from that file.&lt;br /&gt;
# The palette will be shown. Give the palette a name and click Import. The TTD palette will now be added to the list of palettes.&lt;br /&gt;
&lt;br /&gt;
=== Applying a palette ===&lt;br /&gt;
Make sure the palette you want to use is imported in GIMP (see above).&lt;br /&gt;
&lt;br /&gt;
# Open a graphics file in GIMP.&lt;br /&gt;
# Go to Image &amp;gt; Mode and check if RGB is selected. Select it if that is not the case, which will convert your graphics file to full-colour, maintaining the colours as they appear.&lt;br /&gt;
# Go to Image &amp;gt; Mode &amp;gt; Indexed... The window from Fig. 5 will appear. &lt;br /&gt;
# Select Use custom palette and then select the TTD palette from the palette list (click on the button showing a palette).&lt;br /&gt;
# Make sure to &#039;&#039;&#039;uncheck&#039;&#039;&#039; Remove unused colors from colormap.&lt;br /&gt;
# In the same window, you may select your choise of Dithering. The dither will convert all colours that are in the graphics file but not in the palette to the palette colours. Play around with the settings to find the best result. If the sprites in the image file were drawn properly (using only palette colours), you should see no difference.&lt;br /&gt;
# Click Convert to apply the palette (and dither) to this image file.&lt;br /&gt;
# Save the file as (preferrably) a PNG image.&lt;br /&gt;
&lt;br /&gt;
=== Saving a palette to file ===&lt;br /&gt;
If you want to share your imported palette, you must have a palette file.&lt;br /&gt;
&lt;br /&gt;
# Exit GIMP to automatically save your palette(s).&lt;br /&gt;
# Reopen GIMP (and the palette window via Windows &amp;gt; Dockable Dialogs &amp;gt; Palettes if this is closed).&lt;br /&gt;
# Rightclick your palette in the palette window and choose Copy Palette Location. This copies the path to the palette file to the clipboard&lt;br /&gt;
# With GIMP open, get the clipboard contents and browse to the specified folder (usualy ~/.gimp-2.6/palettes).&lt;br /&gt;
# Copy or upload the *.gpl file with the palette from there.&lt;br /&gt;
&lt;br /&gt;
Surely there must be an easier way to do this, but I haven&#039;t found that so far.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Vectors_Translations_-_Machinery_vector_strings._Industries&amp;diff=7825</id>
		<title>ECS Vectors Translations - Machinery vector strings. Industries</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Vectors_Translations_-_Machinery_vector_strings._Industries&amp;diff=7825"/>
		<updated>2011-09-03T19:21:20Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECS Translations]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// - Strings for industries names -&lt;br /&gt;
// Vehicles factory&lt;br /&gt;
    1 * 25	 04 0A FF 01 F0 D0 &amp;quot;ÞVehicles factory&amp;quot; 00&lt;br /&gt;
    1 * 22	 04 0A 82 01 F0 D0 &amp;quot;ÞAutomobilwerk&amp;quot; 00&lt;br /&gt;
    1 * 28	 04 0A 83 01 F0 D0 &amp;quot;ÞUsine d&#039;automobiles&amp;quot; 00&lt;br /&gt;
    1 * 33	 04 0A 84 01 F0 D0 &amp;quot;ÞFábrica de automóviles&amp;quot; 00&lt;br /&gt;
    1 * 46	 04 0A 87 01 F0 D0 &amp;quot;ÞАвтомобильный завод&amp;quot; 00&lt;br /&gt;
    1 * 44	 04 0A 90 01 F0 D0 &amp;quot;ÞАўтамабільны завод&amp;quot; 00&lt;br /&gt;
    1 * 23	 04 0A A7 01 F0 D0 &amp;quot;Fabbrica di auto&amp;quot; 00&lt;br /&gt;
    1 * 34	 04 0A B7 01 F0 D0 &amp;quot;ÞFábrica automobilística&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 95 01 F0 D0 &amp;quot;ÞStrojírenský podnik&amp;quot; 00&lt;br /&gt;
    1 * 25	 04 0A BA 01 F0 D0 &amp;quot;Þ중장비 공장&amp;quot; 00&lt;br /&gt;
    1 * 26	 04 0A 9F 01 F0 D0 &amp;quot;ÞVoertuigenfabriek&amp;quot; 00&lt;br /&gt;
    1 * 60	 04 0A A4 01 F0 D0 &amp;quot;Þ\UE09A\14\UE09A\10\01gépjárműgyárat\UE09A\11Gépjárműgyár\UE09A\12&amp;quot; 00&lt;br /&gt;
// Shipyard&lt;br /&gt;
    1 * 17	 04 0A FF 01 F1 D0 &amp;quot;ÞShipyard&amp;quot; 00&lt;br /&gt;
    1 * 14	 04 0A 82 01 F1 D0 &amp;quot;ÞWerft&amp;quot; 00&lt;br /&gt;
    1 * 23	 04 0A 83 01 F1 D0 &amp;quot;ÞChantier naval&amp;quot; 00&lt;br /&gt;
    1 * 19	 04 0A 84 01 F1 D0 &amp;quot;ÞAstilleros&amp;quot; 00&lt;br /&gt;
    1 * 19	 04 0A 87 01 F1 D0 &amp;quot;ÞВерфь&amp;quot; 00&lt;br /&gt;
    1 * 17	 04 0A 90 01 F1 D0 &amp;quot;ÞВерф&amp;quot; 00&lt;br /&gt;
    1 * 24	 04 0A A7 01 F1 D0 &amp;quot;ÞCantiere navale&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A B7 01 F1 D0 &amp;quot;ÞEstaleiro&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A 95 01 F1 D0 &amp;quot;ÞLoděnice&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A BA 01 F1 D0 &amp;quot;Þ조선소&amp;quot; 00&lt;br /&gt;
    1 * 20	 04 0A 9F 01 F1 D0 &amp;quot;ÞScheepswerf&amp;quot; 00&lt;br /&gt;
    1 * 48	 04 0A A4 01 F1 D0 &amp;quot;Þ\UE09A\14\UE09A\10\01hajógyárat\UE09A\11Hajógyár\UE09A\12&amp;quot; 00&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 21	 04 0A FF 01 F2 D0 &amp;quot;ÞBauxite mine&amp;quot; 00&lt;br /&gt;
    1 * 21	 04 0A 82 01 F2 D0 &amp;quot;ÞBauxitmine&amp;quot; 00&lt;br /&gt;
    1 * 21	 04 0A 87 01 F2 D0 &amp;quot;ÞБокситовый рудник&amp;quot; 00&lt;br /&gt;
// - Strings for industries descriptions -&lt;br /&gt;
// vehicles factory&lt;br /&gt;
    1 * 59	 04 0A FF 01 E0 D0 &amp;quot;ÞVehicles factory does not have special conditions.&amp;quot; 00&lt;br /&gt;
    1 * 62	 04 0A 82 01 E0 D0 &amp;quot;ÞDas Automobilwerk hat keine besonderen Anforderungen.&amp;quot; 00&lt;br /&gt;
    1 * 66	 04 0A 83 01 E0 D0 &amp;quot;ÞL&#039;usine d&#039;automobiles n&#039;a aucune condition particulière.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 87 01 E0 D0 &amp;quot;ÞАвтомобильный завод не имеет ограничений.&amp;quot; 00&lt;br /&gt;
    1 * 82	 04 0A 90 01 E0 D0 &amp;quot;ÞАўтамабільны завод не мае абмежаванняў.&amp;quot; 00&lt;br /&gt;
    1 * 75	 04 0A A7 01 E0 D0 &amp;quot;ÞLe fabbriche di automezzi non hanno alcuna condizione particolare.&amp;quot; 00&lt;br /&gt;
    1 * 69	 04 0A B7 01 E0 D0 &amp;quot;ÞFábricas automobilísticas não têm condições especiais.&amp;quot; 00&lt;br /&gt;
    1 * 69	 04 0A 95 01 E0 D0 &amp;quot;ÞStrojírenský podnik nemá žádné zvláštní požadavky.&amp;quot; 00&lt;br /&gt;
    1 * 56	 04 0A BA 01 E0 D0 &amp;quot;Þ중장비 공장은 특별한 조건이 없다.&amp;quot; 00&lt;br /&gt;
    1 * 88	 04 0A B0 01 E0 D0 &amp;quot;ÞWytórnia Sprzętu Komunikacyjnego nie ma specjalnych wymagań lokalizacyjnych.&amp;quot; 00&lt;br /&gt;
    1 * 80	 04 0A 9F 01 E0 D0 &amp;quot;ÞVoor het bouwen van voertuigfabrieken gelden geen speciale voorwaarden.&amp;quot; 00&lt;br /&gt;
    1 * 53	 04 0A A4 01 E0 D0 &amp;quot;ÞGépjárműgyárat akárhol lehet építeni.&amp;quot; 00&lt;br /&gt;
// steel mill&lt;br /&gt;
    1 * 64	 04 0A FF 01 E1 D0 &amp;quot;ÞSteel mill should be built on flat land far from towns.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 82 01 E1 D0 &amp;quot;ÞStahlwerk muss auf flachem Land und weit entfernt von Städten gebaut werden.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 83 01 E1 D0 &amp;quot;ÞSUne usine sidérurgique doit être bâtie sur terrain plain loin des villes.&amp;quot; 00&lt;br /&gt;
    1 * 93	 04 0A 87 01 E1 D0 &amp;quot;ÞСталилитейный завод стрится вдали от городов.&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A 90 01 E1 D0 &amp;quot;ÞСталеліцейны завод будуецца ўдалечыні ад гарадоў.&amp;quot; 00&lt;br /&gt;
    1 * 94	 04 0A A7 01 E1 D0 &amp;quot;ÞUn&#039;industria siderurgica dev&#039;essere costruita su terreno piano, lontano dalle città.&amp;quot; 00&lt;br /&gt;
    1 * 80	 04 0A B7 01 E1 D0 &amp;quot;ÞSiderúrgicas devem ser construídas em terreno plano longe de cidades.&amp;quot; 00&lt;br /&gt;
    1 * 93	 04 0A 95 01 E1 D0 &amp;quot;ÞOcelárna smí být postavena pouze na ploché zemi ve velké vzdálenosti od měst.&amp;quot; 00&lt;br /&gt;
    1 * 92	 04 0A BA 01 E1 D0 &amp;quot;Þ제철소는 마을에서 멀리 떨어진 편평한 땅에 지어져야 합니다.&amp;quot; 00&lt;br /&gt;
    1 * 77	 04 0A B0 01 E1 D0 &amp;quot;ÞHuta stali powinna być budowana zdala od miast na płaskim terenia.&amp;quot; 00&lt;br /&gt;
    1 * 81	 04 0A 9F 01 E1 D0 &amp;quot;ÞHoogvens moeten op vlak land en ver van plaatsen vandaan worden gebouwd.&amp;quot; 00&lt;br /&gt;
    1 * 81	 04 0A A4 01 E1 D0 &amp;quot;ÞAcélöntőt lapos területen, településektől távol lehet építeni.&amp;quot; 00&lt;br /&gt;
// iron ore mine&lt;br /&gt;
    1 * 136	 04 0A FF 01 E2 D0 &amp;quot;ÞIron ore mine is prospected with 78% probability near other iron ore mines, with 25% probability far from other iron ore mines.&amp;quot; 00&lt;br /&gt;
    1 * 145	 04 0A 82 01 E2 D0 &amp;quot;ÞEisenerzmine wird mit 78% Wahrscheinlichkeit in der Nähe und mit 25% Wahrscheinlichkeit weit entfernt von anderen Eisenerzminen gebaut.&amp;quot; 00&lt;br /&gt;
    1 * 133	 04 0A 83 01 E2 D0 &amp;quot;ÞUne mine de fer est prospectée avec le 78% de probabilité près d&#039;autres mines de fer, et avec le 25% loin d&#039;autres mines.&amp;quot; 00&lt;br /&gt;
    1 * 223	 04 0A 87 01 E2 D0 &amp;quot;ÞГеологическая разведка обнаруживает залежи руды с вероятностью 78% вблизи других шахт, с вероятностью 25% вдали от них.&amp;quot; 00&lt;br /&gt;
    1 * 224	 04 0A 90 01 E2 D0 &amp;quot;ÞГеалагічная разведка выяўляе залежы руды з верагоднасцю 78% паблізу ад іншых шахтаў, з верагоднасцю 25% удалечыні ад іх.&amp;quot; 00&lt;br /&gt;
    1 * 130	 04 0A A7 01 E2 D0 &amp;quot;ÞPuoi trovare un giacimento di ferro col 78% delle probabilità se vicino ad altre miniere di ferro, e col 25% se lontano.&amp;quot; 00&lt;br /&gt;
    1 * 155	 04 0A B7 01 E2 D0 &amp;quot;ÞMinas de ferro são pesquisadas com 78% de probabilidade perto de outras minas de ferro e com 25% de probabilidade longe de outras minas de ferro.&amp;quot; 00&lt;br /&gt;
    1 * 210	 04 0A 95 01 E2 D0 &amp;quot;ÞLožisko železné rudy bude nalezeno s 78%-ní úspěšností poblíž existujících železnorudných dolů a s 25%-ní úspěšností ve velké vzdálenosti od existujících železnorudných dolů.&amp;quot; 00&lt;br /&gt;
    1 * 155	 04 0A BA 01 E2 D0 &amp;quot;Þ철 광산은 다른 철 광산의 근처에서 78%의 확률로 시굴되고, 멀리 떨어진 철 광산에서는 25%의 확률로 시굴된다.&amp;quot; 00&lt;br /&gt;
    1 * 106	 04 0A B0 01 E2 D0 &amp;quot;ÞKopalnia rudy żelaza powstanie z 75% prawdopodobieństwem w pobliżu innej kopalni rudy żelaza.&amp;quot; 00&lt;br /&gt;
    1 * 133	 04 0A 9F 01 E2 D0 &amp;quot;ÞDe kans op het succesvol bouwen van een ijzerertsmijn dichtbij bestaande ijzerertsmijn(en) is 78% en 25% in andere gevallen.&amp;quot; 00&lt;br /&gt;
    1 * 181	 04 0A A4 01 E2 D0 &amp;quot;ÞKutatás támogatása esetén vasércbánya 78% valószínűséggel létesül más vasércbánya közelében, 25% valószínűséggel pedig más vasércbányáktól távol.&amp;quot; 00&lt;br /&gt;
// Ship yard&lt;br /&gt;
    1 * 33	 04 0A FF 01 E3 D0 &amp;quot;ÞReserved for future use.&amp;quot; 00&lt;br /&gt;
    1 * 33	 04 0A FF 01 E3 D0 &amp;quot;ÞReserviert für zukünftigen Gebrauch.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A 83 01 E3 D0 &amp;quot;ÞRéservé à une utilisation future.&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 87 01 E3 D0 &amp;quot;ÞНедоступен.&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 90 01 E3 D0 &amp;quot;ÞНедаступны.&amp;quot; 00&lt;br /&gt;
    1 * 34	 04 0A A7 01 E3 D0 &amp;quot;ÞRiservato per usi futuri.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A 95 01 E3 D0 &amp;quot;ÞRezervováno pro budoucí použití.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A BA 01 E3 D0 &amp;quot;Þ미래에 사용하기위해 예약.&amp;quot; 00&lt;br /&gt;
    1 * 54	 04 0A B0 01 E3 D0 &amp;quot;ÞZastrzeżone do zastosowania w przyszłości.&amp;quot; 00&lt;br /&gt;
    1 * 46	 04 0A 9F 01 E3 D0 &amp;quot;ÞGereserveerd voor toekomstig gebruik.&amp;quot; 00&lt;br /&gt;
    1 * 43	 04 0A A4 01 E3 D0 &amp;quot;ÞFenntartva későbbi használatra.&amp;quot; 00&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 134	 04 0A FF 01 E4 D0 &amp;quot;ÞBauxite  mine is prospected with 78% probability near other bauxite mines, with 25% probability far from other bauxite mines.&amp;quot; 00&lt;br /&gt;
    1 * 134	 04 0A 82 01 E4 D0 &amp;quot;ÞEine Bauxitmine zu erkunden ist mit 78% Wahrscheinlichkeit nahe anderen Bauxitminen und mit 25% Wahrscheinlichkeit von ihnen entfernt erfolgreich.&amp;quot; 00&lt;br /&gt;
    1 * 223	 04 0A 87 01 E4 D0 &amp;quot;ÞГеологическая разведка обнаруживает залежи бокситов с вероятностью 78% вблизи других шахт, с вероятностью 25% вдали от них.&amp;quot; 00&lt;br /&gt;
// - Industry window texts -&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 88	 04 0A FF 01 DC D0 &amp;quot;Þ\90Bauxites left: \UE07B tonnes (\80 / \80)\nLevel: \UE07C% (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 87 01 DC D0 &amp;quot;Þ\90Залежи бокситов: \UE07B тонн (\80 / \80)\nУр-нь: \UE07C% (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
// vehicles factory&lt;br /&gt;
    1 * 53	 04 0A FF 01 DD D0 &amp;quot;Þ\90Lines: \UE07C (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 60	 04 0A 82 01 DD D0 &amp;quot;Þ\90Montagelinien: \UE07C (\80)\nRest: \UE07C Monate (0-undef.)&amp;quot; 00&lt;br /&gt;
    1 * 57	 04 0A 83 01 DD D0 &amp;quot;Þ\90Lignes: \UE07C (\80)\nRestant: \UE07C mois (0=indéfini)&amp;quot; 00&lt;br /&gt;
    1 * 67	 04 0A 87 01 DD D0 &amp;quot;Þ\90Линий: \UE07C (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
    1 * 67	 04 0A 90 01 DD D0 &amp;quot;Þ\90Ліній: \UE07C (\80)\nЗнос: \UE07C мес. (0-невяд.)&amp;quot; 00&lt;br /&gt;
    1 * 61	 04 0A A7 01 DD D0 &amp;quot;Þ\90Linee: \UE07C (\80)\nRimanenti: \UE07C mesi (0 = indefinito)&amp;quot; 00&lt;br /&gt;
    1 * 58	 04 0A B7 01 DD D0 &amp;quot;Þ\90Linhas: \UE07C (\80)\nRestante: \UE07C meses (0-não def)&amp;quot; 00&lt;br /&gt;
    1 * 77	 04 0A 95 01 DD D0 &amp;quot;Þ\90Linek v provozu: \UE07C (\80)\nUzavře se za: \UE07C měsíců (0-neurčito)&amp;quot; 00&lt;br /&gt;
    1 * 61	 04 0A BA 01 DD D0 &amp;quot;Þ\90생산 라인: \UE07C (\80)\n\UE07C 달 남음 (0-미정의)&amp;quot; 00&lt;br /&gt;
    1 * 95	 04 0A B0 01 DD D0 &amp;quot;Þ\90Taśmy produkcyjne: \UE07C (\80)\nDo upadłości zotało: \UE07C miesięcy (0-niezdefiniowano)&amp;quot; 00&lt;br /&gt;
    1 * 70	 04 0A 9F 01 DD D0 &amp;quot;Þ\90Productielijnen: \UE07C (\80)\nResterend: \UE07C maanden (0-oneindig)&amp;quot; 00&lt;br /&gt;
    1 * 88	 04 0A A4 01 DD D0 &amp;quot;Þ\90Gyártósorok: \UE07C (\80)\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)&amp;quot; 00&lt;br /&gt;
// iron ore mine&lt;br /&gt;
    1 * 83	 04 0A FF 01 DE D0 &amp;quot;Þ\90Ore left: \UE07B tonnes (\80 / \80)\nLevel: \UE07C% (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 84	 04 0A 82 01 DE D0 &amp;quot;Þ\90Erzreserve: \UE07B Tonnen (\80 / \80)\nLevel: \UE07C% (\80)\nRest: \UE07C Monate (0-undef.)&amp;quot; 00&lt;br /&gt;
    1 * 95	 04 0A 83 01 DE D0 &amp;quot;Þ\90Minéral restant: \UE07B tonnes (\80 / \80)\nNiveau: \UE07C% (\80)\nRestant: \UE07C mois (0=indéfini)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 87 01 DE D0 &amp;quot;Þ\90Залежи руды: \UE07B тонн (\80 / \80)\nУр-нь: \UE07C% (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 90 01 DE D0 &amp;quot;Þ\90Залежы руды: \UE07B тон (\80 / \80)\nУзр-нь: \UE07C% (\80)\nЗнос: \UE07C мес. (0-невяд.)&amp;quot; 00&lt;br /&gt;
    1 * 107	 04 0A A7 01 DE D0 &amp;quot;Þ\90Minerale rimanente: \UE07B tonnellate (\80 / \80)\nLivello: \UE07C% (\80)\nRimanenti: \UE07C mesi (0 = indefinito)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A B7 01 DE D0 &amp;quot;Þ\90Minério restante: \UE07B toneladas (\80 / \80)\nNível: \UE07C% (\80)\nRestante: \UE07C meses (0-não def)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 95 01 DE D0 &amp;quot;Þ\90Železné rudy zbývá: \UE07B tun (\80 / \80)\nÚroveň: \UE07C% (\80)\nUzavře se za: \UE07C měsíců (0-neurčito)&amp;quot; 00&lt;br /&gt;
    1 * 84	 04 0A BA 01 DE D0 &amp;quot;Þ\90광석 \UE07B톤 남음 (\80 / \80)\n레벨: \UE07C% (\80)\n\UE07C 달 남음 (0-미정의)&amp;quot; 00&lt;br /&gt;
    1 * 105	 04 0A B0 01 DE D0 &amp;quot;Þ\90Pozostało rudy: \UE07B ton (\80 / \80)\nPoziom: \UE07C% (\80)\nPozostało: \UE07C miesięcy (0-niezdefiniowano)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A 9F 01 DE D0 &amp;quot;Þ\90Resterende ijzererts: \UE07B ton (\80 / \80)\nNiveau: \UE07C% (\80)\nResterend: \UE07C maanden (0-oneindig)&amp;quot; 00&lt;br /&gt;
    1 * 121	 04 0A A4 01 DE D0 &amp;quot;Þ\90Hátralévő vasérc: \UE07B tonna (\80 / \80)\nSzint: \UE07C% (\80)\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)&amp;quot; 00&lt;br /&gt;
// steel mill&lt;br /&gt;
    1 * 92	 04 0A FF 01 DF D0 &amp;quot;Þ\90Furnaces on: \UE07C\nRemain: \UE07C months (0-undef)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A 82 01 DF D0 &amp;quot;Þ\90Hochöfen in Betrieb: \UE07C\nRest: \UE07C Monate (0-undef.)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A 83 01 DF D0 &amp;quot;Þ\90Fours en fonction: \UE07C\nRestant: \UE07C mois (0=indéfini)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 137	 04 0A 87 01 DF D0 &amp;quot;Þ\90Используется печей: \UE07C\nСнос: \UE07C мес. (0-неизв.)\nВыплавка: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 145	 04 0A 90 01 DF D0 &amp;quot;Þ\90Выкарыстоўваецца печаў: \UE07C\nЗнос: \UE07C мес. (0-невяд.)\nВыплаўка: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 103	 04 0A A7 01 DF D0 &amp;quot;Þ\90Fornaci attive: \UE07C\nRimanenti: \UE07C mesi (0 = indefinito)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A B7 01 DF D0 &amp;quot;Þ\90Fornalhas acesas: \UE07C\nRestante: \UE07C meses (0-não def)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 113	 04 0A 95 01 DF D0 &amp;quot;Þ\90Pecí v provozu: \UE07C\nUzavře se za: \UE07C měsíců (0-neurčito)\nVýroba: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 99	 04 0A BA 01 DF D0 &amp;quot;Þ\90용광로 가동: \UE07C\n\UE07C 달 남음 (0-미정의)\n생산: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 140	 04 0A B0 01 DF D0 &amp;quot;Þ\90Włączono wielkich pieców: \UE07C\nPozostało do zamknięcia: \UE07C miesięcy (0-niezdefiniowane)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 106	 04 0A 9F 01 DF D0 &amp;quot;Þ\90Hoogovens aan: \UE07C\nResterend: \UE07C maanden (0-oneindig)\nProductie: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 132	 04 0A A4 01 DF D0 &amp;quot;Þ\90Bekapcsolt kazánok: \UE07C\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)\nTermelés: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Vectors_Translations_-_Machinery_vector_strings._Industries&amp;diff=7824</id>
		<title>ECS Vectors Translations - Machinery vector strings. Industries</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Vectors_Translations_-_Machinery_vector_strings._Industries&amp;diff=7824"/>
		<updated>2011-09-03T19:20:35Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: German translations for Bauxite mines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECS Translations]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// - Strings for industries names -&lt;br /&gt;
// Vehicles factory&lt;br /&gt;
    1 * 25	 04 0A FF 01 F0 D0 &amp;quot;ÞVehicles factory&amp;quot; 00&lt;br /&gt;
    1 * 22	 04 0A 82 01 F0 D0 &amp;quot;ÞAutomobilwerk&amp;quot; 00&lt;br /&gt;
    1 * 28	 04 0A 83 01 F0 D0 &amp;quot;ÞUsine d&#039;automobiles&amp;quot; 00&lt;br /&gt;
    1 * 33	 04 0A 84 01 F0 D0 &amp;quot;ÞFábrica de automóviles&amp;quot; 00&lt;br /&gt;
    1 * 46	 04 0A 87 01 F0 D0 &amp;quot;ÞАвтомобильный завод&amp;quot; 00&lt;br /&gt;
    1 * 44	 04 0A 90 01 F0 D0 &amp;quot;ÞАўтамабільны завод&amp;quot; 00&lt;br /&gt;
    1 * 23	 04 0A A7 01 F0 D0 &amp;quot;Fabbrica di auto&amp;quot; 00&lt;br /&gt;
    1 * 34	 04 0A B7 01 F0 D0 &amp;quot;ÞFábrica automobilística&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 95 01 F0 D0 &amp;quot;ÞStrojírenský podnik&amp;quot; 00&lt;br /&gt;
    1 * 25	 04 0A BA 01 F0 D0 &amp;quot;Þ중장비 공장&amp;quot; 00&lt;br /&gt;
    1 * 26	 04 0A 9F 01 F0 D0 &amp;quot;ÞVoertuigenfabriek&amp;quot; 00&lt;br /&gt;
    1 * 60	 04 0A A4 01 F0 D0 &amp;quot;Þ\UE09A\14\UE09A\10\01gépjárműgyárat\UE09A\11Gépjárműgyár\UE09A\12&amp;quot; 00&lt;br /&gt;
// Shipyard&lt;br /&gt;
    1 * 17	 04 0A FF 01 F1 D0 &amp;quot;ÞShipyard&amp;quot; 00&lt;br /&gt;
    1 * 14	 04 0A 82 01 F1 D0 &amp;quot;ÞWerft&amp;quot; 00&lt;br /&gt;
    1 * 23	 04 0A 83 01 F1 D0 &amp;quot;ÞChantier naval&amp;quot; 00&lt;br /&gt;
    1 * 19	 04 0A 84 01 F1 D0 &amp;quot;ÞAstilleros&amp;quot; 00&lt;br /&gt;
    1 * 19	 04 0A 87 01 F1 D0 &amp;quot;ÞВерфь&amp;quot; 00&lt;br /&gt;
    1 * 17	 04 0A 90 01 F1 D0 &amp;quot;ÞВерф&amp;quot; 00&lt;br /&gt;
    1 * 24	 04 0A A7 01 F1 D0 &amp;quot;ÞCantiere navale&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A B7 01 F1 D0 &amp;quot;ÞEstaleiro&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A 95 01 F1 D0 &amp;quot;ÞLoděnice&amp;quot; 00&lt;br /&gt;
    1 * 18	 04 0A BA 01 F1 D0 &amp;quot;Þ조선소&amp;quot; 00&lt;br /&gt;
    1 * 20	 04 0A 9F 01 F1 D0 &amp;quot;ÞScheepswerf&amp;quot; 00&lt;br /&gt;
    1 * 48	 04 0A A4 01 F1 D0 &amp;quot;Þ\UE09A\14\UE09A\10\01hajógyárat\UE09A\11Hajógyár\UE09A\12&amp;quot; 00&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 21	 04 0A FF 01 F2 D0 &amp;quot;ÞBauxite mine&amp;quot; 00&lt;br /&gt;
    1 * 21	 04 0A 82 01 F2 D0 &amp;quot;ÞBauxitmine&amp;quot; 00&lt;br /&gt;
    1 * 21	 04 0A 87 01 F2 D0 &amp;quot;ÞБокситовый рудник&amp;quot; 00&lt;br /&gt;
// - Strings for industries descriptions -&lt;br /&gt;
// vehicles factory&lt;br /&gt;
    1 * 59	 04 0A FF 01 E0 D0 &amp;quot;ÞVehicles factory does not have special conditions.&amp;quot; 00&lt;br /&gt;
    1 * 62	 04 0A 82 01 E0 D0 &amp;quot;ÞDas Automobilwerk hat keine besonderen Anforderungen.&amp;quot; 00&lt;br /&gt;
    1 * 66	 04 0A 83 01 E0 D0 &amp;quot;ÞL&#039;usine d&#039;automobiles n&#039;a aucune condition particulière.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 87 01 E0 D0 &amp;quot;ÞАвтомобильный завод не имеет ограничений.&amp;quot; 00&lt;br /&gt;
    1 * 82	 04 0A 90 01 E0 D0 &amp;quot;ÞАўтамабільны завод не мае абмежаванняў.&amp;quot; 00&lt;br /&gt;
    1 * 75	 04 0A A7 01 E0 D0 &amp;quot;ÞLe fabbriche di automezzi non hanno alcuna condizione particolare.&amp;quot; 00&lt;br /&gt;
    1 * 69	 04 0A B7 01 E0 D0 &amp;quot;ÞFábricas automobilísticas não têm condições especiais.&amp;quot; 00&lt;br /&gt;
    1 * 69	 04 0A 95 01 E0 D0 &amp;quot;ÞStrojírenský podnik nemá žádné zvláštní požadavky.&amp;quot; 00&lt;br /&gt;
    1 * 56	 04 0A BA 01 E0 D0 &amp;quot;Þ중장비 공장은 특별한 조건이 없다.&amp;quot; 00&lt;br /&gt;
    1 * 88	 04 0A B0 01 E0 D0 &amp;quot;ÞWytórnia Sprzętu Komunikacyjnego nie ma specjalnych wymagań lokalizacyjnych.&amp;quot; 00&lt;br /&gt;
    1 * 80	 04 0A 9F 01 E0 D0 &amp;quot;ÞVoor het bouwen van voertuigfabrieken gelden geen speciale voorwaarden.&amp;quot; 00&lt;br /&gt;
    1 * 53	 04 0A A4 01 E0 D0 &amp;quot;ÞGépjárműgyárat akárhol lehet építeni.&amp;quot; 00&lt;br /&gt;
// steel mill&lt;br /&gt;
    1 * 64	 04 0A FF 01 E1 D0 &amp;quot;ÞSteel mill should be built on flat land far from towns.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 82 01 E1 D0 &amp;quot;ÞStahlwerk muss auf flachem Land und weit entfernt von Städten gebaut werden.&amp;quot; 00&lt;br /&gt;
    1 * 86	 04 0A 83 01 E1 D0 &amp;quot;ÞSUne usine sidérurgique doit être bâtie sur terrain plain loin des villes.&amp;quot; 00&lt;br /&gt;
    1 * 93	 04 0A 87 01 E1 D0 &amp;quot;ÞСталилитейный завод стрится вдали от городов.&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A 90 01 E1 D0 &amp;quot;ÞСталеліцейны завод будуецца ўдалечыні ад гарадоў.&amp;quot; 00&lt;br /&gt;
    1 * 94	 04 0A A7 01 E1 D0 &amp;quot;ÞUn&#039;industria siderurgica dev&#039;essere costruita su terreno piano, lontano dalle città.&amp;quot; 00&lt;br /&gt;
    1 * 80	 04 0A B7 01 E1 D0 &amp;quot;ÞSiderúrgicas devem ser construídas em terreno plano longe de cidades.&amp;quot; 00&lt;br /&gt;
    1 * 93	 04 0A 95 01 E1 D0 &amp;quot;ÞOcelárna smí být postavena pouze na ploché zemi ve velké vzdálenosti od měst.&amp;quot; 00&lt;br /&gt;
    1 * 92	 04 0A BA 01 E1 D0 &amp;quot;Þ제철소는 마을에서 멀리 떨어진 편평한 땅에 지어져야 합니다.&amp;quot; 00&lt;br /&gt;
    1 * 77	 04 0A B0 01 E1 D0 &amp;quot;ÞHuta stali powinna być budowana zdala od miast na płaskim terenia.&amp;quot; 00&lt;br /&gt;
    1 * 81	 04 0A 9F 01 E1 D0 &amp;quot;ÞHoogvens moeten op vlak land en ver van plaatsen vandaan worden gebouwd.&amp;quot; 00&lt;br /&gt;
    1 * 81	 04 0A A4 01 E1 D0 &amp;quot;ÞAcélöntőt lapos területen, településektől távol lehet építeni.&amp;quot; 00&lt;br /&gt;
// iron ore mine&lt;br /&gt;
    1 * 136	 04 0A FF 01 E2 D0 &amp;quot;ÞIron ore mine is prospected with 78% probability near other iron ore mines, with 25% probability far from other iron ore mines.&amp;quot; 00&lt;br /&gt;
    1 * 145	 04 0A 82 01 E2 D0 &amp;quot;ÞEisenerzmine wird mit 78% Wahrscheinlichkeit in der Nähe und mit 25% Wahrscheinlichkeit weit entfernt von anderen Eisenerzminen gebaut.&amp;quot; 00&lt;br /&gt;
    1 * 133	 04 0A 83 01 E2 D0 &amp;quot;ÞUne mine de fer est prospectée avec le 78% de probabilité près d&#039;autres mines de fer, et avec le 25% loin d&#039;autres mines.&amp;quot; 00&lt;br /&gt;
    1 * 223	 04 0A 87 01 E2 D0 &amp;quot;ÞГеологическая разведка обнаруживает залежи руды с вероятностью 78% вблизи других шахт, с вероятностью 25% вдали от них.&amp;quot; 00&lt;br /&gt;
    1 * 224	 04 0A 90 01 E2 D0 &amp;quot;ÞГеалагічная разведка выяўляе залежы руды з верагоднасцю 78% паблізу ад іншых шахтаў, з верагоднасцю 25% удалечыні ад іх.&amp;quot; 00&lt;br /&gt;
    1 * 130	 04 0A A7 01 E2 D0 &amp;quot;ÞPuoi trovare un giacimento di ferro col 78% delle probabilità se vicino ad altre miniere di ferro, e col 25% se lontano.&amp;quot; 00&lt;br /&gt;
    1 * 155	 04 0A B7 01 E2 D0 &amp;quot;ÞMinas de ferro são pesquisadas com 78% de probabilidade perto de outras minas de ferro e com 25% de probabilidade longe de outras minas de ferro.&amp;quot; 00&lt;br /&gt;
    1 * 210	 04 0A 95 01 E2 D0 &amp;quot;ÞLožisko železné rudy bude nalezeno s 78%-ní úspěšností poblíž existujících železnorudných dolů a s 25%-ní úspěšností ve velké vzdálenosti od existujících železnorudných dolů.&amp;quot; 00&lt;br /&gt;
    1 * 155	 04 0A BA 01 E2 D0 &amp;quot;Þ철 광산은 다른 철 광산의 근처에서 78%의 확률로 시굴되고, 멀리 떨어진 철 광산에서는 25%의 확률로 시굴된다.&amp;quot; 00&lt;br /&gt;
    1 * 106	 04 0A B0 01 E2 D0 &amp;quot;ÞKopalnia rudy żelaza powstanie z 75% prawdopodobieństwem w pobliżu innej kopalni rudy żelaza.&amp;quot; 00&lt;br /&gt;
    1 * 133	 04 0A 9F 01 E2 D0 &amp;quot;ÞDe kans op het succesvol bouwen van een ijzerertsmijn dichtbij bestaande ijzerertsmijn(en) is 78% en 25% in andere gevallen.&amp;quot; 00&lt;br /&gt;
    1 * 181	 04 0A A4 01 E2 D0 &amp;quot;ÞKutatás támogatása esetén vasércbánya 78% valószínűséggel létesül más vasércbánya közelében, 25% valószínűséggel pedig más vasércbányáktól távol.&amp;quot; 00&lt;br /&gt;
// Ship yard&lt;br /&gt;
    1 * 33	 04 0A FF 01 E3 D0 &amp;quot;ÞReserved for future use.&amp;quot; 00&lt;br /&gt;
    1 * 33	 04 0A FF 01 E3 D0 &amp;quot;ÞReserviert für zukünftigen Gebrauch.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A 83 01 E3 D0 &amp;quot;ÞRéservé à une utilisation future.&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 87 01 E3 D0 &amp;quot;ÞНедоступен.&amp;quot; 00&lt;br /&gt;
    1 * 30	 04 0A 90 01 E3 D0 &amp;quot;ÞНедаступны.&amp;quot; 00&lt;br /&gt;
    1 * 34	 04 0A A7 01 E3 D0 &amp;quot;ÞRiservato per usi futuri.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A 95 01 E3 D0 &amp;quot;ÞRezervováno pro budoucí použití.&amp;quot; 00&lt;br /&gt;
    1 * 45	 04 0A BA 01 E3 D0 &amp;quot;Þ미래에 사용하기위해 예약.&amp;quot; 00&lt;br /&gt;
    1 * 54	 04 0A B0 01 E3 D0 &amp;quot;ÞZastrzeżone do zastosowania w przyszłości.&amp;quot; 00&lt;br /&gt;
    1 * 46	 04 0A 9F 01 E3 D0 &amp;quot;ÞGereserveerd voor toekomstig gebruik.&amp;quot; 00&lt;br /&gt;
    1 * 43	 04 0A A4 01 E3 D0 &amp;quot;ÞFenntartva későbbi használatra.&amp;quot; 00&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 134	 04 0A FF 01 E4 D0 &amp;quot;ÞBauxite  mine is prospected with 78% probability near other bauxite mines, with 25% probability far from other bauxite mines.&amp;quot; 00&lt;br /&gt;
    1 * 134	 04 0A 82 01 E4 D0 &amp;quot;ÞEine Bauxitemine zu erkunden ist mit 78% Wahrscheinlichkeit nahe anderen Bauxitminen und mit 25% Wahrscheinlichkeit von ihnen entfernt erfolgreich.&amp;quot; 00&lt;br /&gt;
    1 * 223	 04 0A 87 01 E4 D0 &amp;quot;ÞГеологическая разведка обнаруживает залежи бокситов с вероятностью 78% вблизи других шахт, с вероятностью 25% вдали от них.&amp;quot; 00&lt;br /&gt;
// - Industry window texts -&lt;br /&gt;
// Bauxite mine&lt;br /&gt;
    1 * 88	 04 0A FF 01 DC D0 &amp;quot;Þ\90Bauxites left: \UE07B tonnes (\80 / \80)\nLevel: \UE07C% (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 87 01 DC D0 &amp;quot;Þ\90Залежи бокситов: \UE07B тонн (\80 / \80)\nУр-нь: \UE07C% (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
// vehicles factory&lt;br /&gt;
    1 * 53	 04 0A FF 01 DD D0 &amp;quot;Þ\90Lines: \UE07C (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 60	 04 0A 82 01 DD D0 &amp;quot;Þ\90Montagelinien: \UE07C (\80)\nRest: \UE07C Monate (0-undef.)&amp;quot; 00&lt;br /&gt;
    1 * 57	 04 0A 83 01 DD D0 &amp;quot;Þ\90Lignes: \UE07C (\80)\nRestant: \UE07C mois (0=indéfini)&amp;quot; 00&lt;br /&gt;
    1 * 67	 04 0A 87 01 DD D0 &amp;quot;Þ\90Линий: \UE07C (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
    1 * 67	 04 0A 90 01 DD D0 &amp;quot;Þ\90Ліній: \UE07C (\80)\nЗнос: \UE07C мес. (0-невяд.)&amp;quot; 00&lt;br /&gt;
    1 * 61	 04 0A A7 01 DD D0 &amp;quot;Þ\90Linee: \UE07C (\80)\nRimanenti: \UE07C mesi (0 = indefinito)&amp;quot; 00&lt;br /&gt;
    1 * 58	 04 0A B7 01 DD D0 &amp;quot;Þ\90Linhas: \UE07C (\80)\nRestante: \UE07C meses (0-não def)&amp;quot; 00&lt;br /&gt;
    1 * 77	 04 0A 95 01 DD D0 &amp;quot;Þ\90Linek v provozu: \UE07C (\80)\nUzavře se za: \UE07C měsíců (0-neurčito)&amp;quot; 00&lt;br /&gt;
    1 * 61	 04 0A BA 01 DD D0 &amp;quot;Þ\90생산 라인: \UE07C (\80)\n\UE07C 달 남음 (0-미정의)&amp;quot; 00&lt;br /&gt;
    1 * 95	 04 0A B0 01 DD D0 &amp;quot;Þ\90Taśmy produkcyjne: \UE07C (\80)\nDo upadłości zotało: \UE07C miesięcy (0-niezdefiniowano)&amp;quot; 00&lt;br /&gt;
    1 * 70	 04 0A 9F 01 DD D0 &amp;quot;Þ\90Productielijnen: \UE07C (\80)\nResterend: \UE07C maanden (0-oneindig)&amp;quot; 00&lt;br /&gt;
    1 * 88	 04 0A A4 01 DD D0 &amp;quot;Þ\90Gyártósorok: \UE07C (\80)\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)&amp;quot; 00&lt;br /&gt;
// iron ore mine&lt;br /&gt;
    1 * 83	 04 0A FF 01 DE D0 &amp;quot;Þ\90Ore left: \UE07B tonnes (\80 / \80)\nLevel: \UE07C% (\80)\nRemain: \UE07C months (0-undef)&amp;quot; 00&lt;br /&gt;
    1 * 84	 04 0A 82 01 DE D0 &amp;quot;Þ\90Erzreserve: \UE07B Tonnen (\80 / \80)\nLevel: \UE07C% (\80)\nRest: \UE07C Monate (0-undef.)&amp;quot; 00&lt;br /&gt;
    1 * 95	 04 0A 83 01 DE D0 &amp;quot;Þ\90Minéral restant: \UE07B tonnes (\80 / \80)\nNiveau: \UE07C% (\80)\nRestant: \UE07C mois (0=indéfini)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 87 01 DE D0 &amp;quot;Þ\90Залежи руды: \UE07B тонн (\80 / \80)\nУр-нь: \UE07C% (\80)\nСнос: \UE07C мес. (0-неизв.)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 90 01 DE D0 &amp;quot;Þ\90Залежы руды: \UE07B тон (\80 / \80)\nУзр-нь: \UE07C% (\80)\nЗнос: \UE07C мес. (0-невяд.)&amp;quot; 00&lt;br /&gt;
    1 * 107	 04 0A A7 01 DE D0 &amp;quot;Þ\90Minerale rimanente: \UE07B tonnellate (\80 / \80)\nLivello: \UE07C% (\80)\nRimanenti: \UE07C mesi (0 = indefinito)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A B7 01 DE D0 &amp;quot;Þ\90Minério restante: \UE07B toneladas (\80 / \80)\nNível: \UE07C% (\80)\nRestante: \UE07C meses (0-não def)&amp;quot; 00&lt;br /&gt;
    1 * 111	 04 0A 95 01 DE D0 &amp;quot;Þ\90Železné rudy zbývá: \UE07B tun (\80 / \80)\nÚroveň: \UE07C% (\80)\nUzavře se za: \UE07C měsíců (0-neurčito)&amp;quot; 00&lt;br /&gt;
    1 * 84	 04 0A BA 01 DE D0 &amp;quot;Þ\90광석 \UE07B톤 남음 (\80 / \80)\n레벨: \UE07C% (\80)\n\UE07C 달 남음 (0-미정의)&amp;quot; 00&lt;br /&gt;
    1 * 105	 04 0A B0 01 DE D0 &amp;quot;Þ\90Pozostało rudy: \UE07B ton (\80 / \80)\nPoziom: \UE07C% (\80)\nPozostało: \UE07C miesięcy (0-niezdefiniowano)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A 9F 01 DE D0 &amp;quot;Þ\90Resterende ijzererts: \UE07B ton (\80 / \80)\nNiveau: \UE07C% (\80)\nResterend: \UE07C maanden (0-oneindig)&amp;quot; 00&lt;br /&gt;
    1 * 121	 04 0A A4 01 DE D0 &amp;quot;Þ\90Hátralévő vasérc: \UE07B tonna (\80 / \80)\nSzint: \UE07C% (\80)\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)&amp;quot; 00&lt;br /&gt;
// steel mill&lt;br /&gt;
    1 * 92	 04 0A FF 01 DF D0 &amp;quot;Þ\90Furnaces on: \UE07C\nRemain: \UE07C months (0-undef)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 100	 04 0A 82 01 DF D0 &amp;quot;Þ\90Hochöfen in Betrieb: \UE07C\nRest: \UE07C Monate (0-undef.)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A 83 01 DF D0 &amp;quot;Þ\90Fours en fonction: \UE07C\nRestant: \UE07C mois (0=indéfini)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 137	 04 0A 87 01 DF D0 &amp;quot;Þ\90Используется печей: \UE07C\nСнос: \UE07C мес. (0-неизв.)\nВыплавка: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 145	 04 0A 90 01 DF D0 &amp;quot;Þ\90Выкарыстоўваецца печаў: \UE07C\nЗнос: \UE07C мес. (0-невяд.)\nВыплаўка: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 103	 04 0A A7 01 DF D0 &amp;quot;Þ\90Fornaci attive: \UE07C\nRimanenti: \UE07C mesi (0 = indefinito)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 101	 04 0A B7 01 DF D0 &amp;quot;Þ\90Fornalhas acesas: \UE07C\nRestante: \UE07C meses (0-não def)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 113	 04 0A 95 01 DF D0 &amp;quot;Þ\90Pecí v provozu: \UE07C\nUzavře se za: \UE07C měsíců (0-neurčito)\nVýroba: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 99	 04 0A BA 01 DF D0 &amp;quot;Þ\90용광로 가동: \UE07C\n\UE07C 달 남음 (0-미정의)\n생산: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 140	 04 0A B0 01 DF D0 &amp;quot;Þ\90Włączono wielkich pieców: \UE07C\nPozostało do zamknięcia: \UE07C miesięcy (0-niezdefiniowane)\nProd: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 106	 04 0A 9F 01 DF D0 &amp;quot;Þ\90Hoogovens aan: \UE07C\nResterend: \UE07C maanden (0-oneindig)\nProductie: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
    1 * 132	 04 0A A4 01 DF D0 &amp;quot;Þ\90Bekapcsolt kazánok: \UE07C\nHátralévő idő: \UE07C hónap (0 = nincs meghatározva)\nTermelés: (\UE07C, \UE07C, \UE07C, \UE07C, \UE07C, \UE07C)&amp;quot; 00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=7732</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=7732"/>
		<updated>2011-08-28T06:15:44Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Add Link to (stump) of tutorial on how to use 3dsmax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Playing OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[PreSignalsTutorial]]: How to use pre-signals&lt;br /&gt;
&lt;br /&gt;
== Developing NewGRFs for OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[GRFTutorial|NFO Tutorial]]: How to make NewGRFs using NFO (under construction)&lt;br /&gt;
* [[NMLTutorial|NML Tutorial]]: How to make NewGRFs using the NewGRF Meta Language (NML)&lt;br /&gt;
&lt;br /&gt;
== General sprite drawing ==&lt;br /&gt;
* [[DrawingSprites]]: How to draw new graphics&lt;br /&gt;
* [[Creating_new_Sprites_with_3dsMax|Using 3dsmax]]: Creating sprites using 3DSMax&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=7731</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Tutorials&amp;diff=7731"/>
		<updated>2011-08-28T06:05:31Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Playing OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[PreSignalsTutorial]]: How to use pre-signals&lt;br /&gt;
&lt;br /&gt;
== Developing NewGRFs for OpenTTD and TTDPatch ==&lt;br /&gt;
&lt;br /&gt;
* [[GRFTutorial|NFO Tutorial]]: How to make NewGRFs using NFO (under construction)&lt;br /&gt;
* [[NMLTutorial|NML Tutorial]]: How to make NewGRFs using the NewGRF Meta Language (NML)&lt;br /&gt;
* [[DrawingSprites]]: How to draw new graphics&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=MediaWiki:Sidebar&amp;diff=7730</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=MediaWiki:Sidebar&amp;diff=7730"/>
		<updated>2011-08-28T06:03:08Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: internal links work w/o ]] and [[&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|Main page&lt;br /&gt;
** Tutorials|Tutorials&lt;br /&gt;
** http://newgrf-specs.tt-wiki.net/|NewGRF Specs&lt;br /&gt;
** http://www.tt-forums.net/|TT-Forums&lt;br /&gt;
* links&lt;br /&gt;
** http://www.ttdpatch.net/|TTDPatch&lt;br /&gt;
** http://www.openttd.org/|OpenTTD&lt;br /&gt;
* wiki&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** Manual_of_Style|Manual of Style&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=MediaWiki:Sidebar&amp;diff=7729</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=MediaWiki:Sidebar&amp;diff=7729"/>
		<updated>2011-08-28T06:01:06Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Add link to tutorial overview page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|Main page&lt;br /&gt;
** [[Tutorials|Tutorials]]&lt;br /&gt;
** http://newgrf-specs.tt-wiki.net/|NewGRF Specs&lt;br /&gt;
** http://www.tt-forums.net/|TT-Forums&lt;br /&gt;
* links&lt;br /&gt;
** http://www.ttdpatch.net/|TTDPatch&lt;br /&gt;
** http://www.openttd.org/|OpenTTD&lt;br /&gt;
* wiki&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** Manual_of_Style|Manual of Style&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7711</id>
		<title>NMLTutorial/Parameters</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7711"/>
		<updated>2011-08-27T21:51:02Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: made clearer that the &amp;lt;num&amp;gt; for parameters is often optional&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
NewGRF Parameters in NML are part of the grf block&lt;br /&gt;
&amp;lt;pre&amp;gt;grf {&lt;br /&gt;
	grfid: &amp;quot;NML\FF&amp;quot;;&lt;br /&gt;
	name: string(STR_GRF_NAME);&lt;br /&gt;
	desc: string(STR_GRF_DESC);&lt;br /&gt;
	version: 1;&lt;br /&gt;
	min_compatible_version: 0;&lt;br /&gt;
	param &amp;lt;num&amp;gt; {&lt;br /&gt;
		&amp;lt;name&amp;gt; {&lt;br /&gt;
			name: string(STR_PARAM_NAME_ECONOMIES);&lt;br /&gt;
			desc: string(STR_PARAM_DESC_ECONOMIES);&lt;br /&gt;
			&amp;lt;specifics&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is the name the parameter is referenced further within the grf to read this parameter. &amp;lt;num&amp;gt; is the number of this parameter. The &amp;lt;num&amp;gt; parameter is optional and not needed when parameters are not re-ordered throughout versions. It can be used to keep the meaning of a specific NewGRF parameter while re-ordering the code. The meaning of a NewGRF parameter should should remain constant throughout versions of the same NewGRF or the NewGRF might become incompatible with previous versions of the same NewGRF (thus you&#039;d need to change min_compatible_version if you change the meaning of the parameters at &amp;lt;num&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Parameter types ==&lt;br /&gt;
NML knows three different types of parameters, boolean, numeric ones and enumerations:&lt;br /&gt;
&lt;br /&gt;
=== Boolean parameter ===&lt;br /&gt;
The boolean parameter is the easiest as it requires no further definitions besides the name and description. Optionally a single parameter can contain several boolean parameter values, each using a single bit, thus saving in the number of externally visible NewGRF parameters.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 3 { // 3rd parameter of the NewGRF&lt;br /&gt;
	param_bool_1 { // 1st boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  1; // uses 1st bit&lt;br /&gt;
	}&lt;br /&gt;
	param_bool_2 { // 2nd boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  2; // uses 2nd bit&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Numeric parameter ===&lt;br /&gt;
&lt;br /&gt;
The numeric parameter allows to directly input an (integer) number. It needs to have a minimum and maximum value given and optionally - and usually a good idea - a default value for the parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 1 {&lt;br /&gt;
	param_depot_year {&lt;br /&gt;
		type: int;&lt;br /&gt;
		name: string(STR_PARAM_DEPOTYEAR);&lt;br /&gt;
		desc: string(STR_PARAM_DEPOTYEAR_DESC);&lt;br /&gt;
		min_value: 0;&lt;br /&gt;
		max_value: 5000000;&lt;br /&gt;
		def_value: 1975;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enumeration parameter ===&lt;br /&gt;
&lt;br /&gt;
The enumeration parameter basically is a numeric parameter where the single values have (additionally) a string attached to describe their meaning. Not all values need a string description, but it usually is a good idea to do this consistently&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 0 {&lt;br /&gt;
	economy {&lt;br /&gt;
		name: string(STR_PARAM_NAME_ECONOMIES);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_ECONOMIES);&lt;br /&gt;
		min_value: 0;&lt;br /&gt;
		max_value: 1;&lt;br /&gt;
		def_value: 0;&lt;br /&gt;
		names: {&lt;br /&gt;
			0: string(STR_PARAM_VALUE_ECONOMIES_TEST_ECONOMY);&lt;br /&gt;
			1: string(STR_PARAM_VALUE_ECONOMIES_HARD_ECONOMY);&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=MediaWiki:Common.css&amp;diff=7707</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=MediaWiki:Common.css&amp;diff=7707"/>
		<updated>2011-08-27T21:18:46Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: separate style templates for &amp;lt;pre&amp;gt; tag: example, pseudo and small (=max height 200px)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
table.wikitable td, th {&lt;br /&gt;
    border: 1px solid #CCCCCC;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
table {&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    empty-cells: show;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td, th {&lt;br /&gt;
    border:  1px solid #CCCCCC;&lt;br /&gt;
    padding: 0px 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
code {&lt;br /&gt;
    color: darkgreen;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pre {&lt;br /&gt;
    color: darkblue;&lt;br /&gt;
    white-space: pre-wrap&lt;br /&gt;
}&lt;br /&gt;
pre.example {&lt;br /&gt;
    color: darkblue;&lt;br /&gt;
}&lt;br /&gt;
pre.pseudo {&lt;br /&gt;
    color: black;&lt;br /&gt;
}&lt;br /&gt;
pre.small {&lt;br /&gt;
   max-height: 200px; &lt;br /&gt;
   overflow:scroll;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pad Google AdSense box in portlet in sidebar */&lt;br /&gt;
#p-googleadsense .pBody {&lt;br /&gt;
    padding-top: 5px;&lt;br /&gt;
    text-align:  center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=MediaWiki:Common.css&amp;diff=7702</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=MediaWiki:Common.css&amp;diff=7702"/>
		<updated>2011-08-27T20:03:31Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add colours to default code and pre tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
table.wikitable td, th {&lt;br /&gt;
    border: 1px solid #CCCCCC;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
table {&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    empty-cells: show;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td, th {&lt;br /&gt;
    border:  1px solid #CCCCCC;&lt;br /&gt;
    padding: 0px 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
code {&lt;br /&gt;
    color: darkgreen;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pre {&lt;br /&gt;
    color: darkblue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pad Google AdSense box in portlet in sidebar */&lt;br /&gt;
#p-googleadsense .pBody {&lt;br /&gt;
    padding-top: 5px;&lt;br /&gt;
    text-align:  center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Installation&amp;diff=7689</id>
		<title>NMLTutorial/Installation</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Installation&amp;diff=7689"/>
		<updated>2011-08-27T06:03:40Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Text editor */ add a linux and osx editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
NML is written in Python and therefore can be made to run on every operating system that can run Python. This includes the popular operating sytems Linux, MacOS and Windows. Below you&#039;ll find a description on how to install NML and how to use the command-line NML program on your operating system (MacOS description currently missing, as I don&#039;t have that, but please add it).&lt;br /&gt;
&lt;br /&gt;
{{Note|The NML Documentation reflects the latest state of the NML program. Make sure to update your NML regularly, especially if you find something not working that should work according to the documentation.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
NML requires Python, the Python Image Library and PLY (Python Lex-Yacc). These three things are best installed from your package manager. If you&#039;re looking to compiling NML yourself, you also need the Python Setuptools. Note that NML currently only runs on Python 2.5 through 2.7, but not 3.x. Look for the following in your package manager:&lt;br /&gt;
* python (you might already have this)&lt;br /&gt;
* python-imaging (pil)&lt;br /&gt;
* python-ply&lt;br /&gt;
* python-setuptools&lt;br /&gt;
&lt;br /&gt;
=== Installing NML as precompiled binary (recommended) ===&lt;br /&gt;
The latest version of NML is available as RPM package from the #openttdcoop DevZone. You can find it here: http://bundles.openttdcoop.org/nml/nightlies/LATEST/rpms/. This package is known to work on openSUSE and Red Hat (including Fedora and CentOS) distributions.&lt;br /&gt;
&lt;br /&gt;
You can use the terminal to install this package through your package manager (make sure to run it as superuser). For example on Fedora:&lt;br /&gt;
&lt;br /&gt;
 sudo bash&lt;br /&gt;
 yum install &amp;lt;nowiki&amp;gt;http://bundles.openttdcoop.org/nml/nightlies/LATEST/rpms/nml-rXXXX-suseYYYY.noarch.rpm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to replace XXXX and YYYY in the url with the actual version numbers you found via the link above. Enter &amp;quot;y&amp;quot; when asked and when done don&#039;t forget to &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt; sudo again, preventing yourself from doing stupid things from this point.&lt;br /&gt;
&lt;br /&gt;
=== Compiling NML yourself ===&lt;br /&gt;
The other option to get NML is to compile it yourself. First you need to get the source from http://bundles.openttdcoop.org/nml/nightlies/LATEST/ or via Mercurial checkout from http://hg.openttdcoop.org/nml (&amp;lt;code&amp;gt;hg clone &amp;lt;nowiki&amp;gt;http://hg.openttdcoop.org/nml&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Also this time you need the terminal as superuser. Then change directory to the (extracted) NML source and run &amp;lt;code&amp;gt;python setup.py install&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
 sudo bash&lt;br /&gt;
 cd ~/Downloads/nml-rXXXX&lt;br /&gt;
 python setup.py install&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Using NML ===&lt;br /&gt;
As said before, NML is a command-line program and therefore doesn&#039;t have a GUI; much like GRFCodec in fact. That means you need to run it from a terminal window. The NML program itself is called &amp;lt;code&amp;gt;nmlc&amp;lt;/code&amp;gt; and the general usage is &amp;lt;code&amp;gt;nmlc [options] &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;. First change directory to the directory which has your nml file. Then run the nmlc program to compile your grf. For example:&lt;br /&gt;
&lt;br /&gt;
 cd ~/grfs/mygrf&lt;br /&gt;
 nmlc -c --grf mygrf.grf mygrf.nml&lt;br /&gt;
&lt;br /&gt;
This will encode the nml file ~/grfs/mygrf/mygrf.nml into the grf file ~/grfs/mygrf/mygrf.grf. The -c option is not mandatory, but crops extraneous blue from sprites, reducing the filesize of the grf file.&lt;br /&gt;
&lt;br /&gt;
All command-line options available to NML are available via the &amp;lt;code&amp;gt;nmlc -h&amp;lt;/code&amp;gt; command and are also [[#NML Command-line Options|listed]] on this page. Now that you have NML and know how to use it, you can continue this tutorial to learn how to create an actual grf file using NML.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
NML is available as pre-built (32 bit) Windows executable from the #openttdcoop DevZone, so there is no need to compile it yourself.&lt;br /&gt;
&lt;br /&gt;
=== Installing NML ===&lt;br /&gt;
Go to http://bundles.openttdcoop.org/nml/nightlies/LATEST/ and download nml-rXXXX-windows-win32.zip, replacing XXXX with the actual version number of the package. The zip file contains a number of files that all need to stay together, so extract the zip file entirely into a single folder, for example D:\grfs\nml.&lt;br /&gt;
&lt;br /&gt;
If you leave it at this, you can already start to use NML, but only from that folder. This makes compiling grfs a bit more difficult as you have to write full paths when encoding a grf file. If you want to run NML from any directory, you need to add the directory containing the nmlc.exe executable to your PATH environment variable. As this can break Windows if you don&#039;t do this properly, we&#039;ll not be explaining this here and go for the long route instead. You&#039;re of course free to change your PATH yourself; if you do, you&#039;re probably also smart enough to know how to change the commands as explained in the section below.&lt;br /&gt;
&lt;br /&gt;
=== Using NML ===&lt;br /&gt;
As said before, NML is a command-line program and therefore doesn&#039;t have a GUI; much like GRFCodec in fact. That means you need to run it from a command prompt window. You can start the command prompt from Start &amp;gt; Programs &amp;gt; Accessories &amp;gt; Command Prompt. Or by entering &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into the Run dialog or the Start menu search bar.&lt;br /&gt;
&lt;br /&gt;
Next, you need to change directory to the folder where you have nmlc.exe in. Then you can run NML from there. For the example below we&#039;ll be assuming the following:&lt;br /&gt;
* nmlc.exe and related files are in D:\grfs\nml&lt;br /&gt;
* The nml file you want to encode is D:\grfs\mygrf\mygrf.nml&lt;br /&gt;
* The grf file to be created needs to go into D:\grfs\mygrf\mygrf.grf&lt;br /&gt;
&lt;br /&gt;
From the command prompt you can now run the following commands, one at a time, confirm with Enter after each line:&lt;br /&gt;
&lt;br /&gt;
 D:&lt;br /&gt;
 cd D:\grfs\nml&lt;br /&gt;
 nmlc -c --grf D:\grfs\mygrf\mygrf.grf D:\grfs\mygrf\mygrf.nml&lt;br /&gt;
&lt;br /&gt;
This will encode the nml file D:\grfs\mygrf\mygrf.nml into the grf file D:\grfs\mygrf\mygrf.grf. The -c option is not mandatory, but crops extraneous blue from sprites, reducing the filesize of the grf file. Note that if you have any spaces in a folder or file name, you need to enclose the complete path in double quotes, e.g.: &amp;lt;code&amp;gt;nmlc -c --grf &amp;quot;D:\grfs\my grf\mygrf.grf&amp;quot; &amp;quot;D:\grfs\mgrf\mygrf.nml&amp;quot;&amp;lt;/code&amp;gt;. It is therefore recommended not to have any spaces.&lt;br /&gt;
&lt;br /&gt;
All command-line options available to NML are available via the &amp;lt;code&amp;gt;nmlc -h&amp;lt;/code&amp;gt; command and are also [[#NML Command-line Options|listed]] on this page. Now that you have NML and know how to use it, you can continue this tutorial to learn how to create an actual grf file using NML.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NML Command-line Options ==&lt;br /&gt;
&#039;&#039;From the NML readme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Usage: nmlc [options] &amp;lt;filename&amp;gt;&lt;br /&gt;
 Where &amp;lt;filename&amp;gt; is the nml file to parse&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
  --version             show program&#039;s version number and exit&lt;br /&gt;
  -h, --help            show this help message and exit&lt;br /&gt;
  -d, --debug           write the AST to stdout&lt;br /&gt;
  -s, --stack           Dump stack when an error occurs&lt;br /&gt;
  --grf=&amp;lt;file&amp;gt;          write the resulting grf to &amp;lt;file&amp;gt;&lt;br /&gt;
  --nfo=&amp;lt;file&amp;gt;          write nfo output to &amp;lt;file&amp;gt;&lt;br /&gt;
  -c                    crop extraneous transparent blue from real sprites&lt;br /&gt;
  -u                    save uncompressed data in the grf file&lt;br /&gt;
  --nml=&amp;lt;file&amp;gt;          write optimized nml to &amp;lt;file&amp;gt;&lt;br /&gt;
  -o &amp;lt;file&amp;gt;, --output=&amp;lt;file&amp;gt;&lt;br /&gt;
                        write output(nfo/grf) to &amp;lt;file&amp;gt;&lt;br /&gt;
  -t &amp;lt;file&amp;gt;, --custom-tags=&amp;lt;file&amp;gt;&lt;br /&gt;
                        Load custom tags from &amp;lt;file&amp;gt; [default:&lt;br /&gt;
                        custom_tags.txt]&lt;br /&gt;
  -l &amp;lt;dir&amp;gt;, --lang-dir=&amp;lt;dir&amp;gt;&lt;br /&gt;
                        Load language files from directory &amp;lt;dir&amp;gt; [default:&lt;br /&gt;
                        lang]&lt;br /&gt;
  -a &amp;lt;dir&amp;gt;, --sprites-dir=&amp;lt;dir&amp;gt;&lt;br /&gt;
                        Store 32bpp sprites in directory &amp;lt;dir&amp;gt; [default:&lt;br /&gt;
                        sprites]&lt;br /&gt;
  --default-lang=&amp;lt;file&amp;gt;&lt;br /&gt;
                        The default language is stored in &amp;lt;file&amp;gt; [default:&lt;br /&gt;
                        english.lng]&lt;br /&gt;
  --start-sprite=&amp;lt;num&amp;gt;  Set the first sprite number to write (do not use&lt;br /&gt;
                        except when you output nfo that you want to include in&lt;br /&gt;
                        other files)&lt;br /&gt;
  -p &amp;lt;palette&amp;gt;, --palette=&amp;lt;palette&amp;gt;&lt;br /&gt;
                        Force nml to use the palette &amp;lt;pal&amp;gt; [default: ANY].&lt;br /&gt;
                        Valid values are &#039;DOS&#039;, &#039;WIN&#039;, &#039;ANY&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text editor ==&lt;br /&gt;
NML files and its language files are plain text files and should be edited in a plain text editor. Your operating system most likely comes with a text editor with limited functionality. As such it is recommended to choose an editor with more functionality:&lt;br /&gt;
; Cross-platform&lt;br /&gt;
* [http://www.geany.org/ Geany]&lt;br /&gt;
; Linux&lt;br /&gt;
* [http://kate-editor.org/get-it/ Kate]&lt;br /&gt;
; MacOS&lt;br /&gt;
* XCode&lt;br /&gt;
; Windows&lt;br /&gt;
* [http://notepad-plus-plus.org/ Notepad++]&lt;br /&gt;
&lt;br /&gt;
If you use an editor which you think is quite good and not listed here, you&#039;re welcome to add it.&lt;br /&gt;
&lt;br /&gt;
=== Syntax highlighting ===&lt;br /&gt;
Syntax highlighting adds some colour to NML code, which makes it easier to read.&lt;br /&gt;
&lt;br /&gt;
At the #openttdcoop DevZone there are syntax highlighter extensions available for [http://dev.openttdcoop.org/documents/24 Notepad++] and [http://dev.openttdcoop.org/documents/26 Geany]. If you want to create your own syntax highlighter, there&#039;s a [http://dev.openttdcoop.org/documents/25 script] available as well that will help you create the keyword lists.&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar||Graphic files}}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7684</id>
		<title>NMLTutorial/Parameters</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7684"/>
		<updated>2011-08-26T09:28:59Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: /* Numeric parameter */ numeric parameter examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
NewGRF Parameters in NML are part of the grf block&lt;br /&gt;
&amp;lt;pre&amp;gt;grf {&lt;br /&gt;
	grfid: &amp;quot;NML\FF&amp;quot;;&lt;br /&gt;
	name: string(STR_GRF_NAME);&lt;br /&gt;
	desc: string(STR_GRF_DESC);&lt;br /&gt;
	version: 1;&lt;br /&gt;
	min_compatible_version: 0;&lt;br /&gt;
	param &amp;lt;num&amp;gt; {&lt;br /&gt;
		&amp;lt;name&amp;gt; {&lt;br /&gt;
			name: string(STR_PARAM_NAME_ECONOMIES);&lt;br /&gt;
			desc: string(STR_PARAM_DESC_ECONOMIES);&lt;br /&gt;
			&amp;lt;specifics&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is the name the parameter is referenced further within the grf to read this parameter. &amp;lt;num&amp;gt; is the number of this parameter. The meaning of the &amp;lt;num&amp;gt; parameter should should remain constant throughout versions of the same NewGRF or the NewGRF might become incompatible with previous versions of the same NewGRF (thus you&#039;d need to change min_compatible_version if you change the meaning of the parameters at &amp;lt;num&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Parameter types ==&lt;br /&gt;
NML knows three different types of parameters, boolean, numeric ones and enumerations:&lt;br /&gt;
&lt;br /&gt;
=== Boolean parameter ===&lt;br /&gt;
The boolean parameter is the easiest as it requires no further definitions besides the name and description. Optionally a single parameter can contain several boolean parameter values, each using a single bit, thus saving in the number of externally visible NewGRF parameters.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 3 { // 3rd parameter of the NewGRF&lt;br /&gt;
	param_bool_1 { // 1st boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  1; // uses 1st bit&lt;br /&gt;
	}&lt;br /&gt;
	param_bool_2 { // 2nd boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  2; // uses 2nd bit&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Numeric parameter ===&lt;br /&gt;
&lt;br /&gt;
The numeric parameter allows to directly input an (integer) number. It needs to have a minimum and maximum value given and optionally - and usually a good idea - a default value for the parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 1 {&lt;br /&gt;
	param_depot_year {&lt;br /&gt;
		type: int;&lt;br /&gt;
		name: string(STR_PARAM_DEPOTYEAR);&lt;br /&gt;
		desc: string(STR_PARAM_DEPOTYEAR_DESC);&lt;br /&gt;
		min_value: 0;&lt;br /&gt;
		max_value: 5000000;&lt;br /&gt;
		def_value: 1975;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enumeration parameter ===&lt;br /&gt;
&lt;br /&gt;
The enumeration parameter basically is a numeric parameter where the single values have (additionally) a string attached to describe their meaning. Not all values need a string description, but it usually is a good idea to do this consistently&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 0 {&lt;br /&gt;
	economy {&lt;br /&gt;
		name: string(STR_PARAM_NAME_ECONOMIES);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_ECONOMIES);&lt;br /&gt;
		min_value: 0;&lt;br /&gt;
		max_value: 1;&lt;br /&gt;
		def_value: 0;&lt;br /&gt;
		names: {&lt;br /&gt;
			0: string(STR_PARAM_VALUE_ECONOMIES_TEST_ECONOMY);&lt;br /&gt;
			1: string(STR_PARAM_VALUE_ECONOMIES_HARD_ECONOMY);&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7683</id>
		<title>NMLTutorial/Parameters</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Parameters&amp;diff=7683"/>
		<updated>2011-08-26T09:19:31Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: parameters: boolean parameters explained.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
NewGRF Parameters in NML are part of the grf block&lt;br /&gt;
&amp;lt;pre&amp;gt;grf {&lt;br /&gt;
	grfid: &amp;quot;NML\FF&amp;quot;;&lt;br /&gt;
	name: string(STR_GRF_NAME);&lt;br /&gt;
	desc: string(STR_GRF_DESC);&lt;br /&gt;
	version: 1;&lt;br /&gt;
	min_compatible_version: 0;&lt;br /&gt;
	param &amp;lt;num&amp;gt; {&lt;br /&gt;
		&amp;lt;name&amp;gt; {&lt;br /&gt;
			name: string(STR_PARAM_NAME_ECONOMIES);&lt;br /&gt;
			desc: string(STR_PARAM_DESC_ECONOMIES);&lt;br /&gt;
			&amp;lt;specifics&amp;gt;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is the name the parameter is referenced further within the grf to read this parameter. &amp;lt;num&amp;gt; is the number of this parameter. The meaning of the &amp;lt;num&amp;gt; parameter should should remain constant throughout versions of the same NewGRF or the NewGRF might become incompatible with previous versions of the same NewGRF (thus you&#039;d need to change min_compatible_version if you change the meaning of the parameters at &amp;lt;num&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Parameter types ==&lt;br /&gt;
NML knows three different types of parameters, boolean, numeric ones and enumerations:&lt;br /&gt;
&lt;br /&gt;
=== Boolean parameter ===&lt;br /&gt;
The boolean parameter is the easiest as it requires no further definitions besides the name and description. Optionally a single parameter can contain several boolean parameter values, each using a single bit, thus saving in the number of externally visible NewGRF parameters.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
param 3 { // 3rd parameter of the NewGRF&lt;br /&gt;
	param_bool_1 { // 1st boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  1; // uses 1st bit&lt;br /&gt;
	}&lt;br /&gt;
	param_bool_2 { // 2nd boolean value&lt;br /&gt;
		name: string(STR_PARAM_NAME_DEBUG);&lt;br /&gt;
		desc: string(STR_PARAM_DESC_DEBUG);&lt;br /&gt;
		type: bool;&lt;br /&gt;
		bit:  2; // uses 2nd bit&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Numeric parameter ===&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7682</id>
		<title>NMLTutorial/Version check</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7682"/>
		<updated>2011-08-26T09:02:39Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add NMLTutoral menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
Version checks in NML are actually pretty straight forward.&lt;br /&gt;
&lt;br /&gt;
NML provides the [http://newgrf-specs.tt-wiki.net/wiki/NML:General#General_variables global variables] &amp;lt;code&amp;gt;openttd_version&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ttd_platform&amp;lt;/code&amp;gt;. Concerning version checks the built-in [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function] &amp;lt;code&amp;gt;version_openttd&amp;lt;/code&amp;gt; comes in very handy as it provides an easy means to specify the version instead of manually constructing the version number corresponding to a specific version.&lt;br /&gt;
&lt;br /&gt;
Thus checking for the TTD platform is simply done by an if block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as is the check for a specific OpenTTD (and similarily TTDPatch) version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Only define cargo_age_period when that property is available */&lt;br /&gt;
if (openttd_version &amp;gt; version_openttd(1, 2, 0, 22713)) {&lt;br /&gt;
	item (FEAT_TRAINS, my_engine) {&lt;br /&gt;
		property {&lt;br /&gt;
			cargo_age_period: 200;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to combine these checks into a single block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Long date string codes require OpenTTD &amp;gt; 1.2.0 or r22780 */&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD || openttd_version &amp;lt; version_openttd(1, 2, 0, 22780)) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7681</id>
		<title>NMLTutorial/Version check</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7681"/>
		<updated>2011-08-26T09:01:15Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: use common style for &amp;lt;code&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Version checks in NML are actually pretty straight forward.&lt;br /&gt;
&lt;br /&gt;
NML provides the [http://newgrf-specs.tt-wiki.net/wiki/NML:General#General_variables global variables] &amp;lt;code&amp;gt;openttd_version&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ttd_platform&amp;lt;/code&amp;gt;. Concerning version checks the built-in [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function] &amp;lt;code&amp;gt;version_openttd&amp;lt;/code&amp;gt; comes in very handy as it provides an easy means to specify the version instead of manually constructing the version number corresponding to a specific version.&lt;br /&gt;
&lt;br /&gt;
Thus checking for the TTD platform is simply done by an if block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as is the check for a specific OpenTTD (and similarily TTDPatch) version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Only define cargo_age_period when that property is available */&lt;br /&gt;
if (openttd_version &amp;gt; version_openttd(1, 2, 0, 22713)) {&lt;br /&gt;
	item (FEAT_TRAINS, my_engine) {&lt;br /&gt;
		property {&lt;br /&gt;
			cargo_age_period: 200;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to combine these checks into a single block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Long date string codes require OpenTTD &amp;gt; 1.2.0 or r22780 */&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD || openttd_version &amp;lt; version_openttd(1, 2, 0, 22780)) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7680</id>
		<title>NMLTutorial/Version check</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial/Version_check&amp;diff=7680"/>
		<updated>2011-08-26T07:58:24Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: how to do version checks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Version checks in NML are actually pretty straight forward.&lt;br /&gt;
&lt;br /&gt;
NML provides the [http://newgrf-specs.tt-wiki.net/wiki/NML:General#General_variables global variables] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;openttd_version&amp;lt;/code&amp;gt; and &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;ttd_platform&amp;lt;/code&amp;gt;. Concerning version checks the built-in [http://newgrf-specs.tt-wiki.net/wiki/NML:Builtin_functions function] &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;version_openttd&amp;lt;/code&amp;gt; comes in very handy as it provides an easy means to specify the version instead of manually constructing the version number corresponding to a specific version.&lt;br /&gt;
&lt;br /&gt;
Thus checking for the TTD platform is simply done by an if block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as is the check for a specific OpenTTD (and similarily TTDPatch) version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Only define cargo_age_period when that property is available */&lt;br /&gt;
if (openttd_version &amp;gt; version_openttd(1, 2, 0, 22713)) {&lt;br /&gt;
	item (FEAT_TRAINS, my_engine) {&lt;br /&gt;
		property {&lt;br /&gt;
			cargo_age_period: 200;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to combine these checks into a single block:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Long date string codes require OpenTTD &amp;gt; 1.2.0 or r22780 */&lt;br /&gt;
if (ttd_platform != PLATFORM_OPENTTD || openttd_version &amp;lt; version_openttd(1, 2, 0, 22780)) {&lt;br /&gt;
	error(FATAL, REQUIRES_OPENTTD, string(STR_MIN_OPENTTD_VERSION));&lt;br /&gt;
	exit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NMLTutorial&amp;diff=7597</id>
		<title>NMLTutorial</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NMLTutorial&amp;diff=7597"/>
		<updated>2011-08-22T19:18:24Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: slightly update language comparison&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLTutorial}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Since june 2010 a new coding language for creating TTDpatch/OpenTTD GRF&#039;s exists: Newgrf Meta Language or NML. It differs significantly from the old way of GRF editing and although [http://newgrf-specs.tt-wiki.net/wiki/NML:Main documentation] is available it may still be a challenge for people interested in using NML code. After all NML is still a form of programming language and not a GUI-based editor.&lt;br /&gt;
&lt;br /&gt;
There will be detailed examples of how coding in NML works on this new TT-wiki. Make sure to check the progress of this NML tutorial regularly.&lt;br /&gt;
&lt;br /&gt;
==NML vs. NFO==&lt;br /&gt;
===Background===&lt;br /&gt;
NML is a high-level NewGRF language compiler which compiles NML and LNG files into newgrf files (and NFO files, if asked to do so). Coding a NewGRF in NML is similar to writing in any other programming language except that there are no real sub-routines; you can use the usual definition and condition statements.&lt;br /&gt;
&lt;br /&gt;
===Language support===&lt;br /&gt;
NML provides easy support for different languages in one GRF. This is achieved by creating language files (lng). These language files follow the convention used for OpenTTD translation files. When compiling NML files a search for language files will automatically be performed. Even without providing additional translations at least one language file must be specified, called default.lng.&lt;br /&gt;
&lt;br /&gt;
===Image format support===&lt;br /&gt;
One of the conveniences of NML is the possibility to read various image formats. Remember though that those images still need to supply the proper 8bpp palette and are supported by the python image library.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Does the above sound impressive, maybe even threatening to you? One illustration often says more than a thousand words so let&#039;s show the difference with two illustrations:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;mainpagetable&amp;quot; text-align=&amp;quot;left&amp;quot; style=&amp;quot;background-color: #F8EABA; border: 1px solid #C0C090;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&amp;lt;font size=&amp;quot;3&amp;quot;&amp;gt;&#039;&#039;&#039;NFO code snippet&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
:// Automatically generated by GRFCODEC. Do not modify!&lt;br /&gt;
&lt;br /&gt;
:0 * 4 \d416 &lt;br /&gt;
:1 * 92 08 07 &amp;quot;SER0&amp;quot; &amp;quot;ÞSwedish Rails  nightly-r52M&amp;quot; 00 &amp;quot;ÞSwedish rails are a replacement for the default rails&amp;quot; 00&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&amp;lt;font size=&amp;quot;3&amp;quot;&amp;gt;&#039;&#039;&#039;NML code snippet&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
:grf {&lt;br /&gt;
::grfid : &amp;quot;SER0&amp;quot;;&lt;br /&gt;
::name : string(STR_GRF_NAME);&lt;br /&gt;
::desc : string(STR_GRF_DESCRIPTION);&lt;br /&gt;
:}&lt;br /&gt;
&amp;lt;font size=&amp;quot;3&amp;quot;&amp;gt;&#039;&#039;&#039;NML language file snippet&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;##&amp;lt;/nowiki&amp;gt;grflangid 0x01&lt;br /&gt;
:STR_GRF_NAME                                                    :Swedish Rails {VERSION}&lt;br /&gt;
:STR_GRF_DESCRIPTION                                             :Swedish rails are a replacement for the default rails&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to read the NML tutorial ==&lt;br /&gt;
The NML Tutorial starts with the [[NMLTutorial/Installation|installation of NML]] and continues from there as single &amp;quot;story&amp;quot; if you like. The bottom of each tutorial page has a link to the next page (and the previous in case you missed something) and all pages from the tutorial are also listed in navigation box at the top right of each page.&lt;br /&gt;
&lt;br /&gt;
Example NML code is displayed in a code box and a blue font colour (much like the NML documentation itself). Code syntax definitions and other code and command (snippets) are displayed in black, either in a code box or in line with the text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:darkblue&amp;quot;&amp;gt;&lt;br /&gt;
//example NML code&lt;br /&gt;
block {&lt;br /&gt;
    //block definition&lt;br /&gt;
    item: value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have any questions about the text and examples within the NML tutorial, you are welcome to post those in the [link_to_be_added NML Tutorial topic] at TT-Forums. If you see bugs in the tutorial, you of course fix them or discuss them in the topic linked above first. Expanding or changing the tutorial should only be done by people who actually know NML and don&#039;t need this tutorial to code their NML files.&lt;br /&gt;
&lt;br /&gt;
{{NMLTutorialNavbar||Installation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:NML]][[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=7067</id>
		<title>NFO Foundations</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=7067"/>
		<updated>2011-07-20T17:48:41Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;How to get started on .nfo editing&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=NFO Files=&lt;br /&gt;
&lt;br /&gt;
The fundamental files that control your new graphics are the .nfo and the .pcx file. &amp;amp;nbsp;The .pcx file contains the actual drawings, and the .nfo file the instructions what to do with them.&lt;br /&gt;
&lt;br /&gt;
==To get started==&lt;br /&gt;
&lt;br /&gt;
To draw a new train, you first need a base from which to start working. &amp;amp;nbsp;Since you probably aren&#039;t familiar with all the intricacies yet, it&#039;s best to copy one of TTD&#039;s vehicles and then draw your own graphics. &amp;amp;nbsp;Basically, you follow these steps:&lt;br /&gt;
# Extract TTD&#039;s trg1r.grf (or trg1.grf for the DOS version or ogfx1_base.grf when using OpenGFX)&lt;br /&gt;
# Look through trg1r.pcx (TTD) or ogfx1_base.grf (OpenGFX) for a vehicle similar to the one you&#039;re going to make&lt;br /&gt;
# Copy the corresponding data from the .nfo file into your own file&lt;br /&gt;
# Encode and decode again your own file&lt;br /&gt;
&lt;br /&gt;
Now to look at these steps in a bit more details. If you de-compiled OpenGFX&#039;s file, use the appropriate filenames instead in the subsequent text.&lt;br /&gt;
&lt;br /&gt;
==1. Extract TTD&#039;s trg1r.grf / OpenGFX&#039;s ogfx1_base.grf==&lt;br /&gt;
&lt;br /&gt;
First of all, you need to download [http://www.openttd.org/download-grfcodec grfcodec] and unzip it into your TTD folder. Then you open a DOS command window. If you are using Windows 2000 or Windows XP you can open a DOS command window by typing cmd in the execute option in the start menu. When you see the command window run grfcodec like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-+cd C:\TTD &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(change to your TTD folder)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-+grfcodec -d trg1r.grf &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(decode trg1r.grf; use trg1.grf for the DOS version of TTD)&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will make a new folder called sprites, and will put trg1r.pcx and trg1r.nfo in it.&lt;br /&gt;
&lt;br /&gt;
You can also use [http://www.divxland.org/ttd/grfwizard.htm GRFWizard] with grfcodec. It will add a user interface to grfcodec. Just follow the options in the wizard to decode a .grf file, it will also add a sprites folder and generate the .nfo and .pcx files.&lt;br /&gt;
&lt;br /&gt;
==2. Look through trg1r.pcx / ogfx1_base.pcx==&lt;br /&gt;
&lt;br /&gt;
You now open trg1r.pcx from the sprites folder. &amp;amp;nbsp;There are many graphics programs to view and edit .pcx files.&lt;br /&gt;
&lt;br /&gt;
Look for a vehicle that is similar to the one you want to make. For example, if you want to make a train engine with 8 views, you can use the SH 125. &amp;amp;nbsp;So you go looking for its graphics in trg1r.pcx. &amp;amp;nbsp;For the SH 125, you&#039;ll find them at numbers 2941 to 2948 (those are the little numbers above the images). &amp;amp;nbsp;Write down those numbers. &amp;amp;nbsp;For example, this is what it might look like:&lt;br /&gt;
&lt;br /&gt;
{picture file=img/wiki_up//sh125.png}&lt;br /&gt;
&lt;br /&gt;
==3. Copy the corresponding data from the .nfo file into your own file==&lt;br /&gt;
&lt;br /&gt;
So now that we know what sprites to base the graphics on, we need to copy those into a new file. Open the trg1r.nfo file in a text editor, for example Notepad. Also, open another .nfo file for your own graphics, say for example &amp;amp;quot;mytrain.nfo&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now, copy and paste the first three lines beginning with &amp;amp;quot;//&amp;amp;quot; to your mytrain.nfo file. &amp;amp;nbsp;While they may look like comments, they are actually important.&lt;br /&gt;
&lt;br /&gt;
In the next step, find the lines beginning with the sprite numbers you&#039;re written down in the previous step. &amp;amp;nbsp;In the example above, we&#039;d find the lines with numbers 2941 to 2948. &amp;amp;nbsp;Copy those eight (or however many) lines to your mytrain.nfo file as well.&lt;br /&gt;
&lt;br /&gt;
==4. Encode and decode again your own file==&lt;br /&gt;
&lt;br /&gt;
Now we want to make our own .grf file. &amp;amp;nbsp;Unfortunately, grfcodec is a bit picky and will complain loudly if your lines are not numbered properly. To make grfcodec shut up, you have to go through your .nfo file, and change the numbers at the beginning of the lines to go from 0 to 7.&lt;br /&gt;
&lt;br /&gt;
At this point, your .nfo file should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Automatically generated by GRFCODEC. Do not modify!&lt;br /&gt;
&lt;br /&gt;
// (Info version 6)&lt;br /&gt;
&lt;br /&gt;
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;0 C:\TTD\SPRITES\trg1.pcx 530 10664 01 18 8 -3 -10&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;1 C:\TTD\SPRITES\trg1.pcx 546 10664 09 15 20 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;2 C:\TTD\SPRITES\trg1.pcx 578 10664 01 12 28 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;3 C:\TTD\SPRITES\trg1.pcx 626 10664 09 16 20 -4 -8&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;4 C:\TTD\SPRITES\trg1.pcx 658 10664 01 18 8 -3 -10&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;5 C:\TTD\SPRITES\trg1.pcx 674 10664 09 16 20 -14 -7&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;6 C:\TTD\SPRITES\trg1.pcx 706 10664 01 12 28 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;7 C:\TTD\SPRITES\trg1.pcx 754 10664 09 15 20 -4 -7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run grfcodec again, first to encode and then to decode your file. This creates mytrain.pcx and changes your .nfo to refer to that copy of the sprites:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-+grfcodec -e mytrain.grf +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(encode your mytrain.grf file)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-+grfcodec -d mytrain.grf -p 2 +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(decode your mytrain.grf file again)&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leave off the &amp;amp;quot;-p 2&amp;amp;quot; if you&#039;re working with the DOS graphics instead of the Windows graphics.&lt;br /&gt;
&lt;br /&gt;
==Good job!==&lt;br /&gt;
&lt;br /&gt;
Now you have your own mytrain.grf file with the corresponding mytrain.nfo and mytrain.pcx files. We&#039;ll use this as a base for making these graphics TTDPatch compatible.&lt;br /&gt;
&lt;br /&gt;
Note that you can&#039;t yet take your mytrain.grf file and put it in TTDPatch&#039;s newgrfw.cfg file yet, because it doesn&#039;t have the necessary information to allow TTDPatch to know what to do with it.&lt;br /&gt;
&lt;br /&gt;
However, you can go ahead and edit the graphics in mytrain.pcx to your liking and make them look like your train.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;re ready, go on to the [[TheFirstVehicle|next section]].&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NFOTutorial&amp;diff=6642</id>
		<title>NFOTutorial</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NFOTutorial&amp;diff=6642"/>
		<updated>2011-06-19T16:49:24Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Include links to other tutorials&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This section collects tutorials targeting at creating NewGRFs for TTDPatch and OpenTTD.&lt;br /&gt;
&lt;br /&gt;
For authors: please write these in order and always explain changes from one step/page to the next. Also ideally each topic would have a downloadable demo file that shows these steps &amp;quot;in action&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Available tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== [[NMLTutorial|NML]] ===&lt;br /&gt;
How to make new .grf files for TTDPatch and OpenTTD with Newgrf Meta Language (NML) (under construction)&lt;br /&gt;
&lt;br /&gt;
=== [[DrawingSprites|Drawing Sprites]] ===&lt;br /&gt;
How to draw new graphics&lt;br /&gt;
&lt;br /&gt;
=== Lakie&#039;s Tutorials ===&lt;br /&gt;
These are tutorials that Lakie from [http://www.tt-forums.net/| TT-Forums] wrote, these are on his website for the moment.&lt;br /&gt;
&lt;br /&gt;
Please note these are being worked on, and are not fully complete.&lt;br /&gt;
&lt;br /&gt;
This will be a step-by-step guide that teaches how to make new graphics sets, from the first simple train engine to the most sophisticated train sets with liveries that change in time and special effects such as wagon backlights.&lt;br /&gt;
&lt;br /&gt;
While the tutorial will be mostly covering train vehicles, all the steps apply to other vehicle types as well, although with slight (but obvious) changes.&lt;br /&gt;
&lt;br /&gt;
Some pages may have sections labelled &amp;quot;advanced concepts&amp;quot;, in which the more advanced uses of certain features are explained.  You should perhaps not try to understand these at the first reading, but keep them in mind and come back later if you&#039;re ready for a little more sophisticated graphics.&lt;br /&gt;
&lt;br /&gt;
*;Train Refitting: [http://users2.tt-forums.net/lakie/NfoCoding.php?id=1| The Basics]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECSTVTCKarlstein&amp;diff=6244</id>
		<title>ECSTVTCKarlstein</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECSTVTCKarlstein&amp;diff=6244"/>
		<updated>2011-06-17T19:30:50Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: fix header link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Karl%C5%A1tejn||Karlštejn, Prague, Czech Republic]&lt;br /&gt;
&lt;br /&gt;
Drawn by Darkwalker, snowed and company colours by George&lt;br /&gt;
&lt;br /&gt;
Based on&lt;br /&gt;
&lt;br /&gt;
==General data==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Tiles!!21&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Usage||65%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Growth Factor||70%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Stockpile size==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Level!!Tourists&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Very low||229&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Low||328&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Normal||468&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High||669&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Very high||956&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Ultimate||1365&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Location/Positioning Conditions==&lt;br /&gt;
*Build outside towns !Tz1, !Tz2, !Tz3, !Tz4 (Town zone 0 allowed)&lt;br /&gt;
*Build &amp;gt; 3 tiles from desert tile&lt;br /&gt;
*Build on terraformed land (certain tiles must be sloped) see image&lt;br /&gt;
*Build &amp;gt; FF FF FF FFh tiles from Tourists centre with the same layout (only one layout instance per map)&lt;br /&gt;
*Build &amp;gt; 31 tiles away from other layout of Tourists centre&lt;br /&gt;
&lt;br /&gt;
[http://wiki.ttdpatch.net/tiki-index.php?page=LocationConditions| Description of Location/Positioning Conditions]&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
Supports snow, different trees for different landscapes, company colours.&lt;br /&gt;
&lt;br /&gt;
When built by the player during a game, the roofs will be in Company Colours of the builder. When generated by the game or built while in the scenario editor, the roofs will be Black.&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECSTVTCNeuSchwansteinCastle&amp;diff=6243</id>
		<title>ECSTVTCNeuSchwansteinCastle</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECSTVTCNeuSchwansteinCastle&amp;diff=6243"/>
		<updated>2011-06-17T19:29:12Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: fix header link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Neuschwanstein_Castle|Schloß Neuschwanstein, Schwangau, Germany]=&lt;br /&gt;
&lt;br /&gt;
Drawn by George, help by Oz, Zimmlock (road to entrance, shadows)&lt;br /&gt;
&lt;br /&gt;
Based on&lt;br /&gt;
&lt;br /&gt;
==General data==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Tiles!!31&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Usage||81%&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Growth Factor||70%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Stockpile size==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Level!!Tourists&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Very low||422&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Low||603&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Normal||862&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High||1231&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Very high||1759&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Ultimate||2513&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Location/Positioning Conditions==&lt;br /&gt;
*Build outside towns !Tz1, !Tz2, !Tz3, !Tz4 (Town zone 0 allowed)&lt;br /&gt;
*Build &amp;gt; 3 tiles from desert tile&lt;br /&gt;
*Build on terraformed land (certain tiles must be sloped) see image&lt;br /&gt;
*Build &amp;gt; FF FF FF FFh tiles from Tourists centre with the same layout (only one layout instance per map)&lt;br /&gt;
*Build &amp;gt; 31 tiles away from other layout of Tourists centre&lt;br /&gt;
&lt;br /&gt;
[http://wiki.ttdpatch.net/tiki-index.php?page=LocationConditions| Description of Location/Positioning Conditions]&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
Supports snow, different trees for different landscapes, company colours.&lt;br /&gt;
&lt;br /&gt;
When built by the player during a game, the roofs will be in Company Colours of the builder. When generated by the game or built while in the scenario editor, the roofs will be Black or Brown.&lt;br /&gt;
&lt;br /&gt;
Supports industry animation.&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Houses._Banks_Table&amp;diff=5895</id>
		<title>ECS Houses. Banks Table</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Houses._Banks_Table&amp;diff=5895"/>
		<updated>2011-06-16T10:35:52Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: fix table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Banks are available when valuables, gold or diamonds cargo is defined (by [[ECSTownVector|Town vector]] or by some other GRF).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The [[ECSHBanks|page]] is available in list form&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&amp;lt;center&amp;gt;&#039;&#039;&#039;Image&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Drawn&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Size&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Eras&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Start year&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;End year&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Zone&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Houses&amp;amp;sup1;&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Distance&amp;amp;sup2;&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Min town populat. req.&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Citizens in service&amp;amp;sup3;&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Limit per town⁴&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Acceptance&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Prod⁵.&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Remove⁶&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Age⁷&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Snow&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;CC&#039;&#039;&#039;&amp;lt;/center&amp;gt;!!&amp;lt;center&amp;gt;&#039;&#039;&#039;Const. stages&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1x1&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||1x1||1||1920||1950||0-4||15||15||1024||1024||4||valuables,gold, diamonds||48/24||900||10 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||1x1||1||1920||1950||0-4||15||15||1024||1024||4||valuables,gold, diamonds||48/24||900||10 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||16 CC||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||1x1||2,3||1950||2010||0-4||15||15||1024||1024||4||valuables,gold, diamonds||48/24||900||10 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||1x1||2||1950||1980||0-4||15||15||1024||1024||4||valuables,gold, diamonds||48/24||900||10 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||16 CC||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||1x1||3,4||1980||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||0-4||15||15||1024||1024||4||valuables,gold, diamonds||48/24||900||10 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2x1&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||2x1||1,2||1920||1980||0-4/3-4||15||15||2048||1024||4||valuables, gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||16 CC||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||1,2||1920||1980||0-4/4||15||15||2048||1024||4||valuables, gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;16 CC&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||2x1||2,3||1950||2010||0-4/3-4||15||15||2048||1024||4||valuables, gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||2,3||1950||2010||0-4/0-2||15||15||2048||1024||4||valuables, gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;16 CC&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Oz||2x1||3,4||1980||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||0-4||15||15||2048||1024||4||valuables,gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;16 CC&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||3,4||1980||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||0-2||15||15||2048||1024||4||valuables,gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||3,4||1980||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||3-4/0-2||15||15||2048||1024||4||valuables, gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;16 CC&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||4||2010||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||0-2||15||15||2048||1024||4||valuables,gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;16 CC&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ||Zimmlock||2x1||4||2010||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||3-4||15||15||2048||1024||4||valuables,gold, diamonds||96/48||900||15 years||&amp;lt;center&amp;gt;+&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;-&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;&lt;br /&gt;
|} &amp;amp;sup1; - Number of houses in town required to build the bank&lt;br /&gt;
&lt;br /&gt;
&amp;amp;sup2; - Minimal distance between banks of any type&lt;br /&gt;
&lt;br /&gt;
&amp;amp;sup3; - Number of citizens above minimal town population required to allow next bank.&lt;br /&gt;
&lt;br /&gt;
⁴ - Maximum number of the banks per town&lt;br /&gt;
&lt;br /&gt;
⁵ - First value represents banks in service (valuables were delivered this or last months), second for others&lt;br /&gt;
&lt;br /&gt;
⁶ - Minimal town rating required to remove the bank&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=Category:ECS-fix&amp;diff=5502</id>
		<title>Category:ECS-fix</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=Category:ECS-fix&amp;diff=5502"/>
		<updated>2011-06-15T07:10:07Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: Created page with &amp;quot;Pages in this category need review wrt table style. They have to be moved to ECS once the tables are fixed&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pages in this category need review wrt table style. They have to be moved to ECS once the tables are fixed&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Machinery_Vector&amp;diff=5501</id>
		<title>ECS Machinery Vector</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Machinery_Vector&amp;diff=5501"/>
		<updated>2011-06-15T07:08:07Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add category ECS-fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;ECS Machinery Vector&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=ECS Machinery vector=&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
&lt;br /&gt;
The GRFID is 4D656F94. The vector provides a couple of cargoes and industries, designed to supply other vectors with machinery (also one industry to supply towns with goods). Raw material industry supply the processing industry with material for producing steel. Materials from other vectors are used as a must material. If cargoes from other vectors are not defined, requirements are ignored.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
||Number|Meaning&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;|General behaviour change [[(ECSVectorsGeneralInformation|Description]])||&lt;br /&gt;
&lt;br /&gt;
==Industries==&lt;br /&gt;
&lt;br /&gt;
{toc}&lt;br /&gt;
&lt;br /&gt;
==Cargoes==&lt;br /&gt;
&lt;br /&gt;
Default cargoes&lt;br /&gt;
* Iron ore (ID 08)&lt;br /&gt;
* Steel (ID 09)&lt;br /&gt;
&lt;br /&gt;
New cargoes&lt;br /&gt;
* Vehicles or machinery (ID 18)&lt;br /&gt;
&lt;br /&gt;
New cargoes planned&lt;br /&gt;
* Bauxite (ID 1A)&lt;br /&gt;
&lt;br /&gt;
Payment for delivering 10 units (or 10 000 litres) of cargo a distance of 20 squares&lt;br /&gt;
&lt;br /&gt;
==Cargo chains==&lt;br /&gt;
[[Category:ECS-fix]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Chemical_Vector_II&amp;diff=5500</id>
		<title>ECS Chemical Vector II</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Chemical_Vector_II&amp;diff=5500"/>
		<updated>2011-06-15T07:07:21Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add ECS category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;ECS Chemical Vector II&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=ECS Chemical Vector II=&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
&lt;br /&gt;
The GRFID is 4D656F9C.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
||Number|Meaning&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;|General behaviour change [[(ECSVectorsGeneralInformation|Description]])||&lt;br /&gt;
&lt;br /&gt;
==Industries==&lt;br /&gt;
&lt;br /&gt;
{toc}&lt;br /&gt;
&lt;br /&gt;
==Cargoes==&lt;br /&gt;
&lt;br /&gt;
Default cargoes&lt;br /&gt;
* Oil (ID 03)&lt;br /&gt;
&lt;br /&gt;
New cargoes&lt;br /&gt;
* Dyes (ID 14)&lt;br /&gt;
* Refined products (ID 17)&lt;br /&gt;
* Petrol (ID 19)&lt;br /&gt;
&lt;br /&gt;
Planned cargoes&lt;br /&gt;
* Potash (ID 10)&lt;br /&gt;
&lt;br /&gt;
Payment for delivering 10 units (or 10 000 litres) of cargo a distance of 20 squares&lt;br /&gt;
&lt;br /&gt;
==Cargo chains==&lt;br /&gt;
[[Category:ECS]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Basic_Vector_II&amp;diff=5499</id>
		<title>ECS Basic Vector II</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Basic_Vector_II&amp;diff=5499"/>
		<updated>2011-06-15T07:06:50Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;ECS Basic Vector II&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=ECS Basic Vector II=&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
&lt;br /&gt;
The GRFID is 4D656F9F. The vector provides a couple of cargoes and industries, designed to supply other industries with materials, like sand, glass, coal. Raw material industries supply the processing industries with material for producing cargo.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
||Number|Meaning&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;|General behaviour change [[(ECSVectorsGeneralInformation|Description]])||&lt;br /&gt;
&lt;br /&gt;
==Industries==&lt;br /&gt;
&lt;br /&gt;
{toc}&lt;br /&gt;
&lt;br /&gt;
==Cargoes==&lt;br /&gt;
&lt;br /&gt;
Default cargoes&lt;br /&gt;
* Coal (ID 01)&lt;br /&gt;
&lt;br /&gt;
New cargoes&lt;br /&gt;
* Sand (ID 11)&lt;br /&gt;
* Glass (ID 12)&lt;br /&gt;
&lt;br /&gt;
New cargoes planned&lt;br /&gt;
* Building materials (ID 1C)&lt;br /&gt;
&lt;br /&gt;
Payment for delivering 10 units (or 10 000 litres) of cargo a distance of 20 squares&lt;br /&gt;
&lt;br /&gt;
==Cargo chains==&lt;br /&gt;
[[Category:ECS]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=ECS_Houses&amp;diff=5498</id>
		<title>ECS Houses</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=ECS_Houses&amp;diff=5498"/>
		<updated>2011-06-15T07:06:16Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: add ECS category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;ECS Houses&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=ECS Houses=&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
&lt;br /&gt;
The GRFID is 4D656F9D. ECS Houses provides houses to support ECS cargoes on the towns side.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
||&#039;&#039;&#039;Number&#039;&#039;&#039;|&#039;&#039;&#039;Bit&#039;&#039;&#039;|&#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;|&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;|Disable (0, default) / Enable (1) houses of era 1 (1920-1950)&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;|Disable (0, default) / Enable (1) houses of era 2 (1950-1980)&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;|Disable (0, default) / Enable (1) houses of era 3 (1980-2010)&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;|Disable (0, default) / Enable (1) houses of era 4 (2010-...)|| When all bits are 0, &amp;amp;quot;historical&amp;amp;quot; (year based) appearance of houses is provided.&lt;br /&gt;
&lt;br /&gt;
==Houses==&lt;br /&gt;
&lt;br /&gt;
{toc}&lt;br /&gt;
&lt;br /&gt;
==Cargo chains==&lt;br /&gt;
[[Category:ECS]]&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=2410</id>
		<title>NFO Foundations</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NFO_Foundations&amp;diff=2410"/>
		<updated>2010-11-20T10:05:41Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;How to get started on .nfo editing&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=NFO Files=&lt;br /&gt;
&lt;br /&gt;
The fundamental files that control your new graphics are the .nfo and the .pcx file. &amp;amp;nbsp;The .pcx file contains the actual drawings, and the .nfo file the instructions what to do with them.&lt;br /&gt;
&lt;br /&gt;
==To get started==&lt;br /&gt;
&lt;br /&gt;
To draw a new train, you first need a base from which to start working. &amp;amp;nbsp;Since you probably aren&#039;t familiar with all the intricacies yet, it&#039;s best to copy one of TTD&#039;s vehicles and then draw your own graphics. &amp;amp;nbsp;Basically, you follow these steps:&lt;br /&gt;
# Extract TTD&#039;s trg1r.grf (or trg1.grf for the DOS version or ogfx1_base.grf when using OpenGFX)&lt;br /&gt;
# Look through trg1r.pcx (TTD) or ogfx1_base.grf (OpenGFX) for a vehicle similar to the one you&#039;re going to make&lt;br /&gt;
# Copy the corresponding data from the .nfo file into your own file&lt;br /&gt;
# Encode and decode again your own file&lt;br /&gt;
&lt;br /&gt;
Now to look at these steps in a bit more details. If you de-compiled OpenGFX&#039;s file, use the appropriate filenames instead in the subsequent text.&lt;br /&gt;
&lt;br /&gt;
==1. Extract TTD&#039;s trg1r.grf / OpenGFX&#039;s ogfx1_base.grf==&lt;br /&gt;
&lt;br /&gt;
First of all, you need to download [http://www.openttd.org/download-grfcodec|grfcodec] and unzip it into your TTD folder. Then you open a DOS command window. If you are using Windows 2000 or Windows XP you can open a DOS command window by typing cmd in the execute option in the start menu. When you see the command window run grfcodec like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-+cd C:\TTD &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(change to your TTD folder)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-+grfcodec -d trg1r.grf &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(decode trg1r.grf; use trg1.grf for the DOS version of TTD)&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will make a new folder called sprites, and will put trg1r.pcx and trg1r.nfo in it.&lt;br /&gt;
&lt;br /&gt;
You can also use [http://www.divxland.org/ttd/grfwizard.htm|GRFWizard] with grfcodec. It will add a user interface to grfcodec. Just follow the options in the wizard to decode a .grf file, it will also add a sprites folder and generate the .nfo and .pcx files.&lt;br /&gt;
&lt;br /&gt;
==2. Look through trg1r.pcx / ogfx1_base.pcx==&lt;br /&gt;
&lt;br /&gt;
You now open trg1r.pcx from the sprites folder. &amp;amp;nbsp;There are many graphics programs to view and edit .pcx files.&lt;br /&gt;
&lt;br /&gt;
Look for a vehicle that is similar to the one you want to make. For example, if you want to make a train engine with 8 views, you can use the SH 125. &amp;amp;nbsp;So you go looking for its graphics in trg1r.pcx. &amp;amp;nbsp;For the SH 125, you&#039;ll find them at numbers 2941 to 2948 (those are the little numbers above the images). &amp;amp;nbsp;Write down those numbers. &amp;amp;nbsp;For example, this is what it might look like:&lt;br /&gt;
&lt;br /&gt;
{picture file=img/wiki_up//sh125.png}&lt;br /&gt;
&lt;br /&gt;
==3. Copy the corresponding data from the .nfo file into your own file==&lt;br /&gt;
&lt;br /&gt;
So now that we know what sprites to base the graphics on, we need to copy those into a new file. Open the trg1r.nfo file in a text editor, for example Notepad. Also, open another .nfo file for your own graphics, say for example &amp;amp;quot;mytrain.nfo&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now, copy and paste the first three lines beginning with &amp;amp;quot;//&amp;amp;quot; to your mytrain.nfo file. &amp;amp;nbsp;While they may look like comments, they are actually important.&lt;br /&gt;
&lt;br /&gt;
In the next step, find the lines beginning with the sprite numbers you&#039;re written down in the previous step. &amp;amp;nbsp;In the example above, we&#039;d find the lines with numbers 2941 to 2948. &amp;amp;nbsp;Copy those eight (or however many) lines to your mytrain.nfo file as well.&lt;br /&gt;
&lt;br /&gt;
==4. Encode and decode again your own file==&lt;br /&gt;
&lt;br /&gt;
Now we want to make our own .grf file. &amp;amp;nbsp;Unfortunately, grfcodec is a bit picky and will complain loudly if your lines are not numbered properly. To make grfcodec shut up, you have to go through your .nfo file, and change the numbers at the beginning of the lines to go from 0 to 7.&lt;br /&gt;
&lt;br /&gt;
At this point, your .nfo file should look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// Automatically generated by GRFCODEC. Do not modify!&lt;br /&gt;
&lt;br /&gt;
// (Info version 6)&lt;br /&gt;
&lt;br /&gt;
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;0 C:\TTD\SPRITES\trg1.pcx 530 10664 01 18 8 -3 -10&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;1 C:\TTD\SPRITES\trg1.pcx 546 10664 09 15 20 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;2 C:\TTD\SPRITES\trg1.pcx 578 10664 01 12 28 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;3 C:\TTD\SPRITES\trg1.pcx 626 10664 09 16 20 -4 -8&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;4 C:\TTD\SPRITES\trg1.pcx 658 10664 01 18 8 -3 -10&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;5 C:\TTD\SPRITES\trg1.pcx 674 10664 09 16 20 -14 -7&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;6 C:\TTD\SPRITES\trg1.pcx 706 10664 01 12 28 -14 -6&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp;7 C:\TTD\SPRITES\trg1.pcx 754 10664 09 15 20 -4 -7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run grfcodec again, first to encode and then to decode your file. This creates mytrain.pcx and changes your .nfo to refer to that copy of the sprites:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-+grfcodec -e mytrain.grf +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(encode your mytrain.grf file)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-+grfcodec -d mytrain.grf -p 2 +-&amp;lt;span style=&#039;color:grey&#039;&amp;gt;(decode your mytrain.grf file again)&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leave off the &amp;amp;quot;-p 2&amp;amp;quot; if you&#039;re working with the DOS graphics instead of the Windows graphics.&lt;br /&gt;
&lt;br /&gt;
==Good job!==&lt;br /&gt;
&lt;br /&gt;
Now you have your own mytrain.grf file with the corresponding mytrain.nfo and mytrain.pcx files. We&#039;ll use this as a base for making these graphics TTDPatch compatible.&lt;br /&gt;
&lt;br /&gt;
Note that you can&#039;t yet take your mytrain.grf file and put it in TTDPatch&#039;s newgrfw.cfg file yet, because it doesn&#039;t have the necessary information to allow TTDPatch to know what to do with it.&lt;br /&gt;
&lt;br /&gt;
However, you can go ahead and edit the graphics in mytrain.pcx to your liking and make them look like your train.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;re ready, go on to the [[TheFirstVehicle|next section]].&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NewGraphicsSpecs&amp;diff=2311</id>
		<title>NewGraphicsSpecs</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NewGraphicsSpecs&amp;diff=2311"/>
		<updated>2010-01-31T16:30:52Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Tutorial and Specifications for the new graphics system&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These pages contain info on how to make new graphics sets. The reference on the Actions is up-to-date, whereas the tutorial is still under construction. Stay tuned.&lt;br /&gt;
&lt;br /&gt;
A downloadable version of these pages, in the form of a zip file containing all individual pages as HTML files, is available at [http://wiki.ttdpatch.net/NewGraphicsSpecs.zip].&lt;br /&gt;
&lt;br /&gt;
{toc}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
	<entry>
		<id>https://www.tt-wiki.net/index.php?title=NewGraphicsSpecs&amp;diff=2316</id>
		<title>NewGraphicsSpecs</title>
		<link rel="alternate" type="text/html" href="https://www.tt-wiki.net/index.php?title=NewGraphicsSpecs&amp;diff=2316"/>
		<updated>2010-01-31T16:29:52Z</updated>

		<summary type="html">&lt;p&gt;Planetmaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Tutorial and Specifications for the new graphics system&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These pages contain info on how to make new graphics sets. The reference on the Actions is up-to-date, whereas the tutorial is still under construction. Stay tuned.&lt;br /&gt;
&lt;br /&gt;
A downloadable version of these pages, in the form of a zip file containing all individual pages as HTML files, is available at [http://wiki.ttdpatch.net/NewGraphicsSpecs.zip].&lt;br /&gt;
&lt;br /&gt;
{maketoc}&lt;/div&gt;</summary>
		<author><name>Planetmaker</name></author>
	</entry>
</feed>