-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Maps
Margen67 edited this page Apr 22, 2021
·
38 revisions
Every tile on the current map is made up of TileElement
. There can be multiple TileElement
s at each tile coordinate. By default, the elements per tile are ordered by their base height and are contiguous in memory. The last element at a coordinate has the last_tile flag set. See also Map Generation.
Each TileElement
is made up of 8 bytes. There are 8 different types of tile element and they all have the same structure for the first 4 bytes:
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bXXYY_YYRR where Y is the type (see table below), X is specific to type see below, R is the rotation |
1 | Flags | See table below |
2 | Base Height | The lowest point of the tile. Multiply by 8 to get real units. |
3 | Clearance Height | The highest point of the tile. Multiply by 8 to get real units. |
The other 4 bytes differ per type.
Index | Type |
---|---|
0 | Surface |
1 | Path |
2 | Track |
3 | Scenery Small (Single Tile) |
4 | Entrance |
5 | Wall |
6 | Scenery Large (Multiple Tile) |
7 | Banner |
8-15 | Unused; Can cause odd issues if used. |
Index | Description |
---|---|
0 - 3 | Collision Detection. Each bit represents a quarter of the tile 1 == top right, 8 == top left. If set vehicles that are off rails will collide. |
4 | Ghost (Tile drawn white to indicate where construction will go) |
5 | Broken (Used to indicate benches, bins, etc. are broken) |
6 | For tracks this indicates they cannot be removed. |
7 | Last Tile at coordinate. |
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bE?YY_YY?T where E is vertical edge style (extra bit), T is terrain style (extra bit) |
4 | Slope |
0bEEES_SSSS where E is the vertical edge style, S is slope. The 4 least significant bits represent one corner each, and the most significant bit tells when a slope is very steep. For steep slopes, three of the least significant bits need to be set. |
5 | Terrain |
0bTTTW_WWWW where T is terrain style, W is water height. |
6 | Grass Length | 0 to 6 (0 = Mowed, 1 = Clear, 4 = Clumped, 6 = Heavily clumped) |
7 | Ownership |
0bOOOO_FFFF where O is ownership flags and F are park fence direction flags. |
Depending on if the path is a queue or not modifies the structure.
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0b??YY_YY2Q where Q is set if it is a queue, 2 is set when the path is 2+ sections wide (stops peeps from thinking its a junction) |
4 | Path Type |
0bTTTT_QSDD where T is the type of path (0-15 from the paths available in the scenario), Q is set when it's the last path-element in a queue (the one with a banner), S is set if the path is sloped, and D stores the direction of the path. See Objects#footpath-item
|
5 | Additions | Path additions are scenery that can be placed on paths (benches, bins, lamps). 0bG?SS_AAAA where G is set for when the addition is a ghost, A is the type of addition (See rct_path_bit_scenery_entry), and S is the station number (rides can have up to 4 sets of stations). |
6 | Edges |
0bCCCC_SSSS where C are bits indicating if the corners are connected and S are bits indicating whether the edges are connected. |
7 | Additions Status | For each of the 4 edges there are 2 bits to indicate if seat occupied (1 for occupied) / bin fullness (0 for full, 3 for empty). |
7 | Ride Index | Index of the ride that the queue is connected to 0xFF for nothing. |
The track element structure has two different forms depending on if its a maze or a regular ride.
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bC?YY_YYRR where C is set if it is a chain lift |
4 | Type | Each track element has a different track element type. See Track Data |
5 | Sequence |
0bPPPP_SSSS where S is the sequence index for the track piece (A curve for example is made up of multiple tiles each tile increments the sequence number). P is an extra parameter, for example brakes store the speed in this parameter. |
6 | Colour |
0bSSSS_LICC where C are bits indicating the colour scheme of the track piece. S stores seat rotation. I stores whether this piece is inverted (Multi-dim, Flying, Lay-down). L stores whether this piece contains a cable lift (Giga Coaster, not to be confused with chain lift). |
5 - 6 | Maze Entry | |
7 | Ride Index | Index of the ride that the track is connected to 0xFF for nothing. |
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bQQTT_TTRR where Q is the quadrant used by small tiles that take up a single quadrant. |
1 | Flags |
0bFFFF_XXXX where X is ??? |
4 | Type | Index of the .DAT file that element represents. (Note 255 max small scenery). See Objects#small-scenery |
5 | Age | Used to show ageing of flowers. |
6 | Colour 1 |
0b???C_CCCC where C is colour 1 |
7 | Colour 2 |
0b???C_CCCC where C is colour 2 |
Byte | Offset Name | Notes |
---|---|---|
4 | Type | There are 3 different types of entrance: PARK, RIDE_ENTRANCE, RIDE_EXIT |
5 | Index |
0bSSRR_IIII where I is the Index for which tile of the park entrance is shown. Park entrances are 3x1 middle tile is 0, left is 1, right is 2. R is the entrance or exit index for rides. S is the station number that the entrance/exit is connected to. |
6 | Path Type | The type of path that is used in the park entrance. |
7 | Ride Index | The ride index for the entrance/exit. |
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bXXYY_YYRR Where XX stores the slope (0 = flat, 1 and 2 are sloped) |
2 | Flags |
0bL?BG_SS?? S is top 2 bits of secondary colour. |
4 | Type | Type of wall, used to index into the loaded .DAT files. See Objects#wall |
5 | Tertiary Colour | Tertiary Colour |
5 | Banner Index | If the wall has a banner. |
6 | Primary Colour |
0bSSSP_PPPP where P is primary colour and S is secondary colour (Note top 2 bits are in flags). |
7 | Animation?? |
0bLHHH_HLLL where L is ?? and H is ??. |
Byte | Offset Name | Notes |
---|---|---|
0 | Type |
0bBBTT_TTRR B is for 2 highest bits of banner index (if used). |
4 - 5 | Type |
0bIIII_IITT_TTTT_TTTT Type of large scenery, used to index into the loaded .DAT files. See Objects#large-scenery (Has space to go above the 128 maximum??). I is for Index of the multiple tile. I.e. 0 is for bottom left and counts up. |
6 | Primary Colour |
0bBBBP_PPPP where P is primary colour and B is middle 3 bits of banner index (if used). |
7 | Secondary Colour |
0bBBBS_SSSS where S is secondary colour and B is first 3 bits of banner index (if used). |
Byte | Offset Name | Notes |
---|---|---|
4 | Index | Banner Index. Used to index into the gBanners array to get more information about the banner. See Objects#banner for more information. |
5 | Position | Position on the path that the banner is used across. |
6 | Flags |
0bXXXX_NNNN Where N is an edge that is able to be entered when set and no entry when unset. |
7 | Unused | Not used. |
- Home
- FAQ & Common Issues
- Roadmap
- Installation
- Building
- Features
- Development
- Benchmarking & stress testing OpenRCT2
- Coding Style
- Commit Messages
- Overall program structure
- Data Structures
- CSS1.DAT
- Custom Music and Ride Music Objects
- Game Actions
- G1 Elements Layout
- game.cfg structure
- Maps
- Music Cleanup
- Objects
- Official extended scenery set
- Peep AI
- Peep Sprite Type
- RCT1 ride and vehicle types and their RCT2 equivalents
- RCT12_MAX_SOMETHING versus MAX_SOMETHING
- Ride rating calculation
- SV6 Ride Structure
- Settings in config.ini
- Sizes and angles in the game world
- Sprite List csg1.dat
- Sprite List g1.dat
- Strings used in RCT1
- Strings used in the game
- TD6 format
- Terminology
- Track Data
- Track Designs
- Track drawers, RTDs and vehicle types
- Track types
- Vehicle Sprite Layout
- Widget colours
- Debugging OpenRCT2 on macOS
- OpenGL renderer
- Rebase and Sync fork with OpenRCT2
- Release Checklist
- Replay System
- Using minidumps from crash reports
- Using Track Block Get Previous
- History
- Testing