SCUMM Revisited
Last update: Sunday, September 02, 2001

Hosted by:
| Lucas Arts Adventure Super site |
----

Main
News
SR3
Warning
Features
FAQ
History
Download
Forum
Secrets
Articles
Specs
Thanks
Help
Links

Community
| |
----

SCUMM Block Specifications Format

Each block specification contains a general description of the block and a table of the exact ordering of data within the block. The first column in these tables either contains a string literal (for example the block name "APAL") or an identifier (made up by me) written in hungarian notation.

The second column contains the size/format of the data meaning the following:

  • byte - Yep, a byte.
  • word - 2 bytes
  • dword - 4 bytes
  • char - basically a byte, but used for character contents.
  • string - null-terminated string, i.e. a string of chars ended with a byte of the value 0. Normally, char will be used for strings containing a known number of chars, while string will be used where the length of the string is variable.
  • block - SCUMM format block.
Some of these may be prepended a multiplier, such as "5 *", which means what you think it does.

The third column contains a description of the data. In this, some abbreviations are used:

  • BE - Big Endian, i.e. the number is stored with the most significant byte first (as most normal people would write it, no offense to Intel). Also known as Motorola format.
  • LE - Little Endian, i.e. the number is stored with the most significant byte last. Also known as Intel format.
If nothing is noted, the number is stored as Big Endian.

Special schemes are used for special instances, such as a piece of the spec being repeated for a specified number of times:
loop <count>
 ...
end of loop

- or an unspecified number of times:
loop
 ...
end of loop

Also, if a piece of the spec may not occur in some instances, it's marked thusly:
(
 ...
)

Finally, if a piece can be different in some instances, it's marked with:
{
 ...
}
or
{

 ...
}