MapRewriteTron
variant 1a: (VT1)

uint map[256][256]; // array of references into the tile_info array;

struct {
  byte ref_count; // multiple tiles can point to the same tile_info
  uint next_info; // same tile, other height level, 0 for last one on this tile
  byte height; // height where the stuff is
  byte type; // what is on the field, used to access the union
  union {
    struct {} road;
    struct {} rail;
    struct {} station;
    struct {} bridge;
    struct {} barren;
  };
} tile_info[1048576]; // just a big number
variant 1b: (VTD)

typedef struct {
  uint next_info; // same tile, other height level, 0 for last one on this tile
  byte height; // height where the stuff is
  byte type; // what is on the field, used to access the union
  union {
    struct {} road;
    struct {} rail;
    struct {} station;
    struct {} bridge;
    struct {} barren;
  };
} TileInfo;

TileInfo map[256][256];
TileInfo extra[1048576];
variant 2:

typedef struct {
  bit extra; // there is more above
  byte height; // height where the stuff is
  byte type; // what is on the field, used to access the union
  union {
    struct {} road;
    struct {} rail;
    struct {} station;
    struct {} barren;
  };
} GroundInfo;

typedef struct {
  uint next_info; // same hash index, not necessarily same TileIndex;
  TileIndex Pos;
  byte height;
  byte type;
  union {
    struct {} bridge;
    // ???
  };
} ExtraInfo;

GroundInfo map[256][256];
ExtraInfo* extra_hash[10001]; // Hash
ExtraInfo extra[1048576];
variant 3a:
uint map[256][256];

struct {
  byte ref_count; // multiple tiles can point to the same tile_info
  uint next_info; // same tile, other height level, 0 for last one on this tile
  byte height; // height where the stuff is
  byte type; // what is on the field, used to access the union
  byte ground_type; // barren land, bridge, pillar, ...
  union {
    struct {} road;
    struct {} rail;
    struct {} station;
  };
} tile_info[1048576]; // just a big number
variant 3b: (TBC)
struct {
  uint next_info; // same tile, other height level, 0 for last one on this tile
  byte height; // height where the stuff is
  byte type; // what is on the field, used to access the union
  byte ground_type; // barren land, bridge, pillar, ...
  union {
    struct {} road;
    struct {} rail;
    struct {} station;
  };
} TileInfo; // just a big number

TileInfo map[256][256];
TileInfo extra[1048576];