Difference between revisions of "SCUMM/Technical Reference/Object resources"

Jump to navigation Jump to search
Add info on SCUMM v4 object code blocks
(Some info about v6 objects)
 
(Add info on SCUMM v4 object code blocks)
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=== V6 Objects ===
=== V6 Objects ===


In v6 objects are splited in 2 chunks: OBIM and OBCD. OBIM store the images, zplanes, etc and OBCD mostly store the scripts.
In v6 objects are split in 2 chunks: OBIM and OBCD. OBIM store the images, zplanes, etc, while OBCD mostly store the scripts.


==== OBIM ====
==== OBIM ====
Line 19: Line 19:
   num imnn    : 16le
   num imnn    : 16le
   num zpnn    : 16le (per IMnn block)
   num zpnn    : 16le (per IMnn block)
   unknown      : 16
  flags        : 8
   unknown      : 8
   x            : 16le
   x            : 16le
   y            : 16le
   y            : 16le
Line 52: Line 53:
   flags    : 8
   flags    : 8
   parent    : 8
   parent    : 8
   unk      : 2*16
   walk_x    : 16le signed
  walk_y    : 16le signed
   actor dir : 8 (direction the actor will look at when standing in front
   actor dir : 8 (direction the actor will look at when standing in front
                 of the object)
                 of the object)
Line 72: Line 74:


The OBNA chunk simply contain a null terminated string.
The OBNA chunk simply contain a null terminated string.
=== V5 Objects ===
V5 objects are a lot like V6 Objects, with minor differences.
===== IMHD =====
<pre>
  obj id      : 16le
  num imnn    : 16le
  num zpnn    : 16le (per IMnn block)
  flags        : 8
  unknown      : 8
  x            : 16le
  y            : 16le
  width        : 16le
  height      : 16le
</pre>
IMHD omits the hotspots.
===== CDHD =====
<pre>
  obj id    : 16le
  x        : 8
  y        : 8
  width    : 8
  height    : 8
  flags    : 8
  parent    : 8
  walk_x    : 16le signed
  walk_y    : 16le signed
  actor dir : 8 (direction the actor will look at when standing in front
                of the object)
</pre>
x, y, width, and height are bytes. Their values should be multiplied by 8 (the size of an image strip).
=== V4 Objects ===
In v4 objects are split in 2 chunks: OI and OC. OC does not have any sub-blocks like v5 or v6 objects; it contains all header information and the SCUMM script.
===== OC =====
<pre>
  obj id            : 16le
  unknown          : 8
  x                : 8
  y, parent state  : 8 (parent state is AND 0x80, y is AND 0x7F)
  width            : 8
  parent            : 8
  walk_x            : 16le signed(?)
  walk_y            : 16le signed(?)
  height, actor dir : 8 (height is AND 0xF8, actor dir is AND 0x07)
  name offset      : 8 (point to location of object name, from start of OC block)
  verb table        : variable
  object name      : variable, null-terminated string
  SCUMM script      : variable
</pre>
The verb table is made up of multiple entries, each looks like this:
<pre>
  verb ID          : 8
  offset            : 16le (from start of script?)
</pre>
The number of entries will vary depending on the interactions defined for the object.
125

edits

Navigation menu