RollerCoaster Tycoon 3: Platinum!

RollerCoaster Tycoon 3: Platinum!

(Servono più voti)
Fix stretched CoasterCam and change FOV
Da Nulano
Have you noticed that the Coaster Camera is locked at 5:4 aspect ratio and stretched on widescreen view?
Use this quick guide to patch the game to the correct aspect ratio!
   
Premio
Aggiungi ai preferiti
Preferito
Rimuovi dai preferiti
Introduction
The game is programmed to always use a 5:4 aspect ratio regardless of your set resolution.

I was hoping Frontier would fix this bug in the RCT3Complete re-release, but they haven't. I have therefore decided to fix it myself instead.

0. What do you need?
You only need a Hex editor, I recommend HxD (you don’t even have to install it), but any hex editor will do just fine: https://mh-nexus.de/en/downloads.php

This guide is for the Windows version of RCT3 Platinum from Steam, and RCT3 Complete from Steam or Epic Games Store only, other versions will NOT work!!!

I can't post this guide on the Complete Edition version without buying it on Steam which I will not do without a sale.
1. Open the game in your hex editor
Select RollerCoaster 3: Platinum! or RollerCoaster 3: Complete Edition In your Steam library, press the little gear on the top-right and choose Properties…. Select the Local Files tab and choose Browse Local Files….

---

Find RCT3plus.exe (for Platinum) or RCT3.exe (for Complete Edition) in the directory that opens (you might only see RCT3plus or RCT3 if you have file extensions hidden) and open it in your hex editor of choice.

You may wish to create a copy of your original executable to revert the changes in case you wish to quickly undo this patch without using the Verify Integrity of Game Files... option in Steam.

2. Change the aspect ratio
First determine your aspect ratio based on the following table. If your resolution is missing, please contact me in the comments at the bottom.

Resolution
Aspect Ratio
Hex Value
720x576, 1280x1024, 1500x1200
1.25 (default)
00 00 A0 3F
960x720, 1440x1080, 1600x1200
1.33333337307
AB AA AA 3F
1280×800, 1440×900, 1920×1200
1.6
CD CC CC 3F
1920x1080, 2560x1440, 3840x2160
1.77777779102
39 8E E3 3F
2560x1080, 5120x2160
2.37037038803
26 B4 17 40
3440x1440
2.38888883591
8E E3 18 40
3840x1600, 5760x2400
2.40000009537
9A 99 19 40
3840x1080
3.55555558205
39 8E 63 40

The aspect ratios above are the rounded decimal representation of the closest available value for the true aspect ratio calculated by dividing the pixel width by the pixel height of the resolution.

Now go to offset 8D7CCC (Platinum) or A5493C (Complete Edition) in the file, you can use Search>Go To… in HxD:


---

You can now see the current aspect ratio right next to the cursor in the area marked on the screenshot below.

DO NOT CONTINUE if this is not 00 00 A0 3F (1.25), you are changing the wrong value! The only exception is if you already changed the value earlier.

---

Now change the value to the aspect ratio chosen above, either by typing the hex value in the left section, or the decimal value in the right section.

3. (Optional) Change CoasterCam FOV
If you were to save and play the game now, you might notice that the vertical FOV of the Coaster Camera has changed. You need to change another value to fix that.

First determine your horizontal FOV based on the following table. As before, if your resolution is missing, please contact me in the comments at the bottom.

Resolution
Aspect Ratio
Adjusted horizontal FOV
Hex Value
720x576, 1280x1024, 1500x1200
1.25
1.57079637051 rad (90 deg)
DB 0F C9 3F
960x720, 1440x1080, 1600x1200
1.33333337307
1.63529014587 rad (93.7 deg)
30 51 D1 3F
1280×800, 1440×900, 1920×1200
1.6
1.81518673897 rad (104 deg)
0A 58 E8 3F
1920x1080, 2560x1440, 3840x2160
1.77777779102
1.91595232487 rad (109.8 deg)
ED 3D F5 3F
2560x1080, 5120x2160
2.37037038803
2.17102766037 rad (124.4 deg)
1E F2 0A 40
3440x1440
2.38888883591
2.1774353981 rad (124.8 deg)
1A 5B 0B 40
3840x1600, 5760x2400
2.40000009537
2.18124270439 rad (125 deg)
7B 99 0B 40
3840x1080
3.55555558205
2.46546044 rad (141.3 deg)
1B CA 1D 40

You may choose a different FOV based on your preference. The adjusted horizontal FOV was calculated by preserving the original vertical FOV using the Python code below:

def convert(aspect, original=1.57079637051): vertical = 2*math.atan(math.tan(original/2)/1.25) horizontal = 2*math.atan(math.tan(vertical/2)*aspect) return horizontal, math.degrees(horizontal), struct.pack("f", horizontal).hex()

Now go to offset 118235 (Platinum) or 4E1456 (Complete Edition) in the file, you can use Search>Go To… in HxD:


---

You can now see the current coaster camera FOV right next to the cursor in the area marked on the screenshot below.

DO NOT CONTINUE if this is not DB 0F C9 3F (1.57079637050629), you are changing the wrong value! The only exception is if you already changed the value earlier.

---

Now change the value to the FOV chosen above, either by typing the hex value in the left section, or the decimal value in the right section.

4. (Extra Optional) Change FOV of other Cameras
The above should be sufficient for most people.

If you wish to tinker with the FOVs of other cameras, you can find the list of all FOV locations I could find in this table (use column Plat for Platinum, CE for Complete Edition):

Offset
(Plat)
Offset
(CE)
Default hFOV
Name
Comments
8d7cc2
a54932
45deg
Camera
main park view,
default for other cameras where unspecified
b69fd
3ca87
72deg
AquariumCam (initial)
BUG: this should equal to the static value
b5a37
3f179
90deg
AquariumCam (static)
b5a48
3f18a
72deg
AquariumCam (peep)
6645d9
406dc5
72deg
BuggyCam
James Hunt cheatcode
704418
d37cb
45deg
DartCam (initial)
only when DartCam is first activated,
see below to change zoom out value
b970a8
c4f9ac
11.25deg
DartCam
(zoomed in, zoom speed)
see below to change values separately
58e8e0
332139
72deg
FireworkCam
dfabe
116039
72deg
FlatRideCam (initial)
should equal to the peep value
cee2f4
e991b8
90deg
FlatRideCam (static)
cee2f0
e991b4
72deg
FlatRideCam (peep)
3afc42
3bded2
72deg
PeepCam
Jonny Watts cheatcode
71f82
404b0b
72deg
TakePhoto
manual photos at Photo Point
73ece
404a21
63deg
TakeGroupPhoto
peep group photos at Photo Point
744be
404931
72deg
TakeCoasterPhoto
peep coaster photos
4b34a9
7058c7
72deg
VistaPoint (initial)
Photo Point, takes effect when placed
b7a3d4
cb5abc
126deg
VistaPoint (max)
max zoom value (should be larger than initial)
4b0498
706e36
126deg
VistaPoint (max)
max zoom value (should be equal to above)
4b9f8e
75be2b
72deg
WaterCannon
773c72
829a0f
72deg
WildAnimal

Use the table in section 3 for adjusted FOVs where the default is 90deg.

Use the following tables for adjusted FOVs where the default is 72deg, 45deg, or 11.25deg:

Resolution
Aspect Ratio
Adjusted horizontal FOV (72 default)
Hex Value
720x576, 1280x1024, 1500x1200
1.25
1.2566371 rad (72 deg)
7C D9 A0 3F
960x720, 1440x1080, 1600x1200
1.33333337307
1.3185935855886008 rad (75.5 deg)
AD C7 A8 3F
1280×800, 1440×900, 1920×1200
1.6
1.4982619285583496 rad (85.8 deg)
0C C7 BF 3F
1920x1080, 2560x1440, 3840x2160
1.77777779102
1.6035528494266298 rad (91.9 deg)
38 41 CD 3F
2560x1080, 5120x2160
2.37037038803
1.8858933763692407 rad (108 deg)
F4 64 F1 3F
3440x1440
2.38888883591
1.8932833453572324 rad (108.5 deg)
1C 57 F2 3F
3840x1600, 5760x2400
2.40000009537
1.8976813411754363 rad (108.7 deg)
39 E7 F2 3F
3840x1080
3.55555558205
2.2402484836531733 rad (128.4 deg)
3B 60 0F 40

Resolution
Aspect Ratio
Adjusted horizontal FOV (45 default)
Hex Value
720x576, 1280x1024, 1500x1200
1.25
0.7853982 rad (45 deg)
DB 0F 49 3F
960x720, 1440x1080, 1600x1200
1.33333337307
0.83207439 rad (47.7 deg)
D4 02 55 3F
1280×800, 1440×900, 1920×1200
1.6
0.97501909 rad (55.9 deg)
DA 9A 79 3F
1920x1080, 2560x1440, 3840x2160
1.77777779102
1.0647380764 rad (61 deg)
56 49 88 3F
2560x1080, 5120x2160
2.37037038803
1.3316384481 rad (76.3 deg)
21 73 AA 3F
3440x1440
2.38888883591
1.3392059803 rad (76.7 deg)
1A 6B AB 3F
3840x1600, 5760x2400
2.40000009537
1.3437249084 rad (77 deg)
2E FF AB 3F
3840x1080
3.55555558205
1.7340603972245685 rad (99.4 deg)
B1 F5 DD 3F

Resolution
Aspect Ratio
Adjusted horizontal FOV (11.25 default)
Hex Value
720x576, 1280x1024, 1500x1200
1.25
0.19634955 rad (11.25 deg)
DB 0F 49 3E
960x720, 1440x1080, 1600x1200
1.33333337307
0.209347064 rad (12 deg)
14 5F 56 3E
1280×800, 1440×900, 1920×1200
1.6
0.2508148234 rad (14.4 deg)
CD 6A 80 3E
1920x1080, 2560x1440, 3840x2160
1.77777779102
0.278342274 rad (15.9 deg)
E1 82 8E 3E
2560x1080, 5120x2160
2.37037038803
0.36928316 rad (21.1 deg)
AF 12 BD 3E
3440x1440
2.38888883591
0.372102290392 rad (21.3 deg)
31 84 BE 3F
3840x1600, 5760x2400
2.40000009537
0.37379310 rad (21.4 deg)
CF 61 BF 3E
3840x1080
3.55555558205
0.5463017797398609 rad (31.3 deg)
6F DA 0B 3F
5. (Extra Extra Optional) Change FOVs of DartCam separately
The DartCam zoomed out value is shared with pathfinding and physics collision code, so you can't safely modify it directly. Instead you must tell the game to look at an unused part of memory and put the new FOV there. You can use the same approach to modify the zoomed in FOV and zoom speed independently. I would recommend setting the zoom speed much higher, since the default animation is excruciatingly slow by modern standards.

The sequence CC CC CC CC is often used as padding and can be safely modified, but make sure to use a 4-byte aligned location. Use the following table for a valid configuration. To use it, change the hex value at each Address Offset from Old Address to New Address, and replace CC CC CC CC with your new FOV at offset FOV Offset.

Make sure the zoomed out FOV is larger than zoomed in FOV, or the zoom animation will never finish!

Platinum edition:
Address Offset
Function
Old Address
New Address
Default FOV
New FOV Offset
701d9c, 701c72
zoomed out
50 70 F2 00
D4 1D B0 00
45deg
701dd4
701d90, 701d04
zoomed in
A8 70 F9 00
D8 1D B0 00
11.25deg
701dd8
701d7d
zoom out speed
A8 70 F9 00
DC 1D B0 00
11.25deg
701ddc
701c5e
zoom in speed
A8 70 F9 00
FC 1D B0 00
11.25deg
701dfc

Complete Edition:
Address Offset
Function
Old Address
New Address
Default FOV
New FOV Offset
d60d4, d5f84
zoomed out
1C 89 04 01
24 6B 4D 00
45deg
d5f24
d60cd, d603a
zoomed in
AC 09 05 01
28 6B 4D 00
11.25deg
d5f28
d60b5
zoom out speed
AC 09 05 01
2C 6B 4D 00
11.25deg
d5f2c
d5f7c
zoom in speed
AC 09 05 01
1C 6F 4D 00
11.25deg
d631c
6. Done
Now save the file and run the game. The Coaster Camera view should now have the proper size!

If you messed something up and the game crashes instead, you can restore the original file using Verify Integrity of Game Files… on the Local Files tab of the game settings in Steam.
10 commenti
ruffi-ho 13 giu 2024, ore 19:36 
had to also set options.txt in the appdata/roaming. all good!
ruffi-ho 13 giu 2024, ore 10:17 
amazing. trying this soon ty!
Nulano  [autore] 17 mag 2023, ore 20:23 
@Fooney I have had a look at the sound system, but I couldn't easily find the volume settings. I will have another look when I have more time, but it won't be anytime soon.
Nulano  [autore] 17 mag 2023, ore 20:17 
Correct, I have updated the guide with the values for 32:9.
Kill Master 17 mag 2023, ore 19:36 
My resolution is 3840x1080 (Its a Samsung Super Ultra-Wide 32:9)
I'm assuming that would make my ratio 3.55555558204651.
Fooney 19 mar 2023, ore 11:44 
This is amazing. I needed the peep cam changed! Now how can I adjust sound levels like make screaming not so loud?
Nulano  [autore] 10 mar 2022, ore 5:01 
3444 divided by 1440 is about 2.8888889, so somewhere between the 2.37 and 2.40 aspect ratios (either would probably look close enough). I calculated the exact values and added them to the guide.
Nulano  [autore] 27 set 2020, ore 6:47 
I also found the park view FOV, but didn't realize it at the time, thanks! Note that it also affects all cameras which don't use an explicit FOV, but that is probably fine.

I would not recommend changing the zoomed out value of DartCam directly as it is also used by pathfinding and physics collision code. Instead it is best to tell the game to look at an unused part of memory and put the new FOV there, but I can't help you find that in Complete edition.

I have updated the guide with 45deg and 11.25deg (DartCam zoomed in) tables, as well as the main park Camera FOV and other DartCam FOVs.
the birb 26 set 2020, ore 21:53 
Oh and fun fact, one of the 45 deg camera values I found is also the normal view you view your park in! That was an interesting discovery lol
the birb 26 set 2020, ore 21:50 
Very useful, could you also make a table for the default 45 degree camera? (DartCam)

I also found the other DartCam camera so it will go back to the one you set on Complete Edition, not sure which it is for Platinum but it is one of the ones with the same value