Difference between revisions of "Myst VIEW resources"

From A look inside The Link @ wiki
Jump to: navigation, search
(new format 3)
(new format 4)
Line 76: Line 76:
 
Each sound specification is a single short, followed by a second one if it's not negative or -2, similarly to what happens for the first field of the section.
 
Each sound specification is a single short, followed by a second one if it's not negative or -2, similarly to what happens for the first field of the section.
  
==Unknown Segment==
+
==Element list==
TODO: I haven't completely figured this out. Petroff's guess was that it preloaded resources. However, it doesn't make sense that it is like that. It starts with an unsigned short representing the count. Then, following that is an unsigned short (which he believed to be the resource type to load). A 1 would mean a single WDIB, a 2 would mean a single MSND and each of these follows with an unsigned short representing the resource ID. If it was 3 then there would be an array of WDIB's (an array of unsigned shorts, starting with a count and an unknown -- each unsigned shorts). A 4 has also been observed, but that does not have any other shorts attached to it.
+
This section seems to list elements (pictures, sounds) available to the card. It is suspected that those elements can then be activated by scripts.
 +
{| class="structure"
 +
|unsigned short||count
 +
|-
 +
|variable||element specifications
 +
|}
 +
Each specification is an unsigned short ''type'', followed by a resource ID. However, as a special case, if ''type'' = 3 it is followed by a conditional block with structure
 +
{| class="structure"
 +
|unsigned short||variable
 +
|-
 +
|unsigned short||id_count
 +
|-
 +
|unsigned short||u0
 +
|-
 +
|unsigned short||ids[id_count]
 +
|}
  
 
==Glue segment==
 
==Glue segment==

Revision as of 13:39, 15 September 2008

Myst
Mohawk Overview
CLRC EXIT HINT INIT
MJMP MSND PICT RLST
VIEW WDIB HELP RSFL
Scripts Variables

VIEW resources are the candidate Myst card representations, as they glue other resources together. In particular they seem to describe what to show on screen, what sound to play and where to find additional data about the card.

Original hints by Petroff Heroj.

Basic Format

The data is split into five sections with variable size and different meanings:

  • card flags
  • pictures
  • sounds
  • element list
  • other resources

Card flags

This is just

unsigned short card_flags

card_flags seems either 0 or 1. It's 0 for regular cards, while 1 is suspected to disable game saving in that card.

Picture section

This section defines the card background picture, which may be static or dependent on the values of variables. The section starts with

unsigned short count

If count = 0 then there is a single, static background picture and the whole section reduces to

unsigned short count = 0
unsigned short picture_id

where picture_id is the WDIB (or PICT) resource ID.

Otherwise, if count > 0, the section contains count conditional blocks:

unsigned short count
variable conditional blocks

Each conditional block associates a variable with an array of picture IDs:

unsigned short variable
unsigned short id_count
short picture_ids[id_count]

The card will use the value of the specified variable to index the ID array and display that picture.

Sound section

This section specifies ambient sounds for the card.

short sound

If sound is -1 or -3, the section stops here.

If sound is not negative or -2, the section includes a second field:

short sound
unsigned short flags

Finally, if sound is -4, there is a conditional block similar to those in the picture section:

short sound = -4
unsigned short variable
unsigned short count
variable sound specifications

Each sound specification is a single short, followed by a second one if it's not negative or -2, similarly to what happens for the first field of the section.

Element list

This section seems to list elements (pictures, sounds) available to the card. It is suspected that those elements can then be activated by scripts.

unsigned short count
variable element specifications

Each specification is an unsigned short type, followed by a resource ID. However, as a special case, if type = 3 it is followed by a conditional block with structure

unsigned short variable
unsigned short id_count
unsigned short u0
unsigned short ids[id_count]

Glue segment

The final section points to associated resources that further describe the card, namely RLST, HINT, INIT and EXIT:

unsigned short rlst_id
unsigned short hint_id
unsigned short init_id
unsigned short exit_id

These values can be zero, indicating that the corresponding resource does not exist (i.e. a card might not have an associated HINT). It happens that all the IDs match the VIEW ID when they are not zero. Furthermore, rlst_id is always set: no cards exist without hotspot descriptions.

Old Case Studies

image name and sub-images (akin to Riven PLSTs)

0 0 3001 -1 0/0 3001 3001 0 0
name neg. bytes (name name 0 0)
0 0 3002 -2 0/144 0 3002 3002 0 0
0 0 3003 -2 0/144 1 [1 3004] 3003 3003 0 0
name ? count entry (name name 0 0)
  • I think 3004 is the name of a sub-image (small image to be placed in another) of 3003 here.
0 0 3005 3005 0/144 1 [1 3006] 3005 3005 0 0
name twice (name name 0 0)
0 0 3012 -2 0/50 5 [1 3013] [1 3008] [1 3009] [1 3010] [1 3011] 3012 0 0 3012
name ? count entries (name 0 0 name)
14 1 1 5 2 3030 3031 FFFC 3 2 3031 00_A0 4031 x00A0 2 2 4030 1 3030 3031 3031 0 0
44 1 1 2 2 3095 3096 FFFC 15 2 3095 00_A0 4095 x00A0 4 2 4095 1 3562 1 3097 2 5095 3095 3095 3095 0
348 1 1 16 2 3536 3535 3535 x0060 0 3535 3535 0 0
359 1 1 5 2 3550 3552 FFFC 3 2 6552 00_80 3552 x0080 4 4 3550 4 3552 2 4552 2 5552 3552 3552 0 0
47 1 1 10 2 4140 4141 5141 x0090 1 2 4141 4141 4141 4141 4141
50 1 1 10 2 4148 4149 4149 x0090 0 4149 4149 4149 0
51 1 1 10 2 4150 4151 FFFE x0070 0 4150 4150 0 0
94 1 1 10 2 4243 4244 4244 x0050 0 4244 4244 0 0
116 1 1 40 2 4292 4294 FFFC 40 2 4292 00_50 4292 x0060 2 1 4293 2 5292 4292 4292 0 0
145 1 1 0 2 4358 4357 FFFE x0030 0 4357 4357 0 0
287 1 1 34 3 4698 4701 4702 xFFFD 4 1 4699 2 4698 2 5698 2 6698 4698 4698 4698 4698
295 1 1 10 2 4717 4719 4717 x0040 1 1 4718 4717 4717 0 0