From 9a6a66a054b98e1d3024921c169187cdc18cdb8f Mon Sep 17 00:00:00 2001
From: Jonathan G Rennison
// Set bit 4 of global variable 0x9D if sample_feature_1 is present with a version of at least 4 // Set bit 5 of global variable 0x9D if sample_feature_2 is present with a version of at least 5 and at most 6 @@ -69,5 +71,73 @@ // Skip 1 sprite if bit 4 of global variable 0x9D is not set (indicating that sample_feature_1 with a version of at least 4 is NOT present) -1 * -1 07 9D 01 \70 04 01+
See Action 14 Specification and Action 0 Specification for background information.
+The property mapping mechanism has the feature name: property_mapping, this document describes version 1.
+Users of this mechanism SHOULD at minimum use test for the presence of the feature above or test variable 8D, below.
+Each A0PM chunk (type C) describes an individual property mapping.
+ Sub-chunks within each A0PM chunk may appear in any order, however except where otherwise noted each sub-chunk SHOULD only appear ONCE within an individual A0PM chunk.
Property mapping can be safely used on implementations which do not implement the property mapping mechanism if Action 0 sprites which use mapped property IDs are skipped if one or more of: +
Within an A0PM chunk, the NAME text (type T) field contains the name of the property to map. The value of the language ID byte is ignored.
+Within an A0PM chunk, the FEAT binary (type B) field contains the Action 0 feature ID. This is 1 byte.
+Within an A0PM chunk, the PROP binary (type B) field contains the property ID to allocate to the named property, this value can used in Action 0 sprites. This is 1 byte.
+ It is possible to override existing properties, however this use is not recommended.
Within an A0PM chunk, the SETT binary (type B) field contains the bit number to set/clear in
+ global variable 0x8D (TTD version) to store whether the mapping operation was successful. This is 1 byte.
+ If the operation is successful, the bit is set (to 1), otherwise the bit is cleared (to 0).
+ The bit number MUST be in the range: 4 ≤ bit number ≤ 31. These bits can be assumed to be 0 on implementations which do not support this property mapping mechanism.
+ Global variable 0x8D can then be tested by using a standard Action 7 or 9, or a standard Variational Action 2.
+ If this field is omitted, no bit is set or cleared.
+
Within an A0PM chunk, the FLBK binary (type B) field contains the fallback mode. This is 1 byte.
+ The fallback mode may take the following values:
+
Value | Behaviour |
---|---|
0 | Attempts to map an unknown property name are ignored. Use of the mapped property in an Action 0 is ignored. This is the default. |
1 | Attempts to map an unknown property name are ignored. Use of the mapped property in an Action 0 is an error. |
2 | Attempting to map an unknown property name is an error. |
Size | Name | Meaning |
---|---|---|
B* | num | Size of the data in bytes |
V | data | Property data |
+// Map station property "sample_station_property" to property id 0xF8, and set bit 4 of global variable 0x8D if successful +-1 * -1 14 + "C" "A0PM" + "T" "NAME" 00 "sample_station_property" 00 + "B" "FEAT" \w1 04 + "B" "PROP" \w1 F8 + "B" "SETT" \w1 4 + 00 + 00 +.... +// Skip 1 sprite if bit 4 of global variable 0x8D is not set (indicating that station property sample_station_property is NOT present) +-1 * -1 07 8D 01 \70 04 01 +// Set sample_station_property for station ID 10 to 2 byte value: AB CD +-1 * -1 00 04 01 01 10 F8 02 AB CD +