SV4 FILE FORMAT

Back to RCT TID home

The SV4 file stores the save game information. There is incomplete information about this file format. This page will be updated as information becomes available. The game saves SV4 files with RLE encoding. The decoded files have 2,065,676 bytes (0 .. 1F850B in hexadecimal).

000000..000001 - game time month (divide by 8 for years)

000002..000003 - game time day, counts in steps of 4. when this 16 bit value cycles, a month will have passed.

000004..000007 - game time counter, counts in steps of 1. does not begin at zero when scenario starts

000008..00000B,
00000C..00000F - contain psuedo random numbers which are related to each other.

000010..06000F - contains the game map. See the discussion below. The spatial dimensions used in the game are: one tile has 10 square meters of area; the height marks in the game are 4/3 meters (internal units are 1/3 meters).

060010..060013: an incrementing counter, two upper bits not used - not used as a trigger as far as I can tell

060014.. 198813 - sprite data structures. Each structure has 256 bytes. There are 5,000 sprite structures. Items stored in these structures include peeps (guest and staff) and ride vehicles. Ducks are also stored here. The vomit sprites are also stored here even though they are not moving objects.

198814, 198815: Sprite# of next sprite object to be added.
198816, 198817: Sprite# of first vehicle sprite
198818, 198819: Sprite# of 1st peep sprite
19881A, 19881B: Sprite# of 1st duck/moving text sprite
19881C, 19881D: Sprite# of 1st trash, vomit sprite
19881E, 10881F: Sprite# of 1st oversized ride car?
198820, 198821: Sprite structures available (counts down from 5000)
198822, 198823: Count of vehicles in game
198824, 198825: Count of peeps in game
198826, 198827: Count of ducks/moving text
198828, 198829: Count of trash/vomit
19882A, 19882B: Count of oversized?

19882C..19882F: Offset of park name in name string array - only use the lower 10 bits (the MSB is set if there is a string entry).
198830..198833: ?

198834..198837 - Cash amount (divide by 10 for dollars etc.)
198838, 19883B - Loan amount (divide by 10 for dollars etc.)

19883C..19883F - bit 0: Park status: 0 = closed, 1 = open; bit 2 set to prohibit land modification; bit 3 set to prohibit removing trees/scenery; bit 4 is set to "show real names"; bit 5 set to prohibit building above tree level; bit 6 set to indicate "low intensity peeps"; bit 7 set to prohibit advertising; bit 8 set for cheat detection?; bit 9 set for "high intensity peeps"(high intensity overrides low intensity); bit 11 = set if no use of money; bit 12 set for guest generation higher difficulty; bit 13 set if admission locked at free; bit 14 set for park rating higher difficulty; bit 15 is set to prohibit changing "real names" option.

198840..198841: Park entry fee
198842,198843: Park Entry Point #1: X (32 per tile)
198844,198845: Park Entry Point #1: Y (32 per tile)
198846,198847: Park Entry Point #1: Z (16 per tile height)
198848 : park Entry #1: Direction

198849: ?

19884A,19884B: Peep Entry Point #1: X (32 per tile)
19884C,19884D: Peep Entry Point #1: Y (32 per tile)
19884E: Peep Entry Point #1: tile height
19884F: Peep Entry Point #1: Direction (0=East, 1=South, 2=West, 3=North)

198850,198851: Peep Entry Point #2: X (32 per tile) (FFFF if unused ?)
198852,198853: Peep Entry Point #2: Y (32 per tile)
198854: Peep Entry Point #2: tile height
198855 Peep Entry Point #2: Direction (0=East, 1=South, 2=West, 3=North)

198856: ?

198857 - Research rate: 0 = none, 1 = minimum, 2 = normal, 3 = maximum

198858.. 19885B: ?
19885C-198866: Rides Menu
198867..19887B: (reserve area for ride menu)
19887C..198887: Vehicle Menu (similar to above ride menu - one bit for each vehicle)
198888..19889B: (reserve area for vehicle menu)
19889C..1989FF: Ride feature 1 table = 89 (decimal) structures of 4 bytes for each ride.
198A00..198A9B: (reserve area for ride feature table 1)
198A9C..198BFF: ride feature table 2 (4 bytes for each ride)
198C00..198B9B: (reserve area for ride feature table 2)
198C9C,198C9D: Number of guests in park
198C9E,198C9F: ?

The following table presents the starting byte of the 4-byte value for the item indicated.Divide numbers by 10 for display values (dollars, etc.)

This month

1 month ago

2 months ago

3 months ago

4 months ago

5 months ago

6 months ago

7 months ago

Ride construction

198CA0

198CD8

198D10

198D48

198D80

198DB8

198DF0

198E28

Ride operation

198CA4

198CDC

198D14

198D4C

198D84

198DBC

198DF4

198E2C

Land purchase

198CA8

198CE0

198D18

198D50

198D88

198DC0

198DF8

198E30

Landscaping

198CAC

198CE4

198D1C

198D54

198D8C

198DC4

198DFC

198E34

Park tickets

198CB0

198CE8

198D20

198D58

198D90

198DC8

198E00

198E38

Ride tickets

198CB4

198CEC

198D24

198D5C

198D94

198DCC

198E04

198E3C

Shop sales

198CB8

198CF0

198D28

198D60

198D98

198DD0

198E08

198E40

Shop stock

198CBC

198CF4

198D2C

198D64

198D9C

198DD4

198E0C

198E44

Food sales

198CC0

198CF8

198D30

198D68

198DA0

198DD8

198E10

198E48

Food stock

198CC4

198CFC

198D34

198D6C

198DA4

198DDC

198E14

198E4C

Staff wages

198CC8

198D00

198D38

198D70

198DA8

198DE0

198E18

198E50

Marketing

198CCC

198D04

198D3C

198D74

198DAC

198DE4

198E1C

198E54

Research

198CD0

198D08

198D40

198D78

198DB0

198DE8

198E20

198E58

Loan interest

198CD4

198D0C

198D44

198D7C

198DB4

198DEC

198E24

198E5C

8 months ago

9 months ago

10 months ago

11 months ago

12 months ago

13 months ago

14 months ago

15 months ago

Ride construction

198E60

198E98

198ED0

198F08

198F40

198F78

198FB0

198FE8

Ride operation

198E64

198E9C

198ED4

198F0C

198F44

198F7C

198FB4

198FEC

Land purchase

198E68

198EA0

198ED8

198F10

198F48

198F80

198FB8

198FF0

Landscaping

198E6C

198EA4

198EDC

198F14

198F4C

198F84

198FBC

198FF4

Park tickets

198E70

198EA8

198EE0

198F18

198F50

198F88

198FC0

198FF8

Ride tickets

198E74

198EAC

198EE4

198F1C

198F54

198F8C

198FC4

198FFC

Shop sales

198E78

198EB0

198EE8

198F20

198F58

198F90

198FC8

199000

Shop stock

198E7C

198EB4

198EEC

198F24

198F5C

198F94

198FCC

199004

Food sales

198E80

198EB8

198EF0

198F28

198F60

198F98

198FD0

1990008

Food stock

198E84

198EBC

198EF4

198F2C

198F64

198F9C

198FD4

19900C

Staff wages

198E88

198EC0

198EF8

198F30

198F68

198FA0

198FD8

199010

Marketing

198E8C

198EC4

198EFC

198F34

198F6C

198FA4

198FDC

199014

Research

198E90

198EC8

198F00

198F38

198F70

198FA8

198FE0

199018

Loan interest

198E94

198ECC

198F04

198F3C

198F74

198FAC

198FE4

19901C

199020..199023: ?number of guests in park
199024: ?
199025: color for handymen
199026: color for mechanics
199027: color for security guards

199028..1990A7: Scenery Menu

1990A8: banner menu items: bit 0=standard, 1=jungle, 2=roman, 3=egyptian, 4=mining, 5=jurrasic, 6=asian,7=snow
1990A9: banner menu items: bit 0=space, 1..7=unused
1990AA..199107: ?

199108,199109: current park rating

19910A..199149: historical park rating (for curve) the low byte is in 19910A through 199129 while the high byte is in 19912A through 199149.  an FF indicates 'not used'

19914A: Research selection: bit 0=Rollercoasters, bit 1 = Thrill rides, bit 2 = Gentle rides, bit 3 = Shops/stalls, bit 4 = Theming, bit 5 = Ride improvements

19914B: research progress description: 0=initial research, 1=designing, 2=completing
19914C: last development - research item
19914D: last development - corresponding ride
19914E: last development - research category
19914F: last development - flag

199150..199537 : Research items. up to 200 entries of 5 bytes each. Not  used in LL (goto 199C9C for LL)
199538: next development - research item
199539: next development - corresponding ride
19953A: next development - research category
19953B: next development - flag
19953C..19953D: ?
19953E..199541: ?
199542,199543: Cheat detection: count of owned land
199544..199545: ?
199546..199547: ?
199548..19954B: Max loan amount (divide by 10 to get dollars, etc)
19954C..19954D: "cash in pocket" base value for newly generated guests. Varies from -$10, base, +$10, +$20. A zero value defaults to $50.
19954E: avg hunger of newly generated guests.
19954F: avg thirst of newly generated guests.
199550 : scenario goal: 1 = #peeps (& park rating), 2 = park value, 3 = have fun!, 4 = competition,  5 = ten different coasters with excitement at least 6.00, 6 = maintain park rating & #peeps, 7 = monthly ride income, 8 = ten different coasters with excitement at least 7.00 and minimum length as specified, 9 = complete five coasters with minimum excitement as specified
199551: number of years to reach goal (10 for competitions)
199552,199553: ?
199554..199557: money (park value/ride income) goal / coaster excitement goal (only for goal type 9)
199558, 199559: #peeps goal / minimum coaster length (meters)

19955A ..19956D: Advertising, 1 byte for each type, lower 4 bits indicate weeks remaining.

19956E..199573: 1 Byte for each type of advertising, indicates the ride/food associated with the advertising that displays it.

199574..199583: ?
199584..199783: 128 DWords (previous cash values)
199784..199787: Recent change in cash
199788..19978B: previous recent change in cash multiplied by 7(?)
19978C..19978F: sum of "recent changes in cash"
199790..199791: ?
199792..199793: ?
199794..199993: 128 DWords: Weekly Profit over time
199994..199997: Park value
199998..199B97: 128 DWords: Park Value over time
199B98..199B9B: scenario objective value at completion Note: MSB set to indicated objective not met; if bit 0 set - failed objective
199B9C..199B9F: number of admissions
199BA0..199BA3: income from admissions
199BA4..199BA7: Company Value [cash + park value - loan]
199BA8..199BB7: ?
199BB8..199BC7: park awards - four structures of 4 bytes each. Each structure consists of two words. The first word is a flag to indicate if there is an award(zero=no, nonzero = yes); the second word indicates the award/string as follows: 0=most untidy, 1=tidiest, 2=best rollercoasters, 3=best value, 4=most beautiful, 5=Worst value, 6=safest, 7=best staff, 8=best food, 9=worst food, A=best bathrooms, B=most disappointing, C=best water rides
199BC8..199BC9: Price for purchasing land (div by 10 for dollars)
199BCA..199BCB: Price for buying Construction Rights (div by 10 for dollars)
199BCC..199BCD: ?

199BCE..199BCF: ?

199BD0..199BD3: contains 58 BB C3 00 if error detected????
199BD4..199C13: user name (null terminated string)
199C14..199C17: Version number of game - convert to decimal: first digit is major version number; next two digits are minor version number; last three digits are revision number.

199C18..199C1B: company value at scenario completion

199C1C..199C1F: 1st financial checksum [ 70093A minus cash, ror 5, minus loan, ror 7, add maxloan, ror 3 ]

199C20..199C21: number of ride structures used

199C22..199C23: negative of number of rides available (for cheat detection)

199C24..199C25: max number of tiles(land) allowed to own (for cheat detection)

199C26..199C27: negative of max number of tiles allowed to own

199C28..199C2B: 3rd financial checksum: [cash - loan - all values in monthly expense/income table.]
199C2C..199C2F: Scenario Slot Number Checksum
199C30..199C4F: Name of winner; if not won or unknown, the character '?' is used
199C50..199C53: 2nd financial checksum [ cash ror thirteen, xor 0F4EC9621 ]

199C54..199C7B: (copyright notice in SC4 files)
199C7C,D: 0 in SV4 files, FED3 in SC4 files (for cheat detection)
199C7E,F: 0 in SV4 files, F318 in SC4 files (for cheat detection)
199C80,1: 0 in SV4 files, B218 in SC4 files (for cheat detection)
199C82,3: 0 in SV4 files, 458A in SC4 files (for cheat detection)
199C84..199C85: ?
199C86..199C87: ?
The following four words are not used (contain zero) in original RCT files. They specify the size of the map in expansion pack files.
199C88..199C89: meaning unknown, 32*(park_size - 1)
199C8A..199C8B: meaning unknown, value in 199C88 plus 011E
199C8C..199C8D: park size (visible tiles per edge +2)
199C8E..199C8F: meaning unknown, value in 199C88 minus 1 (except full size park in which case the value is 0FFF)
199C90..199C93: "same price" flags:

 

0

1

2

3

4

5

6

7

199C90

balloons

cuddly toy

map

on-ride photo

umbrella

drinks

burgers

fries

199C91

ice cream

cotton candy

 

 

 

pizza

 

popcorn

199C92

hot dogs

seafood

hats

candy apple

t-shirt

doughnut

coffee

 

199C93

chicken

lemonade

 

 

 

 

 

bathroom


199C94..199C95: ?
199C96..199C98: ?
199C99: Water color (0=normal, 1=red)
199C9A..199C9B: ?
199C9C..19A01F: Research items in LL only
19A020..19B57B: ?

19B57C..19B89B: banner info. 100 sets of 8 byte structures(byte 0: 0=standard, 1=jungle(wooden), 2=classical, 3=egyptian, 4=mining, 5=prehistoric(bone), 6=asian, 7=snowy, 8=space,FF= unused; byte1: 0=normal, 1=no entry; bytes 2,3: string index; byte 4: color; byte 5: text color; bytes 6,7: ?)

19B89C..1A389B: 1024 Null terminated Name strings for park, rides, peeps, etc. Each string is allocated 32 bytes. Names are entered starting at the last location (1A387C) and new names are entered in preceeding slots as the user creates them.

1A389C..1A389F: a game time counter - used to trigger various events

1A38A0..1C963F: Ride structure. 255 structures of 608 bytes each

1C9640, 1C9641 - a game time counter - not used as a trigger for any events as far as I can tell

1C9642,3: Horizontal view position (0000 to 1FFF, negated depending on Viewing angle)
1C9644,5: Vertical view position (0000 to 1FFF, negated depending on Viewing angle)
1C9646: Viewing Zoom factor (0 = closest, 1 = medium, 2 = far)
1C9647: Viewing angle (0 = from NE, 1 = from NW, 2 = from SW, 3 = from SE) [note: horizontal and vertical view position will be positive or negative depending on the view angle as indicated below:

angle

Horiz

Vert

0

-

+

1

-

-

2

+

-

3

+

+

1C9648..1CADB7: Animation object locations (includes Park/Ride entry banners, fountains, ride pieces, etc.) one thousand - six byte structures: first byte=height, second byte=object code, 3rd & 4th bytes = X (32 per tile), 5th & 6th bytes = Y(32 per tile). The object code is: 00=ride entrance, 02=scenery(eg fountain), 03=park entry, 04=waterfall, 05=rapids, 06=on ride photo, 07=whirlpool, 08=spinning tunnel, 09=ghost train cars, 0A=banner

1CADB8..1CADBB: number of animation objects (Park/Ride entry, queue & banner, fountains, etc) points
1CADBC..1CADC7: ?
1CADC8..1CADC9: progression of scrolling text (start point of scrolling text)
1CADCA..1CADCD: ?
1CADCE,1CADCF: ?
1CADD0..1CAE43: ?
1CAE44..1F06A3: Data Logging - 8 structures of 19,212 bytes each (graphic charts for G's, etc on rides)
1F06A4..1F06A7: next guest number
1F06A8..1F06A9: another game counter, two upper bits always zero
1F06AA..1F431D: Patrol areas

1F431E: ? - has the value 01
1F431F: ? - has the value 01
1F4320: ? - has the value 01
1F4321: ? - has the value 01
1F4322..1F4329: ?
1F432A: climate (0=wet, 1=normal, 2=dry, 3=cold)
1F432B: ? - usu has the value 05 but a few scenarios have the value 0B

1F432C..1F432D: weather timer - count down from 1920

1F432E : current weather (0=sunny, 1=partly cloudy, 2=cloudy, 3=showers, 4=rain, 5=thunderstorm, 6=snow)
1F432F: target weather
1F4330: current temperature (positive only)
1F4331: target temperature
1F4332: lightning/thunder, 0=none, 1=occasional, 2=frequent
1F4333: target lightning/thunder
1F4334: shade, 0=none, 1=some, 2=dark
1F4335: target shade
1F4336: rain, 0=none, 1=light, 2=heavy
1F4337: target rain

1F4338..1F8313: Message area. 61 messages. Each message structure uses 268 bytes. Current message at 1F4338, then put into last spot (1F8208) and others are moved up.
The first thirteen bytes of each structure are flags.
byte 0: Icon (00=[hide message], 01=ride, 02=peep walking, 03=peep walking, 04=Money (coins), 05=blank, 06=Scenery, 07=CrowdofPeeps, 08=Award, 09=Graph)
byte 02,03: associated item (ie ride index, peep thought, peep index)
byte 06: how many letters have been displayed
byte 08: month (div by 8 for year)
byte 0A: date: day of month
byte 0C: color (90=white, 91=red, 92=green, 93=gold, 94=brown, 95=grey, 96=blue, 97=purple, 98=beige, 99=pink, 9A=aqua, 9B=tan, 9C=green)
byte 0E: null terminated string starts here.

1F8314..1F8351: Scenario name (not park name)

1F8352,3: Scenario slot number

1F8354..1F8357: scenario flags (expansion packs only) bit 12: error while loading

1F8358..1F8507: ?

1F8508..1F850B - these last four bytes of the file contain an additional checksum in CF/AA and LL saved games. This is in addition to the checksum added after the file is RLE encoded. This was not present in the original RCT files. This checksum is calculated by starting with the hex value 00000031 in the summation register. The summation register is rotated left 13 bits and then the byte of [unencoded] data structure is added to the low byte. This is done for the data from 000000 to 1F8507.


GAME MAP

The game has a grid of 126 by 126 tiles. The save file contains 128 by 128 tiles. The tiles around the perimeter of the game "board" are not displayed but are apparently needed to display the rock edges around the "board". The save file contains (among other things) a sequence of map elements. A map element data structure is used for all stationary items which appear on tiles. The sequence is: rows of columns; where each column contains a variable number of map elements (at least one). Each map element has 8 bytes identified below as bytes 0 through 7. The map element data structure begins at address 000010. The first row consists of perimeter tiles so there is only one map element per tile. The second row consequently begins at 000410. The length of the second and subsequent rows depends on how many map elements are at each tile. I have used the arbitrary designation that the map begins at the SouthWest corner and the first row goes from West to East.

byte 0 - map element type identifier -
upper two bits: indicate quadrant for smaller objects and are used as the two highest bits for the color code on geometric objects. NOTE: all geometric edge (wall) objects on a tile will have the same color; a geometric scenery object can have a different color from the geometric edge objects. Also used to indicate direction a queue entry faces. SURFACE tiles - the upper bit is a flag to use extended edge types, see the description under "byte 4". TRACK pieces: the most significant bit is set to indicate lift chain.
00 = entire tile or SW quadrant -or- facing West
01 = NW quadrant -or- facing North
10 = NE quadrant -or- facing East
11 = SE quadrant.-or- facing South

middle four bits: indicate type of element
0000 = surface tile
0001 = path (& road)
0010 = track element  or shop/stall
0011 = scenery item (single tile)
0100 = ride entry/exit, Park entrance
0101 = fence(s)/wall(s)
0110 = scenery item (multiple tile)
0111 = banners

lower two bits:

bit values

direction scenery/track item faces

queue color

path qualifier

00

West

blue

grey tarmac/dirt/crazy tile/tile

01

North

red

red tarmac/grey tile/black dirt

10

East

yellow

brown tarmac/red tile

11

South

green

green tarmac/green tile

In Loopy Landscapes, bit 0 of surface tiles is used to extend the surface type - see the description under "byte 5"

byte 1 - The most significant bit is set to indicate the 'last' map element at this tile position. A single -or- a sequence of 8-byte map elements will be present for each tile position. The four bits of the lower nibble are used to indicate which quadrant(s) are used. bit 3 = NW, bit 2 = SW, bit 1 = SE, bit 0 = NE. The middle two bits of the upper nibble are used to indicate the support type for paths: X00X= normal (truss), X01X= wood post, X10X= steel post, X11X= bamboo post. bit 6 is set for "indestructible" track elements (used in certain scenarios).

byte 2 - base height of this element. Surface elements have heights which are multiples of 4. An element (eg. a large tree) which is located at the center of a sloped tile would have a base height which is 2 greater than the base height of the sloped surface element. A small tree on a slope would have a base height either 1 or 3 greater than the surface element depending on which quadrant it is in.

byte 3 - clearance (construction) height for this map element. {A value of zero is used for perimeter tiles.} The vertical space between the values in byte 2 and byte 3 is occupied by this element. No other space filling map element is allowed to occupy this range.

byte:

4

5

6

7

surface

slope

terrain/water

grass

ownership

scenery (single tile)

item

age

color

scenery (multiple tile)

item

index

color

color

Tracks

element

index

color

ride index

path

type

additions

edges/corners

addition status

entry/exit

item

rides = 0; park=index

rides=0; park=path

ride index

fence/wall

slope

item

item

item

banner

index into banner structures

position

FF(FD=one way)

0

byte 4 - for multiple-tile scenery elements: byte 5 contains the sequence number for the part of the scenery object to be rendered at this tile. The number of tiles occupied are in brackets.
00 = Roman colosseum [12]
01 = house [6]
02 = Sphinx [8]
03 = house [8]
04 = Colonnade [4]
05 = Mine Hut #1 [4]
06 = Mine Hut #2 [4]
07 = Volcanoe [12]
08 = Pyramid [36] Note: the pyramid is "hollow" inside
09 = Mine Shaft [6]
0A = Martian Building [4]
0B = Skeleton [2]
0C = Dinosaur #1 [2]
0D = Dinosaur #2 [2]
0E = Dinosaur #3 [2]

the following are in Loopy landscapes:
0F = ice palace [4]
10 = castle tower square brown [1]
11 = castle tower tall brown [1]
12 = castle tower square grey [1]
13 = castle tower tall grey [1]
14 = tent [1]
15 = medieval house 1 [1]
16 = medieval house 2 [1]
17 = medieval house 3 [1]
18 = giant pumpkin [4]
19 = space rocket [4]
1A = town hall [4]
1B = urban house 1 [4]
1C = gas station [4]
1D = pagoda [4]
1E = office block [4]
1F = urban house 2 [4]
20 = satellite [4]
21 = space capsule [1]
22 = tenement [1]

byte 4 - for single-tile scenery elements

byte 4 - tracks: the track element code number. {includes: shops, info kiosk and ride bases}Track pieces which occupy more than one tile use byte 5 to indicate which section of the track element is located at this tile.

byte 4 - park/ride entry/exit: for park entrance, byte 5 indicates which section. Otherwise, the remaining bytes are 00's.
00 = Ride entrance
01 = Ride exit
02 = Park entrance

byte 4 - paths - upper nibble:
00 = queue
01 = tarmac
02 = dirt
03 = crazy tile
04 = roads (not available to user)
05 = tile

byte 4 - paths - lower nibble: bit 3 is set for a queue entry, bits 2, 1, 0 indicate the slope:
0 = flat
4 = up to West
5 = up to North
6 = up to East
7 = up to South

byte 4 - fences/walls: the upper three bits are the three lower bits of the color of geometric objects.

byte 4 - surface tiles - upper 3 bits: the edge style of surface elements. 000 = rock, 001 = brick, 010 = iron, 011 = wood, 100 = grey wall, 101 = yellow wall, 110 = black wall, 111 = red wall. In Loopy Landscapes, the MSB of byte 0 indicates an extended set of edge styles. If that bit is set on a surface element, use the following: 000 = Ice, 001 = purple wall, 010 = green wall, 011 = brown stone wall, 100 = grey stone wall, 101 = skyscraper A, 110 = skyscraper B, 111 = not used.

byte 4 - fences/wall - lower 5 bits: the slope of the surface. Thes same value as below.

byte 4 - banners: index into banner data structure (100 eight byte structures beginning at 19B57C)

byte 4 - surface tiles - lower 5 bits: the slope of surface elements. There are 19 possible tile slopes. (The stored tile height is the lowest point of a surface tile.) The lower four bits correspond to corners of the tile. If the bit is set, that corner is elevated by one unit. The case of all four bits being set is not used. If the fifth bit is set, three of the four lower bits will be set; and the corner opposite of the zero bit is elevated by two units rather than one. The image below shows the slopes as viewed from the SouthWest corner.

byte 5 - surface tiles - upper 3 bits: the terrain type for surface elements. 000 = grass, 001 = sand, 010 = dirt, 011 = rock, 100 = martian, 101 = checkerboard, 110 = dirt/grass clumps, 111 = roofing tiles. In Loopy Landscapes, the LSB of byte 0 is also used as a bit for terrain type. If that bit is set, the bits of byte 5 correspond to: 000 = Snow/Ice, 001= log roof, 010 = iron roof, 011 = grey roofing tile, 100 = red grid, 101 = yellow grid, 110 = purple grid, 111 = green grid

byte 5 - surface tiles - lower 5 bits: absolute height of water, if present.NOT the height of water above ground. The maximum allowed value in the game is 28. This value is to be multiplied by four.

byte 5 - banners - lower 2 bits: position of the banner posts (it faces toward the opposite direction). 0 = West, 1 = North, 2 = East, 3 = South.

byte 5 - paths: additions to path edge. All available edges will contain a copy of the item.
0 = nothing
1 = single lamps
2 = triple lamps
3 = litter bins
4 = benches
5 = jumping fountains
6 = egyptian lamps
7 = martian lamps
8 = vandalized single lamps
9 = vandalized triple lamps
A = vandalized liter bins
B = vandalized benches
C = vandalized egyptian lamps
D = vandalized martian lamps
E = jumping snowballs

byte 5 - fences/walls: four sets of the upper two bits of the edge element code for each side of the tile (I know... this is confusing) The table below maps the bits of this byte to the edge element codes for each side. For example, bit 3 maps to bit 5 of the North element code. The remaining bits of each edge element code are in bytes 6 & 7.

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

S5

S4

E5

E4

N5

N4

W5

W4

The descriptions of the edge elements are listed here. Every edge element has a clearance height of 4.

00 = mesh fence
01 = hedge
02 = white railing
03 = wood panel fence
04 = barb wire fence
05 = railing
06 = brick wall
07 = stone wall
08 = conifer hedge
09 = roman column wall
0A = castle tall with window brown
0B = castle tall with gate grey
0C = creepy gate
0D =
0E =
0F = no element at this edge

10 = mesh fence with gate (not available to user)
11 = hedge with gate (not available to user)
12 = white railing with gate (not available to user)
13 = wood panel fence with gate (not available to user)
14 = barb wire fence with gate (not available to user)
15 = iron railing with gate (not available to user)
16 = brick wall with gate (not available to user)
17 = stone wall with gate (not available to user)
18 = conifer hedge with gate (not available to user)
19 = castle wall tall brown
1A = castle wall medium brown
1B = castel wall tall with window grey
1C = barb fence with snow
1D =
1E =
1F = no element at this edge

20 = roman wall
21 = blue playing cards
22 = martian wall
23 = wood post fence
24 = primitive wood fence - tall
25 = leaded glass
26 = white wood panel fence
27 = wooden fence
28 = castle wall short brown
29 = castle wall tall with cross brown
2A = castle wall tall grey
2B = castle wall medium grey
2C = wooden fence with snow
2D =
2E =
2F = no element at this edge

30 = egyptian wall
31 = red playing card wall
32 = plate glass
33 = red-wood post fence
34 = primitive wood fence - short
35 = bone fence
36 = red-wood panel fence
37 = jungle fence
38 = castle wall short grey
39 = castle wall tall with gate brown
3A = castle wall tall with cross grey
3B = creepy wall
3C = post fence with snow
3D =
3E =
3F = no element at this edge

byte 5 - single tile scenery objects : age (flowers wilt at 28, die at 37)

byte 5 - multitile structures - upper 6 bits: contains a count (index) for which part of the structure is located at this tile.

byte 5 - track elements: contains a count (index) for which part of the structure is located at this tile.

byte 5 - banners: which edge banner is on: 0 = West; 1 = North; 2 = East; 3 = South

byte 6 - surface map elements: this value indicates the amount of grass growing on tiles. Tiles which are outside of the park boundary have the static value 01. Tiles within the park boundary have values which increase with time.(Least Significant 3 bits: 0=mowed, 1,2,3=clear, 4,5,6=clumps, 7=reserved)

byte 6 - scenery objects: this byte contains the color

byte 6 - fences/walls - upper nibble: the lower four bits (N3..N0) of the North edge element code.

byte 6 - fences/walls - lower nibble: the lower four bits (W3..W0) of the West edge element code.

byte 6 - paths - upper nibble: the bits are set if the path extends in that corner: bit 3 for SW, bit 2 for SE, bit 1 NE, and bit 0 for NW. Note: on "road" paths, the center stripe is drawn on the appropriate edge when two (and only two) adjacent corner bits are set.

byte 6 - paths - lower nibble: the bits are set if the path extends in that direction: bit 3 for South, bit 2 for East, bit 1 for North, and bit 0 for West. For example, a path which extends to the South and to the East would have 1100 for these four bits.

byte 6 - track elements: color code

byte 6 - multitile structure: color code

byte 6 - park entry: path code(hex) - 4=grey tarmac, 5=red tarmac, 6=brown tarmac, 7=green tarmac, 8=brown dirt, 9=black dirt, 0C=crazy tile, 14=beige tile, 15=grey tile, 16=red tile, 17=green tile

byte 7 - multitile structure: color code

byte 7 - paths: state of addition(upper two bits=south item, next two bits=east item, next two bits=north item, lowest two bits=west item) trashcans = capacity (0=overflowing, 3=empty)

byte 7 - fences/walls - upper nibble: the lower four bits (S3..S0) of the South edge element code.

byte 7 - fences/walls - lower nibble: the lower four bits (E3..E0) of the East edge element code.

byte 7 - track elements: ride index

byte 7 - surface map elements: upper nibble indicates land property rights.
0 = unowned
1, 3 or 5 = construction rights purchased
2 = owned
4 = construction rights available
8 = for sale
A = bought
i.e.
bit 0: set if construction rights purchased
bit 1: set if owned/purchased
bit 2: set if construction rights available
bit 3: set if land can be bought

lower nibble: each bit indicates presence of property boundary fence: bit 0 = North fence, bit 1 = East fence, bit 2 = South fence, bit 3 = West fence


SPRITE DATA STRUCTURES

256 bytes for each sprite. This data structure is used for peeps, ducks, vomit, vehicles (each car of a train, etc.)

[NOTE: subtract 4 from all of the index numbers. I made a mistake! I will leave the indices as they are for the time being. It is easier to read addresses from hex editors if I leave this offset in place.]

04 : Sprite Identifier (00=vehicle [includes golfer & golf ball], 01=peep, 02=duck & 'flying text', 03=vomit/trash, FF=unused)
05 : trash type: 0,1=vomit; 2=drink can, 3=fries box, 4=brown?, 5=white?, 6=purple?, 7=green?
06, 07 : Used to remember pointer so that a new members of staff can be put back into chains in the same place as sacked members of staff, thus preserving the integrity of the Patrol Area Map?
08, 09: Pointer to next sprite of this type. (FF FF if end of chain)
0A, 0B: Pointer to previous sprite of this type. (FF FF if beginning of chain)
0C (?) 2= test, 4=peep, 6=vehicle

0D: ?
0E,0F : peep data structure counter
10,11 : ?
12,13 : X coordinate (32 units per tile, increases to the East)
14,15 : Y coordinate (32 units per tile, increases to the North)
16,17 : Z coordinate (16 units per height mark)
18..21 : ?
22 : Direction sprite is facing
23..25 : ?
26,27 : Text string index: 00 – Handyman, 01 – Mechanic, 02 – Security, 03 – Entertainer, FF - Guest. - look up custom string if upper four bits are: 1000. (use only the lower 10 bits for index into string table). If the upper byte is between A0 and DF then it is a "real name" and the lower 10 bits indicate the first name while the upper 6 bits are processed to determine the last initial. An easy way is to shift the word right by 10(decimal), then subtract 28(hex). The result will be between zero and fifteen and is used to look up a Capital letter. (vowels and less common letters are not used)
28,29 : next X coordinate for peeps
2A,2B : next Y coordinate for peeps
2C..2D : money amount for 'flying text'; speed of vehicles; next Z coordinate for peeps
2E : ?
2F : current state (0=walking, 1=walking*, 2=in line for*, 3=on*, 4=on*, 5=walking, 6=in line for, 7=on*, 8=sitting, 9="(select location)", A=walking, B=mowing grass, C=sweeping footpath, D=walking*, E=walking*, F=heading for, 10=fixing*, 11=at*, 12=ERROR,  [*= pincers inactive]
30 : ?
31 : peep graphics (0=guest, 1=handyman, 2=mechanic, 3=security, 4=panda, 5=tiger, 6=elephant, 7=roman, 8=gorilla, 9=snowman, A=Knight, B=Astronaut, 10=guest w balloon, 11=guest w cotton candy, 12=guest w umbrella, 13=guest w pizza?, {14=security}, 15=guest w popcorn,16=guest w arms crossed, 17=guest w head down, 18=guest w hand over mouth, 19=green faced guest w hand over mouth, 1A=guest w hand over crotch, 1B=guest w hat, 1C=guest w burger?, 1D=guest w tentacle, 1E=guest w candy apple

32 : Guest type: 0=guest, 1=staff
33 : # of rides been on
34 : Shirt color
35 : Pants color for peeps, or, vehicle type
36, 37 : vehicles:body and trim color; peeps: x coordinate tile center
38..39 : peeps: y coodinate tile center
3A..3B : ?
3C : Energy
3D : target value for Energy
3E : Happiness
3F : target value for Happiness
40 : Nausea
41 : target value for Nausea
42 : Hunger (higher value is less hungry)
43 : Thirst (higher value is less thirsty)
44 : bathroom urgency
45..46 : ?
47 : preferred ride intensity: upper nibble = max, lower nibble = min
48 : nausea tolerance (0=none, 1=low, 2=average, 3=high)
49..4B: ?
4C..4D: ?
4E..55: ?
56..95: for vehicles: index of guests in vehicle (thirtytwo word values) FFFF if unused
58..71: ?
72 : animation type (0 = walking, 10 = sweeping, etc)
73 : ?
74 : animation sequence; 0=first image of sequence, 1=second image, etc
75..77 : ?
78..79 : index of guest in front of this guest while in queue (FFFF if first in line)
7A..7D : ?
7E..7F : ?
80..9F : ?
A0..3 : peep identifier number (ie. Guest 301 would have 2D, 01, 00, 00 at these bytes)
A4..7 : cash in pocket
A8..AB : cash spent
AC..AF : time that the peep entered the park
B0: ?
B1: (?) FF for guest, 0 for staff?
B2..B3 : ?
B4..C7 : 5 sets of 4 byte structures listing the peep's thoughts: byte 0 = thought, byte 1 = item, byte3,4 = boolean (0 = no thought)

C8 : ?
C9 : attraction headed for
CA : assignments...handyman: bit0=sweep paths, bit1=water gardens, bit2=empty trash, bit3=mow; machanic: bit0=inspect, bit1=repair
CB : ride associated with on-ride photo
CC : 8 if 'Tracking' turned On
CD..E7 : ?
E8,E9 : paid to enter park
EA,EB : spent on rides
EC,ED : spent on food/drinks
EE,EF : spent on souveniers
F0 : items eaten
F1 : items drunk
F2 : souveniers bought
F3 : ?
F4 : coupon type: 0=free entry to park, 1 = free ride on ___, 2 = half price entry to park, 3=free item ___
F5 : ride/item associated with coupon
F6 : ?
F7 : Vandal flag (0 = normal, not zero= vandal)
F8..F9 : ?
FA : balloon color
FB : umbrella color
FC : hat color
FD : favorite ride
FE..FF : ?
100 : carrying : bit 0=balloon, bit 1=cuddly toy, bit 2=map, bit 3=on-ride photo of ___, bit 4=umbrella, bit 5=drink, bit 6=burger, bit 7=fries,
101 : carrying : bit 0=ice cream, bit 1=cotton candy, bit 2=empty can, bit 3=rubbish, bit 4=empty burger box, bit 5=pizza, bit 6=coupon, bit 7=popcorn
102 : carrying : bit 0=hot dog, bit 1=tentacle, bit 2=hat, bit 3=candy apple, bit 4=T-shirt, bit 5=donut, bit 6=coffee, bit 7=empty cup
103 : carrying: bit 0=fried chicken, bit 1=lemonade, bit 2=empty box, bit 3=empty bottle, bit 4-7 unused


RESEARCH AREA

There are 180 entries of 5 bytes each:

0

1

2

3

4

Research item

corresponding Ride

Research Category

Flag

Research Expenditure Area

Flag = FF to specify the following limits (Depending on Byte 0):

Byte_0

FF

End of Available items. Everything from the beginning to this flag is available to the user. Note: Special track/vehicle items may be listed here even if the corresponding ride is not available. This is the case when the special track/vehicle item is to be made available to the user as soon as the corresponding ride becomes available. For example, in some scenarios you may have "spining cars for steel mini roller coaster" available as soon as the steel mini roller coaster becomes available while in other scenarios you would have to research this item.

FE

End of Researchable items. All items which can be researched are located between the FF flag and this flag. As items are researched, they are moved from this section and placed in the above section.

FD

End of items. Pairs of entries between the FE and FD flag are randomly swapped in the above research order table. The swapping takes place when the scenario is first loaded.

Flag = 0 for research item entries.

Research Category

0 = Theming

'Research Item' contains an index for the  Theming item

1 = Rides/Shops

'Research Item' contains an index for the item

2 = Vehicles

'Research Item' contains an index for the vehicle to go on the ride indexed by 'Corresponding Ride'

3 = Specials

'Research Item' contains an index for the special track item to go with the ride indexed by 'Corresponding Ride'

Research Expenditure Area: Each entry has this code to specify the category it is in. The Research menu in the game lets you set check marks to specify these areas for research.

0

Rollercoasters

1

Thrill Rides

2

Gentle Ride/Transport Rides

3

Shops

4

Scenery/Themeing

5

Ride Improvements

Theming Items

1

Mine Theme

2

Classical/Roman Theme

3

Egyptian Theme.

4

Martian Theme

5

Jumping Fountains

6

Toyland Theme

7

Jurassic Theme

8

Graveyard Theme

9

Jungle Theme

A

Abstract Theme

B

Garden Clock

C

Snow & Ice

D

Medieval

E

Space

F

Creepy

10

Urban

11

Pagoda

Special Track Types

06

Banked Curves*

07

Vertical Loop

0C

Steep Twist*

11

In-Line Twist

12

Half Loop

13

Corkscrew

15,16

Banked Helix*

17

Helix*

1A

On-Ride-Photo*

1B

Water Splash

1C

Vertical Drop*

1D

Barrel Roll*

1E

Launched Lift Hill

1F

Large Loop and Large Half Loop

21

Reverser Turntable

22

Heartline Roll*

23

Reversing Sections*

XX

X


RIDE STRUCTURE

Each ride structure contains 608 bytes. Some of the items are the same as described under the TD4 documentation.

000 : ride type (FF if not used)
001 : vehicle type
002,3 : bit 0 = train(s) on track, bit 1 = tested; bit 2 = test in progress; bit 3 = don't show raw stats; bit 4 = pass through station without stopping; bit 5 = On-Ride photo; bit 6 = ?; bit 7 = broken down; bit 10 = crashed; bit 12 = ever been opened; bit 13 = play music; bit 14 = construction/demolition prohibited (indestructible ride); bit 15 = demolition prohibited (used when there are indestructible track pieces)
004 : operating mode
005 : color scheme (in original RCT code)
006..01D : body and trim colors
01E..020 : Track primary, secondary, and support colors (original RCT)
021 : ride status - 0 = closed, 1 = open, 2 = test
022..023 : text string index .if MSB of this word is set, use lower 10 bits for user defined string index
024..027 : string numerator (all 4 bytes for guest #, two bytes for "rides been on" etc.) 026 is ride # if generic name used
028..029 : Final station entry segment(row, col)
02A..031 : four sets of row-col bytes for station departure segments
032..035 : Station height (one byte for each station)
036..039 : Station length (one byte for each station)
03A..03D : Station signal (one byte for each station) [80 = green light, the lower nibble specifies if train moving through signal, waiting for departure control, track not clear, etc.]
03E..041 : train in loading position (FF = none) (4 stations)
042..049 : four sets of ride Entrance map location (row, col)
04A..051 : four sets of ride Exit map location (row, col)
052..059 : index (2 bytes) of last peep in queue line at station (4 stations)
05A..05D : Num of peeps in queue line (one byte for each station)
05E..075 : address of sprite data structure for each train. Set to FF for unavailable train numbers.
076 : departure flags
077 : # of stations
078 : # of trains
079 : # of cars per train
07A..07B : ?
07C : max # of trains for current # of cars
07D: ?
07E : minimum wait time
07F : maximum wait time
080 : speed of powered launch/laps/#peeps
081..083 : ?
084 : index of Data Logging structure (FF if none)
085 : special track elements: bits 0 through 4: number of helix sections; bit 5= spinning tunnel,water splash, rapids; bit 6= log reverser,waterfall; bit 7= whirlpool
086,087 : ?
088,089 : max speed lower word
08A,08B : max speed upper word ~2.25 mph per bit
08C,8D : avg speed lower word
08E,8F : avg speed upper word ~2.25 mph per bit
090..93 : ?
094..097 : ride length (1st section) - use upper word
098..09B : ride length (2nd section) - use upper word
09C..09F : ride length (3rd section) - use upper word
0A0..0A3 : ride length (4th section) - use upper word
0A4, 0A5 : ride time (1st section)
0A6, 0A7 : ride time (2nd section)
0A8, 0A9 : ride time (3rd section)
0AA, 0AB : ride time (4th section)
0AC, 0AD : Maximum positive G force
0AE, 0AF : Maximum negative G force
0B0, 0B1 : Maximum lateral G force
0B2..0BD: ?
0BE,0BF : ?related to "curvature" of track
0C0,0C1 : ?
0C2,C3 : ?
0C4: num of inversions (lower 5 bits)
0C5 : num of drops (lower six bits)
C6 : ?
0C7 : max drop height (in 1/3 meters ~ 1 ft)
0C8..CB : underground track length?
CC,CD : ?
CE : ?
CF..D1 : ?
0D2..D3 : ?
0D4..D5 : customer per hour (multiply by twelve)
0D6..E7 : ?
0E8,E9: ticket price
0EA..0EF : ?
0F0, 0F1 : Excitement (divide by 100)
0F2, 0F3 : Intensity (divide by 100)
0F4, 0F5 : Nausea (divide by 100)
0F6..0F9 : ?
0FA : satisfaction (multiply by 5%) (-1 for unknown)
0FB..0FF : ?
100..103 : total customers
104..107 : total profit
108 : popularity (multiply by 4)
109 : number of guests "thinking" about ride
10A : ?
10B : #people on ride
10C..12F : ?
130..131 : Month of construction (used to determine ride age)
132, 133 : running cost (multiply by $1.60)
134..142 : ?
143 : Break Down type: -1=not broken, 0="safety cut-out", 1="restraints stuck closed", 2="restraints stuck open", 3="doors stuck closed", 4="doors stuck open", 5="vehicle malfunction", 6="station brakes failure", 7="control failure"
144..145 : ?
146 : Reliability count down - when zero, Reliability is decremented
147 : Reliability (%)
148: Cheat detection flag?
149 : down time (%)
14A: Inspection interval (0 = 10 min, 1 = 20 min, 2 = 30 min, 3 = 45 min, 4 = 1 hr, 5 = 2 hr, 6 = never) 
14B : time since last inspection (minutes)
14C..15F : ?
160..163 : Income per hour
164..167 : profit
168 : queue time
169..16B : ?
16C..177 : track color schemes
178 : music selection (00=Dodgems, 01=Fairground organ, 02=Roman Fanfare, 03=Oriental, 04=Martian, 05=Jungle Drums, 06=Egyptian, 07=Toyland, 08=?, 09=Space, 0A=Horror, 0B=Techno, 0C=Gentle, 0D=summer, 0E=water, 0F=Wild West, 10=Jurassic, 11=Rock, 12=Ragtime, 13=Fantasy
179 : station theming (00=standard, 01=wooden, 02=canvas tent, 03=castle[grey], 04=castle[brown], 05=jungle, 06=log cabin, 07=classical, 08=abstract, 09=snow, 0A=pagoda, 0B=space)
17A..25F : ?


I apologize for the gaps in the information. Please tell me any additional information you may have about this file structure.

E-mail info or questions