mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-10 01:22:25 +01:00
Page:
Maps
Pages
Android
Audio specifics
Benchmarking & stress testing OpenRCT2
Building OpenRCT2 on Linux
Building OpenRCT2 on MSYS2 MinGW
Building OpenRCT2 on Windows Subsystem for Linux
Building OpenRCT2 on Windows
Building OpenRCT2 on macOS using CMake
Building OpenRCT2 on macOS using Xcode
CSS1.DAT
Changes to original game
Changes to the SV6 file format
Cheats
Coding Style
Commit Messages
Converting Game Commands to Game Actions
Custom Music and Ride Music Objects
Debugging OpenRCT2 on macOS
Decompiling Tips IDA
Decompiling Tips OllyDbg
Dithering Images using Photoshop
Dithering Images
Easter Eggs
External influences
FAQ & Common Issues
Features to implement
Found bugs and limitations in RCT2
G1 Elements Layout
Game Actions
Game Commands
Getting packaged versions
Home
How To Contribute
Increasing of game limits
Installation on Linux and macOS
Known Issues from the RCT2 Readme
Language support
Legacy console
Loading RCT1 scenarios and data
Map Generation
Maps
Master Server
Minimum install
Multiplayer issues
Multiplayer permissions
Multiplayer
Music Cleanup
NTDF design
New save format status
Newly Identified Fields
Objects
Official extended scenery set
OpenGL renderengine issues
OpenGL renderer
Original Graphics
Overall program structure
Peep AI
Peep Sprite Type
Performance
RCT1 Features not in RCT2
RCT1 ride and vehicle types and their RCT2 equivalents
RCT12_MAX_SOMETHING versus MAX_SOMETHING
Rebase and Sync fork with OpenRCT2
Release Checklist
Replay System
Ride rating calculation
Roadmap
STEX support removal
SV6 Ride Structure
Sandbox Mode
Settings in config.ini
Sizes and angles in the game world
Sprite List csg1.dat
Sprite List g1.dat
Sprite compiler
Strings used in RCT1
Strings used in the game
Submitted feature requests
TD6 format
Terminology
Testing
Track Data
Track Element Lengths
Track designs
Track drawers, RTDs and vehicle types
Track types
Tutorials
Using Track Block Get Previous
Using minidumps from crash reports
Vehicle Sprite Layout
Widget colours
game.cfg structure
Clone
38
Maps
Margen67 edited this page 2021-04-21 14:09:02 -10:00
Table of Contents
- TileElement Structure
- Surface Elements (SurfaceElement struct)
- Path Elements (PathElement struct)
- Track Elements (TrackElement struct)
- Scenery Small (Single Tile) Elements (SmallSceneryElement struct)
- Entrance Elements (EntranceElement struct)
- Wall Elements (WallElement struct)
- Scenery Large (Multiple Tile) Elements (LargeSceneryElement struct)
- Banner Elements (BannerElement struct)
Every tile on the current map is made up of TileElement. There can be multiple TileElements 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.
TileElement Structure
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.
Type Table
| 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. |
Flags Table
| 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. |
Surface Elements (SurfaceElement struct)
| 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. |
Path Elements (PathElement struct)
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. |
Track Elements (TrackElement struct)
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. |
Scenery Small (Single Tile) Elements (SmallSceneryElement struct)
| 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 |
Entrance Elements (EntranceElement struct)
| 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. |
Wall Elements (WallElement struct)
| 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 ??. |
Scenery Large (Multiple Tile) Elements (LargeSceneryElement struct)
| 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). |
Banner Elements (BannerElement struct)
| 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