Additions to NewGRF Specifications in JGR's Patchpack in NML

This document describes non-standard additions to the Official OpenTTD NML Specifications which are present in this patchpack and the associated NML fork.

These additions MAY also be present in other patchpacks. They MAY be removed or moved in future, if necessary.

Not all standard NewGRF features are supported by NML, consequently not all non-standard additions to the specifications are supported by this patchpack's associated NML fork, or are listed in this document.
See the associated non-NML document for more details.

All of the non-standard features listed below will automatically emit suitable feature tests, conditionals, etc. such that NewGRFs which use these features will work correctly on OpenTTD versions which do not support these features, including standard trunk OpenTTD and older/other patchpack versions.

Railtypes properties

PropertyValue rangeComment
enable_programmable_pre_signals0 or 1 Enable programmable pre-signal graphics in railtype signals.
Programmable pre-signals have a signal type (getbits(extra_callback_info2, 16, 8)) of 6.
enable_restricted_signals0 or 1 Enable restricted signal flag in railtype signals.
When enabled, bit 24 of variable extra_callback_info2 is set if the signal is restricted (has a routing restriction program attached).
When enabled, the "Show restricted electric signals using default graphics" client setting and signal post recolouring is not applied.
This flag must only be set if a different sprite is returned when bit 24 of extra_callback_info2 is set.
disable_realistic_braking0 or 1 When this property is set realistic braking is disabled for trains of this railtype even when realistic braking is otherwise in effect.

Roadtype properties

PropertyValue rangeComment
roadtype_extra_flagsbitmask(ROADTYPE_EXTRA_FLAG_XXX, ...)
NO_SCRIPT_BUILD
Scripts (AI/GS) may not build this roadtype
NO_TOWN_MODIFY
Towns may not modify tiles of this roadtype in any way whatsoever

Tramtype properties

PropertyValue rangeComment
tramtype_extra_flagsbitmask(TRAMTYPE_EXTRA_FLAG_XXX, ...)
NO_SCRIPT_BUILD
Scripts (AI/GS) may not build this tramtype
NO_TOWN_MODIFY
Towns may not modify tiles of this tramtype in any way whatsoever

Replace new sprites

TypeNumber of sprites Comment
PROGRAMMABLE_PRE_SIGNAL32 Programmable pre-signals

Signal graphics come in groups of 16. These groups contain sprites in the same order as sprites 1275-1290 in trg1[r].grf and Action 5 type 4 (signals); red, then green, for each of: SW-facing, NE-facing, NW-facing, SE-facing, E-facing, W-facing, S-facing, N-facing.

GroupContents
0Semaphore programmable pre-signals
1Lighted programmable pre-signals