Difference between revisions of "ReadingPatchVariables"

From GRFSpecs
Jump to navigationJump to search
(No difference)

Revision as of 19:50, 20 December 2009

Reading Patch variables

-=Introduction=-

Since 2.0.1 alpha 48, it has been possible to use action D to read various special Patch variables. These are usually switch values, but there are also a few other useful values.

-=Format=-

 -+<Sprite-number> * <Length> 0D <target> <operation> <variable> FE FF FF 00 00+-

||Element|Size|Description

0D|B|Defines action 0D

<target>|B|Target parameter

<operation>|B|As for ActionD, but only assignment is valid.

<variable>|B|Patch variable number to read. See below.

FE|B|Defines a special variable access

FF FF 00 00|D|Indicates that a patch variable is being read||

variable

The following patch variables are defined:

||variable|Switch|Value

00|miscmods/-Yo|Bit switch

01|experimentalfeatures/-XF|Bit switch

02|morevehicles/-x|Vehicle array multiplier

03|mountains&curves;/-mc|Two bytes with four sets of two bits

04|planecrashcontrol/-Xc|Bit switch

05|autorenew/-Xa|Signed value

06|multihead/-M|Speed increase, in percent

07|disasters/-XD|Bit switch

08|unifiedmaglev/-XM|Unified maglev mode

09|bridgespeedlimits/-XX|Speed fraction, in percent

0A|---|TTD Language, see the "new scheme" for action 4

0B|startyear/-XY|Year-1920

0C|morebuildoptions/-YB|Bit switch

0D|moresteam/-YM|value=LF (two hex digits), L=length, F=frequency

0E|freighttrains/-Yf|weight factor

0F|wagonspeedlimits/-YL|Speed increase for empty wagons

10|planespeed/-YP|speed factor

11|dual company colors|2CC colormap base sprite (since r1404)

12|miscmods2/-Zm|Bit switch (since r1738)

13|map size information|Bit switch Format = -MABXYSS (since r11961 and r1817)

| | M  : the type of map

| |bit 0 set : squared map. Clear : rectangular map

| |bit 1 set   : Y is the bigger edge(bit 0 is clear).Clear : X is the bigger edge.

| |A  : minimum edge(log2) of the map

| |B  : maximum edge(log2) of the map

| |XY : edges(log2) of each side of the map.

| |SS : combination of both X and Y, thus giving the size(log2) of the map

| |All map sizes will be substracted by 6, as to keep the size 64 the smallest one, thus zero based

14|---|-Reserved- for day length data, format would be defined later. Not supported yet||

If experimentalfeatures, miscmods, or miscmods2 are off, the corresponding value will be zero. For all other switches, the value is unspecified if the switch is off, so action 7 variable 85 should be checked first.