Open main menu

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

no edit summary
(Some info about v6 objects)
 
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=== V6 Objects ===
=== SCUMM V1 and V2 ===


In v6 objects are splited in 2 chunks: OBIM and OBCD. OBIM store the images, zplanes, etc and OBCD mostly store the scripts.
The object resources part of [[SCUMM/Technical_Reference/Room resources#Object_content|the room resource]].
 
=== SCUMM V4 ===
 
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.
 
=== SCUMM V5 ===
 
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).
 
=== SCUMM V6 ===
 
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 92:
   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 126:
   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)
35

edits