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.
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
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
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 |
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 |
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 |
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.