[Scummvm-git-logs] scummvm master -> e14b23291870d9ef1520c4f6922a015e6fe2818b

AndywinXp noreply at scummvm.org
Sun Feb 26 09:53:57 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e14b232918 SCUMM: Label v6+ subops


Commit: e14b23291870d9ef1520c4f6922a015e6fe2818b
    https://github.com/scummvm/scummvm/commit/e14b23291870d9ef1520c4f6922a015e6fe2818b
Author: BLooperZ (blooperz at users.noreply.github.com)
Date: 2023-02-26T10:53:53+01:00

Commit Message:
SCUMM: Label v6+ subops

Changed paths:
    engines/scumm/he/intern_he.h
    engines/scumm/he/script_v100he.cpp
    engines/scumm/he/script_v60he.cpp
    engines/scumm/he/script_v70he.cpp
    engines/scumm/he/script_v71he.cpp
    engines/scumm/he/script_v72he.cpp
    engines/scumm/he/script_v80he.cpp
    engines/scumm/he/script_v90he.cpp
    engines/scumm/script_v6.cpp
    engines/scumm/script_v8.cpp
    engines/scumm/scumm_v6.h
    engines/scumm/scumm_v8.h


diff --git a/engines/scumm/he/intern_he.h b/engines/scumm/he/intern_he.h
index 96030d22f08..0c7a2e27ee8 100644
--- a/engines/scumm/he/intern_he.h
+++ b/engines/scumm/he/intern_he.h
@@ -47,6 +47,20 @@ class CUP_Player;
 
 class ScummEngine_v60he : public ScummEngine_v6 {
 protected:
+	enum SubOpType {
+		SO_ACTOR_DEFAULT_CLIPPED = 30,
+		SO_BACKGROUND_ON = 218,
+		SO_BACKGROUND_OFF = 219,
+		SO_ROOM_COPY_PALETTE = 220,
+		SO_ROOM_SAVEGAME_BY_NAME = 221,
+		SO_SOUND_START_VOLUME = 222,
+		SO_SOUND_VOLUME_RAMP = 223,
+		SO_SOUND_FREQUENCY = 224,
+		SO_TALKIE = 225,
+		SO_OBJECT_ORDER = 234,
+		SO_ROOM_PALETTE_IN_ROOM = 236,
+		SO_COLOR_LIST = 249,
+	};
 
 public:
 	Common::SeekableReadStream *_hInFileTable[17];
@@ -134,6 +148,44 @@ protected:
 		HE_SND_PAN = 128
 	};
 
+	enum SubOpType {
+		SO_SOFT = 9,
+		SO_IMAGE_LOADED = 18,
+		SO_VARIABLE = 23,
+		SO_SOUND_VOLUME = 25,
+		SO_NOW = 56,
+		SO_PRELOAD_SCRIPT = 120,
+		SO_PRELOAD_SOUND = 121,
+		SO_PRELOAD_COSTUME = 122,
+		SO_PRELOAD_ROOM = 123,
+		SO_UNLOCK_IMAGE = 159,
+		SO_SOUND_ADD = 164,
+		SO_NUKE_IMAGE = 192,
+		SO_LOAD_IMAGE = 201,
+		SO_LOCK_IMAGE = 202,
+		SO_PRELOAD_IMAGE = 203,
+		SO_ROOM_LOADED = 226,
+		SO_COSTUME_LOADED = 227,
+		SO_SOUND_LOADED = 228,
+		SO_SCRIPT_LOADED = 229,
+		SO_SOUND_CHANNEL = 230,
+		SO_AT = 231,
+		SO_SOUND_START = 232,
+		SO_LOCK_FLOBJECT = 233,
+		SO_UNLOCK_FLOBJECT = 235,
+		SO_PRELOAD_FLUSH = 239,
+		SO_PAUSE_MESSAGE = 240,
+		SO_PAUSE_TITLE = 241,
+		SO_PAUSE_OPTION = 242,
+		SO_TITLE_BAR = 243,
+		SO_QUIT_QUIT = 244,
+		SO_SOUND_LOOPING = 245,
+		SO_START_SYSTEM = 250,
+		SO_START_SYSTEM_STRING = 251,
+		SO_RESTART_STRING = 252,
+		SO_RESTART_ARRAY = 253,
+	};
+
 	ResExtractor *_resExtractor;
 
 	byte *_heV7DiskOffsets;
@@ -204,6 +256,12 @@ class ScummEngine_v71he : public ScummEngine_v70he {
 	friend class Moonbase;
 
 protected:
+	enum SubOpType {
+		SO_SET_POLYGON = 246,
+		SO_DELETE_POLYGON = 247,
+		SO_SET_POLYGON_LOCAL = 248,
+	};
+
 	bool _skipProcessActors;
 
 public:
@@ -264,6 +322,35 @@ public:
 
 class ScummEngine_v72he : public ScummEngine_v71he {
 protected:
+	enum SubOpType {
+		SO_NONE = 1,
+		SO_BIT = 2,  // SO_INT1
+		SO_NIBBLE = 3,  // SO_INT4
+		SO_BYTE = 4,  // SO_INT8
+		SO_INT = 5,  // SO_INT16
+		SO_DWORD = 6,  // SO_INT32
+		SO_STRING = 7,
+		SO_ARRAY = 8,
+		SO_SOUND_SIZE = 13,
+		SO_ROOM_SIZE = 14,
+		SO_IMAGE_SIZE = 15,
+		SO_COSTUME_SIZE = 16,
+		SO_SCRIPT_SIZE = 17,
+		SO_CONDITION = 21,
+		SO_FLUSH_OBJECT_DRAW_QUE = 22,
+		SO_TALK_CONDITION = 24,
+		SO_UPDATE_SCREEN = 26,
+		SO_PRIORITY = 43,
+		SO_AT_IMAGE = 62,
+		SO_IMAGE = 63,
+		SO_ACTOR_DEFAULT_CLIPPED = 64,
+		SO_ERASE = 68,
+		SO_COMPLEX_ARRAY_ASSIGNMENT = 126,
+		SO_COMPLEX_ARRAY_COPY_OPERATION = 127,
+		SO_RANGE_ARRAY_ASSIGNMENT = 128,
+		SO_FORMATTED_STRING = 194,
+		SO_UNDIM_ARRAY = 204,
+	};
 
 #include "common/pack-start.h"	// START STRUCT PACKING
 
@@ -396,6 +483,13 @@ protected:
 class ScummEngine_v80he : public ScummEngine_v72he {
 protected:
 	int32 _heSndResId, _curSndId, _sndPtrOffs, _sndTmrOffs, _sndDataSize;
+	enum SubOpType {
+		SO_CURSOR_IMAGE = 19,
+		SO_CURSOR_COLOR_IMAGE = 20,
+		SO_ADD = 27,
+		SO_ACTOR = 55,
+		SO_BUTTON = 60,
+	};
 
 public:
 	ScummEngine_v80he(OSystem *syst, const DetectorResult &dr);
@@ -448,6 +542,55 @@ class ScummEngine_v90he : public ScummEngine_v80he {
 
 protected:
 	FloodFillParameters _floodFillParams;
+	enum SubOpType {
+		SO_COORD_2D = 28,
+		SO_COORD_3D = 29,
+		SO_XPOS = 30,
+		SO_YPOS = 31,
+		SO_WIDTH = 32,
+		SO_HEIGHT = 33,
+		SO_STEP_DIST_X = 34,
+		SO_STEP_DIST_Y = 35,
+		SO_COUNT = 36,
+		SO_GROUP = 37,
+		SO_DRAW_XPOS = 38,
+		SO_DRAW_YPOS = 39,
+		SO_PROPERTY = 42,
+		SO_MOVE = 44,
+		SO_FIND = 45,
+		SO_GENERAL_CLIP_STATE = 46,
+		SO_GENERAL_CLIP_RECT = 47,
+		SO_DRAW = 48,
+		SO_LOAD = 49,
+		SO_SAVE = 50,
+		SO_CAPTURE = 51,
+		SO_STATE = 52,
+		SO_ANGLE = 53,
+		SO_SET_FLAGS = 54,
+		SO_INIT = 57,
+		SO_STEP_DIST = 77,
+		SO_ANIMATION = 82,
+		SO_PALETTE = 86,
+		SO_UPDATE = 124,
+		SO_CLASS = 125,
+		SO_SORT = 129,
+		SO_HISTOGRAM = 130,
+		SO_POLY_POLYGON = 131,
+		SO_CHANNEL = 132,
+		SO_RENDER_RECTANGLE = 133,
+		SO_RENDER_LINE = 134,
+		SO_RENDER_PIXEL = 135,
+		SO_RENDER_FLOOD_FILL = 136,
+		SO_RENDER_INTO_IMAGE = 137,
+		SO_NEW_GENERAL_PROPERTY = 139,
+		SO_MASK = 140,
+		SO_FONT_START = 141,
+		SO_FONT_CREATE = 142,
+		SO_FONT_RENDER = 143,
+		SO_CLOSE = 165,
+		SO_RENDER_ELLIPSE = 189,
+		SO_FONT_END = 196,
+	};
 
 	struct VideoParameters {
 		byte filename[260];
@@ -595,11 +738,213 @@ friend class AI;
 friend class Moonbase;
 friend class Net;
 
+// The following engine versions use sub opcodes from this version
+friend class ScummEngine_v71he;
+friend class ScummEngine_v72he;
+friend class ScummEngine_v90he;
+friend class ScummEngine_v80he;
+
 protected:
 	ResType _heResType;
 	int32 _heResId;
 
 	byte _debugInputBuffer[256];
+	enum SubOpType {
+		// COMMON
+		SO_INIT = 0,
+		SO_ACTOR = 1,
+		SO_ANGLE = 2,
+		SO_ANIMATION = 3,
+		SO_ANIMATION_SPEED = 4,
+		SO_ARRAY = 5,
+		SO_AT = 6,
+		SO_AT_IMAGE = 7,
+		SO_BACKGROUND_OFF = 8,
+		SO_BACKGROUND_ON = 9,
+		SO_CAPTURE = 11,
+		SO_CENTER = 12,
+		SO_CHANNEL = 13,
+		SO_CHARSET_SET = 14, // SO_CHARSET
+		SO_CHARSET_COLOR = 15,
+		SO_CLASS = 16,
+		SO_CLIPPED = 18,
+		SO_CLOSE = 19,
+		SO_COLOR = 20,
+		SO_COLOR_LIST = 21,
+		SO_CONDITION = 22,
+		SO_COORD_2D = 23,
+		SO_COORD_3D = 24,
+		SO_COSTUME = 25,
+		SO_COUNT = 26,
+		SO_DEFAULT = 27,
+		SO_DELETE_POLYGON = 28,
+		SO_DRAW = 29,
+		SO_DRAW_XPOS = 30,
+		SO_DRAW_YPOS = 31,
+		SO_ERASE = 32,
+		SO_FIND = 33,
+		SO_FLOBJECT = 34,
+		SO_FORMATTED_STRING = 35,
+		SO_GENERAL_CLIP_RECT = 36,
+		SO_GENERAL_CLIP_STATE = 37,
+		SO_GROUP = 38,
+		SO_HEIGHT = 39,
+		SO_IMAGE = 40,
+		SO_BIT = 41, // SO_INT1
+		SO_INT = 42, // SO_INT16
+		SO_DWORD = 43, // SO_INT32
+		SO_NIBBLE = 44, // SO_INT4
+		SO_BYTE = 45, // SO_INT8
+		SO_LEFT = 46,
+		SO_LOAD = 47,
+		SO_MASK = 48,
+		SO_MOVE = 49,
+		SO_MUMBLE = 51,
+		SO_NAME = 52,
+		SO_NEW = 53,
+		SO_NEW_GENERAL_PROPERTY = 54,
+		SO_NOW = 55,
+		SO_OVERHEAD = 56,
+		SO_PALETTE = 57,
+		SO_POLY_TO_POLY = 58,
+		SO_PRIORITY = 59,
+		SO_PROPERTY = 60,
+		SO_RESTART = 61,
+		SO_ROOM = 62,
+		SO_ROOM_PALETTE = 63,
+		SO_SAVE = 64,
+		SO_SCALE = 65,
+		SO_SCRIPT = 66,
+		SO_SET_FLAGS = 67,
+		SO_SET_POLYGON = 68,
+		SO_SET_POLYGON_LOCAL = 69,
+		SO_SHADOW = 70,
+		SO_SOUND = 72,
+		SO_STATE = 73,
+		SO_STEP_DIST = 74,
+		SO_STEP_DIST_X = 75,
+		SO_STEP_DIST_Y = 76,
+		SO_STRING = 77,
+		SO_TALKIE = 78,
+		SO_TEXTSTRING = 79,
+		SO_TITLE_BAR = 80,
+		SO_TO = 81,
+		SO_UPDATE = 82,
+		SO_VARIABLE = 83,
+		SO_WIDTH = 84,
+		SO_XPOS = 85,
+		SO_YPOS = 86,
+		SO_ALWAYS_ZCLIP = 87,
+		SO_IMAGE_ZCLIP = 88,
+		SO_NEVER_ZCLIP = 89,
+		SO_BASEOP = 91,
+		SO_END = 92,
+
+		// ACTOR
+		SO_ACTOR_DEFAULT_CLIPPED = 128,
+		SO_ACTOR_INIT = 129,
+		SO_ACTOR_SOUNDS = 130,
+		SO_ACTOR_WIDTH = 131,
+		SO_ANIMATION_DEFAULT = 132,
+		SO_ELEVATION = 133,
+		SO_FOLLOW_BOXES = 134,
+		SO_IGNORE_BOXES = 135,
+		SO_ACTOR_IGNORE_TURNS_OFF = 136, // SO_IGNORE_TURNS_OFF
+		SO_ACTOR_IGNORE_TURNS_ON = 137, // SO_IGNORE_TURNS_ON
+		SO_INIT_ANIMATION = 138,
+		SO_STAND_ANIMATION = 139,
+		SO_TALK_ANIMATION = 140,
+		SO_TALK_COLOR = 141,
+		SO_TALK_CONDITION = 142,
+		SO_TEXT_OFFSET = 143,
+		SO_WALK_ANIMATION = 144,
+
+		// ARRAY
+		SO_ASSIGN_2DIM_LIST = 128,
+		SO_ASSIGN_INT_LIST = 129,
+		SO_COMPLEX_ARRAY_ASSIGNMENT = 130,
+		SO_COMPLEX_ARRAY_COPY_OPERATION = 131,
+		SO_COMPLEX_ARRAY_MATH_OPERATION = 132,
+		SO_RANGE_ARRAY_ASSIGNMENT = 133,
+		SO_SORT = 134,
+		SO_UNDIM_ARRAY = 135,
+
+		// HEAP
+		SO_CLEAR_HEAP = 128,
+		SO_PRELOAD_FLUSH = 129,
+		SO_LOCK = 132,
+		SO_NUKE = 133,
+		SO_OFF_HEAP = 134,
+		SO_ON_HEAP = 135,
+		SO_PRELOAD = 136,
+		SO_UNLOCK = 137,
+
+		// IMAGE
+		SO_FONT_CREATE = 128,
+		SO_FONT_END = 129,
+		SO_FONT_RENDER = 130,
+		SO_FONT_START = 131,
+		SO_HISTOGRAM = 132,
+		SO_RENDER_ELLIPSE = 133,
+		SO_RENDER_FLOOD_FILL = 134,
+		SO_RENDER_INTO_IMAGE = 135,
+		SO_RENDER_LINE = 136,
+		SO_RENDER_PIXEL = 137,
+		SO_RENDER_RECTANGLE = 138,
+
+		// CURSOR
+		SO_CURSOR_IMAGE = 128,
+		SO_CURSOR_COLOR_IMAGE = 129,
+		SO_CURSOR_COLOR_PAL_IMAGE = 130,
+		SO_CURSOR_HOTSPOT = 132,
+		SO_CURSOR_ON = 134,
+		SO_CURSOR_OFF = 135,
+		SO_CURSOR_SOFT_ON = 136,
+		SO_CURSOR_SOFT_OFF = 137,
+		SO_USERPUT_ON = 139,
+		SO_USERPUT_OFF = 140,
+		SO_USERPUT_SOFT_ON = 141,
+		SO_USERPUT_SOFT_OFF = 142,
+
+		// ROOM
+		SO_OBJECT_ORDER = 129,
+		SO_ROOM_COPY_PALETTE = 130,
+		SO_ROOM_FADE = 131,
+		SO_ROOM_INTENSITY = 132,
+		SO_ROOM_INTENSITY_RGB = 133,
+		SO_ROOM_NEW_PALETTE = 134,
+		SO_ROOM_PALETTE_IN_ROOM = 135,
+		SO_ROOM_SAVEGAME = 136,
+		SO_ROOM_SAVEGAME_BY_NAME = 137,
+		SO_ROOM_SCREEN = 138,
+		SO_ROOM_SCROLL = 139,
+
+		// SYSTEM
+		SO_FLUSH_OBJECT_DRAW_QUEUE = 128,
+		SO_PAUSE_TITLE = 131,
+		SO_QUIT = 132,
+		SO_QUIT_QUIT = 133,
+		SO_RESTART_STRING = 134,
+		SO_START_SYSTEM_STRING = 135,
+		SO_UPDATE_SCREEN = 136,
+
+		// SOUND
+		SO_SOUND_ADD = 128,
+		SO_SOUND_CHANNEL = 129,
+		SO_SOUND_FREQUENCY = 130,
+		SO_SOUND_LOOPING = 131,
+		SO_SOUND_MODIFY = 132,
+		SO_SOUND_PAN = 133,
+		SO_SOUND_START = 134,
+		SO_SOUND_SOFT = 135,
+		SO_SOUND_VOLUME = 136,
+
+		// WAIT
+		SO_WAIT_FOR_ACTOR = 128,
+		SO_WAIT_FOR_CAMERA = 129,
+		SO_WAIT_FOR_MESSAGE = 130,
+		SO_WAIT_FOR_SENTENCE = 131,
+	};
 
 public:
 	Moonbase *_moonbase;
diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp
index 5431f84c153..3dee0a18b3f 100644
--- a/engines/scumm/he/script_v100he.cpp
+++ b/engines/scumm/he/script_v100he.cpp
@@ -340,7 +340,7 @@ void ScummEngine_v100he::o100_actorOps() {
 	byte string[256];
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 129) {
+	if (subOp == SO_ACTOR_INIT) {
 		_curActor = pop();
 		return;
 	}
@@ -350,94 +350,94 @@ void ScummEngine_v100he::o100_actorOps() {
 		return;
 
 	switch (subOp) {
-	case 0:
+	case SO_INIT:
 		// freddicove Ru Updated
 		// FIXME: check stack parameters
 		debug(0,"o100_actorOps: case 0 UNHANDLED");
 		break;
-	case 3:			// SO_ANIMATION
+	case SO_ANIMATION:
 		pop();
 		pop();
 		pop();
 		break;
-	case 4:			// SO_ANIMATION_SPEED
+	case SO_ANIMATION_SPEED:
 		a->setAnimSpeed(pop());
 		break;
-	case 6:			// SO_AT
+	case SO_AT:
 		j = pop();
 		i = pop();
 		a->putActor(i, j);
 		break;
-	case 8:			// SO_BACKGROUND_OFF
+	case SO_BACKGROUND_OFF:
 		a->_drawToBackBuf = false;
 		a->_needRedraw = true;
 		a->_needBgReset = true;
 		break;
-	case 9:			// SO_BACKGROUND_ON
+	case SO_BACKGROUND_ON:
 		a->drawActorToBackBuf(a->getPos().x, a->getPos().y);
 		break;
-	case 14:		// SO_CHARSET
+	case SO_CHARSET_SET:
 		a->_charset = pop();
 		break;
-	case 18:		// SO_CLIPPED
+	case SO_CLIPPED:
 		a->_clipOverride.bottom = pop();
 		a->_clipOverride.right = pop();
 		a->_clipOverride.top = pop();
 		a->_clipOverride.left = pop();
 		adjustRect(a->_clipOverride);
 		break;
-	case 22:		// SO_CONDITION
+	case SO_CONDITION:
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; ++i) {
 			a->setUserCondition(args[i] & 0x7F, args[i] & 0x80);
 		}
 		break;
-	case 25:		// SO_COSTUME
+	case SO_COSTUME:
 		a->setActorCostume(pop());
 		break;
-	case 27:		// SO_DEFAULT
+	case SO_DEFAULT:
 		a->initActor(0);
 		break;
-	case 32:		// SO_ERASE
+	case SO_ERASE:
 		k = pop();
 		a->setHEFlag(1, k);
 		break;
-	case 52:		// SO_ACTOR_NAME
+	case SO_NAME:
 		copyScriptString(string, sizeof(string));
 		loadPtrToResource(rtActorName, a->_number, string);
 		break;
-	case 53:		// SO_ACTOR_NEW
+	case SO_NEW:
 		a->initActor(2);
 		break;
-	case 57:		// SO_PALETTE
+	case SO_PALETTE:
 		j = pop();
 		i = pop();
 		assertRange(0, i, 255, "palette slot");
 		a->remapActorPaletteColor(i, j);
 		a->_needRedraw = true;
 		break;
-	case 59:		// SO_PRIORITY
+	case SO_PRIORITY:
 		a->_layer = pop();
 		a->_needRedraw = true;
 		break;
-	case 63:		// SO_ROOM_PALETTE
+	case SO_ROOM_PALETTE:
 		a->_hePaletteNum = pop();
 		a->_needRedraw = true;
 		break;
-	case 65:		// SO_SCALE
+	case SO_SCALE:
 		i = pop();
 		a->setScale(i, i);
 		break;
-	case 70:		// SO_SHADOW
+	case SO_SHADOW:
 		a->_heXmapNum = pop();
 		a->_needRedraw = true;
 		break;
-	case 74:		// SO_STEP_DIST
+	case SO_STEP_DIST:
 		j = pop();
 		i = pop();
 		a->setActorWalkSpeed(i, j);
 		break;
-	case 78:		// SO_TALKIE
+	case SO_TALKIE:
 		{
 		copyScriptString(string, sizeof(string));
 		int slot = pop();
@@ -450,84 +450,84 @@ void ScummEngine_v100he::o100_actorOps() {
 		a->_heTalkQueue[slot].color = a->_talkColor;
 		}
 		break;
-	case 83:		// SO_ACTOR_VARIABLE
+	case SO_VARIABLE:
 		i = pop();
 		a->setAnimVar(pop(), i);
 		break;
-	case 87:		// SO_ALWAYS_ZCLIP
+	case SO_ALWAYS_ZCLIP:
 		a->_forceClip = pop();
 		break;
-	case 89:		// SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		a->_forceClip = 0;
 		break;
-	case 128:		// SO_ACTOR_DEFAULT_CLIPPED
+	case SO_ACTOR_DEFAULT_CLIPPED:
 		_actorClipOverride.bottom = pop();
 		_actorClipOverride.right = pop();
 		_actorClipOverride.top = pop();
 		_actorClipOverride.left = pop();
 		adjustRect(_actorClipOverride);
 		break;
-	case 130:		// SO_SOUND
+	case SO_ACTOR_SOUNDS:
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; i++)
 			a->_sound[i] = args[i];
 		break;
-	case 131:		// SO_ACTOR_WIDTH
+	case SO_ACTOR_WIDTH:
 		a->_width = pop();
 		break;
-	case 132:		// SO_ANIMATION_DEFAULT
+	case SO_ANIMATION_DEFAULT:
 		a->_initFrame = 1;
 		a->_walkFrame = 2;
 		a->_standFrame = 3;
 		a->_talkStartFrame = 4;
 		a->_talkStopFrame = 5;
 		break;
-	case 133:		// SO_ELEVATION
+	case SO_ELEVATION:
 		a->setElevation(pop());
 		break;
-	case 134:		// SO_FOLLOW_BOXES
+	case SO_FOLLOW_BOXES:
 		a->_ignoreBoxes = 0;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 135:		// SO_IGNORE_BOXES
+	case SO_IGNORE_BOXES:
 		a->_ignoreBoxes = 1;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 136:		// SO_ACTOR_IGNORE_TURNS_OFF
+	case SO_ACTOR_IGNORE_TURNS_OFF:
 		a->_ignoreTurns = false;
 		break;
-	case 137:		// SO_ACTOR_IGNORE_TURNS_ON
+	case SO_ACTOR_IGNORE_TURNS_ON:
 		a->_ignoreTurns = true;
 		break;
-	case 138:		// SO_INIT_ANIMATION
+	case SO_INIT_ANIMATION:
 		a->_initFrame = pop();
 		break;
-	case 139:		// SO_STAND_ANIMATION
+	case SO_STAND_ANIMATION:
 		a->_standFrame = pop();
 		break;
-	case 140:		// SO_TALK_ANIMATION
+	case SO_TALK_ANIMATION:
 		a->_talkStopFrame = pop();
 		a->_talkStartFrame = pop();
 		break;
-	case 141:		// SO_TALK_COLOR
+	case SO_TALK_COLOR:
 		a->_talkColor = pop();
 		break;
-	case 142:		// SO_TALK_CONDITION
+	case SO_TALK_CONDITION:
 		k = pop();
 		if (k == 0)
 			k = _rnd.getRandomNumberRng(1, 10);
 		a->_heNoTalkAnimation = 1;
 		a->setTalkCondition(k);
 		break;
-	case 143:		// SO_TEXT_OFFSET
+	case SO_TEXT_OFFSET:
 		a->_talkPosY = pop();
 		a->_talkPosX = pop();
 		break;
-	case 144:		// SO_WALK_ANIMATION
+	case SO_WALK_ANIMATION:
 		a->_walkFrame = pop();
 		break;
 	default:
@@ -548,20 +548,20 @@ void ScummEngine_v100he::o100_arrayOps() {
 	debug(9,"o100_arrayOps: array %d case %d", array, subOp);
 
 	switch (subOp) {
-	case 35:			// SO_FORMATTED_STRING
+	case SO_FORMATTED_STRING:
 		decodeScriptString(string);
 		len = resStrLen(string);
 		data = defineArray(array, kStringArray, 0, 0, 0, len);
 		memcpy(data, string, len);
 		break;
-	case 77:			// SO_STRING
+	case SO_STRING:
 		copyScriptString(string, sizeof(string));
 		len = resStrLen(string);
 		data = defineArray(array, kStringArray, 0, 0, 0, len);
 		memcpy(data, string, len);
 		break;
 
-	case 128:			// SO_ASSIGN_2DIM_LIST
+	case SO_ASSIGN_2DIM_LIST:
 		len = getStackList(list, ARRAYSIZE(list));
 		id = readVar(array);
 		if (id == 0)
@@ -571,7 +571,7 @@ void ScummEngine_v100he::o100_arrayOps() {
 			writeArray(array, c, len, list[len]);
 		}
 		break;
-	case 129:			// SO_ASSIGN_INT_LIST
+	case SO_ASSIGN_INT_LIST:
 		b = pop();
 		c = pop();
 		id = readVar(array);
@@ -582,7 +582,7 @@ void ScummEngine_v100he::o100_arrayOps() {
 			writeArray(array, 0, b + c, pop());
 		}
 		break;
-	case 130:			// SO_COMPLEX_ARRAY_ASSIGNMENT
+	case SO_COMPLEX_ARRAY_ASSIGNMENT:
 		len = getStackList(list, ARRAYSIZE(list));
 		dim1end = pop();
 		dim1start = pop();
@@ -606,7 +606,7 @@ void ScummEngine_v100he::o100_arrayOps() {
 			dim2start++;
 		}
 		break;
-	case 131:			// SO_COMPLEX_ARRAY_COPY_OPERATION
+	case SO_COMPLEX_ARRAY_COPY_OPERATION:
 		{
 			int a2_dim1end = pop();
 			int a2_dim1start = pop();
@@ -623,7 +623,7 @@ void ScummEngine_v100he::o100_arrayOps() {
 			copyArray(array, a1_dim2start, a1_dim2end, a1_dim1start, a1_dim1end, array2, a2_dim2start, a2_dim2end, a2_dim1start, a2_dim1end);
 		}
 		break;
-	case 132:			// SO_COMPLEX_ARRAY_MATH_OPERATION
+	case SO_COMPLEX_ARRAY_MATH_OPERATION:
 		{
 			// Used by room 2 script 2180 in Moonbase Commander (modify-line-of-sight)
 			int array2 = fetchScriptWord();
@@ -695,7 +695,7 @@ void ScummEngine_v100he::o100_arrayOps() {
 			}
 			break;
 		}
-	case 133:			// SO_RANGE_ARRAY_ASSIGNMENT
+	case SO_RANGE_ARRAY_ASSIGNMENT:
 		b = pop();
 		c = pop();
 		dim1end = pop();
@@ -770,22 +770,22 @@ void ScummEngine_v100he::o100_dim2dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 41:		// SO_BIT_ARRAY
+	case SO_BIT:
 		data = kBitArray;
 		break;
-	case 42:		// SO_INT_ARRAY
+	case SO_INT:
 		data = kIntArray;
 		break;
-	case 43:
+	case SO_DWORD:
 		data = kDwordArray;
 		break;
-	case 44:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE:
 		data = kNibbleArray;
 		break;
-	case 45:		// SO_BYTE_ARRAY
+	case SO_BYTE:
 		data = kByteArray;
 		break;
-	case 77:		// SO_STRING_ARRAY
+	case SO_STRING:
 		data = kStringArray;
 		break;
 	default:
@@ -803,25 +803,25 @@ void ScummEngine_v100he::o100_dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 41:		// SO_BIT_ARRAY
+	case SO_BIT:
 		data = kBitArray;
 		break;
-	case 42:		// SO_INT_ARRAY
+	case SO_INT:
 		data = kIntArray;
 		break;
-	case 43:
+	case SO_DWORD:
 		data = kDwordArray;
 		break;
-	case 44:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE:
 		data = kNibbleArray;
 		break;
-	case 45:		// SO_BYTE_ARRAY
+	case SO_BYTE:
 		data = kByteArray;
 		break;
-	case 77:		// SO_STRING_ARRAY
+	case SO_STRING:
 		data = kStringArray;
 		break;
-	case 135:		// SO_UNDIM_ARRAY
+	case SO_UNDIM_ARRAY:
 		nukeArray(fetchScriptWord());
 		return;
 	default:
@@ -844,13 +844,13 @@ void ScummEngine_v100he::o100_drawLine() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 1:
+	case SO_ACTOR:
 		drawLine(x1, y1, x, unk1, unk2, 2, id);
 		break;
-	case 20:
+	case SO_COLOR:
 		drawLine(x1, y1, x, unk1, unk2, 1, id);
 		break;
-	case 40:
+	case SO_IMAGE:
 		drawLine(x1, y1, x, unk1, unk2, 3, id);
 		break;
 	default:
@@ -864,17 +864,17 @@ void ScummEngine_v100he::o100_drawObject() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 6:
+	case SO_AT:
 		state = 1;
 		y = pop();
 		x = pop();
 		break;
-	case 7:
+	case SO_AT_IMAGE:
 		state = pop();
 		y = pop();
 		x = pop();
 		break;
-	case 40:
+	case SO_IMAGE:
 		state = pop();
 		if (state == 0)
 			state = 1;
@@ -904,7 +904,7 @@ void ScummEngine_v100he::o100_floodFill() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0:
+	case SO_INIT:
 		_floodFillParams.reset();
 		_floodFillParams.box.left = 0;
 		_floodFillParams.box.top = 0;
@@ -912,24 +912,24 @@ void ScummEngine_v100he::o100_floodFill() {
 		_floodFillParams.box.bottom = 479;
 		adjustRect(_floodFillParams.box);
 		break;
-	case 6:
+	case SO_AT:
 		_floodFillParams.y = pop();
 		_floodFillParams.x = pop();
 		break;
-	case 18:
+	case SO_CLIPPED:
 		_floodFillParams.box.bottom = pop();
 		_floodFillParams.box.right = pop();
 		_floodFillParams.box.top = pop();
 		_floodFillParams.box.left = pop();
 		adjustRect(_floodFillParams.box);
 		break;
-	case 20:
+	case SO_COLOR:
 		_floodFillParams.flags = pop();
 		break;
-	case 67:
+	case SO_SET_FLAGS:
 		pop();
 		break;
-	case 92:
+	case SO_END:
 		floodFill(&_floodFillParams, this);
 		break;
 	default:
@@ -944,10 +944,10 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0: // SO_INIT
+	case SO_INIT:
 		_curSpriteGroupId = pop();
 		break;
-	case 6: // SO_MOVE
+	case SO_AT:
 		value2 = pop();
 		value1 = pop();
 		if (!_curSpriteGroupId)
@@ -955,7 +955,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 
 		_sprite->setGroupPosition(_curSpriteGroupId, value1, value2);
 		break;
-	case 18: // SO_CLIPPED
+	case SO_CLIPPED:
 		value4 = pop();
 		value3 = pop();
 		value2 = pop();
@@ -965,7 +965,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 
 		_sprite->setGroupBounds(_curSpriteGroupId, value1, value2, value3, value4);
 		break;
-	case 38: // SO_GROUP
+	case SO_GROUP:
 		type = pop() - 1;
 		switch (type) {
 		case 0: // SPRGRPOP_MOVE
@@ -1028,14 +1028,14 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 			error("o100_setSpriteGroupInfo subOp 38: Unknown case %d", subOp);
 		}
 		break;
-	case 40: // SO_IMAGE
+	case SO_IMAGE:
 		value1 = pop();
 		if (!_curSpriteGroupId)
 			break;
 
 		_sprite->setGroupImage(_curSpriteGroupId, value1);
 		break;
-	case 49: // SO_AT
+	case SO_MOVE:
 		value2 = pop();
 		value1 = pop();
 		if (!_curSpriteGroupId)
@@ -1043,28 +1043,28 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 
 		_sprite->moveGroup(_curSpriteGroupId, value1, value2);
 		break;
-	case 52: // SO_NAME
+	case SO_NAME:
 		copyScriptString(string, sizeof(string));
 		break;
-	case 53: // SO_NEW
+	case SO_NEW:
 		if (!_curSpriteGroupId)
 			break;
 
 		_sprite->resetGroup(_curSpriteGroupId);
 		break;
-	case 54: // SO_NEW_GENERAL_PROPERTY
+	case SO_NEW_GENERAL_PROPERTY:
 		// dummy case
 		pop();
 		pop();
 		break;
-	case 59: // SO_PRIORITY
+	case SO_PRIORITY:
 		value1 = pop();
 		if (!_curSpriteGroupId)
 			break;
 
 		_sprite->setGroupPriority(_curSpriteGroupId, value1);
 		break;
-	case 60: // SO_PROPERTY
+	case SO_PROPERTY:
 		type = pop();
 		value1 = pop();
 		if (!_curSpriteGroupId)
@@ -1087,7 +1087,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
 			error("o100_setSpriteGroupInfo subOp 60: Unknown case %d", subOp);
 		}
 		break;
-	case 89: // SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		if (!_curSpriteGroupId)
 			break;
 
@@ -1104,23 +1104,23 @@ void ScummEngine_v100he::o100_resourceRoutines() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 14:
+	case SO_CHARSET_SET:
 		_heResType = rtCharset;
 		_heResId = pop();
 		break;
-	case 25:
+	case SO_COSTUME:
 		_heResType = rtCostume;
 		_heResId = pop();
 		break;
-	case 34:
+	case SO_FLOBJECT:
 		_heResType = rtFlObject;
 		_heResId = pop();
 		break;
-	case 40:
+	case SO_IMAGE:
 		_heResType = rtImage;
 		_heResId = pop();
 		break;
-	case 47:
+	case SO_LOAD:
 		if (_heResType == rtFlObject) {
 			room = getObjectRoom(_heResId);
 			loadFlObject(_heResId, room);
@@ -1130,26 +1130,26 @@ void ScummEngine_v100he::o100_resourceRoutines() {
 			ensureResourceLoaded(_heResType, _heResId);
 		}
 		break;
-	case 62:
+	case SO_ROOM:
 		_heResType = rtRoom;
 		_heResId = pop();
 		break;
-	case 66:
+	case SO_SCRIPT:
 		_heResType = rtScript;
 		_heResId = pop();
 		break;
-	case 72:
+	case SO_SOUND:
 		_heResType = rtSound;
 		_heResId = pop();
 		break;
-	case 128:
+	case SO_CLEAR_HEAP:
 		// TODO: Clear Heap
 		warning("STUB: o100_resourceRoutines: clear Heap");
 		break;
-	case 129:
+	case SO_PRELOAD_FLUSH:
 		// Dummy case
 		break;
-	case 132:
+	case SO_LOCK:
 		if (_heResType == rtScript && _heResId >= _numGlobalScripts)
 			break;
 
@@ -1162,23 +1162,23 @@ void ScummEngine_v100he::o100_resourceRoutines() {
 			_res->lock(_heResType, _heResId);
 		}
 		break;
-	case 133:
+	case SO_NUKE:
 		if (_heResType == rtCharset)
 			nukeCharset(_heResId);
 		else
 			_res->nukeResource(_heResType, _heResId);
 		break;
-	case 134:
-	case 135:
+	case SO_OFF_HEAP:
+	case SO_ON_HEAP:
 		// Heap related
 		break;
-	case 136:
+	case SO_PRELOAD:
 		if (_heResType == rtScript && _heResId >= _numGlobalScripts)
 			break;
 
 		//queueLoadResource(_heResType, _heResId);
 		break;
-	case 137:
+	case SO_UNLOCK:
 		if (_heResType == rtScript && _heResId >= _numGlobalScripts)
 			break;
 
@@ -1202,7 +1202,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0:
+	case SO_INIT:
 		_wizParams.img.resNum = pop();
 		_wizParams.processMode = 0;
 		_wizParams.processFlags = 0;
@@ -1213,21 +1213,21 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.spriteId = 0;
 		_wizParams.spriteGroup = 0;
 		break;
-	case 2:
+	case SO_ANGLE:
 		_wizParams.processFlags |= kWPFRotate;
 		_wizParams.angle = pop();
 		break;
-	case 6:
-	case 132:
+	case SO_AT:
+	case SO_CURSOR_HOTSPOT:
 		_wizParams.processFlags |= kWPFSetPos;
 		_wizParams.img.y1 = pop();
 		_wizParams.img.x1 = pop();
 		break;
-	case 7:
+	case SO_AT_IMAGE:
 		_wizParams.processFlags |= kWPFMaskImg;
 		_wizParams.sourceImage = pop();
 		break;
-	case 11:
+	case SO_CAPTURE:
 		_wizParams.processFlags |= kWPFClipBox | 0x100;
 		_wizParams.processMode = 2;
 		_wizParams.box.bottom = pop();
@@ -1237,7 +1237,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.compType = pop();
 		adjustRect(_wizParams.box);
 		break;
-	case 18:
+	case SO_CLIPPED:
 		_wizParams.processFlags |= kWPFClipBox;
 		_wizParams.box.bottom = pop();
 		_wizParams.box.right = pop();
@@ -1245,7 +1245,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.box.left = pop();
 		adjustRect(_wizParams.box);
 		break;
-	case 21:
+	case SO_COLOR_LIST:
 		b = pop();
 		a = pop();
 		_wizParams.processFlags |= kWPFRemapPalette;
@@ -1259,37 +1259,37 @@ void ScummEngine_v100he::o100_wizImageOps() {
 			++_wizParams.remapNum;
 		}
 		break;
-	case 29:
+	case SO_DRAW:
 		_wizParams.processMode = 1;
 		break;
-	case 36:
+	case SO_GENERAL_CLIP_RECT:
 		_wizParams.box.bottom = pop();
 		_wizParams.box.right = pop();
 		_wizParams.box.top = pop();
 		_wizParams.box.left = pop();
 		break;
-	case 37:
+	case SO_GENERAL_CLIP_STATE:
 		// Dummy case
 		pop();
 		break;
-	case 39:
+	case SO_HEIGHT:
 		_wizParams.processFlags |= kWPFUseDefImgHeight;
 		_wizParams.resDefImgH = pop();
 		break;
-	case 47:
+	case SO_LOAD:
 		_wizParams.processFlags |= kWPFUseFile;
 		_wizParams.processMode = 3;
 		copyScriptString(_wizParams.filename, sizeof(_wizParams.filename));
 		break;
-	case 53:
+	case SO_NEW:
 		_wizParams.processMode = 8;
 		break;
-	case 54:
+	case SO_NEW_GENERAL_PROPERTY:
 		_wizParams.processFlags |= kWPFParams;
 		_wizParams.params1 = pop();
 		_wizParams.params2 = pop();
 		break;
-	case 55:
+	case SO_NOW:
 		_wizParams.img.flags = pop();
 		_wizParams.img.state = pop();
 		_wizParams.img.y1 = pop();
@@ -1299,53 +1299,53 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.img.resNum = pop();
 		_wiz->displayWizImage(&_wizParams.img);
 		break;
-	case 57:
+	case SO_PALETTE:
 		_wizParams.processFlags |= kWPFPaletteNum;
 		_wizParams.img.palette = pop();
 		break;
-	case 58:
+	case SO_POLY_TO_POLY:
 		_wizParams.processFlags |= 0x1000 | 0x100 | 0x2;
 		_wizParams.processMode = 7;
 		_wizParams.polygonId2 = pop();
 		_wizParams.polygonId1 = pop();
 		_wizParams.compType = pop();
 		break;
-	case 64:
+	case SO_SAVE:
 		_wizParams.processFlags |= kWPFUseFile;
 		_wizParams.processMode = 4;
 		copyScriptString(_wizParams.filename, sizeof(_wizParams.filename));
 		_wizParams.fileWriteMode = pop();
 		break;
-	case 65:
+	case SO_SCALE:
 		_wizParams.processFlags |= kWPFScaled;
 		_wizParams.scale = pop();
 		break;
-	case 67:
+	case SO_SET_FLAGS:
 		_wizParams.processFlags |= kWPFNewFlags;
 		_wizParams.img.flags |= pop();
 		break;
-	case 68:
+	case SO_SET_POLYGON:
 		_wizParams.processFlags |= kWPFNewFlags | kWPFSetPos | 2;
 		_wizParams.img.flags |= kWIFIsPolygon;
 		_wizParams.polygonId1 = _wizParams.img.y1 = _wizParams.img.x1 = pop();
 		break;
-	case 70:
+	case SO_SHADOW:
 		_wizParams.processFlags |= kWPFShadow;
 		_wizParams.img.shadow = pop();
 		break;
-	case 73:
+	case SO_STATE:
 		_wizParams.processFlags |= kWPFNewState;
 		_wizParams.img.state = pop();
 		break;
-	case 84:
+	case SO_WIDTH:
 		_wizParams.processFlags |= kWPFUseDefImgWidth;
 		_wizParams.resDefImgW = pop();
 		break;
-	case 92:
+	case SO_END:
 		if (_wizParams.img.resNum)
 			_wiz->processWizImage(&_wizParams);
 		break;
-	case 128: // Font create
+	case SO_FONT_CREATE: // Font create
 		_wizParams.processMode = 15;
 		_wizParams.fontProperties.bgColor = pop();
 		_wizParams.fontProperties.fgColor = pop();
@@ -1353,19 +1353,19 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.fontProperties.style = pop();
 		copyScriptString(_wizParams.fontProperties.fontName, sizeof(_wizParams.fontProperties.fontName));
 		break;
-	case 129:
+	case SO_FONT_END:
 		_wizParams.processMode = 14;
 		break;
-	case 130: // Font render
+	case SO_FONT_RENDER: // Font render
 		_wizParams.processMode = 16;
 		_wizParams.fontProperties.yPos = pop();
 		_wizParams.fontProperties.xPos = pop();
 		copyScriptString(_wizParams.fontProperties.string, sizeof(_wizParams.fontProperties.string));
 		break;
-	case 131:
+	case SO_FONT_START:
 		_wizParams.processMode = 13;
 		break;
-	case 133: // Render ellipse
+	case SO_RENDER_ELLIPSE: // Render ellipse
 		_wizParams.processMode = 17;
 		_wizParams.ellipseProperties.color = pop();
 		_wizParams.ellipseProperties.lod = pop();
@@ -1376,7 +1376,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.ellipseProperties.py = pop();
 		_wizParams.ellipseProperties.px = pop();
 		break;
-	case 134:
+	case SO_RENDER_FLOOD_FILL:
 		_wizParams.processFlags |= kWPFFillColor | kWPFClipBox2;
 		_wizParams.processMode = 12;
 		_wizParams.fillColor = pop();
@@ -1384,11 +1384,11 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.box2.left = _wizParams.box2.right = pop();
 		adjustRect(_wizParams.box2);
 		break;
-	case 135:
+	case SO_RENDER_INTO_IMAGE:
 		_wizParams.processFlags |= kWPFDstResNum;
 		_wizParams.dstResNum = pop();
 		break;
-	case 136:
+	case SO_RENDER_LINE:
 		_wizParams.processFlags |= kWPFFillColor | kWPFClipBox2;
 		_wizParams.processMode = 10;
 		_wizParams.fillColor = pop();
@@ -1398,7 +1398,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.box2.left = pop();
 		adjustRect(_wizParams.box2);
 		break;
-	case 137:
+	case SO_RENDER_PIXEL:
 		_wizParams.processFlags |= kWPFFillColor | kWPFClipBox2;
 		_wizParams.processMode = 11;
 		_wizParams.fillColor = pop();
@@ -1406,7 +1406,7 @@ void ScummEngine_v100he::o100_wizImageOps() {
 		_wizParams.box2.left = _wizParams.box2.right = pop();
 		adjustRect(_wizParams.box2);
 		break;
-	case 138:
+	case SO_RENDER_RECTANGLE:
 		_wizParams.processFlags |= kWPFFillColor | kWPFClipBox2;
 		_wizParams.processMode = 9;
 		_wizParams.fillColor = pop();
@@ -1427,22 +1427,22 @@ void ScummEngine_v100he::o100_dim2dim2Array() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 41:		// SO_BIT_ARRAY
+	case SO_BIT:
 		data = kBitArray;
 		break;
-	case 42:		// SO_INT_ARRAY
+	case SO_INT:
 		data = kIntArray;
 		break;
-	case 43:
+	case SO_DWORD:
 		data = kDwordArray;
 		break;
-	case 44:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE:
 		data = kNibbleArray;
 		break;
-	case 45:		// SO_BYTE_ARRAY
+	case SO_BYTE:
 		data = kByteArray;
 		break;
-	case 77:		// SO_STRING_ARRAY
+	case SO_STRING:
 		data = kStringArray;
 		break;
 	default:
@@ -1474,13 +1474,13 @@ void ScummEngine_v100he::o100_redim2dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 42:
+	case SO_INT:
 		redimArray(fetchScriptWord(), a, b, c, d, kIntArray);
 		break;
-	case 43:
+	case SO_DWORD:
 		redimArray(fetchScriptWord(), a, b, c, d, kDwordArray);
 		break;
-	case 45:
+	case SO_BYTE:
 		redimArray(fetchScriptWord(), a, b, c, d, kByteArray);
 		break;
 	default:
@@ -1494,10 +1494,10 @@ void ScummEngine_v100he::o100_paletteOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0:
+	case SO_INIT:
 		_hePaletteNum = pop();
 		break;
-	case 20:
+	case SO_COLOR:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -1509,38 +1509,38 @@ void ScummEngine_v100he::o100_paletteOps() {
 			}
 		}
 		break;
-	case 25:
+	case SO_COSTUME:
 		a = pop();
 		if (_hePaletteNum != 0) {
 			setHEPaletteFromCostume(_hePaletteNum, a);
 		}
 		break;
-	case 40:
+	case SO_IMAGE:
 		b = pop();
 		a = pop();
 		if (_hePaletteNum != 0) {
 			setHEPaletteFromImage(_hePaletteNum, a, b);
 		}
 		break;
-	case 53:
+	case SO_NEW:
 		if (_hePaletteNum != 0) {
 			restoreHEPalette(_hePaletteNum);
 		}
 		break;
-	case 57:
+	case SO_PALETTE:
 		a = pop();
 		if (_hePaletteNum != 0) {
 			copyHEPalette(_hePaletteNum, a);
 		}
 		break;
-	case 63:
+	case SO_ROOM_PALETTE:
 		b = pop();
 		a = pop();
 		if (_hePaletteNum != 0) {
 			setHEPaletteFromRoom(_hePaletteNum, a, b);
 		}
 		break;
-	case 81:
+	case SO_TO:
 		c = pop();
 		b = pop();
 		a = pop();
@@ -1550,7 +1550,7 @@ void ScummEngine_v100he::o100_paletteOps() {
 			}
 		}
 		break;
-	case 92:
+	case SO_END:
 		_hePaletteNum = 0;
 		break;
 	default:
@@ -1591,13 +1591,13 @@ void ScummEngine_v100he::o100_redimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 42:
+	case SO_INT:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kIntArray);
 		break;
-	case 43:
+	case SO_DWORD:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kDwordArray);
 		break;
-	case 45:
+	case SO_BYTE:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kByteArray);
 		break;
 	default:
@@ -1611,7 +1611,7 @@ void ScummEngine_v100he::o100_roomOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 63:		// SO_ROOM_PALETTE
+	case SO_ROOM_PALETTE:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -1619,13 +1619,13 @@ void ScummEngine_v100he::o100_roomOps() {
 		setPalColor(d, a, b, c);
 		break;
 
-	case 129:		// SO_OBJECT_ORDER
+	case SO_OBJECT_ORDER:
 		b = pop();
 		a = pop();
 		swapObjects(a, b);
 		break;
 
-	case 130:		// SO_ROOM_COPY_PALETTE
+	case SO_ROOM_COPY_PALETTE:
 		a = pop();
 		b = pop();
 		if (_game.features & GF_16BIT_COLOR)
@@ -1634,19 +1634,19 @@ void ScummEngine_v100he::o100_roomOps() {
 			copyPalColor(a, b);
 		break;
 
-	case 131:		// SO_ROOM_FADE
+	case SO_ROOM_FADE:
 		// Defaults to 1 but doesn't use fade effects
 		a = pop();
 		break;
 
-	case 132:		// SO_ROOM_INTENSITY
+	case SO_ROOM_INTENSITY:
 		c = pop();
 		b = pop();
 		a = pop();
 		darkenPalette(a, a, a, b, c);
 		break;
 
-	case 133:		// SO_RGB_ROOM_INTENSITY
+	case SO_ROOM_INTENSITY_RGB:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -1655,24 +1655,24 @@ void ScummEngine_v100he::o100_roomOps() {
 		darkenPalette(a, b, c, d, e);
 		break;
 
-	case 134:		// SO_ROOM_NEW_PALETTE
+	case SO_ROOM_NEW_PALETTE:
 		a = pop();
 		setCurrentPalette(a);
 		break;
 
-	case 135:		// SO_ROOM_PALETTE_IN_ROOM
+	case SO_ROOM_PALETTE_IN_ROOM:
 		b = pop();
 		a = pop();
 		setRoomPalette(a, b);
 		break;
 
-	case 136:		// SO_ROOM_SAVEGAME
+	case SO_ROOM_SAVEGAME:
 		_saveTemporaryState = true;
 		_saveLoadSlot = pop();
 		_saveLoadFlag = pop();
 		break;
 
-	case 137:		// SO_ROOM_SAVEGAME_BY_NAME
+	case SO_ROOM_SAVEGAME_BY_NAME:
 		byte buffer[256];
 
 		copyScriptString((byte *)buffer, sizeof(buffer));
@@ -1685,13 +1685,13 @@ void ScummEngine_v100he::o100_roomOps() {
 		_saveTemporaryState = true;
 		break;
 
-	case 138:		// SO_ROOM_SCREEN
+	case SO_ROOM_SCREEN:
 		b = pop();
 		a = pop();
 		initScreens(a, _screenHeight);
 		break;
 
-	case 139:		// SO_ROOM_SCROLL
+	case SO_ROOM_SCROLL:
 		b = pop();
 		a = pop();
 		if (a < (_screenWidth / 2))
@@ -1718,7 +1718,7 @@ void ScummEngine_v100he::o100_setSystemMessage() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 80: // Set Window Caption
+	case SO_TITLE_BAR: // Set Window Caption
 		// TODO: The 'name' string can contain non-ASCII data. This can lead to
 		// problems, because the encoding used for "name" is not clear,
 		//
@@ -1727,7 +1727,7 @@ void ScummEngine_v100he::o100_setSystemMessage() {
 		// - Try to translate the text to UTF-32.
 		//_system->setWindowCaption(Common::U32String((const char *)name));
 		break;
-	case 131: // Set Version
+	case SO_PAUSE_TITLE: // Set Version
 		debug(1,"o100_setSystemMessage: (%d) %s", subOp, name);
 		break;
 	default:
@@ -1742,57 +1742,57 @@ void ScummEngine_v100he::o100_soundOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 6:		// SO_AT
+	case SO_AT:
 		_heSndFlags |= HE_SND_OFFSET;
 		_heSndOffset = pop();
 		break;
-	case 47:	// SO_LOAD
+	case SO_LOAD:
 		copyScriptString(filename, sizeof(filename));
 		_heSndSoundId = pop();
 		if (_heSndSoundId)
 			debug(0, "Load sound %d from file %s\n", _heSndSoundId, filename);
 		break;
-	case 55:	// SO_NOW
+	case SO_NOW:
 		_heSndFlags |= HE_SND_QUICK_START;
 		break;
-	case 83:	// SO_VARIABLE
+	case SO_VARIABLE:
 		value = pop();
 		var = pop();
 		_heSndSoundId = pop();
 		((SoundHE *)_sound)->setSoundVar(_heSndSoundId, var, value);
 		break;
-	case 92:	// SO_END
+	case SO_END:
 		_sound->addSoundToQueue(_heSndSoundId, _heSndOffset, _heSndChannel, _heSndFlags, _heSndSoundFreq, _heSndPan, _heSndVol);
 		break;
-	case 128:	// SO_SOUND_ADD
+	case SO_SOUND_ADD:
 		_heSndFlags |= HE_SND_APPEND;
 		break;
-	case 129:	// SO_SOUND_CHANNEL
+	case SO_SOUND_CHANNEL:
 		_heSndChannel = pop();
 		break;
-	case 130:	// SO_SOUND_FREQUENCY
+	case SO_SOUND_FREQUENCY:
 		_heSndFlags |= HE_SND_FREQUENCY;
 		_heSndSoundFreq = pop();
 		break;
-	case 131:	// SO_SOUND_LOOPING
+	case SO_SOUND_LOOPING:
 		_heSndFlags |= HE_SND_LOOP;
 		break;
-	case 132:	// SO_SOUND_MODIFY
-	case 134:	// SO_SOUND_START
+	case SO_SOUND_MODIFY:
+	case SO_SOUND_START:
 		_heSndSoundId = pop();
 		_heSndOffset = 0;
 		_heSndSoundFreq = 11025;
 		_heSndChannel = VAR(VAR_SOUND_CHANNEL);
 		_heSndFlags = 0;
 		break;
-	case 133:	// SO_SOUND_PAN
+	case SO_SOUND_PAN:
 		_heSndFlags |= HE_SND_PAN;
 		_heSndPan = pop();
 		break;
-	case 135:	// SO_SOUND_SOFT
+	case SO_SOUND_SOFT:
 		_heSndFlags |= HE_SND_SOFT_SOUND;
 		break;
-	case 136:	// SO_SOUND_VOLUME
+	case SO_SOUND_VOLUME:
 		_heSndFlags |= HE_SND_VOL;
 		_heSndVol = pop();
 		break;
@@ -1810,14 +1810,14 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0: // SO_INIT
+	case SO_INIT:
 		_curMaxSpriteId = pop();
 		_curSpriteId = pop();
 
 		if (_curSpriteId > _curMaxSpriteId)
 			SWAP(_curSpriteId, _curMaxSpriteId);
 		break;
-	case 2: // SO_ANGLE
+	case SO_ANGLE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1828,7 +1828,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteAngle(spriteId, args[0]);
 		break;
-	case 3: // SO_ANIMATION
+	case SO_ANIMATION:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1839,7 +1839,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteFlagAutoAnim(spriteId, args[0]);
 		break;
-	case 4: // SO_ANIMATION_SPEED
+	case SO_ANIMATION_SPEED:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1850,7 +1850,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteAnimSpeed(spriteId, args[0]);
 		break;
-	case 6: // SO_AT
+	case SO_AT:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -1862,7 +1862,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpritePosition(spriteId, args[0], args[1]);
 		break;
-	case 7: // SO_AT_IMAGE
+	case SO_AT_IMAGE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1873,7 +1873,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteSourceImage(spriteId, args[0]);
 		break;
-	case 16: // SO_CLASS
+	case SO_CLASS:
 		n = getStackList(args, ARRAYSIZE(args));
 		if (_curSpriteId != 0 && _curMaxSpriteId != 0 && n != 0) {
 			int *p = &args[n - 1];
@@ -1896,7 +1896,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 			} while (--n);
 		}
 		break;
-	case 32: // SO_ERASE
+	case SO_ERASE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1907,7 +1907,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteFlagEraseType(spriteId, args[0]);
 		break;
-	case 38: // SO_GROUP
+	case SO_GROUP:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1918,7 +1918,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteGroup(spriteId, args[0]);
 		break;
-	case 40: // SO_IMAGE
+	case SO_IMAGE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1929,7 +1929,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteImage(spriteId, args[0]);
 		break;
-	case 48: // SO_MASK
+	case SO_MASK:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1940,7 +1940,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteMaskImage(spriteId, args[0]);
 		break;
-	case 49: // SO_MOVE
+	case SO_MOVE:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -1952,10 +1952,10 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->moveSprite(spriteId, args[0], args[1]);
 		break;
-	case 52: // SO_NAME
+	case SO_NAME:
 		copyScriptString(string, sizeof(string));
 		break;
-	case 53: // SO_NEW
+	case SO_NEW:
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
 		spriteId = _curSpriteId;
@@ -1965,7 +1965,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->resetSprite(spriteId);
 		break;
-	case 54: // SO_NEW_GENERAL_PROPERTY
+	case SO_NEW_GENERAL_PROPERTY:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -1977,7 +1977,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteGeneralProperty(spriteId, args[0], args[1]);
 		break;
-	case 57: // SO_PALETTE
+	case SO_PALETTE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1988,7 +1988,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpritePalette(spriteId, args[0]);
 		break;
-	case 59: // SO_PRIORITY
+	case SO_PRIORITY:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -1999,7 +1999,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpritePriority(spriteId, args[0]);
 		break;
-	case 60: // SO_PROPERTY
+	case SO_PROPERTY:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -2030,10 +2030,10 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 				break;
 			}
 		break;
-	case 61: // SO_RESTART
+	case SO_RESTART:
 		_sprite->resetTables(true);
 		break;
-	case 65: // SO_SCALE
+	case SO_SCALE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2044,7 +2044,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteScale(spriteId, args[0]);
 		break;
-	case 70: // SO_SHADOW
+	case SO_SHADOW:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2055,7 +2055,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteShadow(spriteId, args[0]);
 		break;
-	case 73: // SO_STATE
+	case SO_STATE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2066,7 +2066,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteImageState(spriteId, args[0]);
 		break;
-	case 74: // SO_STEP_DIST
+	case SO_STEP_DIST:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -2078,7 +2078,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteDist(spriteId, args[0], args[1]);
 		break;
-	case 75: // SO_STEP_DIST_X
+	case SO_STEP_DIST_X:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2091,7 +2091,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 			_sprite->setSpriteDist(spriteId, args[0], tmp[1]);
 		}
 		break;
-	case 76: // SO_STEP_DIST_Y
+	case SO_STEP_DIST_Y:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2104,7 +2104,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 			_sprite->setSpriteDist(spriteId, tmp[0], args[0]);
 		}
 		break;
-	case 82: // SO_UPDATE
+	case SO_UPDATE:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2115,7 +2115,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteFlagUpdateType(spriteId, args[0]);
 		break;
-	case 83: // SO_VARIABLE
+	case SO_VARIABLE:
 		args[1] = pop();
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
@@ -2127,7 +2127,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteUserValue(spriteId, args[0], args[1]);
 		break;
-	case 88: // SO_IMAGE_ZCLIP
+	case SO_IMAGE_ZCLIP:
 		args[0] = pop();
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
@@ -2138,7 +2138,7 @@ void ScummEngine_v100he::o100_setSpriteInfo() {
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
 			_sprite->setSpriteZBuffer(spriteId, args[0]);
 		break;
-	case 89: // SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		if (_curSpriteId > _curMaxSpriteId)
 			break;
 		spriteId = _curSpriteId;
@@ -2170,13 +2170,13 @@ void ScummEngine_v100he::o100_systemOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 61:
+	case SO_RESTART:
 		restart();
 		break;
-	case 128:
+	case SO_FLUSH_OBJECT_DRAW_QUEUE:
 		clearDrawObjectQueue();
 		break;
-	case 132:
+	case SO_QUIT:
 		// Confirm shutdown
 		if (_game.id == GID_MOONBASE)
 			// Moonbase uses this subOp to quit the game (The confirmation dialog
@@ -2185,18 +2185,18 @@ void ScummEngine_v100he::o100_systemOps() {
 		else
 			confirmExitDialog();
 		break;
-	case 133:
+	case SO_QUIT_QUIT:
 		quitGame();
 		break;
-	case 134:
+	case SO_RESTART_STRING:
 		copyScriptString(string, sizeof(string));
 		debug(0, "Start game (%s)", string);
 		break;
-	case 135:
+	case SO_START_SYSTEM_STRING:
 		copyScriptString(string, sizeof(string));
 		debug(0, "Start executable (%s)", string);
 		break;
-	case 136:
+	case SO_UPDATE_SCREEN:
 		restoreBackgroundHE(Common::Rect(_screenWidth, _screenHeight));
 		updatePalette();
 		break;
@@ -2212,49 +2212,49 @@ void ScummEngine_v100he::o100_cursorCommand() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0xE:		// SO_CHARSET_SET
+	case SO_CHARSET_SET:
 		initCharset(pop());
 		break;
-	case 0xF:		// SO_CHARSET_COLOR
+	case SO_CHARSET_COLOR:
 		getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < 16; i++)
 			_charsetColorMap[i] = _charsetData[_string[1]._default.charset][i] = (unsigned char)args[i];
 		break;
-	case 0x80:
-	case 0x81:
+	case SO_CURSOR_IMAGE:
+	case SO_CURSOR_COLOR_IMAGE:
 		a = pop();
 		_wiz->loadWizCursor(a, 0);
 		break;
-	case 0x82:
+	case SO_CURSOR_COLOR_PAL_IMAGE:
 		b = pop();
 		a = pop();
 		_wiz->loadWizCursor(a, b);
 		break;
-	case 0x86:		// SO_CURSOR_ON Turn cursor on
+	case SO_CURSOR_ON:		// Turn cursor on
 		_cursor.state = 1;
 		break;
-	case 0x87:		// SO_CURSOR_OFF Turn cursor off
+	case SO_CURSOR_OFF:		// Turn cursor off
 		_cursor.state = 0;
 		break;
-	case 0x88:		// SO_CURSOR_SOFT_ON Turn soft cursor on
+	case SO_CURSOR_SOFT_ON:		// Turn soft cursor on
 		_cursor.state++;
 		if (_cursor.state > 1)
 			error("o100_cursorCommand: Cursor state greater than 1 in script");
 		break;
 
-	case 0x89:		// SO_CURSOR_SOFT_OFF Turn soft cursor off
+	case SO_CURSOR_SOFT_OFF:		// Turn soft cursor off
 		_cursor.state--;
 		break;
-	case 0x8B:		// SO_USERPUT_ON
+	case SO_USERPUT_ON:
 		_userPut = 1;
 		break;
-	case 0x8C:		// SO_USERPUT_OFF
+	case SO_USERPUT_OFF:
 		_userPut = 0;
 		break;
-	case 0x8D:		// SO_USERPUT_SOFT_ON
+	case SO_USERPUT_SOFT_ON:
 		_userPut++;
 		break;
-	case 0x8E:		// SO_USERPUT_SOFT_OFF
+	case SO_USERPUT_SOFT_OFF:
 		_userPut--;
 		break;
 	default:
@@ -2270,7 +2270,7 @@ void ScummEngine_v100he::o100_videoOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0: // SO_INIT
+	case SO_INIT:
 		memset(_videoParams.filename, 0, sizeof(_videoParams.filename));
 		_videoParams.status = 0;
 		_videoParams.flags = 0;
@@ -2280,23 +2280,23 @@ void ScummEngine_v100he::o100_videoOps() {
 		if (_videoParams.number != 1 && _videoParams.number != -1)
 			warning("o100_videoOps: number: %d", _videoParams.number);
 		break;
-	case 19: // SO_CLOSE
-		_videoParams.status = 19;
+	case SO_CLOSE:
+		_videoParams.status = SO_CLOSE;
 		break;
-	case 40: // SO_IMAGE
+	case SO_IMAGE:
 		_videoParams.wizResNum = pop();
 		if (_videoParams.wizResNum)
 			_videoParams.flags |= 2;
 		break;
-	case 47: // SO_LOAD
+	case SO_LOAD:
 		copyScriptString(_videoParams.filename, sizeof(_videoParams.filename));
-		_videoParams.status = 47;
+		_videoParams.status = SO_LOAD;
 		break;
-	case 67: // SO_SET_FLAGS
+	case SO_SET_FLAGS:
 		_videoParams.flags |= pop();
 		break;
-	case 92: // SO_END
-		if (_videoParams.status == 47) { // SO_LOAD
+	case SO_END:
+		if (_videoParams.status == SO_LOAD) {
 			// Start video
 			if (_videoParams.flags == 0)
 				_videoParams.flags = 4;
@@ -2306,7 +2306,7 @@ void ScummEngine_v100he::o100_videoOps() {
 			} else {
 				VAR(119) = _moviePlay->load(convertFilePath(_videoParams.filename), _videoParams.flags);
 			}
-		} else if (_videoParams.status == 19) { // SO_CLOSE
+		} else if (_videoParams.status == SO_CLOSE) {
 			// Stop video
 			_moviePlay->close();
 		}
@@ -2326,22 +2326,22 @@ void ScummEngine_v100he::o100_wait() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 128:		// SO_WAIT_FOR_ACTOR Wait for actor
+	case SO_WAIT_FOR_ACTOR:		// Wait for actor
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o100_wait:168");
 		if (a->_moving)
 			break;
 		return;
-	case 129:		// SO_WAIT_FOR_CAMERA Wait for camera
+	case SO_WAIT_FOR_CAMERA:		// Wait for camera
 		if (camera._cur.x / 8 != camera._dest.x / 8)
 			break;
 		return;
-	case 130:		// SO_WAIT_FOR_MESSAGE Wait for message
+	case SO_WAIT_FOR_MESSAGE:		// Wait for message
 		if (VAR(VAR_HAVE_MSG))
 			break;
 		return;
-	case 131:		// SO_WAIT_FOR_SENTENCE
+	case SO_WAIT_FOR_SENTENCE:
 		if (_sentenceNum) {
 			if (_sentence[_sentenceNum - 1].freezeCount && !isScriptInUse(VAR(VAR_SENTENCE_SCRIPT)))
 				return;
@@ -2366,17 +2366,17 @@ void ScummEngine_v100he::o100_writeFile() {
 
 	assert(_hOutFileTable[slot]);
 	switch (subOp) {
-	case 5:
+	case SO_ARRAY:
 		fetchScriptByte();
 		writeFileFromArray(slot, resID);
 		break;
-	case 42:
+	case SO_INT:
 		_hOutFileTable[slot]->writeUint16LE(resID);
 		break;
-	case 43:
+	case SO_DWORD:
 		_hOutFileTable[slot]->writeUint32LE(resID);
 		break;
-	case 45:
+	case SO_BYTE:
 		_hOutFileTable[slot]->writeByte(resID);
 		break;
 	default:
@@ -2395,19 +2395,19 @@ void ScummEngine_v100he::o100_debugInput() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0:
+	case SO_INIT:
 		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
 		break;
-	case 26:
+	case SO_COUNT:
 		pop();
 		break;
-	case 27:
+	case SO_DEFAULT:
 		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
 		break;
-	case 80:
+	case SO_TITLE_BAR:
 		copyScriptString(_debugInputBuffer, sizeof(_debugInputBuffer));
 		break;
-	case 92:
+	case SO_END:
 		debugInput(_debugInputBuffer);
 		break;
 	default:
@@ -2423,19 +2423,19 @@ void ScummEngine_v100he::o100_isResourceLoaded() {
 	int idx = pop();
 
 	switch (subOp) {
-	case 25:
+	case SO_COSTUME:
 		type = rtCostume;
 		break;
-	case 40:
+	case SO_IMAGE:
 		type = rtImage;
 		break;
-	case 62:
+	case SO_ROOM:
 		type = rtRoom;
 		break;
-	case 66:
+	case SO_SCRIPT:
 		type = rtScript;
 		break;
-	case 72:
+	case SO_SOUND:
 		type = rtSound;
 		break;
 	default:
@@ -2455,19 +2455,19 @@ void ScummEngine_v100he::o100_getResourceSize() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 25:
+	case SO_COSTUME:
 		type = rtCostume;
 		break;
-	case 40:
+	case SO_IMAGE:
 		type = rtImage;
 		break;
-	case 62:
+	case SO_ROOM:
 		type = rtRoomImage;
 		break;
-	case 66:
+	case SO_SCRIPT:
 		type = rtScript;
 		break;
-	case 72:
+	case SO_SOUND:
 		push(getSoundResourceSize(resid));
 		return;
 	default:
@@ -2489,35 +2489,35 @@ void ScummEngine_v100he::o100_getSpriteGroupInfo() {
 	warning("o100_getSpriteGroupInfo, subop %d", subOp);
 
 	switch (subOp) {
-	case 5: // SO_ARRAY
+	case SO_ARRAY:
 		spriteGroupId = pop();
 		if (spriteGroupId)
 			push(getGroupSpriteArray(spriteGroupId));
 		else
 			push(0);
 		break;
-	case 40: // SO_IMAGE
+	case SO_IMAGE:
 		spriteGroupId = pop();
 		if (spriteGroupId)
 			push(_sprite->getGroupDstResNum(spriteGroupId));
 		else
 			push(0);
 		break;
-	case 54: // SO_NEW_GENERAL_PROPERTY
+	case SO_NEW_GENERAL_PROPERTY:
 		// TODO: U32 related
 		pop();
 		pop();
 		push(0);
 		warning("STUB: o100_getSpriteGroupInfo, subop 54");
 		break;
-	case 59: // SO_PRIORITY
+	case SO_PRIORITY:
 		spriteGroupId = pop();
 		if (spriteGroupId)
 			push(_sprite->getGroupPriority(spriteGroupId));
 		else
 			push(0);
 		break;
-	case 60: // SO_PROPERTY
+	case SO_PROPERTY:
 		type = pop();
 		spriteGroupId = pop();
 		if (spriteGroupId) {
@@ -2541,7 +2541,7 @@ void ScummEngine_v100he::o100_getSpriteGroupInfo() {
 			push(0);
 		}
 		break;
-	case 85: // SO_XPOS
+	case SO_XPOS:
 		spriteGroupId = pop();
 		if (spriteGroupId) {
 			_sprite->getGroupPosition(spriteGroupId, tx, ty);
@@ -2550,7 +2550,7 @@ void ScummEngine_v100he::o100_getSpriteGroupInfo() {
 			push(0);
 		}
 		break;
-	case 86: // SO_YPOS
+	case SO_YPOS:
 		spriteGroupId = pop();
 		if (spriteGroupId) {
 			_sprite->getGroupPosition(spriteGroupId, tx, ty);
@@ -2573,62 +2573,62 @@ void ScummEngine_v100he::o100_getWizData() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 20: // SO_COLOR
+	case SO_COLOR:
 		y = pop();
 		x = pop();
 		state = pop();
 		resId = pop();
 		push(_wiz->getWizPixelColor(resId, state, x, y));
 		break;
-	case 26: // SO_COUNT
+	case SO_COUNT:
 		resId = pop();
 		push(_wiz->getWizImageStates(resId));
 		break;
-	case 33: // SO_FIND
+	case SO_FIND:
 		y = pop();
 		x = pop();
 		state = pop();
 		resId = pop();
 		push(_wiz->isWizPixelNonTransparent(resId, state, x, y, 0));
 		break;
-	case 39: // SO_HEIGHT
+	case SO_HEIGHT:
 		state = pop();
 		resId = pop();
 		_wiz->getWizImageDim(resId, state, w, h);
 		push(h);
 		break;
-	case 54: // SO_NEW_GENERAL_PROPERTY
+	case SO_NEW_GENERAL_PROPERTY:
 		type = pop();
 		state = pop();
 		resId = pop();
 		push(_wiz->getWizImageData(resId, state, type));
 		break;
-	case 84: // SO_WIDTH
+	case SO_WIDTH:
 		state = pop();
 		resId = pop();
 		_wiz->getWizImageDim(resId, state, w, h);
 		push(w);
 		break;
-	case 85: // SO_XPOS
+	case SO_XPOS:
 		state = pop();
 		resId = pop();
 		_wiz->getWizImageSpot(resId, state, x, y);
 		push(x);
 		break;
-	case 86: // SO_YPOS
+	case SO_YPOS:
 		state = pop();
 		resId = pop();
 		_wiz->getWizImageSpot(resId, state, x, y);
 		push(y);
 		break;
-	case 131: // SO_FONT_START
+	case SO_FONT_START:
 		pop();
 		copyScriptString(filename, sizeof(filename));
 		pop();
 		push(0);
 		debug(0, "o100_getWizData() case 111 unhandled");
 		break;
-	case 132: // SO_HISTOGRAM
+	case SO_HISTOGRAM:
 		h = pop();
 		w = pop();
 		y = pop();
@@ -2655,7 +2655,7 @@ void ScummEngine_v100he::o100_getPaletteData() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 13:
+	case SO_CHANNEL:
 		c = pop();
 		b = pop();
 		if (_game.features & GF_16BIT_COLOR)
@@ -2663,12 +2663,12 @@ void ScummEngine_v100he::o100_getPaletteData() {
 		else
 			push(getHEPaletteColorComponent(1, b, c));
 		break;
-	case 20:
+	case SO_COLOR:
 		color = pop();
 		palSlot = pop();
 		push(getHEPaletteColor(palSlot, color));
 		break;
-	case 33:
+	case SO_FIND:
 		e = pop();
 		d = pop();
 		palSlot = pop();
@@ -2677,7 +2677,7 @@ void ScummEngine_v100he::o100_getPaletteData() {
 		r = pop();
 		push(getHEPaletteSimilarColor(palSlot, r, g, d, e));
 		break;
-	case 53:
+	case SO_NEW:
 		b = pop();
 		b = MAX(0, b);
 		b = MIN(b, 255);
@@ -2693,7 +2693,7 @@ void ScummEngine_v100he::o100_getPaletteData() {
 			push(getHEPaletteSimilarColor(1, r, g, 10, 245));
 		}
 		break;
-	case 73:
+	case SO_STATE:
 		c = pop();
 		b = pop();
 		palSlot = pop();
@@ -2711,26 +2711,26 @@ void ScummEngine_v100he::o100_readFile() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 5:
+	case SO_ARRAY:
 		fetchScriptByte();
 		size = pop();
 		slot = pop();
 		val = readFileToArray(slot, size);
 		push(val);
 		break;
-	case 42:
+	case SO_INT:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readUint16LE();
 		push(val);
 		break;
-	case 43:
+	case SO_DWORD:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readUint32LE();
 		push(val);
 		break;
-	case 45:
+	case SO_BYTE:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readByte();
@@ -2749,28 +2749,28 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 3:
+	case SO_ANIMATION:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteFlagAutoAnim(spriteId));
 		else
 			push(0);
 		break;
-	case 4:
+	case SO_ANIMATION_SPEED:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteAnimSpeed(spriteId));
 		else
 			push(1);
 		break;
-	case 7:
+	case SO_AT_IMAGE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteSourceImage(spriteId));
 		else
 			push(0);
 		break;
-	case 16:
+	case SO_CLASS:
 		flags = getStackList(args, ARRAYSIZE(args));
 		spriteId = pop();
 		if (spriteId) {
@@ -2779,35 +2779,35 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 26:
+	case SO_COUNT:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteImageStateCount(spriteId));
 		else
 			push(0);
 		break;
-	case 30:
+	case SO_DRAW_XPOS:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteDisplayX(spriteId));
 		else
 			push(0);
 		break;
-	case 31:
+	case SO_DRAW_YPOS:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteDisplayY(spriteId));
 		else
 			push(0);
 		break;
-	case 32:
+	case SO_ERASE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteFlagEraseType(spriteId));
 		else
 			push(1);
 		break;
-	case 33:
+	case SO_FIND:
 		flags = getStackList(args, ARRAYSIZE(args));
 		type = pop();
 		groupId = pop();
@@ -2815,14 +2815,14 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 		x = pop();
 		push(_sprite->findSpriteWithClassOf(x, y, groupId, type, flags, args));
 		break;
-	case 38:
+	case SO_GROUP:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteGroup(spriteId));
 		else
 			push(0);
 		break;
-	case 39:
+	case SO_HEIGHT:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpriteImageDim(spriteId, x, y);
@@ -2831,21 +2831,21 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 40:
+	case SO_IMAGE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteImage(spriteId));
 		else
 			push(0);
 		break;
-	case 48:
+	case SO_MASK:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteMaskImage(spriteId));
 		else
 			push(0);
 		break;
-	case 54:
+	case SO_NEW_GENERAL_PROPERTY:
 		flags = pop();
 		spriteId = pop();
 		if (spriteId)
@@ -2853,21 +2853,21 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 		else
 			push(0);
 		break;
-	case 57:
+	case SO_PALETTE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpritePalette(spriteId));
 		else
 			push(0);
 		break;
-	case 59:
+	case SO_PRIORITY:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpritePriority(spriteId));
 		else
 			push(0);
 		break;
-	case 60:
+	case SO_PROPERTY:
 		flags = pop();
 		spriteId = pop();
 		if (spriteId) {
@@ -2894,28 +2894,28 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 65:
+	case SO_SCALE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteScale(spriteId));
 		else
 			push(0);
 		break;
-	case 70:
+	case SO_SHADOW:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteShadow(spriteId));
 		else
 			push(0);
 		break;
-	case 73:
+	case SO_STATE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteImageState(spriteId));
 		else
 			push(0);
 		break;
-	case 75:
+	case SO_STEP_DIST_X:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpriteDist(spriteId, x, y);
@@ -2924,7 +2924,7 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 76:
+	case SO_STEP_DIST_Y:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpriteDist(spriteId, x, y);
@@ -2933,14 +2933,14 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 82:
+	case SO_UPDATE:
 		spriteId = pop();
 		if (spriteId)
 			push(_sprite->getSpriteFlagUpdateType(spriteId));
 		else
 			push(0);
 		break;
-	case 83:
+	case SO_VARIABLE:
 		pop();
 		spriteId = pop();
 		if (spriteId)
@@ -2948,7 +2948,7 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 		else
 			push(0);
 		break;
-	case 84:
+	case SO_WIDTH:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpriteImageDim(spriteId, x, y);
@@ -2957,7 +2957,7 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 85:
+	case SO_XPOS:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpritePosition(spriteId, x, y);
@@ -2966,7 +2966,7 @@ void ScummEngine_v100he::o100_getSpriteInfo() {
 			push(0);
 		}
 		break;
-	case 86:
+	case SO_YPOS:
 		spriteId = pop();
 		if (spriteId) {
 			_sprite->getSpritePosition(spriteId, x, y);
@@ -2985,27 +2985,27 @@ void ScummEngine_v100he::o100_getVideoData() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 26:
+	case SO_COUNT:
 		pop();
 		push(_moviePlay->getFrameCount());
 		break;
-	case 39:
+	case SO_HEIGHT:
 		pop();
 		push(_moviePlay->getHeight());
 		break;
-	case 40:
+	case SO_IMAGE:
 		pop();
 		push(_moviePlay->getImageNum());
 		break;
-	case 54:
+	case SO_NEW_GENERAL_PROPERTY:
 		debug(0, "o100_getVideoData: subOp 28 stub (%d, %d)", pop(), pop());
 		push(0);
 		break;
-	case 73:
+	case SO_STATE:
 		pop();
 		push(_moviePlay->getCurFrame());
 		break;
-	case 84:
+	case SO_WIDTH:
 		pop();
 		push(_moviePlay->getWidth());
 		break;
@@ -3023,22 +3023,22 @@ void ScummEngine_v100he::decodeParseString(int m, int n) {
 	byte b = fetchScriptByte();
 
 	switch (b) {
-	case 6:		// SO_AT
+	case SO_AT:
 		_string[m].ypos = pop();
 		_string[m].xpos = pop();
 		_string[m].overhead = false;
 		break;
-	case 12:		// SO_CENTER
+	case SO_CENTER:
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 18:		// SO_CLIPPED
+	case SO_CLIPPED:
 		_string[m].right = pop();
 		break;
-	case 20:		// SO_COLOR
+	case SO_COLOR:
 		_string[m].color = pop();
 		break;
-	case 21:
+	case SO_COLOR_LIST:
 		colors = pop();
 		if (colors == 1) {
 			_string[m].color = pop();
@@ -3050,22 +3050,22 @@ void ScummEngine_v100he::decodeParseString(int m, int n) {
 			_string[m].color = _charsetColorMap[0];
 		}
 		break;
-	case 35:
+	case SO_FORMATTED_STRING:
 		decodeScriptString(name, true);
 		printString(m, name);
 		break;
-	case 46:		// SO_LEFT
+	case SO_LEFT:
 		_string[m].center = false;
 		_string[m].overhead = false;
 		break;
-	case 51:		// SO_MUMBLE
+	case SO_MUMBLE:
 		_string[m].no_talk_anim = true;
 		break;
-	case 56:		// SO_OVERHEAD
+	case SO_OVERHEAD:
 		_string[m].overhead = true;
 		_string[m].no_talk_anim = false;
 		break;
-	case 78:
+	case SO_TALKIE:
 		{
 		byte *dataPtr = getResourceAddress(rtTalkie, pop());
 		byte *text = findWrappedBlock(MKTAG('T','E','X','T'), dataPtr, 0, 0);
@@ -3074,11 +3074,11 @@ void ScummEngine_v100he::decodeParseString(int m, int n) {
 		printString(m, name);
 		}
 		break;
-	case 79:		// SO_TEXTSTRING
+	case SO_TEXTSTRING:
 		printString(m, _scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer) + 1;
 		break;
-	case 91:
+	case SO_BASEOP:
 		_string[m].loadDefault();
 		if (n) {
 			_actorToPrintStrFor = pop();
@@ -3088,7 +3088,7 @@ void ScummEngine_v100he::decodeParseString(int m, int n) {
 			}
 		}
 		break;
-	case 92:
+	case SO_END:
 		_string[m].saveDefault();
 		break;
 	default:
diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp
index be85fdf3e9b..cf3b0f1b603 100644
--- a/engines/scumm/he/script_v60he.cpp
+++ b/engines/scumm/he/script_v60he.cpp
@@ -334,7 +334,7 @@ void ScummEngine_v60he::o60_roomOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 172:		// SO_ROOM_SCROLL
+	case SO_ROOM_SCROLL:
 		b = pop();
 		a = pop();
 		if (a < (_screenWidth / 2))
@@ -349,7 +349,7 @@ void ScummEngine_v60he::o60_roomOps() {
 		VAR(VAR_CAMERA_MAX_X) = b;
 		break;
 
-	case 174:		// SO_ROOM_SCREEN
+	case SO_ROOM_SCREEN:
 		b = pop();
 		a = pop();
 		if (_game.heversion >= 71)
@@ -358,7 +358,7 @@ void ScummEngine_v60he::o60_roomOps() {
 			initScreens(a, b);
 		break;
 
-	case 175:		// SO_ROOM_PALETTE
+	case SO_ROOM_PALETTE:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -366,28 +366,28 @@ void ScummEngine_v60he::o60_roomOps() {
 		setPalColor(d, a, b, c);
 		break;
 
-	case 176:		// SO_ROOM_SHAKE_ON
+	case SO_ROOM_SHAKE_ON:
 		setShake(1);
 		break;
 
-	case 177:		// SO_ROOM_SHAKE_OFF
+	case SO_ROOM_SHAKE_OFF:
 		setShake(0);
 		break;
 
-	case 179:		// SO_ROOM_INTENSITY
+	case SO_ROOM_INTENSITY:
 		c = pop();
 		b = pop();
 		a = pop();
 		darkenPalette(a, a, a, b, c);
 		break;
 
-	case 180:		// SO_ROOM_SAVEGAME
+	case SO_ROOM_SAVEGAME:
 		_saveTemporaryState = true;
 		_saveLoadSlot = pop();
 		_saveLoadFlag = pop();
 		break;
 
-	case 181:		// SO_ROOM_FADE
+	case SO_ROOM_FADE:
 		a = pop();
 		if (_game.heversion >= 70) {
 			// Defaults to 1 but doesn't use fade effects
@@ -399,7 +399,7 @@ void ScummEngine_v60he::o60_roomOps() {
 		}
 		break;
 
-	case 182:		// SO_RGB_ROOM_INTENSITY
+	case SO_RGB_ROOM_INTENSITY:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -408,7 +408,7 @@ void ScummEngine_v60he::o60_roomOps() {
 		darkenPalette(a, b, c, d, e);
 		break;
 
-	case 183:		// SO_ROOM_SHADOW
+	case SO_ROOM_SHADOW:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -418,7 +418,7 @@ void ScummEngine_v60he::o60_roomOps() {
 			setShadowPalette(a, b, c, d, e, 0, 256);
 		break;
 
-	case 186:		// SO_ROOM_TRANSFORM
+	case SO_ROOM_TRANSFORM:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -426,23 +426,23 @@ void ScummEngine_v60he::o60_roomOps() {
 		palManipulateInit(a, b, c, d);
 		break;
 
-	case 187:		// SO_CYCLE_SPEED
+	case SO_CYCLE_SPEED:
 		b = pop();
 		a = pop();
 		assertRange(1, a, 16, "o60_roomOps: 187: color cycle");
 		_colorCycle[a - 1].delay = (b != 0) ? 0x4000 / (b * 0x4C) : 0;
 		break;
 
-	case 213:		// SO_ROOM_NEW_PALETTE
+	case SO_ROOM_NEW_PALETTE:
 		a = pop();
 		setCurrentPalette(a);
 		break;
-	case 220:
+	case SO_ROOM_COPY_PALETTE:
 		a = pop();
 		b = pop();
 		copyPalColor(a, b);
 		break;
-	case 221:
+	case SO_ROOM_SAVEGAME_BY_NAME:
 		byte buffer[100];
 		int len;
 
@@ -457,12 +457,12 @@ void ScummEngine_v60he::o60_roomOps() {
 		_saveLoadSlot = 255;
 		_saveTemporaryState = true;
 		break;
-	case 234:		// HE 7.1
+	case SO_OBJECT_ORDER:		// HE 7.1
 		b = pop();
 		a = pop();
 		swapObjects(a, b);
 		break;
-	case 236:		// HE 7.1
+	case SO_ROOM_PALETTE_IN_ROOM:		// HE 7.1
 		b = pop();
 		a = pop();
 		setRoomPalette(a, b);
@@ -502,7 +502,7 @@ void ScummEngine_v60he::o60_actorOps() {
 	int args[8];
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 197) {
+	if (subOp == SO_ACTOR_INIT) {
 		_curActor = pop();
 		return;
 	}
@@ -512,129 +512,129 @@ void ScummEngine_v60he::o60_actorOps() {
 		return;
 
 	switch (subOp) {
-	case 30:
+	case SO_ACTOR_DEFAULT_CLIPPED:
 		// _game.heversion >= 70
 		_actorClipOverride.bottom = pop();
 		_actorClipOverride.right = pop();
 		_actorClipOverride.top = pop();
 		_actorClipOverride.left = pop();
 		break;
-	case 76:		// SO_COSTUME
+	case SO_COSTUME:
 		a->setActorCostume(pop());
 		break;
-	case 77:		// SO_STEP_DIST
+	case SO_STEP_DIST:
 		j = pop();
 		i = pop();
 		a->setActorWalkSpeed(i, j);
 		break;
-	case 78:		// SO_SOUND
+	case SO_SOUND:
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; i++)
 			a->_sound[i] = args[i];
 		break;
-	case 79:		// SO_WALK_ANIMATION
+	case SO_WALK_ANIMATION:
 		a->_walkFrame = pop();
 		break;
-	case 80:		// SO_TALK_ANIMATION
+	case SO_TALK_ANIMATION:
 		a->_talkStopFrame = pop();
 		a->_talkStartFrame = pop();
 		break;
-	case 81:		// SO_STAND_ANIMATION
+	case SO_STAND_ANIMATION:
 		a->_standFrame = pop();
 		break;
-	case 82:		// SO_ANIMATION
+	case SO_ANIMATION:
 		// dummy case in scumm6
 		pop();
 		pop();
 		pop();
 		break;
-	case 83:		// SO_DEFAULT
+	case SO_DEFAULT:
 		a->initActor(0);
 		break;
-	case 84:		// SO_ELEVATION
+	case SO_ELEVATION:
 		a->setElevation(pop());
 		break;
-	case 85:		// SO_ANIMATION_DEFAULT
+	case SO_ANIMATION_DEFAULT:
 		a->_initFrame = 1;
 		a->_walkFrame = 2;
 		a->_standFrame = 3;
 		a->_talkStartFrame = 4;
 		a->_talkStopFrame = 5;
 		break;
-	case 86:		// SO_PALETTE
+	case SO_PALETTE:
 		j = pop();
 		i = pop();
 		assertRange(0, i, 255, "o60_actorOps: palette slot");
 		a->remapActorPaletteColor(i, j);
 		a->_needRedraw = true;
 		break;
-	case 87:		// SO_TALK_COLOR
+	case SO_TALK_COLOR:
 		a->_talkColor = pop();
 		break;
-	case 88:		// SO_ACTOR_NAME
+	case SO_ACTOR_NAME:
 		loadPtrToResource(rtActorName, a->_number, nullptr);
 		break;
-	case 89:		// SO_INIT_ANIMATION
+	case SO_INIT_ANIMATION:
 		a->_initFrame = pop();
 		break;
-	case 91:		// SO_ACTOR_WIDTH
+	case SO_ACTOR_WIDTH:
 		a->_width = pop();
 		break;
-	case 92:		// SO_SCALE
+	case SO_SCALE:
 		i = pop();
 		a->setScale(i, i);
 		break;
-	case 93:		// SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		a->_forceClip = 0;
 		break;
-	case 94:		// SO_ALWAYS_ZCLIP
+	case SO_ALWAYS_ZCLIP:
 		a->_forceClip = pop();
 		break;
-	case 95:		// SO_IGNORE_BOXES
+	case SO_IGNORE_BOXES:
 		a->_ignoreBoxes = 1;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 96:		// SO_FOLLOW_BOXES
+	case SO_FOLLOW_BOXES:
 		a->_ignoreBoxes = 0;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 97:		// SO_ANIMATION_SPEED
+	case SO_ANIMATION_SPEED:
 		a->setAnimSpeed(pop());
 		break;
-	case 98:		// SO_SHADOW
+	case SO_SHADOW:
 		a->_shadowMode = pop();
 		a->_needRedraw = true;
 		break;
-	case 99:		// SO_TEXT_OFFSET
+	case SO_TEXT_OFFSET:
 		a->_talkPosY = pop();
 		a->_talkPosX = pop();
 		break;
-	case 198:		// SO_ACTOR_VARIABLE
+	case SO_ACTOR_VARIABLE:
 		i = pop();
 		a->setAnimVar(pop(), i);
 		break;
-	case 215:		// SO_ACTOR_IGNORE_TURNS_ON
+	case SO_ACTOR_IGNORE_TURNS_ON:
 		a->_ignoreTurns = true;
 		break;
-	case 216:		// SO_ACTOR_IGNORE_TURNS_OFF
+	case SO_ACTOR_IGNORE_TURNS_OFF:
 		a->_ignoreTurns = false;
 		break;
-	case 217:		// SO_ACTOR_NEW
+	case SO_NEW:
 		a->initActor(2);
 		break;
-	case 218:
+	case SO_BACKGROUND_ON:
 		a->drawActorToBackBuf(a->getPos().x, a->getPos().y);
 		break;
-	case 219:
+	case SO_BACKGROUND_OFF:
 		a->_drawToBackBuf = false;
 		a->_needRedraw = true;
 		a->_needBgReset = true;
 		break;
-	case 225:
+	case SO_TALKIE:
 		{
 		byte string[128];
 		copyScriptString(string);
@@ -1003,15 +1003,15 @@ void ScummEngine_v60he::o60_soundOps() {
 	int arg = pop();
 
 	switch (subOp) {
-	case 222:
+	case SO_SOUND_START_VOLUME:
 		if (_imuse) {
 			_imuse->setMusicVolume(arg);
 		}
 		break;
-	case 223:
+	case SO_SOUND_VOLUME_RAMP:
 		// WORKAROUND: For error in room script 228 (room 2) of fbear.
 		break;
-	case 224:
+	case SO_SOUND_FREQUENCY:
 		// Fatty Bear's Birthday surprise uses this when playing the
 		// piano, but only when using one of the digitized instruments.
 		// See also o6_startSound().
@@ -1092,10 +1092,10 @@ void ScummEngine_v60he::o60_redimArray() {
 
 	byte subOp = fetchScriptByte();
 	switch (subOp) {
-	case 199:
+	case SO_INT_ARRAY:
 		redimArray(fetchScriptWord(), newX, newY, kIntArray);
 		break;
-	case 202:
+	case SO_BYTE_ARRAY:
 		redimArray(fetchScriptWord(), newX, newY, kByteArray);
 		break;
 	default:
@@ -1136,37 +1136,37 @@ void ScummEngine_v60he::decodeParseString(int m, int n) {
 	byte b = fetchScriptByte();
 
 	switch (b) {
-	case 65:		// SO_AT
+	case SO_AT:
 		_string[m].ypos = pop();
 		_string[m].xpos = pop();
 		_string[m].overhead = false;
 		break;
-	case 66:		// SO_COLOR
+	case SO_COLOR:
 		_string[m].color = pop();
 		break;
-	case 67:		// SO_CLIPPED
+	case SO_CLIPPED:
 		_string[m].right = pop();
 		break;
-	case 69:		// SO_CENTER
+	case SO_CENTER:
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 71:		// SO_LEFT
+	case SO_LEFT:
 		_string[m].center = false;
 		_string[m].overhead = false;
 		break;
-	case 72:		// SO_OVERHEAD
+	case SO_OVERHEAD:
 		_string[m].overhead = true;
 		_string[m].no_talk_anim = false;
 		break;
-	case 74:		// SO_MUMBLE
+	case SO_MUMBLE:
 		_string[m].no_talk_anim = true;
 		break;
-	case 75:		// SO_TEXTSTRING
+	case SO_TEXTSTRING:
 		printString(m, _scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer) + 1;
 		break;
-	case 0xF9:
+	case SO_COLOR_LIST:
 		colors = pop();
 		if (colors == 1) {
 			_string[m].color = pop();
@@ -1178,12 +1178,12 @@ void ScummEngine_v60he::decodeParseString(int m, int n) {
 			_string[m].color = _charsetColorMap[0];
 		}
 		break;
-	case 0xFE:
+	case SO_BASEOP:
 		_string[m].loadDefault();
 		if (n)
 			_actorToPrintStrFor = pop();
 		break;
-	case 0xFF:
+	case SO_END:
 		_string[m].saveDefault();
 		break;
 	default:
diff --git a/engines/scumm/he/script_v70he.cpp b/engines/scumm/he/script_v70he.cpp
index 3904c0cb471..1626e473498 100644
--- a/engines/scumm/he/script_v70he.cpp
+++ b/engines/scumm/he/script_v70he.cpp
@@ -57,48 +57,48 @@ void ScummEngine_v70he::o70_soundOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 9:		// SO_SOUND_SOFT?
+	case SO_SOFT:
 		_heSndFlags |= HE_SND_SOFT_SOUND;
 		break;
-	case 23:	// SO_VARIABLE
+	case SO_VARIABLE:
 		value = pop();
 		var = pop();
 		_heSndSoundId = pop();
 		((SoundHE *)_sound)->setSoundVar(_heSndSoundId, var, value);
 		break;
-	case 25:	// SO_SOUND_VOLUME
+	case SO_SOUND_VOLUME:
 		value = pop();
 		_heSndSoundId = pop();
 		_sound->addSoundToQueue(_heSndSoundId, 0, 0, HE_SND_VOL, 0, 0, value);
 		break;
-	case 56:	// SO_NOW
+	case SO_NOW:
 		_heSndFlags |= HE_SND_QUICK_START;
 		break;
-	case 164:	// SO_SOUND_ADD
+	case SO_SOUND_ADD:
 		_heSndFlags |= HE_SND_APPEND;
 		break;
-	case 222:
+	case SO_SOUND_START_VOLUME:
 		// WORKAROUND: For errors in room script 240 (room 4) of maze
 		break;
-	case 224:	// SO_SOUND_FREQUENCY
+	case SO_SOUND_FREQUENCY:
 		_heSndSoundFreq = pop();
 		break;
-	case 230:	// SO_SOUND_CHANNEL
+	case SO_SOUND_CHANNEL:
 		_heSndChannel = pop();
 		break;
-	case 231:	// SO_AT
+	case SO_AT:
 		_heSndOffset = pop();
 		break;
-	case 232:	// SO_SOUND_START
+	case SO_SOUND_START:
 		_heSndSoundId = pop();
 		_heSndOffset = 0;
 		_heSndSoundFreq = 11025;
 		_heSndChannel = VAR(VAR_SOUND_CHANNEL);
 		break;
-	case 245:	// SO_SOUND_LOOPING
+	case SO_SOUND_LOOPING:
 		_heSndFlags |= HE_SND_LOOP;
 		break;
-	case 255:	// SO_END
+	case SO_END:
 		_sound->addSoundToQueue(_heSndSoundId, _heSndOffset, _heSndChannel, _heSndFlags, _heSndSoundFreq);
 		_heSndFlags = 0;
 		break;
@@ -143,153 +143,153 @@ void ScummEngine_v70he::o70_resourceRoutines() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 100:		// SO_LOAD_SCRIPT
+	case SO_LOAD_SCRIPT:
 		resid = pop();
 		ensureResourceLoaded(rtScript, resid);
 		break;
-	case 101:		// SO_LOAD_SOUND
+	case SO_LOAD_SOUND:
 		resid = pop();
 		ensureResourceLoaded(rtSound, resid);
 		break;
-	case 102:		// SO_LOAD_COSTUME
+	case SO_LOAD_COSTUME:
 		resid = pop();
 		ensureResourceLoaded(rtCostume, resid);
 		break;
-	case 103:		// SO_LOAD_ROOM
+	case SO_LOAD_ROOM:
 		resid = pop();
 		ensureResourceLoaded(rtRoomImage, resid);
 		ensureResourceLoaded(rtRoom, resid);
 		break;
-	case 104:		// SO_NUKE_SCRIPT
+	case SO_NUKE_SCRIPT:
 		resid = pop();
 		_res->nukeResource(rtScript, resid);
 		break;
-	case 105:		// SO_NUKE_SOUND
+	case SO_NUKE_SOUND:
 		resid = pop();
 		_res->nukeResource(rtSound, resid);
 		break;
-	case 106:		// SO_NUKE_COSTUME
+	case SO_NUKE_COSTUME:
 		resid = pop();
 		_res->nukeResource(rtCostume, resid);
 		break;
-	case 107:		// SO_NUKE_ROOM
+	case SO_NUKE_ROOM:
 		resid = pop();
 		_res->nukeResource(rtRoom, resid);
 		_res->nukeResource(rtRoomImage, resid);
 		break;
-	case 108:		// SO_LOCK_SCRIPT
+	case SO_LOCK_SCRIPT:
 		resid = pop();
 		if (resid >= _numGlobalScripts)
 			break;
 		_res->lock(rtScript, resid);
 		break;
-	case 109:		// SO_LOCK_SOUND
+	case SO_LOCK_SOUND:
 		resid = pop();
 		_res->lock(rtSound, resid);
 		break;
-	case 110:		// SO_LOCK_COSTUME
+	case SO_LOCK_COSTUME:
 		resid = pop();
 		_res->lock(rtCostume, resid);
 		break;
-	case 111:		// SO_LOCK_ROOM
+	case SO_LOCK_ROOM:
 		resid = pop();
 		if (_game.heversion <= 71 && resid > 0x7F)
 			resid = _resourceMapper[resid & 0x7F];
 		_res->lock(rtRoom, resid);
 		_res->lock(rtRoomImage, resid);
 		break;
-	case 112:		// SO_UNLOCK_SCRIPT
+	case SO_UNLOCK_SCRIPT:
 		resid = pop();
 		if (resid >= _numGlobalScripts)
 			break;
 		_res->unlock(rtScript, resid);
 		break;
-	case 113:		// SO_UNLOCK_SOUND
+	case SO_UNLOCK_SOUND:
 		resid = pop();
 		_res->unlock(rtSound, resid);
 		break;
-	case 114:		// SO_UNLOCK_COSTUME
+	case SO_UNLOCK_COSTUME:
 		resid = pop();
 		_res->unlock(rtCostume, resid);
 		break;
-	case 115:		// SO_UNLOCK_ROOM
+	case SO_UNLOCK_ROOM:
 		resid = pop();
 		if (_game.heversion <= 71 && resid > 0x7F)
 			resid = _resourceMapper[resid & 0x7F];
 		_res->unlock(rtRoom, resid);
 		_res->unlock(rtRoomImage, resid);
 		break;
-	case 116:
+	case SO_CLEAR_HEAP:
 		// TODO: Clear Heap
 		break;
-	case 117:		// SO_LOAD_CHARSET
+	case SO_LOAD_CHARSET:
 		resid = pop();
 		loadCharset(resid);
 		break;
-	case 118:		// SO_NUKE_CHARSET
+	case SO_NUKE_CHARSET:
 		resid = pop();
 		nukeCharset(resid);
 		break;
-	case 119:		// SO_LOAD_OBJECT
+	case SO_LOAD_OBJECT:
 		{
 			int obj = pop();
 			int room = getObjectRoom(obj);
 			loadFlObject(obj, room);
 			break;
 		}
-	case 120:
+	case SO_PRELOAD_SCRIPT:
 		resid = pop();
 		if (resid >= _numGlobalScripts)
 			break;
 		//queueLoadResource(rtScript, resid);
 		break;
-	case 121:
+	case SO_PRELOAD_SOUND:
 		resid = pop();
 		//queueLoadResource(rtSound, resid);
 		break;
-	case 122:
+	case SO_PRELOAD_COSTUME:
 		resid = pop();
 		//queueLoadResource(rtCostume, resid);
 		break;
-	case 123:
+	case SO_PRELOAD_ROOM:
 		resid = pop();
 		//queueLoadResource(rtRoomImage, resid);
 		break;
-	case 159:
+	case SO_UNLOCK_IMAGE:
 		resid = pop();
 		_res->unlock(rtImage, resid);
 		break;
-	case 192:
+	case SO_NUKE_IMAGE:
 		resid = pop();
 		_res->nukeResource(rtImage, resid);
 		break;
-	case 201:
+	case SO_LOAD_IMAGE:
 		resid = pop();
 		ensureResourceLoaded(rtImage, resid);
 		break;
-	case 202:
+	case SO_LOCK_IMAGE:
 		resid = pop();
 		_res->lock(rtImage, resid);
 		break;
-	case 203:
+	case SO_PRELOAD_IMAGE:
 		resid = pop();
 		//queueLoadResource(rtImage, resid);
 		break;
-	case 233:
+	case SO_LOCK_FLOBJECT:
 		resid = pop();
 		objidx = getObjectIndex(resid);
 		if (objidx == -1)
 			break;
 		_res->lock(rtFlObject, _objs[objidx].fl_object_index);
 		break;
-	case 235:
+	case SO_UNLOCK_FLOBJECT:
 		resid = pop();
 		objidx = getObjectIndex(resid);
 		if (objidx == -1)
 			break;
 		_res->unlock(rtFlObject, _objs[objidx].fl_object_index);
 		break;
-	case 239:
+	case SO_PRELOAD_FLUSH:
 		// Used in airport
 		break;
 	default:
@@ -304,36 +304,36 @@ void ScummEngine_v70he::o70_systemOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 158:
+	case SO_RESTART:
 		restart();
 		break;
-	case 160:
+	case SO_QUIT:
 		// Confirm shutdown
 		confirmExitDialog();
 		break;
-	case 244:
+	case SO_QUIT_QUIT:
 		quitGame();
 		break;
-	case 250:
+	case SO_START_SYSTEM:
 		id = pop();
 		src = getStringAddress(id);
 		len = resStrLen(src) + 1;
 		memcpy(string, src, len);
 		debug(0, "Start executable (%s)", string);
 		break;
-	case 251:
+	case SO_START_SYSTEM_STRING:
 		convertMessageToString(_scriptPointer, string, sizeof(string));
 		len = resStrLen(_scriptPointer);
 		_scriptPointer += len + 1;
 		debug(0, "Start executable (%s)", string);
 		break;
-	case 252:
+	case SO_RESTART_STRING:
 		convertMessageToString(_scriptPointer, string, sizeof(string));
 		len = resStrLen(_scriptPointer);
 		_scriptPointer += len + 1;
 		debug(0, "Start game (%s)", string);
 		break;
-	case 253:
+	case SO_RESTART_ARRAY:
 		id = pop();
 		src = getStringAddress(id);
 		len = resStrLen(src) + 1;
@@ -367,19 +367,19 @@ void ScummEngine_v70he::o70_isResourceLoaded() {
 	int idx = pop();
 
 	switch (subOp) {
-	case 18:
+	case SO_IMAGE_LOADED:
 		type = rtImage;
 		break;
-	case 226:
+	case SO_ROOM_LOADED:
 		type = rtRoom;
 		break;
-	case 227:
+	case SO_COSTUME_LOADED:
 		type = rtCostume;
 		break;
-	case 228:
+	case SO_SOUND_LOADED:
 		type = rtSound;
 		break;
-	case 229:
+	case SO_SCRIPT_LOADED:
 		type = rtScript;
 		break;
 	default:
@@ -478,16 +478,16 @@ void ScummEngine_v70he::o70_setSystemMessage() {
 	_scriptPointer += len + 1;
 
 	switch (subOp) {
-	case 240:
+	case SO_PAUSE_MESSAGE:
 		debug(1,"o70_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 241: // Set Version
+	case SO_PAUSE_TITLE: // Set Version
 		debug(1,"o70_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 242:
+	case SO_PAUSE_OPTION:
 		debug(1,"o70_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 243: // Set Window Caption
+	case SO_TITLE_BAR: // Set Window Caption
 		// TODO: The 'name' string can contain non-ASCII data. This can lead to
 		// problems, because the encoding used for "name" is not clear.
 		//
diff --git a/engines/scumm/he/script_v71he.cpp b/engines/scumm/he/script_v71he.cpp
index 6233eeccde2..c2aa250a375 100644
--- a/engines/scumm/he/script_v71he.cpp
+++ b/engines/scumm/he/script_v71he.cpp
@@ -410,10 +410,10 @@ void ScummEngine_v71he::o71_polygonOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 68: // HE 100
-	case 69: // HE 100
-	case 246:
-	case 248:
+	case ScummEngine_v100he::SO_SET_POLYGON: // HE 100
+	case ScummEngine_v100he::SO_SET_POLYGON_LOCAL: // HE 100
+	case SO_SET_POLYGON:
+	case SO_SET_POLYGON_LOCAL:
 		vert4y = pop();
 		vert4x = pop();
 		vert3y = pop();
@@ -422,12 +422,12 @@ void ScummEngine_v71he::o71_polygonOps() {
 		vert2x = pop();
 		vert1y = pop();
 		vert1x = pop();
-		flag = (subOp == 69 || subOp == 248);
+		flag = (subOp == ScummEngine_v100he::SO_SET_POLYGON_LOCAL || subOp == SO_SET_POLYGON_LOCAL);
 		id = pop();
 		_wiz->polygonStore(id, flag, vert1x, vert1y, vert2x, vert2y, vert3x, vert3y, vert4x, vert4y);
 		break;
-	case 28: // HE 100
-	case 247:
+	case ScummEngine_v100he::SO_DELETE_POLYGON: // HE 100
+	case SO_DELETE_POLYGON:
 		toId = pop();
 		fromId = pop();
 		_wiz->polygonErase(fromId, toId);
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index ae29efdcbe4..9d7de9beaa1 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -574,18 +574,18 @@ void ScummEngine_v72he::o72_drawObject() {
 	int state, y, x;
 
 	switch (subOp) {
-	case 62:
+	case SO_AT_IMAGE:
 		state = pop();
 		y = pop();
 		x = pop();
 		break;
-	case 63:
+	case SO_IMAGE:
 		state = pop();
 		if (state == 0)
 			state = 1;
 		y = x = -100;
 		break;
-	case 65:
+	case SO_AT:
 		state = 1;
 		y = pop();
 		x = pop();
@@ -629,27 +629,27 @@ void ScummEngine_v72he::o72_getArrayDimSize() {
 	}
 
 	switch (subOp) {
-	case 1:
-	case 3:
+	case SO_NONE:
+	case SO_NIBBLE:
 		val1 = FROM_LE_32(ah->dim1end);
 		val2 = FROM_LE_32(ah->dim1start);
 		push(val1 - val2 + 1);
 		break;
-	case 2:
+	case SO_BIT:
 		val1 = FROM_LE_32(ah->dim2end);
 		val2 = FROM_LE_32(ah->dim2start);
 		push(val1 - val2 + 1);
 		break;
-	case 4:
+	case SO_BYTE:
 		push(FROM_LE_32(ah->dim1start));
 		break;
-	case 5:
+	case SO_INT:
 		push(FROM_LE_32(ah->dim1end));
 		break;
-	case 6:
+	case SO_DWORD:
 		push(FROM_LE_32(ah->dim2start));
 		break;
-	case 7:
+	case SO_STRING:
 		push(FROM_LE_32(ah->dim2end));
 		break;
 	default:
@@ -675,7 +675,7 @@ void ScummEngine_v72he::o72_roomOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 172:		// SO_ROOM_SCROLL
+	case SO_ROOM_SCROLL:
 		b = pop();
 		a = pop();
 		if (a < (_screenWidth / 2))
@@ -690,13 +690,13 @@ void ScummEngine_v72he::o72_roomOps() {
 		VAR(VAR_CAMERA_MAX_X) = b;
 		break;
 
-	case 174:		// SO_ROOM_SCREEN
+	case SO_ROOM_SCREEN:
 		b = pop();
 		a = pop();
 		initScreens(a, _screenHeight);
 		break;
 
-	case 175:		// SO_ROOM_PALETTE
+	case SO_ROOM_PALETTE:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -704,25 +704,25 @@ void ScummEngine_v72he::o72_roomOps() {
 		setPalColor(d, a, b, c);
 		break;
 
-	case 179:		// SO_ROOM_INTENSITY
+	case SO_ROOM_INTENSITY:
 		c = pop();
 		b = pop();
 		a = pop();
 		darkenPalette(a, a, a, b, c);
 		break;
 
-	case 180:		// SO_ROOM_SAVEGAME
+	case SO_ROOM_SAVEGAME:
 		_saveTemporaryState = true;
 		_saveLoadSlot = pop();
 		_saveLoadFlag = pop();
 		break;
 
-	case 181:		// SO_ROOM_FADE
+	case SO_ROOM_FADE:
 		// Defaults to 1 but doesn't use fade effects
 		a = pop();
 		break;
 
-	case 182:		// SO_RGB_ROOM_INTENSITY
+	case SO_RGB_ROOM_INTENSITY:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -731,18 +731,18 @@ void ScummEngine_v72he::o72_roomOps() {
 		darkenPalette(a, b, c, d, e);
 		break;
 
-	case 213:		// SO_ROOM_NEW_PALETTE
+	case SO_ROOM_NEW_PALETTE:
 		a = pop();
 		setCurrentPalette(a);
 		break;
 
-	case 220:		// SO_ROOM_COPY_PALETTE
+	case SO_ROOM_COPY_PALETTE:
 		a = pop();
 		b = pop();
 		copyPalColor(a, b);
 		break;
 
-	case 221:		// SO_ROOM_SAVEGAME_BY_NAME
+	case SO_ROOM_SAVEGAME_BY_NAME:
 		byte buffer[256];
 
 		copyScriptString((byte *)buffer, sizeof(buffer));
@@ -755,13 +755,13 @@ void ScummEngine_v72he::o72_roomOps() {
 		_saveTemporaryState = true;
 		break;
 
-	case 234:		// SO_OBJECT_ORDER
+	case SO_OBJECT_ORDER:
 		b = pop();
 		a = pop();
 		swapObjects(a, b);
 		break;
 
-	case 236:		// SO_ROOM_PALETTE_IN_ROOM
+	case SO_ROOM_PALETTE_IN_ROOM:
 		b = pop();
 		a = pop();
 		setRoomPalette(a, b);
@@ -779,7 +779,7 @@ void ScummEngine_v72he::o72_actorOps() {
 	byte string[256];
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 197) {
+	if (subOp == SO_ACTOR_INIT) {
 		_curActor = pop();
 		return;
 	}
@@ -789,174 +789,174 @@ void ScummEngine_v72he::o72_actorOps() {
 		return;
 
 	switch (subOp) {
-	case 21: 		// SO_CONDITION (HE 80+)
+	case SO_CONDITION: 		// (HE 80+)
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; ++i) {
 			a->setUserCondition(args[i] & 0x7F, args[i] & 0x80);
 		}
 		break;
-	case 24: 		// SO_TALK_CONDITION (HE 80+)
+	case SO_TALK_CONDITION: 		// (HE 80+)
 		k = pop();
 		if (k == 0)
 			k = _rnd.getRandomNumberRng(1, 10);
 		a->_heNoTalkAnimation = 1;
 		a->setTalkCondition(k);
 		break;
-	case 43: 		// SO_PRIORITY (HE 90+)
+	case SO_PRIORITY: 		// (HE 90+)
 		a->_layer = pop();
 		a->_needRedraw = true;
 		break;
-	case 64:		// SO_ACTOR_DEFAULT_CLIPPED
+	case SO_ACTOR_DEFAULT_CLIPPED:
 		_actorClipOverride.bottom = pop();
 		_actorClipOverride.right = pop();
 		_actorClipOverride.top = pop();
 		_actorClipOverride.left = pop();
 		adjustRect(_actorClipOverride);
 		break;
-	case 65: 		// SO_AT (HE 98+)
+	case SO_AT: 		// (HE 98+)
 		j = pop();
 		i = pop();
 		a->putActor(i, j);
 		break;
-	case 67:		// SO_CLIPPED (HE 99+)
+	case SO_CLIPPED:		// (HE 99+)
 		a->_clipOverride.bottom = pop();
 		a->_clipOverride.right = pop();
 		a->_clipOverride.top = pop();
 		a->_clipOverride.left = pop();
 		adjustRect(a->_clipOverride);
 		break;
-	case 68: // 	// SO_ERASE (HE 90+)
+	case SO_ERASE: // 	// (HE 90+)
 		k = pop();
 		a->setHEFlag(1, k);
 		break;
-	case 76:		// SO_COSTUME
+	case SO_COSTUME:
 		a->setActorCostume(pop());
 		break;
-	case 77:		// SO_STEP_DIST
+	case SO_STEP_DIST:
 		j = pop();
 		i = pop();
 		a->setActorWalkSpeed(i, j);
 		break;
-	case 78:		// SO_SOUND
+	case SO_SOUND:
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; i++)
 			a->_sound[i] = args[i];
 		break;
-	case 79:		// SO_WALK_ANIMATION
+	case SO_WALK_ANIMATION:
 		a->_walkFrame = pop();
 		break;
-	case 80:		// SO_TALK_ANIMATION
+	case SO_TALK_ANIMATION:
 		a->_talkStopFrame = pop();
 		a->_talkStartFrame = pop();
 		break;
-	case 81:		// SO_STAND_ANIMATION
+	case SO_STAND_ANIMATION:
 		a->_standFrame = pop();
 		break;
-	case 82:		// SO_ANIMATION
+	case SO_ANIMATION:
 		// dummy case in scumm6
 		pop();
 		pop();
 		pop();
 		break;
-	case 83:		// SO_DEFAULT
+	case SO_DEFAULT:
 		a->initActor(0);
 		break;
-	case 84:		// SO_ELEVATION
+	case SO_ELEVATION:
 		a->setElevation(pop());
 		break;
-	case 85:		// SO_ANIMATION_DEFAULT
+	case SO_ANIMATION_DEFAULT:
 		a->_initFrame = 1;
 		a->_walkFrame = 2;
 		a->_standFrame = 3;
 		a->_talkStartFrame = 4;
 		a->_talkStopFrame = 5;
 		break;
-	case 86:		// SO_PALETTE
+	case SO_PALETTE:
 		j = pop();
 		i = pop();
 		assertRange(0, i, 255, "palette slot");
 		a->remapActorPaletteColor(i, j);
 		a->_needRedraw = true;
 		break;
-	case 87:		// SO_TALK_COLOR
+	case SO_TALK_COLOR:
 		a->_talkColor = pop();
 		// WORKAROUND bug #13730: defined subtitles color 16 is very dark and hard to read on the dark background.
 		// we change it to brighter color to ease reading.
 		if (_game.id == GID_FREDDI4 && _game.heversion == 98 && _currentRoom == 43 && a->_talkColor == 16)
 			a->_talkColor = 200;
 		break;
-	case 88:		// SO_ACTOR_NAME
+	case SO_ACTOR_NAME:
 		copyScriptString(string, sizeof(string));
 		loadPtrToResource(rtActorName, a->_number, string);
 		break;
-	case 89:		// SO_INIT_ANIMATION
+	case SO_INIT_ANIMATION:
 		a->_initFrame = pop();
 		break;
-	case 91:		// SO_ACTOR_WIDTH
+	case SO_ACTOR_WIDTH:
 		a->_width = pop();
 		break;
-	case 92:		// SO_SCALE
+	case SO_SCALE:
 		i = pop();
 		a->setScale(i, i);
 		break;
-	case 93:		// SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		a->_forceClip = 0;
 		break;
-	case 94:		// SO_ALWAYS_ZCLIP
+	case SO_ALWAYS_ZCLIP:
 		a->_forceClip = pop();
 		break;
-	case 95:		// SO_IGNORE_BOXES
+	case SO_IGNORE_BOXES:
 		a->_ignoreBoxes = 1;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 96:		// SO_FOLLOW_BOXES
+	case SO_FOLLOW_BOXES:
 		a->_ignoreBoxes = 0;
 		a->_forceClip = 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 97:		// SO_ANIMATION_SPEED
+	case SO_ANIMATION_SPEED:
 		a->setAnimSpeed(pop());
 		break;
-	case 98:		// SO_SHADOW
+	case SO_SHADOW:
 		a->_heXmapNum = pop();
 		a->_needRedraw = true;
 		break;
-	case 99:		// SO_TEXT_OFFSET
+	case SO_TEXT_OFFSET:
 		a->_talkPosY = pop();
 		a->_talkPosX = pop();
 		break;
-	case 156:		// SO_CHARSET (HE 72+)
+	case SO_CHARSET_SET:		// (HE 72+)
 		a->_charset = pop();
 		break;
-	case 175:		// SO_ROOM_PALETTE (HE 99+)
+	case SO_ROOM_PALETTE:		// (HE 99+)
 		a->_hePaletteNum = pop();
 		a->_needRedraw = true;
 		break;
-	case 198:		// SO_ACTOR_VARIABLE
+	case SO_ACTOR_VARIABLE:
 		i = pop();
 		a->setAnimVar(pop(), i);
 		break;
-	case 215:		// SO_ACTOR_IGNORE_TURNS_ON
+	case SO_ACTOR_IGNORE_TURNS_ON:
 		a->_ignoreTurns = true;
 		break;
-	case 216:		// SO_ACTOR_IGNORE_TURNS_OFF
+	case SO_ACTOR_IGNORE_TURNS_OFF:
 		a->_ignoreTurns = false;
 		break;
-	case 217:		// SO_ACTOR_NEW
+	case SO_NEW:
 		a->initActor(2);
 		break;
-	case 218:		// SO_BACKGROUND_ON
+	case SO_BACKGROUND_ON:
 		a->drawActorToBackBuf(a->getPos().x, a->getPos().y);
 		break;
-	case 219:		// SO_BACKGROUND_OFF
+	case SO_BACKGROUND_OFF:
 		a->_drawToBackBuf = false;
 		a->_needRedraw = true;
 		a->_needBgReset = true;
 		break;
-	case 225:		// SO_TALKIE
+	case SO_TALKIE:
 		{
 		copyScriptString(string, sizeof(string));
 		int slot = pop();
@@ -980,7 +980,7 @@ void ScummEngine_v72he::o72_verbOps() {
 	byte name[200];
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 196) {
+	if (subOp == SO_VERB_INIT) {
 		_curVerb = pop();
 		_curVerbSlot = getVerbSlot(_curVerb, 0);
 		assertRange(0, _curVerbSlot, _numVerbs - 1, "new verb slot");
@@ -989,7 +989,7 @@ void ScummEngine_v72he::o72_verbOps() {
 	vs = &_verbs[_curVerbSlot];
 	slot = _curVerbSlot;
 	switch (subOp) {
-	case 124:		// SO_VERB_IMAGE
+	case SO_VERB_IMAGE:
 		a = pop();
 		if (_curVerbSlot) {
 			setVerbObject(_roomResource, a, slot);
@@ -997,33 +997,33 @@ void ScummEngine_v72he::o72_verbOps() {
 			vs->imgindex = a;
 		}
 		break;
-	case 125:		// SO_VERB_NAME
+	case SO_VERB_NAME:
 		copyScriptString(name, sizeof(name));
 		loadPtrToResource(rtVerb, slot, name);
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 126:		// SO_VERB_COLOR
+	case SO_VERB_COLOR:
 		vs->color = pop();
 		break;
-	case 127:		// SO_VERB_HICOLOR
+	case SO_VERB_HICOLOR:
 		vs->hicolor = pop();
 		break;
-	case 128:		// SO_VERB_AT
+	case SO_VERB_AT:
 		vs->curRect.top = pop();
 		vs->curRect.left = pop();
 		break;
-	case 129:		// SO_VERB_ON
+	case SO_VERB_ON:
 		vs->curmode = 1;
 		break;
-	case 130:		// SO_VERB_OFF
+	case SO_VERB_OFF:
 		vs->curmode = 0;
 		break;
-	case 131:		// SO_VERB_DELETE
+	case SO_VERB_DELETE:
 		slot = getVerbSlot(pop(), 0);
 		killVerb(slot);
 		break;
-	case 132:		// SO_VERB_NEW
+	case SO_VERB_NEW:
 		slot = getVerbSlot(_curVerb, 0);
 		if (slot == 0) {
 			for (slot = 1; slot < _numVerbs; slot++) {
@@ -1047,19 +1047,19 @@ void ScummEngine_v72he::o72_verbOps() {
 		vs->center = 0;
 		vs->imgindex = 0;
 		break;
-	case 133:		// SO_VERB_DIMCOLOR
+	case SO_VERB_DIMCOLOR:
 		vs->dimcolor = pop();
 		break;
-	case 134:		// SO_VERB_DIM
+	case SO_VERB_DIM:
 		vs->curmode = 2;
 		break;
-	case 135:		// SO_VERB_KEY
+	case SO_VERB_KEY:
 		vs->key = pop();
 		break;
-	case 136:		// SO_VERB_CENTER
+	case SO_VERB_CENTER:
 		vs->center = 1;
 		break;
-	case 137:		// SO_VERB_NAME_STR
+	case SO_VERB_NAME_STR:
 		a = pop();
 		if (a == 0) {
 			loadPtrToResource(rtVerb, slot, (const byte *)"");
@@ -1069,7 +1069,7 @@ void ScummEngine_v72he::o72_verbOps() {
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 139:		// SO_VERB_IMAGE_IN_ROOM
+	case SO_VERB_IMAGE_IN_ROOM:
 		b = pop();
 		a = pop();
 
@@ -1079,7 +1079,7 @@ void ScummEngine_v72he::o72_verbOps() {
 			vs->imgindex = a;
 		}
 		break;
-	case 140:		// SO_VERB_BAKCOLOR
+	case SO_VERB_BAKCOLOR:
 		vs->bkcolor = pop();
 		break;
 	case 255:
@@ -1111,14 +1111,14 @@ void ScummEngine_v72he::o72_arrayOps() {
 	debug(9,"o72_arrayOps: array %d case %d", array, subOp);
 
 	switch (subOp) {
-	case 7:			// SO_ASSIGN_STRING
+	case SO_STRING:
 		copyScriptString(string, sizeof(string));
 		len = resStrLen(string);
 		data = defineArray(array, kStringArray, 0, 0, 0, len);
 		memcpy(data, string, len);
 		break;
 
-	case 126:		// SO_COMPLEX_ARRAY_ASSIGNMENT
+	case SO_COMPLEX_ARRAY_ASSIGNMENT:
 		len = getStackList(list, ARRAYSIZE(list));
 		dim1end = pop();
 		dim1start = pop();
@@ -1142,7 +1142,7 @@ void ScummEngine_v72he::o72_arrayOps() {
 			dim2start++;
 		}
 		break;
-	case 127:		// SO_COMPLEX_ARRAY_COPY_OPERATION
+	case SO_COMPLEX_ARRAY_COPY_OPERATION:
 		{
 			int a2_dim1end = pop();
 			int a2_dim1start = pop();
@@ -1159,7 +1159,7 @@ void ScummEngine_v72he::o72_arrayOps() {
 			copyArray(array, a1_dim2start, a1_dim2end, a1_dim1start, a1_dim1end, array2, a2_dim2start, a2_dim2end, a2_dim1start, a2_dim1end);
 		}
 		break;
-	case 128:		// SO_RANGE_ARRAY_ASSIGNMENT
+	case SO_RANGE_ARRAY_ASSIGNMENT:
 		b = pop();
 		c = pop();
 		dim1end = pop();
@@ -1190,13 +1190,13 @@ void ScummEngine_v72he::o72_arrayOps() {
 			dim2start++;
 		}
 		break;
-	case 194:		// SO_FORMATTED_STRING
+	case SO_FORMATTED_STRING:
 		decodeScriptString(string);
 		len = resStrLen(string);
 		data = defineArray(array, kStringArray, 0, 0, 0, len);
 		memcpy(data, string, len);
 		break;
-	case 208:		// SO_ASSIGN_INT_LIST
+	case SO_ASSIGN_INT_LIST:
 		b = pop();
 		c = pop();
 		id = readVar(array);
@@ -1207,7 +1207,7 @@ void ScummEngine_v72he::o72_arrayOps() {
 			writeArray(array, 0, b + c, pop());
 		}
 		break;
-	case 212:		// SO_ASSIGN_2DIM_LIST
+	case SO_ASSIGN_2DIM_LIST:
 		len = getStackList(list, ARRAYSIZE(list));
 		id = readVar(array);
 		if (id == 0)
@@ -1228,28 +1228,28 @@ void ScummEngine_v72he::o72_systemOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 22: // HE80+
+	case SO_FLUSH_OBJECT_DRAW_QUE: // HE80+
 		clearDrawObjectQueue();
 		break;
-	case 26: // HE80+
+	case SO_UPDATE_SCREEN: // HE80+
 		restoreBackgroundHE(Common::Rect(_screenWidth, _screenHeight));
 		updatePalette();
 		break;
-	case 158:
+	case SO_RESTART:
 		restart();
 		break;
-	case 160:
+	case SO_QUIT:
 		// Confirm shutdown
 		confirmExitDialog();
 		break;
-	case 244:
+	case SO_QUIT_QUIT:
 		quitGame();
 		break;
-	case 251:
+	case SO_START_SYSTEM_STRING:
 		copyScriptString(string, sizeof(string));
 		debug(0, "Start executable (%s)", string);
 		break;
-	case 252:
+	case SO_RESTART_STRING:
 		copyScriptString(string, sizeof(string));
 		debug(0, "Start game (%s)", string);
 		break;
@@ -1294,25 +1294,25 @@ void ScummEngine_v72he::o72_dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 2:		// SO_BIT_ARRAY
+	case SO_BIT:
 		data = kBitArray;
 		break;
-	case 3:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE:
 		data = kNibbleArray;
 		break;
-	case 4:		// SO_BYTE_ARRAY
+	case SO_BYTE:
 		data = kByteArray;
 		break;
-	case 5:		// SO_INT_ARRAY
+	case SO_INT:
 		data = kIntArray;
 		break;
-	case 6:
+	case SO_DWORD:
 		data = kDwordArray;
 		break;
-	case 7:		// SO_STRING_ARRAY
+	case SO_STRING:
 		data = kStringArray;
 		break;
-	case 204:		// SO_UNDIM_ARRAY
+	case SO_UNDIM_ARRAY:
 		nukeArray(fetchScriptWord());
 		return;
 	default:
@@ -1329,22 +1329,22 @@ void ScummEngine_v72he::o72_dim2dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 2:		// SO_BIT_ARRAY
+	case SO_BIT:
 		data = kBitArray;
 		break;
-	case 3:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE:
 		data = kNibbleArray;
 		break;
-	case 4:		// SO_BYTE_ARRAY
+	case SO_BYTE:
 		data = kByteArray;
 		break;
-	case 5:		// SO_INT_ARRAY
+	case SO_INT:
 		data = kIntArray;
 		break;
-	case 6:
+	case SO_DWORD:
 		data = kDwordArray;
 		break;
-	case 7:		// SO_STRING_ARRAY
+	case SO_STRING:
 		data = kStringArray;
 		break;
 	default:
@@ -1484,25 +1484,25 @@ void ScummEngine_v72he::o72_readFile() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 4:
+	case SO_BYTE:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readByte();
 		push(val);
 		break;
-	case 5:
+	case SO_INT:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readUint16LE();
 		push(val);
 		break;
-	case 6:
+	case SO_DWORD:
 		slot = pop();
 		assert(_hInFileTable[slot]);
 		val = _hInFileTable[slot]->readUint32LE();
 		push(val);
 		break;
-	case 8:
+	case SO_ARRAY:
 		fetchScriptByte();
 		size = pop();
 		slot = pop();
@@ -1552,16 +1552,16 @@ void ScummEngine_v72he::o72_writeFile() {
 
 	assert(_hOutFileTable[slot]);
 	switch (subOp) {
-	case 4:
+	case SO_BYTE:
 		_hOutFileTable[slot]->writeByte(resID);
 		break;
-	case 5:
+	case SO_INT:
 		_hOutFileTable[slot]->writeUint16LE(resID);
 		break;
-	case 6:
+	case SO_DWORD:
 		_hOutFileTable[slot]->writeUint32LE(resID);
 		break;
-	case 8:
+	case SO_ARRAY:
 		fetchScriptByte();
 		writeFileFromArray(slot, resID);
 		break;
@@ -1623,15 +1623,15 @@ void ScummEngine_v72he::o72_getPixel() {
 	}
 
 	switch (subOp) {
-	case 9: // HE 100
-	case 218:
+	case ScummEngine_v100he::SO_BACKGROUND_ON: // HE 100
+	case SO_BACKGROUND_ON:
 		if (_game.features & GF_16BIT_COLOR)
 			area = READ_UINT16(vs->getBackPixels(x, y - vs->topline));
 		else
 			area = *vs->getBackPixels(x, y - vs->topline);
 		break;
-	case 8: // HE 100
-	case 219:
+	case ScummEngine_v100he::SO_BACKGROUND_OFF: // HE 100
+	case SO_BACKGROUND_OFF:
 		if (_game.features & GF_16BIT_COLOR)
 			area = READ_UINT16(vs->getPixels(x, y - vs->topline));
 		else
@@ -1693,13 +1693,13 @@ void ScummEngine_v72he::o72_redimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 4:
+	case SO_BYTE:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kByteArray);
 		break;
-	case 5:
+	case SO_INT:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kIntArray);
 		break;
-	case 6:
+	case SO_DWORD:
 		redimArray(fetchScriptWord(), 0, newX, 0, newY, kDwordArray);
 		break;
 	default:
@@ -1849,8 +1849,8 @@ void ScummEngine_v72he::o72_readINI() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 43: // HE 100
-	case 6: // number
+	case ScummEngine_v100he::SO_DWORD: // HE 100
+	case SO_DWORD: // number
 		if (!strcmp((char *)option, "DisablePrinting") || !strcmp((char *)option, "NoPrinting")) {
 			push(1);
 		} else if (!strcmp((char *)option, "TextOn")) {
@@ -1868,8 +1868,8 @@ void ScummEngine_v72he::o72_readINI() {
 			push(ConfMan.getInt((char *)option));
 		}
 		break;
-	case 77: // HE 100
-	case 7: // string
+	case ScummEngine_v100he::SO_STRING: // HE 100
+	case SO_STRING: // string
 		writeVar(0, 0);
 		if (!strcmp((char *)option, "HE3File")) {
 			Common::String fileName = generateFilename(-3);
@@ -1907,16 +1907,16 @@ void ScummEngine_v72he::o72_writeINI() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 43: // HE 100
-	case 6: // number
+	case ScummEngine_v100he::SO_DWORD: // HE 100
+	case SO_DWORD: // number
 		value = pop();
 		copyScriptString(option, sizeof(option));
 		debug(1, "o72_writeINI: Option %s Value %d", option, value);
 
 		ConfMan.setInt((char *)option, value);
 		break;
-	case 77: // HE 100
-	case 7: // string
+	case ScummEngine_v100he::SO_STRING: // HE 100
+	case SO_STRING: // string
 		copyScriptString(string, sizeof(string));
 		copyScriptString(option, sizeof(option));
 		debug(1, "o72_writeINI: Option %s String %s", option, string);
@@ -1956,19 +1956,19 @@ void ScummEngine_v72he::o72_getResourceSize() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 13:
+	case SO_SOUND_SIZE:
 		push(getSoundResourceSize(resid));
 		return;
-	case 14:
+	case SO_ROOM_SIZE:
 		type = rtRoomImage;
 		break;
-	case 15:
+	case SO_IMAGE_SIZE:
 		type = rtImage;
 		break;
-	case 16:
+	case SO_COSTUME_SIZE:
 		type = rtCostume;
 		break;
-	case 17:
+	case SO_SCRIPT_SIZE:
 		type = rtScript;
 		break;
 	default:
@@ -1995,16 +1995,16 @@ void ScummEngine_v72he::o72_setSystemMessage() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 240:
+	case SO_PAUSE_MESSAGE:
 		debug(1,"o72_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 241: // Set Version
+	case SO_PAUSE_TITLE: // Set Version
 		debug(1,"o72_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 242:
+	case SO_PAUSE_OPTION:
 		debug(1,"o72_setSystemMessage: (%d) %s", subOp, name);
 		break;
-	case 243: // Set Window Caption
+	case SO_TITLE_BAR: // Set Window Caption
 		// TODO: The 'name' string can contain non-ASCII data. This can lead to
 		// problems, because the encoding used for "name" is not clear.
 		//
@@ -2027,41 +2027,41 @@ void ScummEngine_v72he::decodeParseString(int m, int n) {
 	byte b = fetchScriptByte();
 
 	switch (b) {
-	case 65:		// SO_AT
+	case SO_AT:
 		_string[m].ypos = pop();
 		_string[m].xpos = pop();
 		_string[m].overhead = false;
 		break;
-	case 66:		// SO_COLOR
+	case SO_COLOR:
 		_string[m].color = pop();
 		break;
-	case 67:		// SO_CLIPPED
+	case SO_CLIPPED:
 		_string[m].right = pop();
 		break;
-	case 69:		// SO_CENTER
+	case SO_CENTER:
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 71:		// SO_LEFT
+	case SO_LEFT:
 		_string[m].center = false;
 		_string[m].overhead = false;
 		break;
-	case 72:		// SO_OVERHEAD
+	case SO_OVERHEAD:
 		_string[m].overhead = true;
 		_string[m].no_talk_anim = false;
 		break;
-	case 74:		// SO_MUMBLE
+	case SO_MUMBLE:
 		_string[m].no_talk_anim = true;
 		break;
-	case 75:		// SO_TEXTSTRING
+	case SO_TEXTSTRING:
 		printString(m, _scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer) + 1;
 		break;
-	case 194:
+	case SO_FORMATTED_STRING:
 		decodeScriptString(name, true);
 		printString(m, name);
 		break;
-	case 0xE1:
+	case SO_TALKIE:
 		{
 		byte *dataPtr = getResourceAddress(rtTalkie, pop());
 		byte *text = findWrappedBlock(MKTAG('T','E','X','T'), dataPtr, 0, 0);
@@ -2070,7 +2070,7 @@ void ScummEngine_v72he::decodeParseString(int m, int n) {
 		printString(m, name);
 		}
 		break;
-	case 0xF9:
+	case SO_COLOR_LIST:
 		colors = pop();
 		if (colors == 1) {
 			_string[m].color = pop();
@@ -2086,7 +2086,7 @@ void ScummEngine_v72he::decodeParseString(int m, int n) {
 			_string[m].color = _charsetColorMap[0];
 		}
 		break;
-	case 0xFE:
+	case SO_BASEOP:
 		_string[m].loadDefault();
 		if (n) {
 			_actorToPrintStrFor = pop();
@@ -2096,7 +2096,7 @@ void ScummEngine_v72he::decodeParseString(int m, int n) {
 			}
 		}
 		break;
-	case 0xFF:
+	case SO_END:
 		_string[m].saveDefault();
 		break;
 	default:
diff --git a/engines/scumm/he/script_v80he.cpp b/engines/scumm/he/script_v80he.cpp
index 9513db62095..714b18022d8 100644
--- a/engines/scumm/he/script_v80he.cpp
+++ b/engines/scumm/he/script_v80he.cpp
@@ -67,16 +67,16 @@ void ScummEngine_v80he::o80_createSound() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 27:
+	case SO_ADD:
 		createSound(_heSndResId, pop());
 		break;
-	case 217:
+	case SO_NEW:
 		createSound(_heSndResId, -1);
 		break;
-	case 232:
+	case SO_SOUND_START:
 		_heSndResId = pop();
 		break;
-	case 255:
+	case SO_END:
 		// dummy case
 		break;
 	default:
@@ -184,15 +184,15 @@ void ScummEngine_v80he::o80_readConfigFile() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 43: // HE 100
-	case 6: // number
+	case ScummEngine_v100he::SO_DWORD: // HE 100
+	case SO_DWORD: // number
 		if (!strcmp((char *)option, "Benchmark"))
 			push(2);
 		else
 			push(atoi(entry.c_str()));
 		break;
-	case 77: // HE 100
-	case 7: // string
+	case ScummEngine_v100he::SO_STRING: // HE 100
+	case SO_STRING: // string
 		writeVar(0, 0);
 		len = resStrLen((const byte *)entry.c_str());
 		data = defineArray(0, kStringArray, 0, 0, 0, len);
@@ -213,16 +213,16 @@ void ScummEngine_v80he::o80_writeConfigFile() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 43: // HE 100
-	case 6: // number
+	case ScummEngine_v100he::SO_DWORD: // HE 100
+	case SO_DWORD: // number
 		value = pop();
 		Common::sprintf_s(string, "%d", value);
 		copyScriptString(option, sizeof(option));
 		copyScriptString(section, sizeof(section));
 		copyScriptString(filename, sizeof(filename));
 		break;
-	case 77: // HE 100
-	case 7: // string
+	case ScummEngine_v100he::SO_STRING: // HE 100
+	case SO_STRING: // string
 		copyScriptString(string, sizeof(string));
 		copyScriptString(option, sizeof(option));
 		copyScriptString(section, sizeof(section));
@@ -261,46 +261,46 @@ void ScummEngine_v80he::o80_cursorCommand() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0x13:
-	case 0x14:
+	case SO_CURSOR_IMAGE:
+	case SO_CURSOR_COLOR_IMAGE:
 		a = pop();
 		_wiz->loadWizCursor(a, 0);
 		break;
-	case 0x3C:
+	case SO_BUTTON:
 		b = pop();
 		a = pop();
 		_wiz->loadWizCursor(a, b);
 		break;
-	case 0x90:		// SO_CURSOR_ON Turn cursor on
+	case SO_CURSOR_ON:		// Turn cursor on
 		_cursor.state = 1;
 		break;
-	case 0x91:		// SO_CURSOR_OFF Turn cursor off
+	case SO_CURSOR_OFF:		// Turn cursor off
 		_cursor.state = 0;
 		break;
-	case 0x92:		// SO_USERPUT_ON
+	case SO_USERPUT_ON:
 		_userPut = 1;
 		break;
-	case 0x93:		// SO_USERPUT_OFF
+	case SO_USERPUT_OFF:
 		_userPut = 0;
 		break;
-	case 0x94:		// SO_CURSOR_SOFT_ON Turn soft cursor on
+	case SO_CURSOR_SOFT_ON:		// Turn soft cursor on
 		_cursor.state++;
 		if (_cursor.state > 1)
 			error("Cursor state greater than 1 in script");
 		break;
-	case 0x95:		// SO_CURSOR_SOFT_OFF Turn soft cursor off
+	case SO_CURSOR_SOFT_OFF:		// Turn soft cursor off
 		_cursor.state--;
 		break;
-	case 0x96:		// SO_USERPUT_SOFT_ON
+	case SO_USERPUT_SOFT_ON:
 		_userPut++;
 		break;
-	case 0x97:		// SO_USERPUT_SOFT_OFF
+	case SO_USERPUT_SOFT_OFF:
 		_userPut--;
 		break;
-	case 0x9C:		// SO_CHARSET_SET
+	case SO_CHARSET_SET:
 		initCharset(pop());
 		break;
-	case 0x9D:		// SO_CHARSET_COLOR
+	case SO_CHARSET_COLOR:
 		getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < 16; i++)
 			_charsetColorMap[i] = _charsetData[_string[1]._default.charset][i] = (unsigned char)args[i];
@@ -479,13 +479,13 @@ void ScummEngine_v80he::o80_drawLine() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 55:
+	case SO_ACTOR:
 		drawLine(x1, y1, x, y, step, 2, id);
 		break;
-	case 63:
+	case SO_IMAGE:
 		drawLine(x1, y1, x, y, step, 3, id);
 		break;
-	case 66:
+	case SO_COLOR:
 		drawLine(x1, y1, x, y, step, 1, id);
 		break;
 	default:
diff --git a/engines/scumm/he/script_v90he.cpp b/engines/scumm/he/script_v90he.cpp
index 96024ae7a42..12fa39b0fd5 100644
--- a/engines/scumm/he/script_v90he.cpp
+++ b/engines/scumm/he/script_v90he.cpp
@@ -2048,8 +2048,8 @@ void ScummEngine_v90he::o90_sortArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 129:
-	case 134: // HE100
+	case SO_SORT:
+	case ScummEngine_v100he::SO_SORT: // HE100
 		{
 			int array = fetchScriptWord();
 			int sortOrder = pop();
@@ -2070,44 +2070,44 @@ void ScummEngine_v90he::o90_getObjectData() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 32:
+	case SO_WIDTH:
 		if (_heObjectNum == -1)
 			push(0);
 		else
 			push(_objs[_heObjectNum].width);
 		break;
-	case 33:
+	case SO_HEIGHT:
 		if (_heObjectNum == -1)
 			push(0);
 		else
 			push(_objs[_heObjectNum].height);
 		break;
-	case 36:
+	case SO_COUNT:
 		if (_heObjectNum == -1)
 			push(0);
 		else
 			push(getObjectImageCount(_heObject));
 		break;
-	case 38:
+	case SO_DRAW_XPOS:
 		if (_heObjectNum == -1)
 			push(0);
 		else
 			push(_objs[_heObjectNum].x_pos);
 		break;
-	case 39:
+	case SO_DRAW_YPOS:
 		if (_heObjectNum == -1)
 			push(0);
 		else
 			push(_objs[_heObjectNum].y_pos);
 		break;
-	case 52:
+	case SO_STATE:
 		push(getState(_heObject));
 		break;
-	case 57:
+	case SO_INIT:
 		_heObject = pop();
 		_heObjectNum = getObjectIndex(_heObject);
 		break;
-	case 139:
+	case SO_NEW_GENERAL_PROPERTY:
 		// Dummy case
 		pop();
 		push(0);
@@ -2125,7 +2125,7 @@ void ScummEngine_v90he::o90_getPaletteData() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 45:
+	case SO_FIND:
 		e = pop();
 		d = pop();
 		palSlot = pop();
@@ -2134,18 +2134,18 @@ void ScummEngine_v90he::o90_getPaletteData() {
 		r = pop();
 		push(getHEPaletteSimilarColor(palSlot, r, g, d, e));
 		break;
-	case 52:
+	case SO_STATE:
 		c = pop();
 		b = pop();
 		palSlot = pop();
 		push(getHEPaletteColorComponent(palSlot, b, c));
 		break;
-	case 66:
+	case SO_COLOR:
 		color = pop();
 		palSlot = pop();
 		push(getHEPaletteColor(palSlot, color));
 		break;
-	case 132:
+	case SO_CHANNEL:
 		c = pop();
 		b = pop();
 		if (_game.features & GF_16BIT_COLOR)
@@ -2153,7 +2153,7 @@ void ScummEngine_v90he::o90_getPaletteData() {
 		else
 			push(getHEPaletteColorComponent(1, b, c));
 		break;
-	case 217:
+	case SO_NEW:
 		b = pop();
 		b = MAX(0, b);
 		b = MIN(b, 255);
@@ -2181,17 +2181,17 @@ void ScummEngine_v90he::o90_paletteOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 57:
+	case SO_INIT:
 		_hePaletteNum = pop();
 		break;
-	case 63:
+	case SO_IMAGE:
 		b = pop();
 		a = pop();
 		if (_hePaletteNum != 0) {
 			setHEPaletteFromImage(_hePaletteNum, a, b);
 		}
 		break;
-	case 66:
+	case SO_COLOR:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -2253,8 +2253,8 @@ void ScummEngine_v90he::o90_fontUnk() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 60:	// HE100
-	case 42:
+	case ScummEngine_v100he::SO_PROPERTY:	// HE100
+	case SO_PROPERTY:
 		a = pop();
 		if (a == 2) {
 			copyScriptString(string, sizeof(string));
@@ -2267,8 +2267,8 @@ void ScummEngine_v90he::o90_fontUnk() {
 			push(readVar(0));
 		}
 		break;
-	case 0:		// HE100
-	case 57:
+	case ScummEngine_v100he::SO_INIT:		// HE100
+	case SO_INIT:
 		push(1);
 		break;
 	default:
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 02ecbe52a48..c95afeb08c5 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -892,37 +892,37 @@ void ScummEngine_v6::o6_cursorCommand() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0x90:		// SO_CURSOR_ON Turn cursor on
+	case SO_CURSOR_ON:		// Turn cursor on
 		_cursor.state = 1;
 		verbMouseOver(0);
 		break;
-	case 0x91:		// SO_CURSOR_OFF Turn cursor off
+	case SO_CURSOR_OFF:		// Turn cursor off
 		_cursor.state = 0;
 		verbMouseOver(0);
 		break;
-	case 0x92:		// SO_USERPUT_ON
+	case SO_USERPUT_ON:
 		_userPut = 1;
 		break;
-	case 0x93:		// SO_USERPUT_OFF
+	case SO_USERPUT_OFF:
 		_userPut = 0;
 		break;
-	case 0x94:		// SO_CURSOR_SOFT_ON Turn soft cursor on
+	case SO_CURSOR_SOFT_ON:		// Turn soft cursor on
 		_cursor.state++;
 		if (_cursor.state > 1)
 			error("Cursor state greater than 1 in script");
 		verbMouseOver(0);
 		break;
-	case 0x95:		// SO_CURSOR_SOFT_OFF Turn soft cursor off
+	case SO_CURSOR_SOFT_OFF:		// Turn soft cursor off
 		_cursor.state--;
 		verbMouseOver(0);
 		break;
-	case 0x96:		// SO_USERPUT_SOFT_ON
+	case SO_USERPUT_SOFT_ON:
 		_userPut++;
 		break;
-	case 0x97:		// SO_USERPUT_SOFT_OFF
+	case SO_USERPUT_SOFT_OFF:
 		_userPut--;
 		break;
-	case 0x99:		// SO_CURSOR_IMAGE Set cursor image
+	case SO_CURSOR_IMAGE:		// Set cursor image
 		{
 			int room, obj;
 			if (_game.heversion >= 70) {
@@ -934,20 +934,20 @@ void ScummEngine_v6::o6_cursorCommand() {
 			setCursorFromImg(obj, room, 1);
 			break;
 		}
-	case 0x9A:		// SO_CURSOR_HOTSPOT Set cursor hotspot
+	case SO_CURSOR_HOTSPOT:		// Set cursor hotspot
 		a = pop();
 		setCursorHotspot(pop(), a);
 		updateCursor();
 		break;
-	case 0x9C:		// SO_CHARSET_SET
+	case SO_CHARSET_SET:
 		initCharset(pop());
 		break;
-	case 0x9D:		// SO_CHARSET_COLOR
+	case SO_CHARSET_COLOR:
 		getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < 16; i++)
 			_charsetColorMap[i] = _charsetData[_string[1]._default.charset][i] = (unsigned char)args[i];
 		break;
-	case 0xD6:		// SO_CURSOR_TRANSPARENT Set cursor transparent color
+	case SO_CURSOR_TRANSPARENT:		// Set cursor transparent color
 		setCursorTransparency(pop());
 		break;
 	default:
@@ -1542,97 +1542,97 @@ void ScummEngine_v6::o6_resourceRoutines() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 100:		// SO_LOAD_SCRIPT
+	case SO_LOAD_SCRIPT:
 		resid = pop();
 		if (_game.version >= 7)
 			if (resid >= _numGlobalScripts)
 				break;
 		ensureResourceLoaded(rtScript, resid);
 		break;
-	case 101:		// SO_LOAD_SOUND
+	case SO_LOAD_SOUND:
 		resid = pop();
 		ensureResourceLoaded(rtSound, resid);
 		break;
-	case 102:		// SO_LOAD_COSTUME
+	case SO_LOAD_COSTUME:
 		resid = pop();
 		ensureResourceLoaded(rtCostume, resid);
 		break;
-	case 103:		// SO_LOAD_ROOM
+	case SO_LOAD_ROOM:
 		resid = pop();
 		ensureResourceLoaded(rtRoom, resid);
 		break;
-	case 104:		// SO_NUKE_SCRIPT
+	case SO_NUKE_SCRIPT:
 		resid = pop();
 		if (_game.version >= 7)
 			if (resid >= _numGlobalScripts)
 				break;
 		_res->setResourceCounter(rtScript, resid, 0x7F);
 		break;
-	case 105:		// SO_NUKE_SOUND
+	case SO_NUKE_SOUND:
 		resid = pop();
 		_res->setResourceCounter(rtSound, resid, 0x7F);
 		break;
-	case 106:		// SO_NUKE_COSTUME
+	case SO_NUKE_COSTUME:
 		resid = pop();
 		_res->setResourceCounter(rtCostume, resid, 0x7F);
 		break;
-	case 107:		// SO_NUKE_ROOM
+	case SO_NUKE_ROOM:
 		resid = pop();
 		_res->setResourceCounter(rtRoom, resid, 0x7F);
 		break;
-	case 108:		// SO_LOCK_SCRIPT
+	case SO_LOCK_SCRIPT:
 		resid = pop();
 		if (resid >= _numGlobalScripts)
 			break;
 		_res->lock(rtScript, resid);
 		break;
-	case 109:		// SO_LOCK_SOUND
+	case SO_LOCK_SOUND:
 		resid = pop();
 		_res->lock(rtSound, resid);
 		break;
-	case 110:		// SO_LOCK_COSTUME
+	case SO_LOCK_COSTUME:
 		resid = pop();
 		_res->lock(rtCostume, resid);
 		break;
-	case 111:		// SO_LOCK_ROOM
+	case SO_LOCK_ROOM:
 		resid = pop();
 		if (resid > 0x7F)
 			resid = _resourceMapper[resid & 0x7F];
 		_res->lock(rtRoom, resid);
 		break;
-	case 112:		// SO_UNLOCK_SCRIPT
+	case SO_UNLOCK_SCRIPT:
 		resid = pop();
 		if (resid >= _numGlobalScripts)
 			break;
 		_res->unlock(rtScript, resid);
 		break;
-	case 113:		// SO_UNLOCK_SOUND
+	case SO_UNLOCK_SOUND:
 		resid = pop();
 		_res->unlock(rtSound, resid);
 		break;
-	case 114:		// SO_UNLOCK_COSTUME
+	case SO_UNLOCK_COSTUME:
 		resid = pop();
 		_res->unlock(rtCostume, resid);
 		break;
-	case 115:		// SO_UNLOCK_ROOM
+	case SO_UNLOCK_ROOM:
 		resid = pop();
 		if (resid > 0x7F)
 			resid = _resourceMapper[resid & 0x7F];
 		_res->unlock(rtRoom, resid);
 		break;
-	case 116:		// SO_CLEAR_HEAP
+	case SO_CLEAR_HEAP:
 		/* this is actually a scumm message */
 		error("clear heap not working yet");
 		break;
-	case 117:		// SO_LOAD_CHARSET
+	case SO_LOAD_CHARSET:
 		resid = pop();
 		loadCharset(resid);
 		break;
-	case 118:		// SO_NUKE_CHARSET
+	case SO_NUKE_CHARSET:
 		resid = pop();
 		nukeCharset(resid);
 		break;
-	case 119:		// SO_LOAD_OBJECT
+	case SO_LOAD_OBJECT:
 		{
 			int room, obj = popRoomAndObj(&room);
 			loadFlObject(obj, room);
@@ -1650,7 +1650,7 @@ void ScummEngine_v6::o6_roomOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 172:		// SO_ROOM_SCROLL
+	case SO_ROOM_SCROLL:
 		b = pop();
 		a = pop();
 		if (a < (_screenWidth / 2))
@@ -1665,13 +1665,13 @@ void ScummEngine_v6::o6_roomOps() {
 		VAR(VAR_CAMERA_MAX_X) = b;
 		break;
 
-	case 174:		// SO_ROOM_SCREEN
+	case SO_ROOM_SCREEN:
 		b = pop();
 		a = pop();
 		initScreens(a, b);
 		break;
 
-	case 175:		// SO_ROOM_PALETTE
+	case SO_ROOM_PALETTE:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -1679,15 +1679,15 @@ void ScummEngine_v6::o6_roomOps() {
 		setPalColor(d, a, b, c);
 		break;
 
-	case 176:		// SO_ROOM_SHAKE_ON
+	case SO_ROOM_SHAKE_ON:
 		setShake(1);
 		break;
 
-	case 177:		// SO_ROOM_SHAKE_OFF
+	case SO_ROOM_SHAKE_OFF:
 		setShake(0);
 		break;
 
-	case 179:		// SO_ROOM_INTENSITY
+	case SO_ROOM_INTENSITY:
 		c = pop();
 		b = pop();
 		a = pop();
@@ -1697,7 +1697,7 @@ void ScummEngine_v6::o6_roomOps() {
 		darkenPalette(a, a, a, b, c);
 		break;
 
-	case 180:		// SO_ROOM_SAVEGAME
+	case SO_ROOM_SAVEGAME:
 		_saveTemporaryState = true;
 		_saveLoadSlot = pop();
 		_saveLoadFlag = pop();
@@ -1705,7 +1705,7 @@ void ScummEngine_v6::o6_roomOps() {
 			_saveSound = (_saveLoadSlot != 0);
 		break;
 
-	case 181:		// SO_ROOM_FADE
+	case SO_ROOM_FADE:
 		a = pop();
 		if (a) {
 			_switchRoomEffect = (byte)(a & 0xFF);
@@ -1715,7 +1715,7 @@ void ScummEngine_v6::o6_roomOps() {
 		}
 		break;
 
-	case 182:		// SO_RGB_ROOM_INTENSITY
+	case SO_RGB_ROOM_INTENSITY:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -1724,7 +1724,7 @@ void ScummEngine_v6::o6_roomOps() {
 		darkenPalette(a, b, c, d, e);
 		break;
 
-	case 183:		// SO_ROOM_SHADOW
+	case SO_ROOM_SHADOW:
 		e = pop();
 		d = pop();
 		c = pop();
@@ -1733,15 +1733,15 @@ void ScummEngine_v6::o6_roomOps() {
 		setShadowPalette(a, b, c, d, e, 0, 256);
 		break;
 
-	case 184:		// SO_SAVE_STRING
+	case SO_SAVE_STRING:
 		error("save string not implemented");
 		break;
 
-	case 185:		// SO_LOAD_STRING
+	case SO_LOAD_STRING:
 		error("load string not implemented");
 		break;
 
-	case 186:		// SO_ROOM_TRANSFORM
+	case SO_ROOM_TRANSFORM:
 		d = pop();
 		c = pop();
 		b = pop();
@@ -1749,14 +1749,14 @@ void ScummEngine_v6::o6_roomOps() {
 		palManipulateInit(a, b, c, d);
 		break;
 
-	case 187:		// SO_CYCLE_SPEED
+	case SO_CYCLE_SPEED:
 		b = pop();
 		a = pop();
 		assertRange(1, a, 16, "o6_roomOps: 187: color cycle");
 		_colorCycle[a - 1].delay = (b != 0) ? 0x4000 / (b * 0x4C) : 0;
 		break;
 
-	case 213:		// SO_ROOM_NEW_PALETTE
+	case SO_ROOM_NEW_PALETTE:
 		a = pop();
 
 		// This opcode is used when turning off noir mode in Sam & Max,
@@ -1781,7 +1781,7 @@ void ScummEngine_v6::o6_actorOps() {
 	int args[8];
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 197) {
+	if (subOp == SO_ACTOR_INIT) {
 		_curActor = pop();
 		return;
 	}
@@ -1791,7 +1791,7 @@ void ScummEngine_v6::o6_actorOps() {
 		return;
 
 	switch (subOp) {
-	case 76:		// SO_COSTUME
+	case SO_COSTUME:
 		i = pop();
 		// WORKAROUND: There's a small continuity error in DOTT; the fire that
 		// makes Washington leave the room can only exist if he's wearing the
@@ -1803,133 +1803,133 @@ void ScummEngine_v6::o6_actorOps() {
 		}
 		a->setActorCostume(i);
 		break;
-	case 77:		// SO_STEP_DIST
+	case SO_STEP_DIST:
 		j = pop();
 		i = pop();
 		a->setActorWalkSpeed(i, j);
 		break;
-	case 78:		// SO_SOUND
+	case SO_SOUND:
 		k = getStackList(args, ARRAYSIZE(args));
 		for (i = 0; i < k; i++)
 			a->_sound[i] = args[i];
 		break;
-	case 79:		// SO_WALK_ANIMATION
+	case SO_WALK_ANIMATION:
 		a->_walkFrame = pop();
 		break;
-	case 80:		// SO_TALK_ANIMATION
+	case SO_TALK_ANIMATION:
 		a->_talkStopFrame = pop();
 		a->_talkStartFrame = pop();
 		break;
-	case 81:		// SO_STAND_ANIMATION
+	case SO_STAND_ANIMATION:
 		a->_standFrame = pop();
 		break;
-	case 82:		// SO_ANIMATION
+	case SO_ANIMATION:
 		// dummy case in scumm6
 		pop();
 		pop();
 		pop();
 		break;
-	case 83:		// SO_DEFAULT
+	case SO_DEFAULT:
 		a->initActor(0);
 		break;
-	case 84:		// SO_ELEVATION
+	case SO_ELEVATION:
 		a->setElevation(pop());
 		break;
-	case 85:		// SO_ANIMATION_DEFAULT
+	case SO_ANIMATION_DEFAULT:
 		a->_initFrame = 1;
 		a->_walkFrame = 2;
 		a->_standFrame = 3;
 		a->_talkStartFrame = 4;
 		a->_talkStopFrame = 5;
 		break;
-	case 86:		// SO_PALETTE
+	case SO_PALETTE:
 		j = pop();
 		i = pop();
 		assertRange(0, i, 255, "o6_actorOps: palette slot");
 		a->setPalette(i, j);
 		break;
-	case 87:		// SO_TALK_COLOR
+	case SO_TALK_COLOR:
 		a->_talkColor = pop();
 		break;
-	case 88:		// SO_ACTOR_NAME
+	case SO_ACTOR_NAME:
 		loadPtrToResource(rtActorName, a->_number, nullptr);
 		break;
-	case 89:		// SO_INIT_ANIMATION
+	case SO_INIT_ANIMATION:
 		a->_initFrame = pop();
 		break;
-	case 91:		// SO_ACTOR_WIDTH
+	case SO_ACTOR_WIDTH:
 		a->_width = pop();
 		break;
-	case 92:		// SO_SCALE
+	case SO_SCALE:
 		i = pop();
 		a->setScale(i, i);
 		break;
-	case 93:		// SO_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		a->_forceClip = 0;
 		break;
-	case 225:		// SO_ALWAYS_ZCLIP
-	case 94:		// SO_ALWAYS_ZCLIP
+	case SO_ALWAYS_ZCLIP_FT_DEMO:
+	case SO_ALWAYS_ZCLIP:
 		a->_forceClip = pop();
 		break;
-	case 95:		// SO_IGNORE_BOXES
+	case SO_IGNORE_BOXES:
 		a->_ignoreBoxes = 1;
 		a->_forceClip = (_game.version >= 7) ? 100 : 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 96:		// SO_FOLLOW_BOXES
+	case SO_FOLLOW_BOXES:
 		a->_ignoreBoxes = 0;
 		a->_forceClip = (_game.version >= 7) ? 100 : 0;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 97:		// SO_ANIMATION_SPEED
+	case SO_ANIMATION_SPEED:
 		a->setAnimSpeed(pop());
 		break;
-	case 98:		// SO_SHADOW
+	case SO_SHADOW:
 		a->_shadowMode = pop();
 		break;
-	case 99:		// SO_TEXT_OFFSET
+	case SO_TEXT_OFFSET:
 		a->_talkPosY = pop();
 		a->_talkPosX = pop();
 		break;
-	case 198:		// SO_ACTOR_VARIABLE
+	case SO_ACTOR_VARIABLE:
 		i = pop();
 		a->setAnimVar(pop(), i);
 		break;
-	case 215:		// SO_ACTOR_IGNORE_TURNS_ON
+	case SO_ACTOR_IGNORE_TURNS_ON:
 		a->_ignoreTurns = true;
 		break;
-	case 216:		// SO_ACTOR_IGNORE_TURNS_OFF
+	case SO_ACTOR_IGNORE_TURNS_OFF:
 		a->_ignoreTurns = false;
 		break;
-	case 217:		// SO_ACTOR_NEW
+	case SO_NEW:
 		a->initActor(2);
 		break;
-	case 227:		// SO_ACTOR_DEPTH
+	case SO_ACTOR_DEPTH:
 		a->_layer = pop();
 		break;
-	case 228:		// SO_ACTOR_WALK_SCRIPT
+	case SO_ACTOR_WALK_SCRIPT:
 		a->_walkScript = pop();
 		break;
-	case 229:		// SO_ACTOR_STOP
+	case SO_ACTOR_STOP:
 		a->stopActorMoving();
 		a->startAnimActor(a->_standFrame);
 		break;
-	case 230:										/* set direction */
+	case SO_ACTOR_FACE:										/* set direction */
 		a->_moving &= ~MF_TURN;
 		a->setDirection(pop());
 		break;
-	case 231:										/* turn to direction */
+	case SO_ACTOR_TURN:										/* turn to direction */
 		a->turnToDirection(pop());
 		break;
-	case 233:		// SO_ACTOR_WALK_PAUSE
+	case SO_ACTOR_WALK_PAUSE: 
 		a->_moving |= MF_FROZEN;
 		break;
-	case 234:		// SO_ACTOR_WALK_RESUME
+	case SO_ACTOR_WALK_RESUME:
 		a->_moving &= ~MF_FROZEN;
 		break;
-	case 235:		// SO_ACTOR_TALK_SCRIPT
+	case SO_ACTOR_TALK_SCRIPT:
 		a->_talkScript = pop();
 		break;
 	default:
@@ -1942,7 +1942,7 @@ void ScummEngine_v6::o6_verbOps() {
 	VerbSlot *vs;
 
 	byte subOp = fetchScriptByte();
-	if (subOp == 196) {
+	if (subOp == SO_VERB_INIT) {
 		_curVerb = pop();
 		_curVerbSlot = getVerbSlot(_curVerb, 0);
 		assertRange(0, _curVerbSlot, _numVerbs - 1, "new verb slot");
@@ -1951,7 +1951,7 @@ void ScummEngine_v6::o6_verbOps() {
 	vs = &_verbs[_curVerbSlot];
 	slot = _curVerbSlot;
 	switch (subOp) {
-	case 124:		// SO_VERB_IMAGE
+	case SO_VERB_IMAGE:
 		a = pop();
 		if (_curVerbSlot) {
 			setVerbObject(_roomResource, a, slot);
@@ -1960,34 +1960,34 @@ void ScummEngine_v6::o6_verbOps() {
 				vs->imgindex = a;
 		}
 		break;
-	case 125:		// SO_VERB_NAME
+	case SO_VERB_NAME:
 		loadPtrToResource(rtVerb, slot, nullptr);
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 126:		// SO_VERB_COLOR
+	case SO_VERB_COLOR:
 		vs->color = pop();
 		break;
-	case 127:		// SO_VERB_HICOLOR
+	case SO_VERB_HICOLOR:
 		vs->hicolor = pop();
 		break;
-	case 128:		// SO_VERB_AT
+	case SO_VERB_AT:
 		vs->curRect.top = pop();
 		vs->curRect.left = vs->origLeft = pop();
 		break;
-	case 129:		// SO_VERB_ON
+	case SO_VERB_ON:
 		vs->curmode = 1;
 		break;
-	case 130:		// SO_VERB_OFF
+	case SO_VERB_OFF:
 		vs->curmode = 0;
 		break;
-	case 131:		// SO_VERB_DELETE
+	case SO_VERB_DELETE:
 		if (_game.heversion >= 60) {
 			slot = getVerbSlot(pop(), 0);
 		}
 		killVerb(slot);
 		break;
-	case 132:		// SO_VERB_NEW
+	case SO_VERB_NEW:
 		slot = getVerbSlot(_curVerb, 0);
 		if (slot == 0) {
 			for (slot = 1; slot < _numVerbs; slot++) {
@@ -2011,19 +2011,19 @@ void ScummEngine_v6::o6_verbOps() {
 		vs->center = 0;
 		vs->imgindex = 0;
 		break;
-	case 133:		// SO_VERB_DIMCOLOR
+	case SO_VERB_DIMCOLOR:
 		vs->dimcolor = pop();
 		break;
-	case 134:		// SO_VERB_DIM
+	case SO_VERB_DIM:
 		vs->curmode = 2;
 		break;
-	case 135:		// SO_VERB_KEY
+	case SO_VERB_KEY:
 		vs->key = pop();
 		break;
-	case 136:		// SO_VERB_CENTER
+	case SO_VERB_CENTER:
 		vs->center = 1;
 		break;
-	case 137:		// SO_VERB_NAME_STR
+	case SO_VERB_NAME_STR:
 		a = pop();
 		if (a == 0) {
 			loadPtrToResource(rtVerb, slot, (const byte *)"");
@@ -2033,7 +2033,7 @@ void ScummEngine_v6::o6_verbOps() {
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 139:		// SO_VERB_IMAGE_IN_ROOM
+	case SO_VERB_IMAGE_IN_ROOM:
 		b = pop();
 		a = pop();
 
@@ -2043,10 +2043,10 @@ void ScummEngine_v6::o6_verbOps() {
 			vs->imgindex = a;
 		}
 		break;
-	case 140:		// SO_VERB_BAKCOLOR
+	case SO_VERB_BAKCOLOR:
 		vs->bkcolor = pop();
 		break;
-	case 255:
+	case SO_END:
 		drawVerb(slot, 0);
 		verbMouseOver(0);
 		break;
@@ -2097,13 +2097,13 @@ void ScummEngine_v6::o6_arrayOps() {
 	int list[128];
 
 	switch (subOp) {
-	case 205:		// SO_ASSIGN_STRING
+	case SO_ASSIGN_STRING:
 		b = pop();
 		len = resStrLen(_scriptPointer);
 		data = defineArray(array, kStringArray, 0, len + 1);
 		copyScriptString(data + b);
 		break;
-	case 208:		// SO_ASSIGN_INT_LIST
+	case SO_ASSIGN_INT_LIST:
 		b = pop();
 		c = pop();
 		d = readVar(array);
@@ -2114,7 +2114,7 @@ void ScummEngine_v6::o6_arrayOps() {
 			writeArray(array, 0, b + c, pop());
 		}
 		break;
-	case 212:		// SO_ASSIGN_2DIM_LIST
+	case SO_ASSIGN_2DIM_LIST:
 		b = pop();
 		len = getStackList(list, ARRAYSIZE(list));
 		d = readVar(array);
@@ -2144,7 +2144,7 @@ void ScummEngine_v6::o6_saveRestoreVerbs() {
 	}
 
 	switch (subOp) {
-	case 141:		// SO_SAVE_VERBS
+	case SO_SAVE_VERBS:
 		while (a <= b) {
 			slot = getVerbSlot(a, 0);
 			if (slot && _verbs[slot].saveid == 0) {
@@ -2155,7 +2155,7 @@ void ScummEngine_v6::o6_saveRestoreVerbs() {
 			a++;
 		}
 		break;
-	case 142:		// SO_RESTORE_VERBS
+	case SO_RESTORE_VERBS:
 		while (a <= b) {
 			slot = getVerbSlot(a, c);
 			if (slot) {
@@ -2170,7 +2170,7 @@ void ScummEngine_v6::o6_saveRestoreVerbs() {
 			a++;
 		}
 		break;
-	case 143:		// SO_DELETE_VERBS
+	case SO_DELETE_VERBS:
 		while (a <= b) {
 			slot = getVerbSlot(a, c);
 			if (slot)
@@ -2201,7 +2201,7 @@ void ScummEngine_v6::o6_wait() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 168:		// SO_WAIT_FOR_ACTOR Wait for actor
+	case SO_WAIT_FOR_ACTOR:		// Wait for actor
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o6_wait:168");
@@ -2213,11 +2213,11 @@ void ScummEngine_v6::o6_wait() {
 				break;
 		}
 		return;
-	case 169:		// SO_WAIT_FOR_MESSAGE Wait for message
+	case SO_WAIT_FOR_MESSAGE:		// Wait for message
 		if (VAR(VAR_HAVE_MSG))
 			break;
 		return;
-	case 170:		// SO_WAIT_FOR_CAMERA Wait for camera
+	case SO_WAIT_FOR_CAMERA:		// Wait for camera
 		if (_game.version >= 7) {
 			if (camera._dest != camera._cur)
 				break;
@@ -2227,7 +2227,7 @@ void ScummEngine_v6::o6_wait() {
 		}
 
 		return;
-	case 171:		// SO_WAIT_FOR_SENTENCE
+	case SO_WAIT_FOR_SENTENCE:
 		if (_sentenceNum) {
 			if (_sentence[_sentenceNum - 1].freezeCount && !isScriptInUse(VAR(VAR_SENTENCE_SCRIPT)))
 				return;
@@ -2236,14 +2236,14 @@ void ScummEngine_v6::o6_wait() {
 		if (!isScriptInUse(VAR(VAR_SENTENCE_SCRIPT)))
 			return;
 		break;
-	case 226:		// SO_WAIT_FOR_ANIMATION
+	case SO_WAIT_FOR_ANIMATION:
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o6_wait:226");
 		if (a->isInCurrentRoom() && a->_needRedraw)
 			break;
 		return;
-	case 232:		// SO_WAIT_FOR_TURN
+	case SO_WAIT_FOR_TURN:
 		// WORKAROUND for bug #819: An angle will often be received as the
 		// actor number due to script bugs in The Dig. In all cases where this
 		// occurs, _curActor is set just before it, so we can use it instead.
@@ -2308,13 +2308,13 @@ void ScummEngine_v6::o6_systemOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 158:		// SO_RESTART
+	case SO_RESTART:
 		restart();
 		break;
-	case 159:		// SO_PAUSE
+	case SO_PAUSE:
 		pauseGame();
 		break;
-	case 160:		// SO_QUIT
+	case SO_QUIT:
 		quitGame();
 		break;
 	default:
@@ -2513,22 +2513,22 @@ void ScummEngine_v6::o6_dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 199:		// SO_INT_ARRAY
+	case SO_INT_ARRAY:
 		data = kIntArray;
 		break;
-	case 200:		// SO_BIT_ARRAY
+	case SO_BIT_ARRAY:
 		data = kBitArray;
 		break;
-	case 201:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE_ARRAY:
 		data = kNibbleArray;
 		break;
-	case 202:		// SO_BYTE_ARRAY
+	case SO_BYTE_ARRAY:
 		data = kByteArray;
 		break;
-	case 203:		// SO_STRING_ARRAY
+	case SO_STRING_ARRAY:
 		data = kStringArray;
 		break;
-	case 204:		// SO_UNDIM_ARRAY
+	case SO_UNDIM_ARRAY:
 		nukeArray(fetchScriptWord());
 		return;
 	default:
@@ -2547,19 +2547,19 @@ void ScummEngine_v6::o6_dim2dimArray() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 199:		// SO_INT_ARRAY
+	case SO_INT_ARRAY:
 		data = kIntArray;
 		break;
-	case 200:		// SO_BIT_ARRAY
+	case SO_BIT_ARRAY:
 		data = kBitArray;
 		break;
-	case 201:		// SO_NIBBLE_ARRAY
+	case SO_NIBBLE_ARRAY:
 		data = kNibbleArray;
 		break;
-	case 202:		// SO_BYTE_ARRAY
+	case SO_BYTE_ARRAY:
 		data = kByteArray;
 		break;
-	case 203:		// SO_STRING_ARRAY
+	case SO_STRING_ARRAY:
 		data = kStringArray;
 		break;
 	default:
@@ -3213,42 +3213,42 @@ void ScummEngine_v6::decodeParseString(int m, int n) {
 	byte b = fetchScriptByte();
 
 	switch (b) {
-	case 65:		// SO_AT
+	case SO_AT:
 		_string[m].ypos = pop();
 		_string[m].xpos = pop();
 		_string[m].overhead = false;
 		break;
-	case 66:		// SO_COLOR
+	case SO_COLOR:
 		_string[m].color = pop();
 		break;
-	case 67:		// SO_CLIPPED
+	case SO_CLIPPED:
 		_string[m].right = pop();
 		break;
-	case 69:		// SO_CENTER
+	case SO_CENTER:
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 71:		// SO_LEFT
+	case SO_LEFT:
 		_string[m].center = false;
 		_string[m].overhead = false;
 		break;
-	case 72:		// SO_OVERHEAD
+	case SO_OVERHEAD:
 		_string[m].overhead = true;
 		_string[m].no_talk_anim = false;
 		break;
-	case 74:		// SO_MUMBLE
+	case SO_MUMBLE:
 		_string[m].no_talk_anim = true;
 		break;
-	case 75:		// SO_TEXTSTRING
+	case SO_TEXTSTRING:
 		printString(m, _scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer) + 1;
 		break;
-	case 0xFE:
+	case SO_BASEOP:
 		_string[m].loadDefault();
 		if (n)
 			_actorToPrintStrFor = pop();
 		break;
-	case 0xFF:
+	case SO_END:
 		_string[m].saveDefault();
 		break;
 	default:
diff --git a/engines/scumm/script_v8.cpp b/engines/scumm/script_v8.cpp
index 7306a96d013..f9bf2bbe944 100644
--- a/engines/scumm/script_v8.cpp
+++ b/engines/scumm/script_v8.cpp
@@ -344,45 +344,45 @@ void ScummEngine_v8::decodeParseString(int m, int n) {
 	byte b = fetchScriptByte();
 
 	switch (b) {
-	case 0xC8:		// SO_PRINT_BASEOP
+	case SO_BASEOP:
 		_string[m].loadDefault();
 		if (n)
 			_actorToPrintStrFor = pop();
 		break;
-	case 0xC9:		// SO_PRINT_END
+	case SO_END:
 		_string[m].saveDefault();
 		break;
-	case 0xCA:		// SO_PRINT_AT
+	case SO_AT:
 		_string[m].ypos = pop();
 		_string[m].xpos = pop();
 		_string[m].overhead = false;
 		break;
-	case 0xCB:		// SO_PRINT_COLOR
+	case SO_COLOR:
 		_string[m].color = pop();
 		break;
-	case 0xCC:		// SO_PRINT_CENTER
+	case SO_CENTER:
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 0xCD:		// SO_PRINT_CHARSET Set print character set
+	case SO_PRINT_CHARSET:		// Set print character set
 		_string[m].charset = pop();
 		break;
-	case 0xCE:		// SO_PRINT_LEFT
+	case SO_LEFT:
 		_string[m].wrapping = false;
 		_string[m].overhead = false;
 		break;
-	case 0xCF:		// SO_PRINT_OVERHEAD
+	case SO_OVERHEAD:
 		_string[m].overhead = true;
 		_string[m].no_talk_anim = false;
 		break;
-	case 0xD0:		// SO_PRINT_MUMBLE
+	case SO_MUMBLE:
 		_string[m].no_talk_anim = true;
 		break;
-	case 0xD1:		// SO_PRINT_STRING
+	case SO_PRINT_STRING:
 		printString(m, _scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer) + 1;
 		break;
-	case 0xD2:		// SO_PRINT_WRAP Set print wordwrap
+	case SO_PRINT_WRAP:		// Set print wordwrap
 		_string[m].wrapping = true;
 		_string[m].overhead = false;
 		break;
@@ -418,22 +418,22 @@ void ScummEngine_v8::o8_wait() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0x1E:		// SO_WAIT_FOR_ACTOR Wait for actor (to finish current action?)
+	case SO_WAIT_FOR_ACTOR:		// Wait for actor (to finish current action?)
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o8_wait:SO_WAIT_FOR_ACTOR");
 		if (a->isInCurrentRoom() && a->_moving)
 			break;
 		return;
-	case 0x1F:		// SO_WAIT_FOR_MESSAGE Wait for message
+	case SO_WAIT_FOR_MESSAGE:		// Wait for message
 		if (VAR(VAR_HAVE_MSG))
 			break;
 		return;
-	case 0x20:		// SO_WAIT_FOR_CAMERA Wait for camera (to finish current action?)
+	case SO_WAIT_FOR_CAMERA:		// Wait for camera (to finish current action?)
 		if (camera._dest != camera._cur)
 			break;
 		return;
-	case 0x21:		// SO_WAIT_FOR_SENTENCE
+	case SO_WAIT_FOR_SENTENCE:
 		if (_sentenceNum) {
 			if (_sentence[_sentenceNum - 1].freezeCount && !isScriptInUse(VAR(VAR_SENTENCE_SCRIPT)))
 				return;
@@ -442,14 +442,14 @@ void ScummEngine_v8::o8_wait() {
 		if (!isScriptInUse(VAR(VAR_SENTENCE_SCRIPT)))
 			return;
 		break;
-	case 0x22:		// SO_WAIT_FOR_ANIMATION
+	case SO_WAIT_FOR_ANIMATION:
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o8_wait:SO_WAIT_FOR_ANIMATION");
 		if (a->isInCurrentRoom() && a->_needRedraw)
 			break;
 		return;
-	case 0x23:		// SO_WAIT_FOR_TURN
+	case SO_WAIT_FOR_TURN:
 		offs = fetchScriptWordSigned();
 		actnum = pop();
 		a = derefActor(actnum, "o8_wait:SO_WAIT_FOR_TURN");
@@ -469,13 +469,13 @@ void ScummEngine_v8::o8_dimArray() {
 	int array = fetchScriptWord();
 
 	switch (subOp) {
-	case 0x0A:		// SO_ARRAY_SCUMMVAR
+	case SO_INT_ARRAY:
 		defineArray(array, kIntArray, 0, pop());
 		break;
-	case 0x0B:		// SO_ARRAY_STRING
+	case SO_STRING_ARRAY:
 		defineArray(array, kStringArray, 0, pop());
 		break;
-	case 0x0C:		// SO_ARRAY_UNDIM
+	case SO_UNDIM_ARRAY:
 		nukeArray(array);
 		break;
 	default:
@@ -488,17 +488,17 @@ void ScummEngine_v8::o8_dim2dimArray() {
 	int array = fetchScriptWord(), a, b;
 
 	switch (subOp) {
-	case 0x0A:		// SO_ARRAY_SCUMMVAR
+	case SO_INT_ARRAY:
 		b = pop();
 		a = pop();
 		defineArray(array, kIntArray, a, b);
 		break;
-	case 0x0B:		// SO_ARRAY_STRING
+	case SO_STRING_ARRAY:
 		b = pop();
 		a = pop();
 		defineArray(array, kStringArray, a, b);
 		break;
-	case 0x0C:		// SO_ARRAY_UNDIM
+	case SO_UNDIM_ARRAY:
 		nukeArray(array);
 		break;
 	default:
@@ -514,13 +514,13 @@ void ScummEngine_v8::o8_arrayOps() {
 	int list[128];
 
 	switch (subOp) {
-	case 0x14:		// SO_ASSIGN_STRING
+	case SO_ASSIGN_STRING:
 		b = pop();
 		len = resStrLen(_scriptPointer);
 		data = defineArray(array, kStringArray, 0, len + 1);
 		copyScriptString(data + b);
 		break;
-	case 0x15:		// SO_ASSIGN_SCUMMVAR_LIST
+	case SO_ASSIGN_INT_LIST:
 		b = pop();
 		len = getStackList(list, ARRAYSIZE(list));
 		d = readVar(array);
@@ -531,7 +531,7 @@ void ScummEngine_v8::o8_arrayOps() {
 			writeArray(array, 0, b + len, list[len]);
 		}
 		break;
-	case 0x16:		// SO_ASSIGN_2DIM_LIST
+	case SO_ASSIGN_2DIM_LIST:
 		b = pop();
 		len = getStackList(list, ARRAYSIZE(list));
 		d = readVar(array);
@@ -560,35 +560,35 @@ void ScummEngine_v8::o8_cursorCommand() {
 	int args[4];
 
 	switch (subOp) {
-	case 0xDC:		// SO_CURSOR_ON Turn cursor on
+	case SO_CURSOR_ON:		// Turn cursor on
 		_cursor.state = 1;
 		verbMouseOver(0);
 		break;
-	case 0xDD:		// SO_CURSOR_OFF Turn cursor off
+	case SO_CURSOR_OFF:		// Turn cursor off
 		_cursor.state = 0;
 		verbMouseOver(0);
 		break;
-	case 0xDE:		// SO_CURSOR_SOFT_ON Turn soft cursor on
+	case SO_CURSOR_SOFT_ON:		// Turn soft cursor on
 		_cursor.state++;
 		verbMouseOver(0);
 		break;
-	case 0xDF:		// SO_CURSOR_SOFT_OFF Turn soft cursor off
+	case SO_CURSOR_SOFT_OFF:		// Turn soft cursor off
 		_cursor.state--;
 		verbMouseOver(0);
 		break;
-	case 0xE0:		// SO_USERPUT_ON
+	case SO_USERPUT_ON:
 		_userPut = 1;
 		break;
-	case 0xE1:		// SO_USERPUT_OFF
+	case SO_USERPUT_OFF:
 		_userPut = 0;
 		break;
-	case 0xE2:		// SO_USERPUT_SOFT_ON
+	case SO_USERPUT_SOFT_ON:
 		_userPut++;
 		break;
-	case 0xE3:		// SO_USERPUT_SOFT_OFF
+	case SO_USERPUT_SOFT_OFF:
 		_userPut--;
 		break;
-	case 0xE4:		// SO_CURSOR_IMAGE Set cursor image
+	case SO_CURSOR_IMAGE:		// Set cursor image
 		{
 			int idx = pop();
 			int room, obj;
@@ -596,21 +596,21 @@ void ScummEngine_v8::o8_cursorCommand() {
 			setCursorFromImg(obj, room, idx);
 		}
 		break;
-	case 0xE5:		// SO_CURSOR_HOTSPOT Set cursor hotspot
+	case SO_CURSOR_HOTSPOT:		// Set cursor hotspot
 		a = pop();
 		setCursorHotspot(pop(), a);
 		break;
-	case 0xE6:		// SO_CURSOR_TRANSPARENT Set cursor transparent color
+	case SO_CURSOR_TRANSPARENT:		// Set cursor transparent color
 		setCursorTransparency(pop());
 		break;
-	case 0xE7:		// SO_CHARSET_SET
+	case SO_CHARSET_SET:
 		_string[0]._default.charset = pop();
 		break;
-	case 0xE8:		// SO_CHARSET_COLOR
+	case SO_CHARSET_COLOR:
 		getStackList(args, ARRAYSIZE(args));
 		// This opcode does nothing (confirmed with disasm)
 		break;
-	case 0xE9:		// SO_CURSOR_PUT
+	case SO_CURSOR_PUT:
 		{
 		int y = pop();
 		int x = pop();
@@ -631,61 +631,61 @@ void ScummEngine_v8::o8_resourceRoutines() {
 	int resid = pop();
 
 	switch (subOp) {
-	case 0x3C:		// Dummy case
+	case SO_HEAP_LOAD_CHARSET:		// Dummy case
 		break;
-	case 0x3D:		// SO_HEAP_LOAD_COSTUME Load costume to heap
+	case SO_HEAP_LOAD_COSTUME:		// Load costume to heap
 		ensureResourceLoaded(rtCostume, resid);
 		break;
-	case 0x3E:		// SO_HEAP_LOAD_OBJECT Load object to heap
+	case SO_HEAP_LOAD_OBJECT:		// Load object to heap
 		{
 		int room = getObjectRoom(resid);
 		loadFlObject(resid, room);
 		}
 		break;
-	case 0x3F:		// SO_HEAP_LOAD_ROOM Load room to heap
+	case SO_HEAP_LOAD_ROOM:		// Load room to heap
 		ensureResourceLoaded(rtRoom, resid);
 		break;
-	case 0x40:		// SO_HEAP_LOAD_SCRIPT Load script to heap
+	case SO_HEAP_LOAD_SCRIPT:		// Load script to heap
 		ensureResourceLoaded(rtScript, resid);
 		break;
-	case 0x41:		// SO_HEAP_LOAD_SOUND Load sound to heap
+	case SO_HEAP_LOAD_SOUND:		// Load sound to heap
 		ensureResourceLoaded(rtSound, resid);
 		break;
 
-	case 0x42:		// SO_HEAP_LOCK_COSTUME Lock costume in heap
+	case SO_HEAP_LOCK_COSTUME:		// Lock costume in heap
 		_res->lock(rtCostume, resid);
 		break;
-	case 0x43:		// SO_HEAP_LOCK_ROOM Lock room in heap
+	case SO_HEAP_LOCK_ROOM:		// Lock room in heap
 		_res->lock(rtRoom, resid);
 		break;
-	case 0x44:		// SO_HEAP_LOCK_SCRIPT Lock script in heap
+	case SO_HEAP_LOCK_SCRIPT:		// Lock script in heap
 		_res->lock(rtScript, resid);
 		break;
-	case 0x45:		// SO_HEAP_LOCK_SOUND Lock sound in heap
+	case SO_HEAP_LOCK_SOUND:		// Lock sound in heap
 		_res->lock(rtSound, resid);
 		break;
-	case 0x46:		// SO_HEAP_UNLOCK_COSTUME Unlock costume
+	case SO_HEAP_UNLOCK_COSTUME:		// Unlock costume
 		_res->unlock(rtCostume, resid);
 		break;
-	case 0x47:		// SO_HEAP_UNLOCK_ROOM Unlock room
+	case SO_HEAP_UNLOCK_ROOM:		// Unlock room
 		_res->unlock(rtRoom, resid);
 		break;
-	case 0x48:		// SO_HEAP_UNLOCK_SCRIPT Unlock script
+	case SO_HEAP_UNLOCK_SCRIPT:		// Unlock script
 		_res->unlock(rtScript, resid);
 		break;
-	case 0x49:		// SO_HEAP_UNLOCK_SOUND Unlock sound
+	case SO_HEAP_UNLOCK_SOUND:		// Unlock sound
 		_res->unlock(rtSound, resid);
 		break;
-	case 0x4A:		// SO_HEAP_NUKE_COSTUME Remove costume from heap
+	case SO_HEAP_NUKE_COSTUME:		// Remove costume from heap
 		_res->setResourceCounter(rtCostume, resid, 0x7F);
 		break;
-	case 0x4B:		// SO_HEAP_NUKE_ROOM Remove room from heap
+	case SO_HEAP_NUKE_ROOM:		// Remove room from heap
 		_res->setResourceCounter(rtRoom, resid, 0x7F);
 		break;
-	case 0x4C:		// SO_HEAP_NUKE_SCRIPT Remove script from heap
+	case SO_HEAP_NUKE_SCRIPT:		// Remove script from heap
 		_res->setResourceCounter(rtScript, resid, 0x7F);
 		break;
-	case 0x4D:		// SO_HEAP_NUKE_SOUND Remove sound from heap
+	case SO_HEAP_NUKE_SOUND:		// Remove sound from heap
 		_res->setResourceCounter(rtSound, resid, 0x7F);
 		break;
 	default:
@@ -698,14 +698,14 @@ void ScummEngine_v8::o8_roomOps() {
 	int a, b, c, d, e;
 
 	switch (subOp) {
-	case 0x52:		// SO_ROOM_PALETTE Set room palette
+	case SO_ROOM_PALETTE:		// Set room palette
 		d = pop();
 		c = pop();
 		b = pop();
 		a = pop();
 		setPalColor(d, a, b, c);
 		break;
-	case 0x57:		// SO_ROOM_FADE Fade room
+	case SO_ROOM_FADE:		// Fade room
 		a = pop();
 		if (a) {
 			_switchRoomEffect = (byte)(a);
@@ -714,7 +714,7 @@ void ScummEngine_v8::o8_roomOps() {
 			fadeIn(_newEffect);
 		}
 		break;
-	case 0x58:		// SO_ROOM_RGB_INTENSITY Set room color intensity
+	case SO_ROOM_RGB_INTENSITY:		// Set room color intensity
 		e = pop();
 		d = pop();
 		c = pop();
@@ -722,24 +722,24 @@ void ScummEngine_v8::o8_roomOps() {
 		a = pop();
 		darkenPalette(a, b, c, d, e);
 		break;
-	case 0x59:		// SO_ROOM_TRANSFORM Transform room
+	case SO_ROOM_TRANSFORM:		// Transform room
 		d = pop();
 		c = pop();
 		b = pop();
 		a = pop();
 		palManipulateInit(a, b, c, d);
 		break;
-	case 0x5C:		// SO_ROOM_NEW_PALETTE New palette
+	case SO_ROOM_NEW_PALETTE:		// New palette
 		a = pop();
 		setCurrentPalette(a);
 		break;
-	case 0x5D:		// SO_ROOM_SAVE_GAME Save game
+	case SO_ROOM_SAVE_GAME:		// Save game
 		_saveSound = 0;
 		_saveTemporaryState = true;
 		_saveLoadSlot = 1;
 		_saveLoadFlag = 1;
 		break;
-	case 0x5E:		// SO_ROOM_LOAD_GAME Load game
+	case SO_ROOM_LOAD_GAME:		// Load game
 		_saveSound = pop();
 		if (!_saveLoadFlag) {
 			_saveTemporaryState = true;
@@ -747,7 +747,7 @@ void ScummEngine_v8::o8_roomOps() {
 			_saveLoadFlag = 2;
 		}
 		break;
-	case 0x5F:		// SO_ROOM_SATURATION Set saturation of room colors
+	case SO_ROOM_SATURATION:		// Set saturation of room colors
 		e = pop();
 		d = pop();
 		c = pop();
@@ -765,7 +765,7 @@ void ScummEngine_v8::o8_actorOps() {
 	Actor *a;
 	int i, j;
 
-	if (subOp == 0x7A) {
+	if (subOp == SO_ACTOR_INIT) {
 		_curActor = pop();
 		return;
 	}
@@ -775,137 +775,137 @@ void ScummEngine_v8::o8_actorOps() {
 		return;
 
 	switch (subOp) {
-	case 0x64:		// SO_ACTOR_COSTUME Set actor costume
+	case SO_COSTUME:		// Set actor costume
 		a->setActorCostume(pop());
 		break;
-	case 0x65:		// SO_ACTOR_STEP_DIST Set actor width of steps
+	case SO_STEP_DIST:		// Set actor width of steps
 		j = pop();
 		i = pop();
 		a->setActorWalkSpeed(i, j);
 		break;
-	case 0x67:		// SO_ACTOR_ANIMATION_DEFAULT Set actor animation to default
+	case SO_ANIMATION_DEFAULT:		// Set actor animation to default
 		a->_initFrame = 1;
 		a->_walkFrame = 2;
 		a->_standFrame = 3;
 		a->_talkStartFrame = 4;
 		a->_talkStopFrame = 5;
 		break;
-	case 0x68:		// SO_ACTOR_ANIMATION_INIT Initialize animation
+	case SO_INIT_ANIMATION:		// Initialize animation
 		a->_initFrame = pop();
 		break;
-	case 0x69:		// SO_ACTOR_ANIMATION_TALK Set actor animation to talk animation
+	case SO_TALK_ANIMATION:		// Set actor animation to talk animation
 		a->_talkStopFrame = pop();
 		a->_talkStartFrame = pop();
 		break;
-	case 0x6A:		// SO_ACTOR_ANIMATION_WALK Set actor animation to walk animation
+	case SO_WALK_ANIMATION:		// Set actor animation to walk animation
 		a->_walkFrame = pop();
 		break;
-	case 0x6B:		// SO_ACTOR_ANIMATION_STAND Set actor animation to standing animation
+	case SO_STAND_ANIMATION:		// Set actor animation to standing animation
 		a->_standFrame = pop();
 		break;
-	case 0x6C:		// SO_ACTOR_ANIMATION_SPEED Set speed of animation
+	case SO_ANIMATION_SPEED:		// Set speed of animation
 		a->setAnimSpeed(pop());
 		break;
-	case 0x6D:		// SO_ACTOR_DEFAULT
+	case SO_DEFAULT:
 		a->initActor(0);
 		break;
-	case 0x6E:		// SO_ACTOR_ELEVATION
+	case SO_ELEVATION:
 		a->setElevation(pop());
 		break;
-	case 0x6F:		// SO_ACTOR_PALETTE Set actor palette
+	case SO_PALETTE:		// Set actor palette
 		j = pop();
 		i = pop();
 		assertRange(0, i, 31, "o8_actorOps: palette slot");
 		a->setPalette(i, j);
 		break;
-	case 0x70:		// SO_ACTOR_TALK_COLOR Set actor talk color
+	case SO_TALK_COLOR:		// Set actor talk color
 		a->_talkColor = pop();
 		break;
-	case 0x71:		// SO_ACTOR_NAME Set name of actor
+	case SO_ACTOR_NAME:		// Set name of actor
 		loadPtrToResource(rtActorName, a->_number, NULL);
 		break;
-	case 0x72:		// SO_ACTOR_WIDTH Set width of actor
+	case SO_ACTOR_WIDTH:		// Set width of actor
 		a->_width = pop();
 		break;
-	case 0x73:		// SO_ACTOR_SCALE Set scaling of actor
+	case SO_SCALE:		// Set scaling of actor
 		i = pop();
 		a->setScale(i, i);
 		break;
-	case 0x74:		// SO_ACTOR_NEVER_ZCLIP
+	case SO_NEVER_ZCLIP:
 		a->_forceClip = 0;
 		break;
-	case 0x75:		// SO_ACTOR_ALWAYS_ZCLIP
+	case SO_ALWAYS_ZCLIP:
 		a->_forceClip = pop();
 		// V8 uses 255 where we used to use 100
 		if (a->_forceClip == 255)
 			a->_forceClip = 100;
 		break;
-	case 0x76:		// SO_ACTOR_IGNORE_BOXES Make actor ignore boxes
+	case SO_IGNORE_BOXES:		// Make actor ignore boxes
 		a->_ignoreBoxes = true;
 		a->_forceClip = 100;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 0x77:		// SO_ACTOR_FOLLOW_BOXES Make actor follow boxes
+	case SO_FOLLOW_BOXES:		// Make actor follow boxes
 		a->_ignoreBoxes = false;
 		a->_forceClip = 100;
 		if (a->isInCurrentRoom())
 			a->putActor();
 		break;
-	case 0x78:		// SO_ACTOR_SPECIAL_DRAW
+	case SO_SHADOW:
 		a->_shadowMode = pop();
 		break;
-	case 0x79:		// SO_ACTOR_TEXT_OFFSET Set text offset relative to actor
+	case SO_TEXT_OFFSET:		// Set text offset relative to actor
 		a->_talkPosY = pop();
 		a->_talkPosX = pop();
 		break;
-//	case 0x7A:		// SO_ACTOR_INIT Set current actor (handled above)
-	case 0x7B:		// SO_ACTOR_VARIABLE Set actor variable
+//	case SO_ACTOR_INIT:		// Set current actor (handled above)
+	case SO_ACTOR_VARIABLE:		// Set actor variable
 		i = pop();
 		a->setAnimVar(pop(), i);
 		break;
-	case 0x7C:		// SO_ACTOR_IGNORE_TURNS_ON Make actor ignore turns
+	case SO_ACTOR_IGNORE_TURNS_ON:		// Make actor ignore turns
 		a->_ignoreTurns = true;
 		break;
-	case 0x7D:		// SO_ACTOR_IGNORE_TURNS_OFF Make actor follow turns
+	case SO_ACTOR_IGNORE_TURNS_OFF:		// Make actor follow turns
 		a->_ignoreTurns = false;
 		break;
-	case 0x7E:		// SO_ACTOR_NEW New actor
+	case SO_NEW:		// New actor
 		a->initActor(2);
 		break;
-	case 0x7F:		// SO_ACTOR_DEPTH Set actor Z position
+	case SO_ACTOR_DEPTH:		// Set actor Z position
 		a->_layer = pop();
 		break;
-	case 0x80:		// SO_ACTOR_STOP
+	case SO_ACTOR_STOP:
 		a->stopActorMoving();
 		a->startAnimActor(a->_standFrame);
 		break;
-	case 0x81:		// SO_ACTOR_FACE Make actor face angle
+	case SO_ACTOR_FACE:		// Make actor face angle
 		a->_moving &= ~MF_TURN;
 		a->setDirection(pop());
 		break;
-	case 0x82:		// SO_ACTOR_TURN Turn actor
+	case SO_ACTOR_TURN:		// Turn actor
 		a->turnToDirection(pop());
 		break;
-	case 0x83:		// SO_ACTOR_WALK_SCRIPT Set walk script for actor?
+	case SO_ACTOR_WALK_SCRIPT:		// Set walk script for actor?
 		a->_walkScript = pop();
 		break;
-	case 0x84:		// SO_ACTOR_TALK_SCRIPT Set talk script for actor?
+	case SO_ACTOR_TALK_SCRIPT:		// Set talk script for actor?
 		a->_talkScript = pop();
 		break;
-	case 0x85:		// SO_ACTOR_WALK_PAUSE
+	case SO_ACTOR_WALK_PAUSE:
 		a->_moving |= MF_FROZEN;
 		break;
-	case 0x86:		// SO_ACTOR_WALK_RESUME
+	case SO_ACTOR_WALK_RESUME:
 		a->_moving &= ~MF_FROZEN;
 		break;
-	case 0x87:		// SO_ACTOR_VOLUME Set volume of actor speech
+	case SO_ACTOR_VOLUME:		// Set volume of actor speech
 		a->_talkVolume = pop();
 		break;
-	case 0x88:		// SO_ACTOR_FREQUENCY Set frequency of actor speech
+	case SO_ACTOR_FREQUENCY:		// Set frequency of actor speech
 		a->_talkFrequency = pop();
 		break;
-	case 0x89:		// SO_ACTOR_PAN
+	case SO_ACTOR_PAN:
 		a->_talkPan = pop();
 		break;
 	default:
@@ -917,10 +917,10 @@ void ScummEngine_v8::o8_cameraOps() {
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
-	case 0x32:		// SO_CAMERA_PAUSE
+	case SO_CAMERA_PAUSE:
 		_cameraIsFrozen = true;
 		break;
-	case 0x33:		// SO_CAMERA_RESUME
+	case SO_CAMERA_RESUME:
 		_cameraIsFrozen = false;
 		break;
 	default:
@@ -933,7 +933,7 @@ void ScummEngine_v8::o8_verbOps() {
 	VerbSlot *vs = NULL;
 	int slot, a, b;
 
-	if (subOp == 0x96) {
+	if (subOp == SO_VERB_INIT) {
 		_curVerb = pop();
 		_curVerbSlot = getVerbSlot(_curVerb, 0);
 		assertRange(0, _curVerbSlot, _numVerbs - 1, "new verb slot");
@@ -945,10 +945,10 @@ void ScummEngine_v8::o8_verbOps() {
 	assert(vs);
 
 	switch (subOp) {
-	case 0x96:		// SO_VERB_INIT Choose verb number for editing
+	case SO_VERB_INIT:		// Choose verb number for editing
 		// handled above!
 		break;
-	case 0x97:		// SO_VERB_NEW New verb
+	case SO_VERB_NEW:		// New verb
 		if (_curVerbSlot == 0) {
 			for (slot = 1; slot < _numVerbs; slot++) {
 				if (_verbs[slot].verbid == 0)
@@ -972,40 +972,40 @@ void ScummEngine_v8::o8_verbOps() {
 		vs->center = 0;
 		vs->imgindex = 0;
 		break;
-	case 0x98:		// SO_VERB_DELETE Delete verb
+	case SO_VERB_DELETE:		// Delete verb
 		killVerb(_curVerbSlot);
 		break;
-	case 0x99:		// SO_VERB_NAME Set verb name
+	case SO_VERB_NAME:		// Set verb name
 		loadPtrToResource(rtVerb, _curVerbSlot, NULL);
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 0x9A:		// SO_VERB_AT Set verb (X,Y) placement
+	case SO_VERB_AT:		// Set verb (X,Y) placement
 		vs->curRect.top = pop();
 		vs->origLeft = pop();
 		break;
-	case 0x9B:		// SO_VERB_ON Turn verb on
+	case SO_VERB_ON:		// Turn verb on
 		vs->curmode = 1;
 		break;
-	case 0x9C:		// SO_VERB_OFF Turn verb off
+	case SO_VERB_OFF:		// Turn verb off
 		vs->curmode = 0;
 		break;
-	case 0x9D:		// SO_VERB_COLOR Set verb color
+	case SO_VERB_COLOR:		// Set verb color
 		vs->color = pop();
 		break;
-	case 0x9E:		// SO_VERB_HICOLOR Set verb highlighted color
+	case SO_VERB_HICOLOR:		// Set verb highlighted color
 		vs->hicolor = pop();
 		break;
-	case 0xA0:		// SO_VERB_DIMCOLOR Set verb dimmed (disabled) color
+	case SO_VERB_DIMCOLOR:		// Set verb dimmed (disabled) color
 		vs->dimcolor = pop();
 		break;
-	case 0xA1:		// SO_VERB_DIM
+	case SO_VERB_DIM:
 		vs->curmode = 2;
 		break;
-	case 0xA2:		// SO_VERB_KEY Set keypress to associate with verb
+	case SO_VERB_KEY:		// Set keypress to associate with verb
 		vs->key = pop();
 		break;
-	case 0xA3:		// SO_VERB_IMAGE Set verb image
+	case SO_VERB_IMAGE:		// Set verb image
 		b = pop();
 		a = pop();
 		if (_curVerbSlot && a != vs->imgindex) {
@@ -1014,7 +1014,7 @@ void ScummEngine_v8::o8_verbOps() {
 			vs->imgindex = a;
 		}
 		break;
-	case 0xA4:		// SO_VERB_NAME_STR Set verb name
+	case SO_VERB_NAME_STR:		// Set verb name
 		a = pop();
 		if (a == 0) {
 			loadPtrToResource(rtVerb, _curVerbSlot, (const byte *)"");
@@ -1024,13 +1024,13 @@ void ScummEngine_v8::o8_verbOps() {
 		vs->type = kTextVerbType;
 		vs->imgindex = 0;
 		break;
-	case 0xA5:		// SO_VERB_CENTER Center verb
+	case SO_VERB_CENTER:		// Center verb
 		vs->center = 1;
 		break;
-	case 0xA6:		// SO_VERB_CHARSET Choose charset for verb
+	case SO_VERB_CHARSET:		// Choose charset for verb
 		vs->charset_nr = pop();
 		break;
-	case 0xA7:		// SO_VERB_LINE_SPACING Choose linespacing for verb
+	case SO_VERB_LINE_SPACING:		// Choose linespacing for verb
 		_verbLineSpacing = pop();
 		break;
 	default:
@@ -1041,10 +1041,10 @@ void ScummEngine_v8::o8_verbOps() {
 void ScummEngine_v8::o8_systemOps() {
 	byte subOp = fetchScriptByte();
 	switch (subOp) {
-	case 0x28:		// SO_SYSTEM_RESTART Restart game
+	case SO_RESTART:		// Restart game
 		restart();
 		break;
-	case 0x29:		// SO_SYSTEM_QUIT Quit game
+	case SO_QUIT:		// Quit game
 		quitGame();
 		break;
 	default:
diff --git a/engines/scumm/scumm_v6.h b/engines/scumm/scumm_v6.h
index 8f9d7fb2816..e594aa15539 100644
--- a/engines/scumm/scumm_v6.h
+++ b/engines/scumm/scumm_v6.h
@@ -37,6 +37,157 @@ protected:
 		kDwordArray = 6
 	};
 
+	enum SubOpType {
+		SO_AT = 65,
+		SO_COLOR = 66,
+		SO_CLIPPED = 67,
+		SO_CENTER = 69,
+
+		SO_LEFT = 71,
+		SO_OVERHEAD = 72,
+
+		SO_MUMBLE = 74,
+		SO_TEXTSTRING = 75,
+		SO_COSTUME = 76,
+		SO_STEP_DIST = 77,
+		SO_SOUND = 78,
+		SO_WALK_ANIMATION = 79,
+		SO_TALK_ANIMATION = 80,
+		SO_STAND_ANIMATION = 81,
+		SO_ANIMATION = 82,
+		SO_DEFAULT = 83,
+		SO_ELEVATION = 84,
+		SO_ANIMATION_DEFAULT = 85,
+		SO_PALETTE = 86,
+		SO_TALK_COLOR = 87,
+		SO_ACTOR_NAME = 88,
+		SO_INIT_ANIMATION = 89,
+
+		SO_ACTOR_WIDTH = 91,
+		SO_SCALE = 92,
+		SO_NEVER_ZCLIP = 93,
+		SO_ALWAYS_ZCLIP = 94,
+		SO_IGNORE_BOXES = 95,
+		SO_FOLLOW_BOXES = 96,
+		SO_ANIMATION_SPEED = 97,
+		SO_SHADOW = 98,
+		SO_TEXT_OFFSET = 99,
+
+		SO_LOAD_SCRIPT = 100,
+		SO_LOAD_SOUND = 101,
+		SO_LOAD_COSTUME = 102,
+		SO_LOAD_ROOM = 103,
+		SO_NUKE_SCRIPT = 104,
+		SO_NUKE_SOUND = 105,
+		SO_NUKE_COSTUME = 106,
+		SO_NUKE_ROOM = 107,
+		SO_LOCK_SCRIPT = 108,
+		SO_LOCK_SOUND = 109,
+		SO_LOCK_COSTUME = 110,
+		SO_LOCK_ROOM = 111,
+		SO_UNLOCK_SCRIPT = 112,
+		SO_UNLOCK_SOUND = 113,
+		SO_UNLOCK_COSTUME = 114,
+		SO_UNLOCK_ROOM = 115,
+		SO_CLEAR_HEAP = 116,
+		SO_LOAD_CHARSET = 117,
+		SO_NUKE_CHARSET = 118,
+		SO_LOAD_OBJECT = 119,
+
+		SO_VERB_IMAGE = 124,
+		SO_VERB_NAME = 125,
+		SO_VERB_COLOR = 126,
+		SO_VERB_HICOLOR = 127,
+		SO_VERB_AT = 128,
+		SO_VERB_ON = 129,
+		SO_VERB_OFF = 130,
+		SO_VERB_DELETE = 131,
+		SO_VERB_NEW = 132,
+		SO_VERB_DIMCOLOR = 133,
+		SO_VERB_DIM = 134,
+		SO_VERB_KEY = 135,
+		SO_VERB_CENTER = 136,
+		SO_VERB_NAME_STR = 137,
+
+		SO_VERB_IMAGE_IN_ROOM = 139,
+		SO_VERB_BAKCOLOR = 140,
+		SO_SAVE_VERBS = 141,
+		SO_RESTORE_VERBS = 142,
+		SO_DELETE_VERBS = 143,
+		SO_CURSOR_ON = 144,
+		SO_CURSOR_OFF = 145,
+		SO_USERPUT_ON = 146,
+		SO_USERPUT_OFF = 147,
+		SO_CURSOR_SOFT_ON = 148,
+		SO_CURSOR_SOFT_OFF = 149,
+		SO_USERPUT_SOFT_ON = 150,
+		SO_USERPUT_SOFT_OFF = 151,
+
+		SO_CURSOR_IMAGE = 153,
+		SO_CURSOR_HOTSPOT = 154,
+
+		SO_CHARSET_SET = 156,
+		SO_CHARSET_COLOR = 157,
+		SO_RESTART = 158,
+		SO_PAUSE = 159,
+		SO_QUIT = 160,
+
+		SO_WAIT_FOR_ACTOR = 168,
+		SO_WAIT_FOR_MESSAGE = 169,
+		SO_WAIT_FOR_CAMERA = 170,
+		SO_WAIT_FOR_SENTENCE = 171,
+		SO_ROOM_SCROLL = 172,
+		SO_ROOM_SCREEN = 174,
+		SO_ROOM_PALETTE = 175,
+		SO_ROOM_SHAKE_ON = 176,
+		SO_ROOM_SHAKE_OFF = 177,
+		SO_ROOM_INTENSITY = 179,
+		SO_ROOM_SAVEGAME = 180,
+		SO_ROOM_FADE = 181,
+		SO_RGB_ROOM_INTENSITY = 182,
+		SO_ROOM_SHADOW = 183,
+		SO_SAVE_STRING = 184,
+		SO_LOAD_STRING = 185,
+		SO_ROOM_TRANSFORM = 186,
+		SO_CYCLE_SPEED = 187,
+
+		SO_VERB_INIT = 196,
+		SO_ACTOR_INIT = 197,
+		SO_ACTOR_VARIABLE = 198,
+		SO_INT_ARRAY = 199,
+		SO_BIT_ARRAY = 200,
+		SO_NIBBLE_ARRAY = 201,
+		SO_BYTE_ARRAY = 202,
+		SO_STRING_ARRAY = 203,
+		SO_UNDIM_ARRAY = 204,
+		SO_ASSIGN_STRING = 205,
+
+		SO_ASSIGN_INT_LIST = 208,
+
+		SO_ASSIGN_2DIM_LIST = 212,
+		SO_ROOM_NEW_PALETTE = 213,
+		SO_CURSOR_TRANSPARENT = 214,
+		SO_ACTOR_IGNORE_TURNS_ON = 215,
+		SO_ACTOR_IGNORE_TURNS_OFF = 216,
+		SO_NEW = 217,
+
+		SO_ALWAYS_ZCLIP_FT_DEMO = 225,
+		SO_WAIT_FOR_ANIMATION = 226,
+		SO_ACTOR_DEPTH = 227,
+		SO_ACTOR_WALK_SCRIPT = 228,
+		SO_ACTOR_STOP = 229,
+
+		SO_ACTOR_FACE = 230,
+		SO_ACTOR_TURN = 231,
+		SO_WAIT_FOR_TURN = 232,
+		SO_ACTOR_WALK_PAUSE = 233,
+		SO_ACTOR_WALK_RESUME = 234,
+		SO_ACTOR_TALK_SCRIPT = 235,
+
+		SO_BASEOP = 254,
+		SO_END = 255,
+	};
+
 #include "common/pack-start.h"	// START STRUCT PACKING
 
 	struct ArrayHeader {
diff --git a/engines/scumm/scumm_v8.h b/engines/scumm/scumm_v8.h
index 5b992d1b265..2d933cb2b1e 100644
--- a/engines/scumm/scumm_v8.h
+++ b/engines/scumm/scumm_v8.h
@@ -30,6 +30,148 @@ namespace Scumm {
 
 class ScummEngine_v8 : public ScummEngine_v7 {
 protected:
+	enum SubOpType {
+		SO_INT_ARRAY = 10,				// SO_ARRAY_SCUMMVAR
+		SO_STRING_ARRAY = 11,			// SO_ARRAY_STRING
+		SO_UNDIM_ARRAY = 12,			// SO_ARRAY_UNDIM
+
+		SO_ASSIGN_STRING = 20,
+		SO_ASSIGN_INT_LIST = 21,		// SO_ASSIGN_SCUMMVAR_LIST
+		SO_ASSIGN_2DIM_LIST = 22,
+
+		SO_WAIT_FOR_ACTOR = 30,
+		SO_WAIT_FOR_MESSAGE = 31,
+		SO_WAIT_FOR_CAMERA = 32,
+		SO_WAIT_FOR_SENTENCE = 33,
+		SO_WAIT_FOR_ANIMATION = 34,
+		SO_WAIT_FOR_TURN = 35,
+
+		SO_RESTART = 40,				// SO_SYSTEM_RESTART
+		SO_QUIT = 41,					// SO_SYSTEM_QUIT
+
+		SO_CAMERA_PAUSE = 50,
+		SO_CAMERA_RESUME = 51,
+
+		SO_HEAP_LOAD_CHARSET = 60,
+		SO_HEAP_LOAD_COSTUME = 61,
+		SO_HEAP_LOAD_OBJECT = 62,
+		SO_HEAP_LOAD_ROOM = 63,
+		SO_HEAP_LOAD_SCRIPT = 64,
+		SO_HEAP_LOAD_SOUND = 65,
+		SO_HEAP_LOCK_COSTUME = 66,
+		SO_HEAP_LOCK_ROOM = 67,
+		SO_HEAP_LOCK_SCRIPT = 68,
+		SO_HEAP_LOCK_SOUND = 69,
+		SO_HEAP_UNLOCK_COSTUME = 70,
+		SO_HEAP_UNLOCK_ROOM = 71,
+		SO_HEAP_UNLOCK_SCRIPT = 72,
+		SO_HEAP_UNLOCK_SOUND = 73,
+		SO_HEAP_NUKE_COSTUME = 74,
+		SO_HEAP_NUKE_ROOM = 75,
+		SO_HEAP_NUKE_SCRIPT = 76,
+		SO_HEAP_NUKE_SOUND = 77,
+
+		SO_ROOM_PALETTE = 82,
+
+		SO_ROOM_FADE = 87,
+		SO_ROOM_RGB_INTENSITY = 88,
+		SO_ROOM_TRANSFORM = 89,
+
+		SO_ROOM_NEW_PALETTE = 92,
+		SO_ROOM_SAVE_GAME = 93,
+		SO_ROOM_LOAD_GAME = 94,
+		SO_ROOM_SATURATION = 95,
+
+		SO_COSTUME = 100,
+		SO_STEP_DIST = 101,
+
+		SO_ANIMATION_DEFAULT = 103,		// SO_ACTOR_ANIMATION_DEFAULT
+		SO_INIT_ANIMATION = 104,		// SO_ACTOR_ANIMATION_INIT
+		SO_TALK_ANIMATION = 105,		// SO_ACTOR_ANIMATION_TALK
+		SO_WALK_ANIMATION = 106,		// SO_ACTOR_ANIMATION_WALK
+		SO_STAND_ANIMATION = 107,		// SO_ACTOR_ANIMATION_STAND
+		SO_ANIMATION_SPEED = 108,		// SO_ACTOR_ANIMATION_SPEED
+		SO_DEFAULT = 109,				// SO_ACTOR_DEFAULT
+		SO_ELEVATION = 110,				// SO_ACTOR_ELEVATION
+		SO_PALETTE = 111,				// SO_ACTOR_PALETTE
+		SO_TALK_COLOR = 112,			// SO_ACTOR_TALK_COLOR
+		SO_ACTOR_NAME = 113,
+		SO_ACTOR_WIDTH = 114,
+		SO_SCALE = 115,					// SO_ACTOR_SCALE
+		SO_NEVER_ZCLIP = 116,			// SO_ACTOR_NEVER_ZCLIP
+		SO_ALWAYS_ZCLIP = 117,			// SO_ACTOR_ALWAYS_ZCLIP
+		SO_IGNORE_BOXES = 118,			// SO_ACTOR_IGNORE_BOXES
+		SO_FOLLOW_BOXES = 119,			// SO_ACTOR_FOLLOW_BOXES
+		SO_SHADOW = 120,				// SO_ACTOR_SPECIAL_DRAW
+		SO_TEXT_OFFSET = 121,			// SO_ACTOR_TEXT_OFFSET
+		SO_ACTOR_INIT = 122,
+		SO_ACTOR_VARIABLE = 123,
+		SO_ACTOR_IGNORE_TURNS_ON = 124,
+		SO_ACTOR_IGNORE_TURNS_OFF = 125,
+		SO_NEW = 126,					// SO_ACTOR_NEW
+		SO_ACTOR_DEPTH = 127,
+		SO_ACTOR_STOP = 128,
+		SO_ACTOR_FACE = 129,
+		SO_ACTOR_TURN = 130,
+		SO_ACTOR_WALK_SCRIPT = 131,
+		SO_ACTOR_TALK_SCRIPT = 132,
+		SO_ACTOR_WALK_PAUSE = 133,
+		SO_ACTOR_WALK_RESUME = 134,
+		SO_ACTOR_VOLUME = 135,
+		SO_ACTOR_FREQUENCY = 136,
+		SO_ACTOR_PAN = 137,
+
+		SO_VERB_INIT = 150,
+		SO_VERB_NEW = 151,
+		SO_VERB_DELETE = 152,
+		SO_VERB_NAME = 153,
+		SO_VERB_AT = 154,
+		SO_VERB_ON = 155,
+		SO_VERB_OFF = 156,
+		SO_VERB_COLOR = 157,
+		SO_VERB_HICOLOR = 158,
+
+		SO_VERB_DIMCOLOR = 160,
+		SO_VERB_DIM = 161,
+		SO_VERB_KEY = 162,
+		SO_VERB_IMAGE = 163,
+		SO_VERB_NAME_STR = 164,
+		SO_VERB_CENTER = 165,
+		SO_VERB_CHARSET = 166,
+		SO_VERB_LINE_SPACING = 167,
+
+		SO_SAVE_VERBS = 180,			// SO_VERBS_SAVE
+		SO_RESTORE_VERBS = 181,			// SO_VERBS_RESTORE
+		SO_DELETE_VERBS = 182,			// SO_VERBS_DELETE
+
+		SO_BASEOP = 200,				// SO_PRINT_BASEOP
+		SO_END = 201,					// SO_PRINT_END
+		SO_AT = 202,					// SO_PRINT_AT
+		SO_COLOR = 203,					// SO_PRINT_COLOR
+		SO_CENTER = 204,				// SO_PRINT_CENTER
+		SO_PRINT_CHARSET = 205,
+		SO_LEFT = 206,					// SO_PRINT_LEFT
+		SO_OVERHEAD = 207,				// SO_PRINT_OVERHEAD
+		SO_MUMBLE = 208,				// SO_PRINT_MUMBLE
+		SO_PRINT_STRING = 209,
+		SO_PRINT_WRAP = 210,
+
+		SO_CURSOR_ON = 220,
+		SO_CURSOR_OFF = 221,
+		SO_CURSOR_SOFT_ON = 222,
+		SO_CURSOR_SOFT_OFF = 223,
+		SO_USERPUT_ON = 224,
+		SO_USERPUT_OFF = 225,
+		SO_USERPUT_SOFT_ON = 226,
+		SO_USERPUT_SOFT_OFF = 227,
+		SO_CURSOR_IMAGE = 228,
+		SO_CURSOR_HOTSPOT = 229,
+		SO_CURSOR_TRANSPARENT = 230,
+		SO_CHARSET_SET = 231,
+		SO_CHARSET_COLOR = 232,
+		SO_CURSOR_PUT = 233,
+	};
+
 	struct ObjectNameId {
 		char name[40];
 		int id;




More information about the Scummvm-git-logs mailing list