Difference between revisions of "Myst RLST resources"
(→Type 12) |
(types 10 and 11) |
||
Line 75: | Line 75: | ||
===Type 10=== | ===Type 10=== | ||
+ | Type 10 hotspots implement slider-like controls. The record structure includes | ||
+ | * a type 8 block | ||
+ | * 10 unknown shorts | ||
+ | * 4 lists of unsigned shorts (num_values followed by that many values) which look like sound IDs. | ||
+ | |||
+ | A few cases: | ||
+ | * Selenitic Age, card 1147 | ||
===Type 11=== | ===Type 11=== | ||
+ | Type 11 hotspots implement controls that you click and hold or drag, like some of the levers. The record structure includes: | ||
+ | * a type 8 block | ||
+ | * 10 unknown shorts | ||
+ | * 3 lists of unsigned shorts (num_values followed by that many values) which look like sound IDs. The first list seems to play at animation start, the second seems to loop in the middle and the third seems to play when the user releases the control. | ||
+ | |||
+ | A few cases: | ||
+ | * Myst island, card 4006 | ||
+ | * Myst island, card 4059 | ||
+ | * Myst island, card 4098 | ||
+ | * Selenitic Age, card 1245 | ||
+ | * Stoneship Age, card 2013 | ||
+ | * Stoneship Age, card 2161 | ||
+ | * Stoneship Age, card 2218 | ||
===Type 12=== | ===Type 12=== | ||
Line 95: | Line 115: | ||
* Mechanical Age, card 6156 | * Mechanical Age, card 6156 | ||
* Mechanical Age, card 6180 | * Mechanical Age, card 6180 | ||
+ | * Myst island, card 4100 | ||
+ | * Myst island, card 4113 | ||
===Type 13=== | ===Type 13=== |
Revision as of 17:46, 11 October 2008
Myst | |||
Mohawk | Overview | ||
CLRC | EXIT | HINT | INIT |
MJMP | MSND | PICT | RLST |
VIEW | WDIB | HELP | RSFL |
Scripts | Variables |
These contain Myst's hotspot descriptions.
The data is a list of records, each record describing one of the hotspots:
short | record_count |
variable | records |
The record length is variable, depending on the hotspot type. The record structure is:
unsigned short | type |
unsigned short | flags |
short | left |
short | top |
short | right |
short | bottom |
unsigned short | destination |
variable | additional data |
- type seems to specify the hotspot action in a wide sense. Every value between 0 and 14 except for 9 has been observed. See below for the meaning.
- flags seems to be a bit field. Observed values are 0, 1, 2, 3, 4, 5, 8 and 10 (4 variable bits). The value seems related to when the hotspot actions should be executed. For example, regular clickable hotspots usually have bit 1 set while hotspots that run background movies (e.g. the Channelwood windmill) have flags = 0. Bit 0 seems to indicate whether hotspot subimages are to be drawn (at least for type 8 hotspots). Hotspots with bit 2 set usually don't have any other bits set (except bit 0, encountered only twice). Bit 3 is suspected to flag Zip Mode hotspots.
- The following 4 fields define the hotspot rectangle. Note that "weird" rectangles are found, like (-32000, -32000, 32000, 32000).
- destination contains a destination card ID for hotspots that change card, or zero.
- Additional data follows when type > 4 (complex hotspots), clearly representing lists of actions to perform. We have yet to figure out how to calculate the length of those complex records.
Contents
Hotspot types
Types 0 to 4 and 14
"Simple" hotspots that just change card. There is no additional data in the hotspot record. Types 0 to 4 define the movement direction (forward, left, right, down and up respectively) while the purpose of type 14 is not yet clear. It is used prevalently near linking books.
Type 5
Type 5 hotspots have a script attached to them. See the page about scripts for the structure of scripts.
Type 6
Type 6 hotspots play a video when activated. The record starts with a full type 5 record. Then comes a zero-terminated string (C string) which defines the path to the video file without extension. After the string is read, input stream position should be padded to the next 2-byte boundary. Finally come 7 shorts:
short | left |
short | top |
short | loop |
short | u1 |
short | u2 |
short | u3 |
short | u4 |
left and top specify the movie position. loop is 0 for movies that are to be played once, 1 for movies that must loop. The unknown fields are often 0 or 1 but other values can be found.
Type 7
Type 7 record serves as some kind of switch statement, executing one of several action lists (or cases) indexed by the value of a variable:
(var_index) {num_cases} [record_type <record_data>]
Each case itself begins with a record type, followed by additional record contents (without common prefix). Only type 5 and 6 records used in a switch statement have been observed.
Type 8
Type 8 record is like type 7, but additionally it specifies a list of subimages to draw over main WDIB. The particular subimage is chosen depending on the value of variable. This record includes the type 7 record at start.
<type_7_record> (var_index) {num_subs} [wdib_id <rectangle>]
Here, each subimage record defines a source WDIB ID and a source rectangle inside this WDIB. Rectangle is defined in the usual (left, top, right, bottom) format, with one exception: empty rectangle is defined as the single short -1. This is probably the case when source rectangle equals destination rectangle. Also, wdib_id itself can be -1, this probably means original WDIB for this card should be used as source WDIB.
Type 10
Type 10 hotspots implement slider-like controls. The record structure includes
- a type 8 block
- 10 unknown shorts
- 4 lists of unsigned shorts (num_values followed by that many values) which look like sound IDs.
A few cases:
- Selenitic Age, card 1147
Type 11
Type 11 hotspots implement controls that you click and hold or drag, like some of the levers. The record structure includes:
- a type 8 block
- 10 unknown shorts
- 3 lists of unsigned shorts (num_values followed by that many values) which look like sound IDs. The first list seems to play at animation start, the second seems to loop in the middle and the third seems to play when the user releases the control.
A few cases:
- Myst island, card 4006
- Myst island, card 4059
- Myst island, card 4098
- Selenitic Age, card 1245
- Stoneship Age, card 2013
- Stoneship Age, card 2161
- Stoneship Age, card 2218
Type 12
Type 12 hotspots implement animated controls which use a sequence of separate pictures for the animation. The record structure includes
- a type 8 block
- 10 unknown shorts
- 3 lists of unsigned shorts (num_values followed by that many values) which look like sound IDs.
- number of animation frames
- ID of the picture with the first frame
- two unsigned shorts
- left,top coordinates of the animation
A few cases:
- Channelwood Age, card 3161
- Channelwood Age, card 3246
- Channelwood Age, card 3271
- Mechanical Age, card 6044
- Mechanical Age, card 6156
- Mechanical Age, card 6180
- Myst island, card 4100
- Myst island, card 4113
Type 13
Type 13 record has just two unknown shorts u0 and u1 after the main block. In addition, destination seems to be a variable rather than a card ID. Type 13 hotspots are used for example in the match box puzzle and in the icons for raising the ship, in Myst island. They possibly trigger a variable change when rolling over the hotspot.
Case studies
Note: these are simply the data in little-endian shorts and line-broken where patterns are found. <l t b r> is the hotspot rect. count [entry]... are guesses at when there are lists of entries. The number in parentheses before the data is the card number (not the resource number).
The following hotspots replace part of the image (in this case <417 260 544 333>) with part of another image (in this case 3004 <0 0 127 73>) based on a variable (103 2 plays in here somewhere):
8 1 < 31 276 163 333> 0 FFFF 0 103 2 3006 <0 0 132 57> 3005 FFFF 8 1 <417 260 544 333> 0 FFFF 0 103 2 3004 <0 0 127 73> 3003 FFFF
Case studies from Channelwood:
(CHANNEL 3001) 2 1 2 <1 0 110 332> 3002 2 2 <455 2 544 332> 3003
(CHANNEL 3002) 2 1 2 <0 1 100 332> 3005 2 2 <431 0 544 332> 3001
(CHANNEL 3003) 4 5 2 <213 90 343 290> 3494 2 [6 0 0] [24 0 1 {3494}] (the door) 1 2 <0 0 81 332> 3001 (left) 2 2 <463 0 544 332> 3005 (right) 8 1 <417 260 544 333> 0 FFFF 0 103 2 [3004 <0 0 127 73>] [3003 <FFFF>]
(CHANNEL 3005) 4 0 2 <76 152 196 330> 3012 1 2 <0 0 106 332> 3003 2 2 <438 0 544 332> 3002 8 1 <31 276 163 333> 0 FFFF 0 103 2 [3006 <0 0 132 57>] [3005 <FFFF>]
(CHANNEL 3012) 8 8 3 <101 243 214 343> 0 FFFF 1 5 (1 [3 103 1 {802}]) 103 2 [3013 <0 0 113 100>] [3012 <FFFF>] 5 2 <255 193 269 208> 0 1 [117 0 1 {0}] 5 2 <268 193 282 208> 0 1 [117 0 1 {1}] 5 2 <281 193 295 208> 0 1 [117 0 1 {2}] 5 2 <294 193 308 208> 0 1 [117 0 1 {3}] 8 1 <252 190 310 210> 0 FFFF 0 17 4 [3008 <0 0 58 20>] [3009 <0 0 58 20>] [3010 <0 0 58 20>] [3011 <0 0 58 20>] 0 4 <180 31 379 305> 0 5 2 <0 0 544 332> 0 1 [34 0 2 {3005 0}]
(MYST 4368) 3 8 3 <305 148 375 238> 0 FFFF 1 5 (1 [3 103 1 {802}]) 103 2 [FFFF <FFFF>] [4369 <0 0 70 90>] 7 2 <216 110 304 235> 0 106 5 5 (1 [115 101 3 {4741 4370 4368}]) 5 (1 [115 101 3 {4741 4370 4368}]) 5 (1 [115 101 3 {4741 4370 4368}]) 5 (1 [115 101 3 {4741 4370 4368}]) 5 (0) 0 2 <0 0 544 332> 4345
Intro Case Study
(INTRO 1) 1 0 2 <-32000 -32000 32000 32000> 5
INTRO 1 is supposed to be the card which shows the opening movies and then switches to card 2.
(INTRO 2) 1 5 2 <245 202 304 253> 4 2 [37 0 0] [34 0 2 {3 11}]
INTRO 2 is the first interactive part of the game, the part where you can pick up the Myst book. The rect correctly corresponds to where the book is on screen. But, look at the "destination" -- 4. There is no VIEW/RLST 4! However, there is a WDIB 4 and it is the open book with the water. Where this should go is to card 3 and show the Myst book cover before showing image 4 and then playing the video. And, there is a 3 in this chunk, but I'm not sure if that's the purpose. I have no idea what commands 37/34 could be. There is a WDIB 11, but it's of D'ni, so I doubt it's that. ;)
(INTRO 3) 2 0 2 <-32000 -32000 32000 32000> 5 6 0 <312 70 441 159> 0 0 "\qtw\intro\intro2" 0x2848 0x2756 0 1 0 0 0
Note that this one has a string for the video (null-terminated). This obviously calls that video which is the Myst fly-by for the linking book. And, that rect perfectly matches where the video should be displayed on screen. However, this also clearly breaks the format specified above for "type 2 hotspots".
WDIB 3 is the cover of the Myst linking book. But, this doesn't match up with the video mentioned here which should be for WDIB 4 (or 10, they are identical)(the open linking book with the water image) and eventually ending at WDIB 12 (the open linking book with the dock image). The 5 after the very large numbers is the target card for the open linking book which seems correct. 0x2848 is 10,312 and 0x2756 is 10,070. The rate of the audio is 11,025. Not sure if this has any correlation.