Updated: Sep 6, 2014
There are 3 tutorials in RCT2: Beginner, Custom Rides and RollerCoaster Building. There are two screen sizes available for tutorials: 640x480 and 800x600. If your game is configued for a higher screen size, it will drop down to 800x600 for the tutorial. Each tutorial starts a game in the same park and follows a sequence of previously recorded mouse movements. (Hey! You're getting to watch Chris Sawyer at work!) At the end of the tutorial, the game will be closed. You can interrupt the playing of the recording with keyboard input. If you move the mouse, it will simply be repositioned according to the recorded sequence which will continue.
There are six tutorial files:
File name |
resolution |
Lesson |
Initial step value |
tut640a.dat |
640x480 |
Beginner |
025EH |
tut640b.dat |
640x480 |
Custom Rides |
01B6H |
tut640c.dat |
640x480 |
RollerCoaster Building |
0216H |
tut800a.dat |
800x600 |
Beginner |
025EH |
tut800c.dat |
800x600 |
Custom Rides |
00F6H |
tut800c.dat |
800x600 |
RollerCoaster Building |
02A6H |
There are also six files starting with tutc... and six files starting with tutk... In my case, each of the six are identical and they are in a different format than the standard tut's. I presume they are for chinese, korean or something along those line. They are not discussed further here.
As mentioned, the tut files are a recorded sequence of mouse movements. The movements are based on time slices. There is an eight byte sequence used for movement and mouse clicks. There is a fourteen byte sequence used for mouse dragging. Mouse clicks use a flag which follows a strange algorithm, the purpose of which is unknown. The text messages for each tutorial are predetermined; they will show according to a fixed sequence when invoked.
The sequence for each entry is:
Flag word, MouseCommand word,
X(2 bytes), Y(2 bytes) [, optional: dummy word, X word, Y
word]
Start reading a file by preloading the value 0000 for the Flag word (for some reason, it is not included at the beginning of the files) and then start reading the file at the MouseCommand word. After the first entry, all remaining entries are complete.
If Flag word is:
00 : X & Y will be absolute screen
coordinates
01 : X & Y will be signed offset values
xxxx :
flag indicating a mouse button action
If Flag indicates a mouse button action, then MouseCommand word
indicates:
0001 : left mouse button down
0002 : left mouse
button up
0003 : right mouse button down
0004 : right mouse
button up
If Flag does not indicate a mouse button action and MouseCommand
is:
0000 : this indicates a simple mouse position instruction
0004
: Invoke a text message for this tutorial
0800H : after
X, Y, read another (dummy) word and then read X, Y as absolute
positions. {the dummy word is always zero – it can be thought
of a another instance of Flag indicating that X & Y are absolute
screen positions.}
The values of Flag used for mouse button actions follow a strange
sequence. Use a StepValue intialized with the value indicated in the
table above. To determine the value used for Flag, follow these
steps:
1) add twelve to StepValue
2) TempWord = StepValue mod
0300H
3) if TempWord > 01BCH, then Flag =
8B40H OR (StepValue AND 00FFH) {perform logical
OR and AND operations}
4) otherwise, Flag = 8D40H OR
(StepValue AND 00FFH)
Maintain StepValue to use for next instance of a mouse button action.