Username:    Password:    Login
Main  Secrets  Links  Specs  Articles  Forum  News  Downloads  Utilities  SCUMM?  Games  Demos  Contact
Main  Secrets  Links  Specs  Articles  Forum  News  Downloads  Utilities  SCUMM?  Games  Demos  Contact

SCUMM file format specifications and documentation

The Really Useful SCUMM etc. Info File
Maniac Mansion .lfl-files
Additional .lfl info
AKOS format
Preliminary SAN documentation
Monkey Island 1 & 2 costume format
Monkey Island 2 costume format
Monkey Island 2 SCUMM opcodes
SCUMM index files
.bun file format
.lab file format
EMI .lab file format
EMI .til file format
GF/EMI .laf fonts file format
EMI mesh specs

(download file)


IndexFiles
----------
00.lfl/000.lfl	Used in V3/4
.000 		Used in V5/6
.LA0		Used in V7/8


Conventions:
------------
All little endian unless stated
Chunk - a named part of the file, ie RNAM
Chunk sizes begin from the start of the chunk ie they include the
8 bytes for the chunk header and size
*=repeat until *=no of items, then move onto the next *
eg for DROO, read Room No until you've read in (No of items)
then do the same for offsets
#=do then move onto the next #item and loop until=no of objects
eg for RNAM, read Room No, them Room Name, then loop

Chunks
------
RNAM Room Names			In V5+
MAXS Maximum Values		In V5+
DROO Directory of Rooms		In V5+
DRSC Direcory of Room Scripts	In V8
DSCR Directory of Scripts	In V5+
DSOU Directory of Sounds	In V5+
DCOS Directory of Costumes	In V5+
DCHR Directory of Charsets	In V5+
DOBJ Directory of Objects	In V5+
AARY List of Arrays  		In V6+
ANAM Animation Names?		In V7
RM Room Names			In V3/4
0R Directory Of Rooms		In V3/4
0S Directory Of Scripts?	In V3/4
0N Directory Of Sounds?		In V3/4
0C Directory Of Costumes?	In V3/4
0O Directory Of Objects?	In V3/4


Scumm V5
--------
Files are xor'ed with 0x69

RNAM
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
 #Room No	  (1 byte)
 #Room Name	  (9 bytes) XOR'ed with FF
Blank (00) byte	  (1 byte) Marks end of chunk

MAXS
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
Variables	  (2 bytes)
Unknown		  (2 bytes)
Bit Variables	  (2 bytes)
Local Objects	  (2 bytes)
Unknown		  (2 bytes)
Character Sets	  (2 bytes)
Unknown		  (2 bytes)
Unknown		  (2 bytes)
Inventory Objects (2 bytes)

DROO
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

DSCR
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

DSOU
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

DCOS
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

DCHR
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

DOBJ
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (2 bytes)
 *Owner of Object (1 byte)


ScummV6
-------
Files are xor'ed with 0x69

RNAM
----
Blank Byte(00)	(1 byte)

MAXS
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
Variables	  (2 bytes)
Unknown		  (2 bytes)
Bit Variables	  (2 bytes)
Local Objects	  (2 bytes)
Arrays		  (2 bytes)
Unknown		  (2 bytes)
Verbs		  (2 bytes)
Floating Objects  (2 bytes)
Inventory Objects (2 bytes)
Rooms		  (2 bytes)
Scripts		  (2 bytes)
Sounds  	  (2 bytes)
Character Sets	  (2 bytes)
Costumes	  (2 bytes)
Global Objects	  (2 bytes)

DROO
DSCR
DSOU
DCOS
DCHR
DOBJ
----
All as in V5

AARY
----
Block Name	(4 bytes)
Block Size	(4 bytes BE)
 #Stop		(2 bytes) Stops if 0x0000
 #A		(2 bytes)
 #B		(2 bytes)
 #C		(2 bytes)

num=AARY no (itinerate through in loop)
if c=1 then
  AARY=(num, 1, a, b)
else
  AARY=(num, 1, a, b)

If stop=0 you dont seek past the 6 bytes of A,B,C you just start the loop again.


ScummV7
------
Files aren't xor'ed

RNAM
----
As in V6

MAXS
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
Variables	  (2 bytes)
Bit Variables	  (2 bytes)
Unknown		  (2 bytes)
Global Objects	  (2 bytes)
Local Objects	  (2 bytes)
New Names	  (2 bytes)
Verbs		  (2 bytes)
Floating Objects  (2 bytes)
Inventory Objects (2 bytes)
Arrays		  (2 bytes)
Rooms		  (2 bytes)
Scripts		  (2 bytes)
Sounds  	  (2 bytes)
Character Sets	  (2 bytes)
Costumes	  (2 bytes)

DROO
DSCR
DSOU
DCOS
DCHR
DOBJ
AARY
----
All as in V5

ANAM
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (2 bytes
 #Name	  	  (8 bytes)
 #Blank (00) byte (1 byte)
Blank (FF) byte	  (1 byte) Marks end of chunk


ScummV8
-------
Files aren't xor'ed

RNAM
----
As in V6

MAXS
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
Variables	  (4 bytes)
Bit Variables	  (4 bytes)
Unknown		  (4 bytes)
Scripts		  (4 bytes)
Sounds  	  (4 bytes)
Character Sets	  (4 bytes)
Costumes	  (4 bytes)
Rooms		  (4 bytes)
Unknown		  (4 bytes)
Global Objects	  (4 bytes)
Unknown		  (4 bytes)
Local Objects	  (4 bytes)
New Names	  (4 bytes)
Floating Objects  (4 bytes)
Inventory Objects (4 bytes)
Arrays		  (4 bytes)
Verbs		  (4 bytes)

DROO
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DRSC
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DSCR
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DSOU
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DCOS
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DCHR
----
Block Name	  (4 bytes)
Block Size	  (4 bytes BE)
No of items	  (4 bytes)
 *Room Number	  (1 byte)
 *Offset	  (2 bytes)

DOBJ
AARY
----
All as in V5


Scumm V3/4
----------
File's aren't xor'ed
Block Size does not include the 4 block size bytes

RN
----
Block Size	(4 bytes)
Block Name	(2 bytes)
 #Room No	  (1 byte)
 #Room Name	  (9 bytes) XOR'ed with FF
Blank (00) byte	  (1 byte) Marks end of chunk

0R
----
Block Size	(4 bytes)
Block Name	(2 bytes)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

0S
----
Block Size	(4 bytes)
Block Name	(2 bytes)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

ON
----
Block Size	(4 bytes)
Block Name	(2 bytes)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

0C
----
Block Size	(4 bytes)
Block Name	(2 bytes)
No of items	(2 bytes)
 *Room Number	(1 byte)
 *Offset	(4 bytes)

0O
----
Block Size	  (4 bytes)
Block Name	  (2 bytes)
No of items	  (2 bytes)
 *Owner of Object (1 byte)
scumm.mixnmojo.com

RANDOM ARTICLE
Article


Google THIS SITE
Web
scumm.mixnmojo.com


FEATURED PROGRAM
SCUMM Revisited screenshot
SCUMM Revisited



HOT LINKS
ScummVM
Quick & Easy
SCUMM Hacking Forum
mixnmojo.com