Difference between revisions of "Myst scripts"

From A look inside The Link @ wiki
Jump to: navigation, search
(Command 111: makes hotspot not drawable)
m (command groupings)
Line 14: Line 14:
 
The way scripts are stored, they each contain a command number, a variable number, and any number of arguments. When a variable number is not given, a "0" is used. So when the key below says that the variable is "optional", that means that it has been found both with and without a variable being passed in. In some cases, the syntax of the arguments depends on whether a variable was passed in. In this case, the variable/arguments header is repeated for each form of the command.
 
The way scripts are stored, they each contain a command number, a variable number, and any number of arguments. When a variable number is not given, a "0" is used. So when the key below says that the variable is "optional", that means that it has been found both with and without a variable being passed in. In some cases, the syntax of the arguments depends on whether a variable was passed in. In this case, the variable/arguments header is repeated for each form of the command.
  
 
+
==Commands 0-99==
==Command 0==
+
These are suspected to be general-purpose commands.
 +
===Command 0===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' None
 
*'''Arguments:''' None
 
Seems to toggle a variable between 0 and 1. For example, see the marker switches on MYST island.
 
Seems to toggle a variable between 0 and 1. For example, see the marker switches on MYST island.
  
==Command 1==
+
===Command 1===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 26: Line 27:
 
Could mean "set variable to ''u0''". ''u0'' takes on any number between 0 and 7 (maybe a bit field?)
 
Could mean "set variable to ''u0''". ''u0'' takes on any number between 0 and 7 (maybe a bit field?)
  
==Command 2: alternative destination==
+
===Command 2: alternative destination===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' ''dest''
 
*'''Arguments:''' ''dest''
Line 32: Line 33:
 
This command goes to ''dest'' instead of the regular destination if ''var'' is a certain (unknown) value. (Only used for SELEN 1240 and CHANNEL 3359)
 
This command goes to ''dest'' instead of the regular destination if ''var'' is a certain (unknown) value. (Only used for SELEN 1240 and CHANNEL 3359)
  
==Command 3: change cursor==
+
===Command 3: change cursor===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' ''clrc_id''
 
*'''Arguments:''' ''clrc_id''
Line 40: Line 41:
 
This command seems to change cursor to ''clrc_id'' if var is a certain (unknown) value.
 
This command seems to change cursor to ''clrc_id'' if var is a certain (unknown) value.
  
==Command 4==
+
===Command 4===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 6==
+
===Command 6===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 7==
+
===Command 7===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 8==
+
===Command 8===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 9==
+
===Command 9===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 62: Line 63:
 
*''u0'' is always either ''FFFF'' or omitted.
 
*''u0'' is always either ''FFFF'' or omitted.
  
==Command 12==
+
===Command 12===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 72: Line 73:
 
This may have similar function to [[#Command 2|command 2]].
 
This may have similar function to [[#Command 2|command 2]].
  
==Command 13==
+
===Command 13===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 82: Line 83:
 
This may have similar function to [[#Command 2|command 2]].
 
This may have similar function to [[#Command 2|command 2]].
  
==Command 14==
+
===Command 14===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 88: Line 89:
 
*''u0'' is always 0, 1, or 2.
 
*''u0'' is always 0, 1, or 2.
  
==Command 15==
+
===Command 15===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 94: Line 95:
 
*''u0'' is always 0 or omitted.
 
*''u0'' is always 0 or omitted.
  
==Command 16==
+
===Command 16===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1''
 
*'''Arguments:''' ''u0'' ''u1''
Line 101: Line 102:
 
*''u1'' is always 0.
 
*''u1'' is always 0.
  
==Command 17==
+
===Command 17===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1''
 
*'''Arguments:''' ''u0'' ''u1''
Line 108: Line 109:
 
*''u1'' is always 4, 5, or 6.
 
*''u1'' is always 4, 5, or 6.
  
==Command 18==
+
===Command 18===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 114: Line 115:
 
*''u0'' is always 4, 5, or 6.
 
*''u0'' is always 4, 5, or 6.
  
==Command 19: enable hotspots==
+
===Command 19: enable hotspots===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''count'' ''u0''[''count'']
 
*'''Arguments:''' ''count'' ''u0''[''count'']
Line 120: Line 121:
 
This seems to enable a list of hotspots. All of the ''u0'' numbers are small (0-13, 21).
 
This seems to enable a list of hotspots. All of the ''u0'' numbers are small (0-13, 21).
  
==Command 20: disable hotspots==
+
===Command 20: disable hotspots===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''count'' ''u0''[''count'']
 
*'''Arguments:''' ''count'' ''u0''[''count'']
Line 126: Line 127:
 
This seems to disable a list of hotspots. All of the ''u0'' numbers are small (0-13, 21). These, unlike [[#Command 19|command 19]], can also be -1, which seems to disable the invoking hotspot.
 
This seems to disable a list of hotspots. All of the ''u0'' numbers are small (0-13, 21). These, unlike [[#Command 19|command 19]], can also be -1, which seems to disable the invoking hotspot.
  
==Command 21==
+
===Command 21===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1'' ''u2'' ''u3'' ''u4'' ''u5''
 
*'''Arguments:''' ''u0'' ''u1'' ''u2'' ''u3'' ''u4'' ''u5''
Line 139: Line 140:
 
*''u5'' is always 5 or 25.
 
*''u5'' is always 5 or 25.
  
==Command 22==
+
===Command 22===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 23==
+
===Command 23===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''count'' ''u0''[''count'']
 
*'''Arguments:''' ''count'' ''u0''[''count'']
Line 149: Line 150:
 
*The ''u0'' numbers are all 0, 4, or 5.
 
*The ''u0'' numbers are all 0, 4, or 5.
  
==Command 24==
+
===Command 24===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 155: Line 156:
 
*''u0'' appears to be a sound ID.
 
*''u0'' appears to be a sound ID.
  
==Command 26==
+
===Command 26===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 27==
+
===Command 27===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 165: Line 166:
 
*''u0'' appears to be a sound ID.
 
*''u0'' appears to be a sound ID.
  
==Command 28==
+
===Command 28===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' (<''l t r b''>|''FFFF'')
 
*'''Arguments:''' (<''l t r b''>|''FFFF'')
Line 171: Line 172:
 
*<''l t r b''> often corresponds with the intended location of one of the sub-images in the VIEW resources.
 
*<''l t r b''> often corresponds with the intended location of one of the sub-images in the VIEW resources.
  
==Command 29==
+
===Command 29===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''pict_id'' <''l t r b''> ''u0'' ''u1''
 
*'''Arguments:''' ''pict_id'' <''l t r b''> ''u0'' ''u1''
Line 182: Line 183:
 
This command seems to copy picture ''pict_id'' over the hotspot, using <''l'' ''t'' ''r'' ''b''> as the source rect. Additional data is unknown.
 
This command seems to copy picture ''pict_id'' over the hotspot, using <''l'' ''t'' ''r'' ''b''> as the source rect. Additional data is unknown.
  
==Command 30==
+
===Command 30===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' <''msnd_id'' ''flags''> [...]
 
*'''Arguments:''' <''msnd_id'' ''flags''> [...]
Line 191: Line 192:
 
Normally there is only one pair of above values, with a single exception: CHANNEL.3225 has 4 pairs.
 
Normally there is only one pair of above values, with a single exception: CHANNEL.3225 has 4 pairs.
  
==Command 31==
+
===Command 31===
 
*'''Variable:''' Yes (only ever 30)
 
*'''Variable:''' Yes (only ever 30)
 
*'''Arguments:''' ''u0'' ''u1''
 
*'''Arguments:''' ''u0'' ''u1''
Line 198: Line 199:
 
*''u1'' looks like a card ID.
 
*''u1'' looks like a card ID.
  
==Command 32==
+
===Command 32===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 33==
+
===Command 33===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''card'' <''l t r b''> ''u0'' ''u1''
 
*'''Arguments:''' ''card'' <''l t r b''> ''u0'' ''u1''
Line 211: Line 212:
 
*''u1'' may also be a variable number (it is sometimes 0).
 
*''u1'' may also be a variable number (it is sometimes 0).
  
==Command 34==
+
===Command 34===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1''
 
*'''Arguments:''' ''u0'' ''u1''
Line 218: Line 219:
 
*''u1'' is always 0, 1, 4, 5, 6, 9, 10, or 11.
 
*''u1'' is always 0, 1, 4, 5, 6, 9, 10, or 11.
  
==Command 35==
+
===Command 35===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1'' ''u2''
 
*'''Arguments:''' ''u0'' ''u1'' ''u2''
Line 226: Line 227:
 
*''u2'' is always 0, 6, or 10.
 
*''u2'' is always 0, 6, or 10.
  
==Command 36==
+
===Command 36===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 234: Line 235:
 
*''u0'' is 900 or 903.
 
*''u0'' is 900 or 903.
  
==Command 37==
+
===Command 37===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 38==
+
===Command 38===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 39==
+
===Command 39===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 248: Line 249:
 
*''u0'' is 100, 200, 400, 500, 1000, or 1100.
 
*''u0'' is 100, 200, 400, 500, 1000, or 1100.
  
==Command 40: travel to destination age==
+
===Command 40: travel to destination age===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''dst_age_id'' ''src_msnd_id'' ''dst_msnd_id''
 
*'''Arguments:''' ''dst_age_id'' ''src_msnd_id'' ''dst_msnd_id''
Line 256: Line 257:
 
*''dst_msnd_id'' is a sound ID to play in destination age.
 
*''dst_msnd_id'' is a sound ID to play in destination age.
  
==Command 41==
+
===Command 41===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1'' ''u2'' ''count'' ''u3''[''count'']
 
*'''Arguments:''' ''u0'' ''u1'' ''u2'' ''count'' ''u3''[''count'']
Line 266: Line 267:
 
*''u3'' may be divided into groups of sixes.
 
*''u3'' may be divided into groups of sixes.
  
==Command 42==
+
===Command 42===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' ''u1'' ''count'' ''u2''[''count'']
 
*'''Arguments:''' ''u0'' ''u1'' ''count'' ''u2''[''count'']
Line 275: Line 276:
 
*''u2'' may be divided into groups of sixes.
 
*''u2'' may be divided into groups of sixes.
  
==Command 43==
+
===Command 43===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 44==
+
===Command 44===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 46==
+
===Command 46===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 100==
+
==Commands 100-199==
 +
These are suspected to be age-specific, as their syntax changes depending on the age.
 +
===Command 100===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 293: Line 296:
 
*''u0'' is always 4, 6, or omitted.
 
*''u0'' is always 4, 6, or omitted.
  
==Command 101==
+
===Command 101===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0''|''u1''[6]]
 
*'''Arguments:''' [''u0''|''u1''[6]]
Line 300: Line 303:
 
*''u1'' is a series of 6 positive numbers.
 
*''u1'' is a series of 6 positive numbers.
  
==Command 102==
+
===Command 102===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'' ''u1'' [''u2'']]
 
*'''Arguments:''' [''u0'' ''u1'' [''u2'']]
Line 308: Line 311:
 
*''u2'' looks like an (optional) bit field. (only 0x64 or 0)
 
*''u2'' looks like an (optional) bit field. (only 0x64 or 0)
  
==Command 103==
+
===Command 103===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' ''bit''
 
*'''Arguments:''' ''bit''
Line 324: Line 327:
 
*''u1'' is either 1 or omitted.
 
*''u1'' is either 1 or omitted.
  
==Command 104==
+
===Command 104===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 332: Line 335:
 
*''u0'' can be 0, 1, omitted, or 13 to 20. It seems to refer to a hotspot index (see stone 2004 and 2197).
 
*''u0'' can be 0, 1, omitted, or 13 to 20. It seems to refer to a hotspot index (see stone 2004 and 2197).
  
==Command 105==
+
===Command 105===
 
*'''Variable:''' Optional (set to 9 at one point, but usually not)
 
*'''Variable:''' Optional (set to 9 at one point, but usually not)
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 338: Line 341:
 
*''u0'' looks like a sound ID.
 
*''u0'' looks like a sound ID.
  
==Command 106==
+
===Command 106===
 
*'''Variable:''' 10
 
*'''Variable:''' 10
 
*'''Arguments:''' 2287 (looks like sound ID)
 
*'''Arguments:''' 2287 (looks like sound ID)
Line 344: Line 347:
 
This command is only used once.
 
This command is only used once.
  
==Command 107==
+
===Command 107===
 
*'''Variable:''' 11
 
*'''Variable:''' 11
 
*'''Arguments:''' 2287 (looks like sound ID)
 
*'''Arguments:''' 2287 (looks like sound ID)
Line 350: Line 353:
 
This command is only used once.
 
This command is only used once.
  
==Command 108==
+
===Command 108===
 
*'''Variable:''' 12
 
*'''Variable:''' 12
 
*'''Arguments:''' 2287 (looks like sound ID)
 
*'''Arguments:''' 2287 (looks like sound ID)
Line 356: Line 359:
 
This command is only used once.
 
This command is only used once.
  
==Command 109==
+
===Command 109===
 
*'''Variable:''' Optional
 
*'''Variable:''' Optional
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 362: Line 365:
 
*''u0'' is ''FFFF'', 1, omitted, or 2287 (looks like sound ID).
 
*''u0'' is ''FFFF'', 1, omitted, or 2287 (looks like sound ID).
  
==Command 110==
+
===Command 110===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' 1180 1179 12 203 78 345 167 6 10 203 166 345 306 5 10
 
*'''Arguments:''' 1180 1179 12 203 78 345 167 6 10 203 166 345 306 5 10
Line 368: Line 371:
 
This command is only used once.
 
This command is only used once.
  
==Command 111==
+
===Command 111===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 376: Line 379:
 
*''u0'' is 14 to 20 or omitted. It seems to refer to a hotspot index (see stone 2004).
 
*''u0'' is 14 to 20 or omitted. It seems to refer to a hotspot index (see stone 2004).
  
==Command 112==
+
===Command 112===
 
*'''Variable:''' 29
 
*'''Variable:''' 29
 
*'''Arguments:''' ''u0'' ''u1'' ''u2''
 
*'''Arguments:''' ''u0'' ''u1'' ''u2''
Line 386: Line 389:
 
*''u2'' is 1.
 
*''u2'' is 1.
  
==Command 113==
+
===Command 113===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' 5143 10 6 339 237 423 333 0 10
 
*'''Arguments:''' 5143 10 6 339 237 423 333 0 10
Line 392: Line 395:
 
This command is only used once. 5143 is likely sound ID.
 
This command is only used once. 5143 is likely sound ID.
  
==Command 114==
+
===Command 114===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' 5143 10 6 339 237 423 333 1 10
 
*'''Arguments:''' 5143 10 6 339 237 423 333 1 10
Line 398: Line 401:
 
This command is only used once. 5143 is likely sound ID.
 
This command is only used once. 5143 is likely sound ID.
  
==Command 115==
+
===Command 115===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' ''u0''[3]
 
*'''Arguments:''' ''u0''[3]
Line 409: Line 412:
 
This form of the command is only used once.
 
This form of the command is only used once.
  
==Command 116==
+
===Command 116===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 415: Line 418:
 
*''u0'' is 0, 1, or 6006.
 
*''u0'' is 0, 1, or 6006.
  
==Command 117==
+
===Command 117===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0''|''u1'' ''u2'']
 
*'''Arguments:''' [''u0''|''u1'' ''u2'']
Line 422: Line 425:
 
*''u1'' and ''u2'' are 5698 and 6698 (only used once).
 
*''u1'' and ''u2'' are 5698 and 6698 (only used once).
  
==Command 118==
+
===Command 118===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [4707 5707 6707 7707 4705]
 
*'''Arguments:''' [4707 5707 6707 7707 4705]
Line 428: Line 431:
 
This command is only used 3 times (once with values and twice omitted). Values are likely sound IDs.
 
This command is only used 3 times (once with values and twice omitted). Values are likely sound IDs.
  
==Command 119==
+
===Command 119===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 434: Line 437:
 
*''u0'' is 0, 1, or omitted.
 
*''u0'' is 0, 1, or omitted.
  
==Command 120==
+
===Command 120===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' [''u0'']
 
*'''Arguments:''' [''u0'']
Line 440: Line 443:
 
*''u0'' is 0, 1, 2, 3, or omitted.
 
*''u0'' is 0, 1, 2, 3, or omitted.
  
==Command 121==
+
===Command 121===
 
*'''Variable:''' Yes
 
*'''Variable:''' Yes
 
*'''Arguments:''' None
 
*'''Arguments:''' None
Line 450: Line 453:
 
*''u1'' is a card ID.
 
*''u1'' is a card ID.
  
==Command 122==
+
===Command 122===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 123==
+
===Command 123===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0'' [''u1'']
 
*'''Arguments:''' ''u0'' [''u1'']
Line 461: Line 464:
 
*''u1'' is 960, 1920, or omitted.
 
*''u1'' is 960, 1920, or omitted.
  
==Command 124==
+
===Command 124===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 125==
+
===Command 125===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
Line 474: Line 477:
 
*''u0'' is 13 or 14.
 
*''u0'' is 13 or 14.
  
==Command 126==
+
===Command 126===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 127==
+
===Command 127===
 
*'''Variable:''' no
 
*'''Variable:''' no
 
*'''Arguments:''' ''u0'' ''u1''
 
*'''Arguments:''' ''u0'' ''u1''
Line 485: Line 488:
 
*''u1'' is 0 or 1.
 
*''u1'' is 0 or 1.
  
==Command 129==
+
===Command 129===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' ''u0''
 
*'''Arguments:''' ''u0''
Line 491: Line 494:
 
*''u0'' looks like a sound ID.
 
*''u0'' looks like a sound ID.
  
==Command 133==
+
===Command 133===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' 6500
 
*'''Arguments:''' 6500
Line 497: Line 500:
 
This command is only used once. Value is a sound ID.
 
This command is only used once. Value is a sound ID.
  
==Command 164==
+
===Command 164===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 169==
+
===Command 169===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None
  
==Command 198==
+
===Command 198===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' 5143 10 6 339 237 423 333 1 10
 
*'''Arguments:''' 5143 10 6 339 237 423 333 1 10
Line 511: Line 514:
 
This command is only used once. 5143 is likely a sound ID.
 
This command is only used once. 5143 is likely a sound ID.
  
==Command 199==
+
===Command 199===
 
*'''Variable:''' No
 
*'''Variable:''' No
 
*'''Arguments:''' None
 
*'''Arguments:''' None

Revision as of 22:41, 22 September 2008

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

This page contains, or will contain, a list of all known commands in Myst, as used in record types 5, 6, 7, 8, 10, 11, and 12. The script format always starts with an unsigned short representing the command count, and then per command has this structure:

unsigned short opcode
unsigned short var
unsigned short num_values
unsigned short values[num_values]

The way scripts are stored, they each contain a command number, a variable number, and any number of arguments. When a variable number is not given, a "0" is used. So when the key below says that the variable is "optional", that means that it has been found both with and without a variable being passed in. In some cases, the syntax of the arguments depends on whether a variable was passed in. In this case, the variable/arguments header is repeated for each form of the command.

Commands 0-99

These are suspected to be general-purpose commands.

Command 0

  • Variable: Optional
  • Arguments: None

Seems to toggle a variable between 0 and 1. For example, see the marker switches on MYST island.

Command 1

  • Variable: Optional
  • Arguments: u0

Could mean "set variable to u0". u0 takes on any number between 0 and 7 (maybe a bit field?)

Command 2: alternative destination

  • Variable: Yes
  • Arguments: dest

This command goes to dest instead of the regular destination if var is a certain (unknown) value. (Only used for SELEN 1240 and CHANNEL 3359)

Command 3: change cursor

  • Variable: Yes
  • Arguments: clrc_id
  • clrc_id is always 800, 801, or 802. (Only 5 different cases). These are the "animated" cursors of dropping the white, red, and blue pages, respectively.

This command seems to change cursor to clrc_id if var is a certain (unknown) value.

Command 4

  • Variable: Optional
  • Arguments: None

Command 6

  • Variable: Optional
  • Arguments: None

Command 7

  • Variable: Optional
  • Arguments: None

Command 8

  • Variable: Optional
  • Arguments: None

Command 9

  • Variable: No
  • Arguments: [u0]
  • u0 is always either FFFF or omitted.

Command 12

  • Variable: Optional
  • Arguments: u0

Related to command 13.

  • u0 appears to be a nearby card.

This may have similar function to command 2.

Command 13

  • Variable: Optional
  • Arguments: u0

Related to command 12.

  • u0 appears to be a nearby card.

This may have similar function to command 2.

Command 14

  • Variable: Optional
  • Arguments: u0
  • u0 is always 0, 1, or 2.

Command 15

  • Variable: Yes
  • Arguments: [u0]
  • u0 is always 0 or omitted.

Command 16

  • Variable: No
  • Arguments: u0 u1
  • u0 appears to be a nearby card.
  • u1 is always 0.

Command 17

  • Variable: No
  • Arguments: u0 u1
  • u0 appears to be a nearby card.
  • u1 is always 4, 5, or 6.

Command 18

  • Variable: No
  • Arguments: u0
  • u0 is always 4, 5, or 6.

Command 19: enable hotspots

  • Variable: No
  • Arguments: count u0[count]

This seems to enable a list of hotspots. All of the u0 numbers are small (0-13, 21).

Command 20: disable hotspots

  • Variable: No
  • Arguments: count u0[count]

This seems to disable a list of hotspots. All of the u0 numbers are small (0-13, 21). These, unlike command 19, can also be -1, which seems to disable the invoking hotspot.

Command 21

  • Variable: No
  • Arguments: u0 u1 u2 u3 u4 u5

There are this command is used 6 times.

  • u0 is always 0, 74, 76, 117, or 198.
  • u1 is always 0, 48, 213, or 226.
  • u2 is always 327, 406, 429, 459, or 544.
  • u3 is always 257, 332, or 333.
  • u4 is always 0, 1, 5, 6, or 11.
  • u5 is always 5 or 25.

Command 22

  • Variable: No
  • Arguments: None

Command 23

  • Variable: No
  • Arguments: count u0[count]
  • The u0 numbers are all 0, 4, or 5.

Command 24

  • Variable: No
  • Arguments: u0
  • u0 appears to be a sound ID.

Command 26

  • Variable: No
  • Arguments: None

Command 27

  • Variable: No
  • Arguments: u0
  • u0 appears to be a sound ID.

Command 28

  • Variable: No
  • Arguments: (<l t r b>|FFFF)
  • <l t r b> often corresponds with the intended location of one of the sub-images in the VIEW resources.

Command 29

  • Variable: No
  • Arguments: pict_id <l t r b> u0 u1
  • pict_id appears to be a picture ID.
  • <l t r b> often corresponds with the intended location of one of the sub-images in the VIEW resources.
  • u0 appears to be a variable number (it is sometimes 0).
  • u1 may also be a variable number (it is sometimes 0, 1, or -1).

This command seems to copy picture pict_id over the hotspot, using <l t r b> as the source rect. Additional data is unknown.

Command 30

  • Variable: No
  • Arguments: <msnd_id flags> [...]
  • msnd_id looks like background sound ID to play.
  • flags looks like a bit field.

Normally there is only one pair of above values, with a single exception: CHANNEL.3225 has 4 pairs.

Command 31

  • Variable: Yes (only ever 30)
  • Arguments: u0 u1
  • u0 is always 0.
  • u1 looks like a card ID.

Command 32

  • Variable: No
  • Arguments: None

Command 33

  • Variable: No
  • Arguments: card <l t r b> u0 u1
  • card appears to be a card ID.
  • <l t r b> often corresponds with the intended location of one of the sub-images in the VIEW resources.
  • u0 appears to be a variable number (it is sometimes 0).
  • u1 may also be a variable number (it is sometimes 0).

Command 34

  • Variable: No
  • Arguments: u0 u1
  • u0 looks like a card ID.
  • u1 is always 0, 1, 4, 5, 6, 9, 10, or 11.

Command 35

  • Variable: No
  • Arguments: u0 u1 u2
  • u0 looks like a card ID.
  • u1 looks like a card ID.
  • u2 is always 0, 6, or 10.

Command 36

  • Variable: No
  • Arguments: u0

This command is only used twice.

  • u0 is 900 or 903.

Command 37

  • Variable: No
  • Arguments: None

Command 38

  • Variable: No
  • Arguments: None

Command 39

  • Variable: No
  • Arguments: u0
  • u0 is 100, 200, 400, 500, 1000, or 1100.

Command 40: travel to destination age

  • Variable: No
  • Arguments: dst_age_id src_msnd_id dst_msnd_id
  • dst_age_id is one of 0 (selen), 1 (stone), 2 (myst), 3 (mechan), 4 (channel) or 6 (dunny).
  • src_msnd_id is a sound ID to play in source age.
  • dst_msnd_id is a sound ID to play in destination age.

Command 41

  • Variable: No
  • Arguments: u0 u1 u2 count u3[count]
  • u0 looks like a card ID.
  • u1 looks like a sound ID.
  • u2 is always 5 or 10.
  • count is only ever 6 or 12.
  • u3 may be divided into groups of sixes.

Command 42

  • Variable: No
  • Arguments: u0 u1 count u2[count]
  • u0 looks like a sound ID.
  • u1 is always 5, 10, 15, or 20.
  • count is only ever 6 or 12.
  • u2 may be divided into groups of sixes.

Command 43

  • Variable: No
  • Arguments: None

Command 44

  • Variable: No
  • Arguments: None

Command 46

  • Variable: No
  • Arguments: None

Commands 100-199

These are suspected to be age-specific, as their syntax changes depending on the age.

Command 100

  • Variable: Optional
  • Arguments: [u0]
  • u0 is always 4, 6, or omitted.

Command 101

  • Variable: No
  • Arguments: [u0|u1[6]]
  • u0 is always 4225 or omitted.
  • u1 is a series of 6 positive numbers.

Command 102

  • Variable: No
  • Arguments: [u0 u1 [u2]]
  • u0 looks like a card ID (or 0).
  • u1 looks like a card ID.
  • u2 looks like an (optional) bit field. (only 0x64 or 0)

Command 103

  • Variable: Yes
  • Arguments: bit

This form of the command most likely negates bit bit of var.

  • bit is a power of 2 (bit mask).
  • Variable: No
  • Arguments: u0 [u1]

This form of the command likely makes specified hotspot drawable.

  • u0 is a number between 13 and 18. It seems to refer to a hotspot index (see stone 2197).
  • u1 is either 1 or omitted.

Command 104

  • Variable: No
  • Arguments: [u0]

This command likely makes specified hotspot not drawable.

  • u0 can be 0, 1, omitted, or 13 to 20. It seems to refer to a hotspot index (see stone 2004 and 2197).

Command 105

  • Variable: Optional (set to 9 at one point, but usually not)
  • Arguments: [u0]
  • u0 looks like a sound ID.

Command 106

  • Variable: 10
  • Arguments: 2287 (looks like sound ID)

This command is only used once.

Command 107

  • Variable: 11
  • Arguments: 2287 (looks like sound ID)

This command is only used once.

Command 108

  • Variable: 12
  • Arguments: 2287 (looks like sound ID)

This command is only used once.

Command 109

  • Variable: Optional
  • Arguments: [u0]
  • u0 is FFFF, 1, omitted, or 2287 (looks like sound ID).

Command 110

  • Variable: No
  • Arguments: 1180 1179 12 203 78 345 167 6 10 203 166 345 306 5 10

This command is only used once.

Command 111

  • Variable: No
  • Arguments: [u0]

This command likely makes specified hotspot not drawable.

  • u0 is 14 to 20 or omitted. It seems to refer to a hotspot index (see stone 2004).

Command 112

  • Variable: 29
  • Arguments: u0 u1 u2

This command is only used twice.

  • u0 is 0 or 1800.
  • u1 is 400 or 2000.
  • u2 is 1.

Command 113

  • Variable: No
  • Arguments: 5143 10 6 339 237 423 333 0 10

This command is only used once. 5143 is likely sound ID.

Command 114

  • Variable: No
  • Arguments: 5143 10 6 339 237 423 333 1 10

This command is only used once. 5143 is likely sound ID.

Command 115

  • Variable: Yes
  • Arguments: u0[3]
  • The u0 look like card ID's.
  • Variable: No
  • Arguments: 1139 1140 1140 10 6 204 64 343 279 6 50

This form of the command is only used once.

Command 116

  • Variable: No
  • Arguments: u0
  • u0 is 0, 1, or 6006.

Command 117

  • Variable: No
  • Arguments: [u0|u1 u2]
  • u0 is 0, 1, 2, 3, or omitted.
  • u1 and u2 are 5698 and 6698 (only used once).

Command 118

  • Variable: No
  • Arguments: [4707 5707 6707 7707 4705]

This command is only used 3 times (once with values and twice omitted). Values are likely sound IDs.

Command 119

  • Variable: No
  • Arguments: [u0]
  • u0 is 0, 1, or omitted.

Command 120

  • Variable: No
  • Arguments: [u0]
  • u0 is 0, 1, 2, 3, or omitted.

Command 121

  • Variable: Yes
  • Arguments: None
  • Variable: No
  • Arguments: u0 u1
  • u0 is 0 or a card ID.
  • u1 is a card ID.

Command 122

  • Variable: No
  • Arguments: None

Command 123

  • Variable: No
  • Arguments: u0 [u1]
  • u0 is 0, 1, or 960.
  • u1 is 960, 1920, or omitted.

Command 124

  • Variable: No
  • Arguments: None

Command 125

  • Variable: No
  • Arguments: None
  • Variable: 21
  • Arguments: u0
  • u0 is 13 or 14.

Command 126

  • Variable: No
  • Arguments: None

Command 127

  • Variable: no
  • Arguments: u0 u1
  • u0 is 1, 2, or 3.
  • u1 is 0 or 1.

Command 129

  • Variable: No
  • Arguments: u0
  • u0 looks like a sound ID.

Command 133

  • Variable: No
  • Arguments: 6500

This command is only used once. Value is a sound ID.

Command 164

  • Variable: No
  • Arguments: None

Command 169

  • Variable: No
  • Arguments: None

Command 198

  • Variable: No
  • Arguments: 5143 10 6 339 237 423 333 1 10

This command is only used once. 5143 is likely a sound ID.

Command 199

  • Variable: No
  • Arguments: None