SCUMM/V5 opcodes/Table
< SCUMM | V5 opcodes
Revision as of 02:36, 19 April 2009 by Jestar jokin (talk | contribs) (→Table of Parameters: clearHeap does not take an argument)
Table of Parameters
This table shows a summary of the SCUMM V5 opcodes and their parameters in a concise fashion.
Argument types:
- V = variable
- B = byte constant
- W = word constant
- P8 = variable or byte
- P16 = variable or word
- L = list
- J = jump (used by almost all boolean expressions, comparisons) (equivalent to W)
- D = delay; 24-bit constant (only used by delay instruction, strangely enough)
- A = ASCII string, terminated by the following argument ($00, $FF, $FE...)
- A0 = ASCII string, null-terminated
- A1 = ASCII string, $FF terminated
- FF = the hex value $FF, used for terminating some lists, strings etc.
- SO = sub-opcode, variants listed underneath as "opcode$sub-opcode"
- NS = non-standard encoding that cannot be sufficiently expressed in this table
- + = one or more of the preceding argument (parameter bits usually don't matter)
- None = does not take that argument argument
Instruction | Opcode | Descumm equiv. | Returns a Value | Arg 1 | Arg 2 | Arg 3 |
actorFollowCamera | $52 | == | False | P8 | None | None |
actorFromPos | $15 | == | True | P16 | P16 | None |
actorOps | $13 | ActorOps | False | P8 | SO+ | FF |
actorOps$00 | $00 | Unknown | False | P8 | None | None |
actorOps$01 | $01 | Costume | False | P8 | None | None |
actorOps$02 | $02 | WalkSpeed | False | P8 | P8 | None |
actorOps$03 | $03 | Sound | False | P8 | None | None |
actorOps$04 | $04 | WalkAnimNr | False | P8 | None | None |
actorOps$05 | $05 | TalkAnimNr | False | P8 | P8 | None |
actorOps$06 | $06 | StandAnimNr | False | P8 | None | None |
actorOps$07 | $07 | Nothing | False | P8 | P8 | P8 |
actorOps$08 | $08 | Init | False | None | None | None |
actorOps$09 | $09 | Elevation | False | P16 | None | None |
actorOps$0A | $0A | DefaultAnims | False | None | None | None |
actorOps$0B | $0B | Palette | False | P8 | P8 | None |
actorOps$0C | $0C | TalkColor | False | P8 | None | None |
actorOps$0D | $0D | Name | False | A0 | None | None |
actorOps$0E | $0E | InitAnimNr | False | P8 | None | None |
actorOps$10 | $10 | Width | False | P8 | None | None |
actorOps$11 | $11 | Scale | False | P8 | P8 | None |
actorOps$12 | $12 | NeverZClip | False | None | None | None |
actorOps$13 | $13 | SetZClip | False | P8 | None | None |
actorOps$14 | $14 | IgnoreBoxes | False | None | None | None |
actorOps$15 | $15 | FollowBoxes | False | P8 | None | None |
actorOps$16 | $16 | AnimSpeed | False | P8 | None | None |
actorOps$17 | $17 | ShadowMode | False | P8 | None | None |
actorSetClass | $5D | setClass | False | P16 | L | None |
add | $5A | (inline) | True | P16 | None | None |
and | $17 | (inline) | True | P16 | None | None |
animateActor | $11 | animateCostume | False | P8 | P8 | None |
breakHere | $80 | == | False | None | None | None |
chainScript | $42 | == | False | P8 | L | None |
cursorCommand | $2C | (none) | False | SO | None | None |
cursorCommand$01 | $01 | CursorShow | False | None | None | None |
cursorCommand$02 | $02 | CursorHide | False | None | None | None |
cursorCommand$03 | $03 | UserputOn | False | None | None | None |
cursorCommand$04 | $04 | UserputOff | False | None | None | None |
cursorCommand$05 | $05 | CursorSoftOn | False | None | None | None |
cursorCommand$06 | $06 | CursorSoftOff | False | None | None | None |
cursorCommand$07 | $07 | UserputSoftOn | False | None | None | None |
cursorCommand$08 | $08 | UserputSoftOff | False | None | None | None |
cursorCommand$0A | $0A | SetCursorImg | False | P8 | P8 | None |
cursorCommand$0B | $0B | setCursorHotspot | False | P8 | P8 | P8 |
cursorCommand$0C | $0C | InitCursor | False | P8 | None | None |
cursorCommand$0D | $0D | InitCharset | False | P8 | None | None |
cursorCommand$0E | $0E | CursorCommand | False | L | None | None |
cutscene | $40 | == | False | L | None | None |
debug | $6B | debug? | False | P16 | None | None |
decrement | $C6 | (inline) | True | None | None | None |
delay | $2E | == | False | D | None | None |
delayVariable | $2B | == | False | V | None | None |
divide | $5B | (inline) | True | P16 | None | None |
doSentence | $19 | == | False | P8 | P16 | P16 |
drawBox | $3F | == | False | P16 | P16 | NS |
drawObject | $05 | == | False | P16 | SO | None |
drawObject$01 | $01 | setXY | False | P16 | P16 | None |
drawObject$02 | $02 | setImage | False | P16 | None | None |
drawObject$1F | $1F | () | False | None | None | None |
dummy | $A7 | dummy(A7) | False | None | None | None |
endCutscene | $C0 | == | False | None | None | None |
equalZero | $28 | inline | False | V | J | None |
expression | $AC | Exprmode | True | SO+ | FF | None |
expression$01 | $01 | (inline) | False | P16 | None | None |
expression$02 | $02 | (inline) | False | None | None | None |
expression$03 | $03 | (inline) | False | None | None | None |
expression$04 | $04 | (inline) | False | None | None | None |
expression$05 | $05 | (inline) | False | None | None | None |
expression$06 | $06 | (inline) | False | NS | None | None |
faceActor | $09 | == | False | P8 | P16 | None |
findInventory | $3D | == | True | P8 | P8 | None |
findObject | $35 | == | True | P8 | P8 | None |
freezeScripts | $60 | == | False | P8 | None | None |
getActorCostume | $71 | == | True | P8 | None | None |
getActorElevation | $06 | == | True | P8 | None | None |
getActorFacing | $63 | == | True | P8 | None | None |
getActorMoving | $56 | == | True | P8 | None | None |
getActorRoom | $03 | == | True | P8 | None | None |
getActorScale | $3B | == | True | P8 | None | None |
getActorWalkBox | $7B | == | True | P8 | None | None |
getActorWidth | $6C | == | True | P8 | None | None |
getActorX | $43 | == | True | P16 | None | None |
getActorY | $23 | == | True | P16 | None | None |
getAnimCounter | $22 | == | True | P8 | None | None |
getClosestObjActor | $66 | == | True | P16 | None | None |
getDist | $34 | == | True | P16 | P16 | None |
getInventoryCount | $31 | == | True | P8 | None | None |
getObjectOwner | $10 | == | True | P16 | None | None |
getObjectState | $0F | == | True | P16 | None | None |
getRandomNumber | $16 | getRandomNr | True | P8 | None | None |
getScriptRunning | $68 | isScriptRunning | True | P8 | None | None |
getStringWidth | $67 | == | True | P8 | None | None |
getVerbEntryPoint | $0B | == | True | P16 | P16 | None |
ifClassOfIs | $1D | classOfIs | False | P16 | L | J |
ifNotState | $2F | getState (inline) | False | P16 | P8 | J |
ifState | $4F | getState (inline) | False | P16 | P8 | J |
increment | $46 | (inline) | True | None | None | None |
isActorInBox | $1F | == | False | P8 | P8 | J |
isEqual | $48 | (inline) | False | V | P16 | J |
isGreater | $78 | (inline) | False | V | P16 | J |
isGreaterEqual | $04 | (inline) | False | V | P16 | J |
isLess | $44 | (inline) | False | V | P16 | J |
isNotEqual | $08 | (inline) | False | V | P16 | J |
isSoundRunning | $7C | == | True | P8 | None | None |
jumpRelative | $18 | (inline) or goto | False | J | None | None |
lessOrEqual | $38 | (inline) | False | V | P16 | J |
lights | $70 | == | False | P8 | B | B |
loadRoom | $72 | == | False | P8 | None | None |
loadRoomWithEgo | $24 | == | False | P16 | P8 | NS |
matrixOp | $30 | N/A | False | SO | None | None |
matrixOp$01 | $01 | setBoxFlags | False | P8 | P8 | None |
matrixOp$02 | $02 | setBoxScale | False | P8 | P8 | None |
matrixOp$03 | $03 | SetBoxSlot | False | P8 | P8 | None |
matrixOp$04 | $04 | createBoxMatrix | False | None | None | None |
move | $1A | (inline) | True | P16 | None | None |
multiply | $1B | (inline) | True | P16 | None | None |
notEqualZero | $A8 | (inline) | False | V | J | None |
oldRoomEffect | $5C | oldRoomEffect-fadein | False | SO | None | None |
oldRoomEffect$03 | $03 | oldRoomEffect-set | False | P16 | None | None |
or | $57 | (inline) | True | P16 | None | None |
override | $58 | N/A | False | SO | None | None |
override$00 | $00 | endOverride | False | None | None | None |
override$01 | $01 | beginOverride | False | NS | J | None |
panCameraTo | $12 | == | False | P16 | None | None |
pickupObject | $25 | == | False | P16 | P8 | None |
pickupObjectOld | $50 | pickupObject | False | P16 | None | None |
$14 | == | False | P8 | SO+ | None | |
print$00 | $00 | Pos | False | P16 | P16 | None |
print$01 | $01 | Color | False | P8 | None | None |
print$02 | $02 | Clipped | False | P16 | None | None |
print$03 | $03 | RestoreBG | False | P16 | P16 | None |
print$04 | $04 | Center | False | None | None | None |
print$06 | $06 | Left | False | None | None | None |
print$07 | $07 | Overhead | False | None | None | None |
print$08 | $08 | PlayCDTrack | False | P16 | P16 | None |
print$0F | $0F | Text() | False | A1 | None | None |
printEgo | $D8 | == | False | SO+ | None | None |
printEgo$00 | $00 | Pos | False | P16 | P16 | None |
printEgo$01 | $01 | Color | False | P8 | None | None |
printEgo$02 | $02 | Clipped | False | P16 | None | None |
printEgo$03 | $03 | RestoreBG | False | P16 | P16 | None |
printEgo$04 | $04 | Center | False | None | None | None |
printEgo$06 | $06 | Left | False | None | None | None |
printEgo$07 | $07 | Overhead | False | None | None | None |
printEgo$08 | $08 | PlayCDTrack | False | P16 | P16 | None |
printEgo$0F | $0F | Text() | False | A1 | None | None |
pseudoRoom | $CC | PsuedoRoom | False | B | NS | NS |
putActor | $01 | == | False | P8 | P16 | P16 |
putActorAtObject | $0E | == | False | P8 | P16 | None |
putActorInRoom | $2D | == | False | P8 | P8 | None |
resourceRoutines | $0C | Resource. | False | SO | None | None |
resourcesRoutines$01 | $01 | loadScript | False | P8 | None | None |
resourcesRoutines$02 | $02 | loadSound | False | P8 | None | None |
resourcesRoutines$03 | $03 | loadCostume | False | P8 | None | None |
resourcesRoutines$04 | $04 | loadRoom | False | P8 | None | None |
resourcesRoutines$05 | $05 | nukeScript | False | P8 | None | None |
resourcesRoutines$06 | $06 | nukeSound | False | P8 | None | None |
resourcesRoutines$07 | $07 | nukeCostume | False | P8 | None | None |
resourcesRoutines$08 | $08 | nukeRoom | False | P8 | None | None |
resourcesRoutines$09 | $09 | lockScript | False | P8 | None | None |
resourcesRoutines$0A | $0A | lockSound | False | P8 | None | None |
resourcesRoutines$0B | $0B | lockCostume | False | P8 | None | None |
resourcesRoutines$0C | $0C | lockRoom | False | P8 | None | None |
resourcesRoutines$0D | $0D | unlockScript | False | P8 | None | None |
resourcesRoutines$0E | $0E | unlockSound | False | P8 | None | None |
resourcesRoutines$0F | $0F | unlockCostume | False | P8 | None | None |
resourcesRoutines$10 | $10 | unlockRoom | False | P8 | None | None |
resourcesRoutines$11 | $11 | clearHeap | False | None | None | None |
resourcesRoutines$12 | $12 | loadCharset | False | P8 | None | None |
resourcesRoutines$13 | $13 | nukeCharset | False | P8 | None | None |
resourcesRoutines$14 | $14 | loadFlObject | False | P8 | P16 | None |
roomOps | $33 | N/A | False | SO | None | None |
roomOps$01 | $01 | RoomScroll | False | P16 | P16 | None |
roomOps$03 | $03 | SetScreen | False | P16 | P16 | None |
roomOps$04 | $04 | SetPalColor | False | P16 | P16 | NS |
roomOps$05 | $05 | ShakeOn | False | None | None | None |
roomOps$06 | $06 | ShakeOff | False | None | None | None |
roomOps$07 | $07 | Unused | False | P8 | P8 | NS |
roomOps$08 | $08 | RoomIntensity | False | P8 | P8 | P8 |
roomOps$09 | $09 | saveLoad? | False | P8 | P8 | None |
roomOps$0A | $0A | screenEffect? | False | P16 | None | None |
roomOps$0B | $0B | setRGBRoomIntensity | False | P16 | P16 | NS |
roomOps$0C | $0C | setRoomShadow | False | P16 | P16 | NS |
roomOps$0D | $0D | saveString | False | P8 | A0 | None |
roomOps$0E | $0E | loadString | False | P8 | A0 | None |
roomOps$0F | $0F | palManipulate | False | P8 | NS | NS |
roomOps$10 | $10 | colorCycleDelay | False | P8 | P8 | None |
saveRestoreVerbs | $AB | N/A | False | NS | NS | NS |
saveRestoreVerbs$01 | $01 | saveVerbs | False | None | None | None |
saveRestoreVerbs$02 | $02 | restoreVerbs | False | None | None | None |
saveRestoreVerbs$03 | $03 | deleteVerbs | False | None | None | None |
setCameraAt | $32 | == | False | P16 | None | None |
setObjectName | $54 | == | False | P16 | A0 | None |
setOwnerOf | $29 | == | False | P16 | P8 | None |
setState | $07 | == | False | P16 | P8 | None |
setVarRange | $26 | == | True | B | NS | NS |
soundKludge | $4C | == | False | L | None | None |
startMusic | $02 | == | False | P8 | None | None |
startObject | $37 | == | False | P16 | P8 | L |
startScript | $0A | == | False | P8 | L | None |
startSound | $1C | == | False | P8 | None | None |
stopMusic | $20 | == | False | None | None | None |
stopObjectCode | $A0 | == | False | None | None | None |
stopObjectScript | $6E | == | False | P16 | None | None |
stopScript | $62 | == | False | P8 | None | None |
stopSound | $3C | == | False | P8 | None | None |
stringOps | $27 | == | False | SO | None | None |
stringOps$01 | $01 | PutCodeInString | False | P8 | A0 | None |
stringOps$02 | $02 | CopyString | False | P8 | P8 | None |
stringOps$03 | $03 | SetStringChar | False | P8 | P8 | B |
stringOps$04 | $04 | GetStringChar | True | P8 | P8 | None |
stringOps$05 | $05 | CreateString | False | P8 | P8 | None |
subtract | $3A | (inline) | True | P16 | None | None |
systemOps | $98 | systemOps | False | SO | None | None |
systemOps$01 | $01 | N/A | False | None | None | None |
systemOps$02 | $02 | N/A | False | None | None | None |
systemOps$03 | $03 | N/A | False | None | None | None |
verbOps | $7A | VerbOps | False | P8 | SO+ | FF |
verbOps$01 | $01 | Image | False | P16 | None | None |
verbOps$02 | $02 | Text | False | A0 | None | None |
verbOps$03 | $03 | Color | False | P8 | None | None |
verbOps$04 | $04 | HiColor | False | P8 | None | None |
verbOps$05 | $05 | SetXY | False | P16 | P16 | None |
verbOps$06 | $06 | On | False | None | None | None |
verbOps$07 | $07 | Off | False | None | None | None |
verbOps$08 | $08 | Delete | False | None | None | None |
verbOps$09 | $09 | New | False | None | None | None |
verbOps$10 | $10 | DimColor | False | P8 | None | None |
verbOps$11 | $11 | Dim | False | None | None | None |
verbOps$12 | $12 | Key | False | P8 | None | None |
verbOps$13 | $13 | Center | False | None | None | None |
verbOps$14 | $14 | SetToString | False | P16 | None | None |
verbOps$16 | $16 | SetToObject | False | P16 | P8 | None |
verbOps$17 | $17 | BackColor | False | P8 | None | None |
wait | $AE | N/A | False | SO | None | None |
wait$01 | $01 | WaitForActor | False | P8 | None | None |
wait$02 | $02 | WaitForMessage | False | None | None | None |
wait$03 | $03 | WaitForCamera | False | None | None | None |
wait$04 | $04 | WaitForSentence | False | None | None | None |
walkActorTo | $1E | == | False | P8 | P16 | P16 |
walkActorToActor | $0D | == | False | P8 | P8 | B |
walkActorToObject | $36 | == | False | P8 | P16 | None |