Difference between revisions of "SCUMM"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (correcting date)
(Added link to new page about optional enhancements)
 
(18 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{EngineDescription|
{{EngineDescription
        name=SCUMM|
|name=SCUMM
        developer=[[User:eriktorbjorn|eriktorbjorn]], [[User:ender|ender]], [[User:khalek|khalek]], [[User:Fingolfin|Fingolfin]],<br> [[User:Kirben|Kirben]], [[User:aquadran|aquadran]], [[User:sev|sev]], [[User:cyx|cyx]], [[User:yaz0r|yaz0r]], [[User:ludde|ludde]]|
|developer=[[User:eriktorbjorn|eriktorbjorn]], [[User:ender|ender]], [[User:khalek|khalek]], <br />[[User:Kirben|Kirben]], [[User:aquadran|aquadran]], [[User:sev|sev]], [[User:cyx|cyx]], [[User:yazoo|yazoo]], [[User:ludde|ludde]]
        companies=[[LucasArts]] and [[Humongous Entertainment]]|
|companies=[[LucasArts]] and [[Humongous Entertainment]]
        usedBy=Numerous [[SCUMM#Which games use SCUMM?|LucasArts]] and [[Humongous Entertainment/Games|HE Games]]|
|usedBy=Numerous [[SCUMM#Games using this engine|LucasArts]] and [[Humongous Entertainment/Games|HE Games]], and<br />[[SCUMM/Fan Games|SCUMM Fan Games]]
        dateAdded=October 8, 2001|
|dateAdded=October 8, 2001
        release=0.0.1|
|release=0.0.1
}}
}}


== What is SCUMM? ==
==About==
'''SCUMM''' stands for "'''S'''cript '''C'''reation '''U'''tility for '''''M'''aniac '''M'''ansion''".
'''SCUMM''' stands for "'''S'''cript '''C'''reation '''U'''tility for '''''M'''aniac '''M'''ansion''".


Line 15: Line 15:
The SCUMM language is a [[LucasArts]] in-house standard, but was also used by [[Humongous Entertainment/Games| numerous]] [[Humongous Entertainment]] games. The format was never designed to be public and so would change unpredictably from game to game to suit the task at hand. Therefore, many different [[SCUMM/Versions|SCUMM Versions]] exist today.
The SCUMM language is a [[LucasArts]] in-house standard, but was also used by [[Humongous Entertainment/Games| numerous]] [[Humongous Entertainment]] games. The format was never designed to be public and so would change unpredictably from game to game to suit the task at hand. Therefore, many different [[SCUMM/Versions|SCUMM Versions]] exist today.


It was initially created in 1987 by [[Aric Wilmunder]] and [[Ron Gilbert]] for the game [[Maniac Mansion]] and was used later, with some modifications, for [[Zak McKracken and the Alien Mindbenders]].
==Status==
This engine is mostly complete, with some exceptions for certain exotic game variants (for NES, FM-TOWNS, etc.), as well as some [[Humongous Entertainment]] games. See the [[SCUMM/TODO|SCUMM TODO]] as well as our [https://scummvm.org/compatibility/ Compatibility page] for details.


Aric Wilmunder and Ron Gilbert's original SCUMM has been expanded a bit since 1988, of course. Every time a game required some feature that SCUMM had not previously supported, the interpreter was extended and the data file format expanded. The whole system was redesigned from scratch twice. With [[Indiana Jones and the Last Crusade]], LucasArts developed a modular file format based loosely on the standard IFF format. This was used several times in various forms until [[The Secret of Monkey Island]], where the SCUMM engine and file format was redesigned again from scratch. The new format was used from then on, and even now that LucasArts has finally retired SCUMM for their latest games, the interpreter/data file philosophy is still in use and you can see SCUMM design decisions in the data files of the latest LucasArts games such as [[Grim Fandango]].
==History==
SCUMM was initially created in 1987 by Aric Wilmunder and [https://grumpygamer.com/ Ron Gilbert] for the game [[Maniac Mansion]] and was used later, with some modifications, for [[Zak McKracken and the Alien Mindbenders]].


== The idea behind SCUMM ==
Aric Wilmunder and Ron Gilbert's original SCUMM has been expanded a bit since 1988, of course. Every time a game required some feature that SCUMM had not previously supported, the interpreter was extended and the data file format expanded. The whole system was redesigned from scratch twice. With [[Indiana Jones and the Last Crusade]], LucasArts developed a modular file format based loosely on the standard IFF format. This was used several times in various forms until [[The Secret of Monkey Island]], where the SCUMM engine and file format was redesigned again from scratch. The new format was used from then on, and even now that LucasArts has finally retired SCUMM for their latest games, the interpreter/data file philosophy is still in use and you can see SCUMM design decisions in the data files of the later LucasArts games such as [[Grim Fandango]].


It is well known that the best way to perform some very complex tasks is to start out by building a tool to help you with that task. In the same way, two programmers at LucasArts back in 1988 decided that rather than write a single, complicated program for their new graphic adventure game, they should instead build an generic engine that would play any graphic adventure game, if given the proper data files; this would let them concentrate on the game design, rather than the details of the programming.  
===The idea behind SCUMM===
It is well known that the best way to perform some very complex tasks is to start out by building a tool to help you with that task. In the same way, two programmers at Lucasfilm Games back in 1988 decided that rather than write a single, complicated program for their new graphic adventure game, they should instead build a generic engine that would play any graphic adventure game, if given the proper data files; this would let them concentrate on the game design, rather than the details of the programming.  


It worked. And so SCUMM was born.  
It worked. And so SCUMM was born.  


The way the SCUMM engine works is that there is a single executable program, called the interpreter, that operates on some data files. The data files contain images, dialogue, details of object behaviour, and so on. The interpreter then brings all this to life and handles the details of drawing it all, animating the characters, processing user input, and all the other details that a graphic adventure game needs dealt with in order to work properly. Because the data files contain no executable code, it turns out to be trivial to port the game to a new platform: just port the interpreter, and use the same data files. You will get exactly the same game on the new system.  
The way the SCUMM engine works is that there is a single executable program, called the interpreter, that operates on some data files. The data files contain images, dialogue, details of object behavior, and so on. The interpreter then brings all this to life and handles the details of drawing it all, animating the characters, processing user input, and all the other details that a graphic adventure game needs dealt with in order to work properly. Because the data files contain no executable code, it turns out to be trivial to port the game to a new platform: just port the interpreter, and use the same data files. You will get exactly the same game on the new system.  


A lesson many people have learnt. Infocom, creators of possibly the finest text adventure games of all time, did a very similar trick with their Z-machine; you can now get Z-machine interpreters for everything from a Cray Supercomputer to a Game Boy, all of which will play Infocom's games, encoded in the data files. See [http://www.brasslantern.org/ Brass Lantern] for more information.  
A lesson many people have learned. Infocom, creators of possibly the finest text adventure games of all time, did a very similar trick with their Z-machine; you can now get Z-machine interpreters for everything from a Cray Supercomputer to a Game Boy, all of which will play Infocom's games, encoded in the data files. See [https://brasslantern.org/ Brass Lantern] for more information.  
 
== Sub Engines of SCUMM ==


===Subsystems of SCUMM===
The SCUMM virtual machine is made up of a number of sub engines working together. Strictly, the term SCUMM only refers to the scripting language itself. The official term for the virtual machine as a whole is SPUTM --- but getting people to change is probably a lost cause.  
The SCUMM virtual machine is made up of a number of sub engines working together. Strictly, the term SCUMM only refers to the scripting language itself. The official term for the virtual machine as a whole is SPUTM --- but getting people to change is probably a lost cause.  


Line 42: Line 44:
; MMUCAS : The memory allocation system used in The Curse of Monkey Island. V8 only.
; MMUCAS : The memory allocation system used in The Curse of Monkey Island. V8 only.


== Which games use SCUMM? ==
==Games using this engine==
 
[[LucasArts]] games:
[[LucasArts]] games


* [[Maniac Mansion]]
* [[Maniac Mansion]]
Line 60: Line 61:
* [[The Curse of Monkey Island]]
* [[The Curse of Monkey Island]]


and [[Humongous Entertainment/Games | numerous]] [[Humongous Entertainment]] games.
[[Humongous Entertainment/Games|Numerous]] [[Humongous Entertainment]] games and [[SCUMM/Fan Games|SCUMM Fan Games]]: Fan created games using the SCUMM engine.
 
[https://web.archive.org/web/20101020053143/http://www.sqeagz.com/passigar PASSIGAR] also has a very good list of almost all known LucasArts game versions.


== Resources ==
==Resources==
* [[SCUMM/Technical Reference|SCUMM Technical Reference]]: Information about all aspects of SCUMM/SPUTM, including resource formats, opcode tables and many more things.
* [[SCUMM/TODO|SCUMM TODO]]: Work that still needs to be done.
* [[SCUMM/Bugs|SCUMM Bugs]]: A list of known bugs in the original game scripts/data.
* [[SCUMM/Game_Enhancements|SCUMM Game Enhancements]]: A list of game-specific enhancements and workarounds that can be optionally turned off.
* [[SCUMM/Technical Reference|SCUMM Technical Reference]]: Information about all aspects of SCUMM/SPUTM, including resource formats, opcode tables and much more.
* [[SCUMM/Versions|SCUMM Versions]]: A list of SCUMM versions, and which games they were used for.
* [[SCUMM/Versions|SCUMM Versions]]: A list of SCUMM versions, and which games they were used for.
* [[SCUMM/Debug Codes|SCUMM Debug Codes]]: Many of the original SCUMM game engines contain debug keys. This page lists known debug keys and the passwords needed to unlock them.
* [[SCUMM/Debug Codes|SCUMM Debug Codes]]: Many of the original SCUMM game engines contain debug keys. This page lists known debug keys and the passwords needed to unlock them.
* [[SCUMM/NES|SCUMM NES]]: Progress of the support for the NES version of Maniac Mansion
* [[SCUMM/NES|SCUMM NES]]: Progress of the support for the NES version of Maniac Mansion.
* [[SCUMM/C64|SCUMM C64]]: Progress of the support for the C64 versions Maniac Mansion and Zak McKracken
* [[SCUMM/V0|SCUMM V0]]: Progress of the support for the Commodore 64 versions of Maniac Mansion, Zak McKracken and the Apple II version of Maniac Mansion.
* [[Auto detection]]: Some thoughts on improving the SCUMM auto detector
* [[Humongous Entertainment/Progress|HE Progress]]: Progress of the support for Humongous Entertainment games.
* [[Humongous Entertainment/Progress|HE Progress]]: Progress of the support for Humongous Entertainment games
* [[Humongous Entertainment/Games|HE Games List]]: List of all known HE games. Both supported and unsupported.
* [[Humongous Entertainment/Games|HE Games List]]: List of all known HE games. Both supported and unsupported
*[[ScummEX]]: A ScummVM sub-project to display the resources in SCUMM games.
 
==External links==
* [https://en.wikipedia.org/wiki/SCUMM Wikipedia on SCUMM]


[[Category:Engines]]
[[Category:Engines]]

Latest revision as of 05:25, 24 March 2022

SCUMM
Engine developer eriktorbjorn, ender, khalek,
Kirben, aquadran, sev, cyx, yazoo, ludde
Companies that used it LucasArts and Humongous Entertainment
Games that use it Numerous LucasArts and HE Games, and
SCUMM Fan Games
Date added to ScummVM 2001-10-08
First release containing it 0.0.1

About

SCUMM stands for "Script Creation Utility for Maniac Mansion".

It is a utility used to create the famous LucasArts adventure games like the Monkey Island series and also gave ScummVM its name.

The SCUMM language is a LucasArts in-house standard, but was also used by numerous Humongous Entertainment games. The format was never designed to be public and so would change unpredictably from game to game to suit the task at hand. Therefore, many different SCUMM Versions exist today.

Status

This engine is mostly complete, with some exceptions for certain exotic game variants (for NES, FM-TOWNS, etc.), as well as some Humongous Entertainment games. See the SCUMM TODO as well as our Compatibility page for details.

History

SCUMM was initially created in 1987 by Aric Wilmunder and Ron Gilbert for the game Maniac Mansion and was used later, with some modifications, for Zak McKracken and the Alien Mindbenders.

Aric Wilmunder and Ron Gilbert's original SCUMM has been expanded a bit since 1988, of course. Every time a game required some feature that SCUMM had not previously supported, the interpreter was extended and the data file format expanded. The whole system was redesigned from scratch twice. With Indiana Jones and the Last Crusade, LucasArts developed a modular file format based loosely on the standard IFF format. This was used several times in various forms until The Secret of Monkey Island, where the SCUMM engine and file format was redesigned again from scratch. The new format was used from then on, and even now that LucasArts has finally retired SCUMM for their latest games, the interpreter/data file philosophy is still in use and you can see SCUMM design decisions in the data files of the later LucasArts games such as Grim Fandango.

The idea behind SCUMM

It is well known that the best way to perform some very complex tasks is to start out by building a tool to help you with that task. In the same way, two programmers at Lucasfilm Games back in 1988 decided that rather than write a single, complicated program for their new graphic adventure game, they should instead build a generic engine that would play any graphic adventure game, if given the proper data files; this would let them concentrate on the game design, rather than the details of the programming.

It worked. And so SCUMM was born.

The way the SCUMM engine works is that there is a single executable program, called the interpreter, that operates on some data files. The data files contain images, dialogue, details of object behavior, and so on. The interpreter then brings all this to life and handles the details of drawing it all, animating the characters, processing user input, and all the other details that a graphic adventure game needs dealt with in order to work properly. Because the data files contain no executable code, it turns out to be trivial to port the game to a new platform: just port the interpreter, and use the same data files. You will get exactly the same game on the new system.

A lesson many people have learned. Infocom, creators of possibly the finest text adventure games of all time, did a very similar trick with their Z-machine; you can now get Z-machine interpreters for everything from a Cray Supercomputer to a Game Boy, all of which will play Infocom's games, encoded in the data files. See Brass Lantern for more information.

Subsystems of SCUMM

The SCUMM virtual machine is made up of a number of sub engines working together. Strictly, the term SCUMM only refers to the scripting language itself. The official term for the virtual machine as a whole is SPUTM --- but getting people to change is probably a lost cause.

Here are all the engines used by the SCUMM virtual machine.

SPUTM
The 'real' name for the engine, SCUMM Presentation Utility (TM).
SCUMM
The actual scripting language.
IMUSE
The MIDI control system, allowing dynamic music.
SMUSH
A movie compression format and player.
INSANE
The event management system used in V7+ games.
MMUCAS
The memory allocation system used in The Curse of Monkey Island. V8 only.

Games using this engine

LucasArts games:

Numerous Humongous Entertainment games and SCUMM Fan Games: Fan created games using the SCUMM engine.

PASSIGAR also has a very good list of almost all known LucasArts game versions.

Resources

  • SCUMM TODO: Work that still needs to be done.
  • SCUMM Bugs: A list of known bugs in the original game scripts/data.
  • SCUMM Game Enhancements: A list of game-specific enhancements and workarounds that can be optionally turned off.
  • SCUMM Technical Reference: Information about all aspects of SCUMM/SPUTM, including resource formats, opcode tables and much more.
  • SCUMM Versions: A list of SCUMM versions, and which games they were used for.
  • SCUMM Debug Codes: Many of the original SCUMM game engines contain debug keys. This page lists known debug keys and the passwords needed to unlock them.
  • SCUMM NES: Progress of the support for the NES version of Maniac Mansion.
  • SCUMM V0: Progress of the support for the Commodore 64 versions of Maniac Mansion, Zak McKracken and the Apple II version of Maniac Mansion.
  • HE Progress: Progress of the support for Humongous Entertainment games.
  • HE Games List: List of all known HE games. Both supported and unsupported.
  • ScummEX: A ScummVM sub-project to display the resources in SCUMM games.

External links