GRF version 9

This is a random collection of troublesome NewGRF syntax. Not all of them necessarily need a new GRF version, some could also be just handled via NML abstraction.

Contents

Produced/accepted cargo

Problem:

Affected:

Callback 37: Cargo sub-type display

Proposal:

Callback 14B, 14C: Input/output cargos

Proposal:

Childsprite Offsets

Problem:

Proposal:

Related issue:

Solution: Check clipping for parent and child sprites independently.

Action2

Callback results

Callback failure

Problem:

Proposal:

32bit callback results

Problem:

Ideas:

RandomAction2

Problems:

Proposal:

Open issue in case of GRF version 9 solution:

Solution via NML only:

Extended byte for 60+x vars

Problem:

Ideas:

Action2 Summary

Some of these ideas require an entirely different Action2 format. So let's consider what else could be changed, when redesigning it entirely from scratch.

Instead allow composing callback results of arbitrary size:

0..10: return [ word(accumulator) word(0x123) dword(register100) ]

11..20: chain to spritegroup 123

default: return failure

Action3

Make all IDs extended bytes to allow more than 256 items for all features.

Units, properties, variables

Rework all variables, properties and callbacks with physical units:

Unit suggestions: