aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'devtools')
-rw-r--r--devtools/create_hugo/enums.h2
-rw-r--r--devtools/create_hugo/staticdata.h36
-rw-r--r--devtools/create_lure/process_actions.cpp2
-rw-r--r--devtools/create_mads/main.cpp127
-rw-r--r--devtools/create_mads/module.mk12
-rw-r--r--devtools/create_mads/parser.cpp937
-rw-r--r--devtools/create_mads/parser.h28
-rw-r--r--devtools/create_mads/scripts/rex_nebular.txt2241
-rw-r--r--devtools/create_project/create_project.cpp113
-rw-r--r--devtools/create_project/create_project.h2
-rwxr-xr-xdevtools/create_project/xcode.cpp2
-rwxr-xr-xdevtools/credits.pl1313
-rw-r--r--devtools/md5table.c1
-rw-r--r--devtools/sci/musicplayer.cpp2
-rw-r--r--devtools/scumm-md5.txt1
-rw-r--r--devtools/tasmrecover/dreamweb/dreamweb.asm4
-rw-r--r--devtools/tasmrecover/dreamweb/object.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/saveload.asm1
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1673
-rw-r--r--devtools/tasmrecover/tasm/cpp.py107
-rw-r--r--devtools/tasmrecover/tasm/parser.py43
21 files changed, 2381 insertions, 4268 deletions
diff --git a/devtools/create_hugo/enums.h b/devtools/create_hugo/enums.h
index f721c3d4f5..667d7ebce1 100644
--- a/devtools/create_hugo/enums.h
+++ b/devtools/create_hugo/enums.h
@@ -1501,7 +1501,7 @@ enum objid_3d {
};
// Enumerate sequence index matching direction of travel
-enum {RIGHT, LEFT, DOWN, _UP};
+enum {RIGHT, LEFT, DOWN, __UP};
enum sound_t_1w {
//Hugo 1 Win
diff --git a/devtools/create_hugo/staticdata.h b/devtools/create_hugo/staticdata.h
index 612e044982..0ead2109d0 100644
--- a/devtools/create_hugo/staticdata.h
+++ b/devtools/create_hugo/staticdata.h
@@ -6171,8 +6171,8 @@ act16 adogseq2_1w = {INIT_OBJ_SEQ, 4 * NORMAL_TPS_v2d, DOG_1w, 2};
act16 adog5_1w = {INIT_OBJ_SEQ, 0, DOG_1w, 0};
act16 at78c_1w = {INIT_OBJ_SEQ, NORMAL_TPS_v2d + 12, TRAP_1w, 0};
act16 arock3_1w = {INIT_OBJ_SEQ, 0, HERO, RIGHT};
-act16 arock5_1w = {INIT_OBJ_SEQ, 11, HERO, _UP};
-act16 arock10_1w = {INIT_OBJ_SEQ, 40, HERO, _UP};
+act16 arock5_1w = {INIT_OBJ_SEQ, 11, HERO, __UP};
+act16 arock10_1w = {INIT_OBJ_SEQ, 40, HERO, __UP};
act16 arock12_1w = {INIT_OBJ_SEQ, 44, HERO, DOWN};
act16 acutrope_1w = {INIT_OBJ_SEQ, 0, ROPE_1w, 1};
act16 abin1_1w = {INIT_OBJ_SEQ, 0, BOAT_1w, 1};
@@ -7192,9 +7192,9 @@ act16 abd11_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 abd2_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 abd21_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 aclosedoor1_2w = {INIT_OBJ_SEQ, DOORDELAY, DOOR1_2w, 0};
-act16 adone10_2w = {INIT_OBJ_SEQ, 10, HERO, _UP};
+act16 adone10_2w = {INIT_OBJ_SEQ, 10, HERO, __UP};
act16 adone6_2w = {INIT_OBJ_SEQ, 0, HORACE_2w, LEFT};
-act16 adone9_2w = {INIT_OBJ_SEQ, 10, HORACE_2w, _UP};
+act16 adone9_2w = {INIT_OBJ_SEQ, 10, HORACE_2w, __UP};
act16 adumb13_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 adumb3_2w = {INIT_OBJ_SEQ, 0, HERO, RIGHT};
act16 afuze1_2w = {INIT_OBJ_SEQ, 0, DYNAMITE_2w, 1};
@@ -7202,10 +7202,10 @@ act16 agiveb5_2w = {INIT_OBJ_SEQ, 2, CAT_2w, 1};
act16 ahall1_3_2w = {INIT_OBJ_SEQ, 0, HERO, RIGHT};
act16 ahall2_2a_2w = {INIT_OBJ_SEQ, 0, HERO, LEFT};
act16 ahall3_1a_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
-act16 ahdrink4_2w = {INIT_OBJ_SEQ, 3, HESTER_2w, _UP};
+act16 ahdrink4_2w = {INIT_OBJ_SEQ, 3, HESTER_2w, __UP};
act16 ahdrink5_2w = {INIT_OBJ_SEQ, 70, HESTER_2w, DOWN};
act16 ahest3_2w = {INIT_OBJ_SEQ, 0, HESTER_2w, RIGHT};
-act16 ahest5_2w = {INIT_OBJ_SEQ, 22, HESTER_2w, _UP};
+act16 ahest5_2w = {INIT_OBJ_SEQ, 22, HESTER_2w, __UP};
act16 ahest7_2w = {INIT_OBJ_SEQ, 24, HESTER_2w, LEFT};
act16 ahest9_2w = {INIT_OBJ_SEQ, 45, HESTER_2w, DOWN};
act16 ainshed2_2w = {INIT_OBJ_SEQ, 0, HERO, DOWN};
@@ -7236,11 +7236,11 @@ act16 amaidc4_2w = {INIT_OBJ_SEQ, 8, MAID_2w, RIGHT};
act16 amaidc7_2w = {INIT_OBJ_SEQ, 16, MAID_2w, LEFT};
act16 amaidp6_2w = {INIT_OBJ_SEQ, 10, MAID_2w, DOWN};
act16 apenbseq1_2w = {INIT_OBJ_SEQ, 0, PENNY_2w, RIGHT};
-act16 apenbseq2_2w = {INIT_OBJ_SEQ, 25, PENNY_2w, _UP};
+act16 apenbseq2_2w = {INIT_OBJ_SEQ, 25, PENNY_2w, __UP};
act16 apenseq1_2w = {INIT_OBJ_SEQ, 0, PENNY_2w, RIGHT};
act16 apenseq2_2w = {INIT_OBJ_SEQ, PENDELAY + 7, PENNY_2w, DOWN};
act16 apenseq3_2w = {INIT_OBJ_SEQ, PENDELAY + 10, PENNY_2w, LEFT};
-act16 apenseq4_2w = {INIT_OBJ_SEQ, PENDELAY + 17, PENNY_2w, _UP};
+act16 apenseq4_2w = {INIT_OBJ_SEQ, PENDELAY + 17, PENNY_2w, __UP};
act16 apenseq5_2w = {INIT_OBJ_SEQ, PENDELAY + 42, PENNY_2w, RIGHT};
act16 apenseq6_2w = {INIT_OBJ_SEQ, PENDELAY + 74, PENNY_2w, 2};
@@ -8254,12 +8254,12 @@ act16 acamp7b_3w = {INIT_OBJ_SEQ, 40, NATG_3w, 2};
act16 acrash10_3w = {INIT_OBJ_SEQ, 8, HERO, LEFT};
act16 acrash15_3w = {INIT_OBJ_SEQ, 21, PENNY_3w, DOWN};
act16 acrash16_3w = {INIT_OBJ_SEQ, 22, PENNY_3w, LEFT};
-act16 acrash18_3w = {INIT_OBJ_SEQ, 40, HERO, _UP};
+act16 acrash18_3w = {INIT_OBJ_SEQ, 40, HERO, __UP};
act16 acrash2_3w = {INIT_OBJ_SEQ, 1, PENNY_3w, DOWN};
act16 acrash3_3w = {INIT_OBJ_SEQ, 1, HERO, DOWN};
act16 acrash8_3w = {INIT_OBJ_SEQ, 4, PENNY_3w, RIGHT};
act16 adart6_3w = {INIT_OBJ_SEQ, DARTTIME - 1, E_EYES_3w, 1};
-act16 adoc1_3w = {INIT_OBJ_SEQ, 0, HERO, _UP};
+act16 adoc1_3w = {INIT_OBJ_SEQ, 0, HERO, __UP};
act16 aeleblink1_3w = {INIT_OBJ_SEQ, 41, E_EYES_3w, 1};
act16 aeleblink2_3w = {INIT_OBJ_SEQ, 42, E_EYES_3w, 0};
act16 aeleblink3_3w = {INIT_OBJ_SEQ, 43, E_EYES_3w, 1};
@@ -10145,9 +10145,9 @@ act16 abd2_2d = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 abd21_2d = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 aclosedoor1_2d = {INIT_OBJ_SEQ, DOORDELAY, DOOR1_2d, 0};
act16 adalek2_2d = {INIT_OBJ_SEQ, 0, DALEK_2d, 2};
-act16 adone10_2d = {INIT_OBJ_SEQ, 10, HERO, _UP};
+act16 adone10_2d = {INIT_OBJ_SEQ, 10, HERO, __UP};
act16 adone6_2d = {INIT_OBJ_SEQ, 0, HORACE_2d, LEFT};
-act16 adone9_2d = {INIT_OBJ_SEQ, 10, HORACE_2d, _UP};
+act16 adone9_2d = {INIT_OBJ_SEQ, 10, HORACE_2d, __UP};
act16 adumb13_2d = {INIT_OBJ_SEQ, 0, HERO, DOWN};
act16 adumb3_2d = {INIT_OBJ_SEQ, 0, HERO, RIGHT};
act16 afuze1_2d = {INIT_OBJ_SEQ, 0, DYNAMITE_2d, 1};
@@ -10155,10 +10155,10 @@ act16 agiveb5_2d = {INIT_OBJ_SEQ, 2, CAT_2d, 1};
act16 ahall1_3_2d = {INIT_OBJ_SEQ, 0, HERO, RIGHT};
act16 ahall2_2a_2d = {INIT_OBJ_SEQ, 0, HERO, LEFT};
act16 ahall3_1a_2d = {INIT_OBJ_SEQ, 0, HERO, DOWN};
-act16 ahdrink4_2d = {INIT_OBJ_SEQ, 3, HESTER_2d, _UP};
+act16 ahdrink4_2d = {INIT_OBJ_SEQ, 3, HESTER_2d, __UP};
act16 ahdrink5_2d = {INIT_OBJ_SEQ, 50, HESTER_2d, DOWN};
act16 ahest3_2d = {INIT_OBJ_SEQ, 0, HESTER_2d, RIGHT};
-act16 ahest5_2d = {INIT_OBJ_SEQ, 22, HESTER_2d, _UP};
+act16 ahest5_2d = {INIT_OBJ_SEQ, 22, HESTER_2d, __UP};
act16 ahest7_2d = {INIT_OBJ_SEQ, 24, HESTER_2d, LEFT};
act16 ahest9_2d = {INIT_OBJ_SEQ, 45, HESTER_2d, DOWN};
act16 ainshed2_2d = {INIT_OBJ_SEQ, 0, HERO, DOWN};
@@ -10188,11 +10188,11 @@ act16 amaidc4_2d = {INIT_OBJ_SEQ, 8, MAID_2d, RIGHT};
act16 amaidc7_2d = {INIT_OBJ_SEQ, 16, MAID_2d, LEFT};
act16 amaidp6_2d = {INIT_OBJ_SEQ, 10, MAID_2d, DOWN};
act16 apenbseq1_2d = {INIT_OBJ_SEQ, 0, PENNY_2d, RIGHT};
-act16 apenbseq2_2d = {INIT_OBJ_SEQ, 25, PENNY_2d, _UP};
+act16 apenbseq2_2d = {INIT_OBJ_SEQ, 25, PENNY_2d, __UP};
act16 apenseq1_2d = {INIT_OBJ_SEQ, 0, PENNY_2d, RIGHT};
act16 apenseq2_2d = {INIT_OBJ_SEQ, PENDELAY + 7, PENNY_2d, DOWN};
act16 apenseq3_2d = {INIT_OBJ_SEQ, PENDELAY + 10, PENNY_2d, LEFT};
-act16 apenseq4_2d = {INIT_OBJ_SEQ, PENDELAY + 17, PENNY_2d, _UP};
+act16 apenseq4_2d = {INIT_OBJ_SEQ, PENDELAY + 17, PENNY_2d, __UP};
act16 apenseq5_2d = {INIT_OBJ_SEQ, PENDELAY + 42, PENNY_2d, RIGHT};
act16 apenseq6_2d = {INIT_OBJ_SEQ, PENDELAY + 74, PENNY_2d, 2};
@@ -11155,12 +11155,12 @@ act16 acamp7b_3d = {INIT_OBJ_SEQ, 40, NATG_3d, 2};
act16 acrash10_3d = {INIT_OBJ_SEQ, 8, HERO, LEFT};
act16 acrash15_3d = {INIT_OBJ_SEQ, 21, PENNY_3d, DOWN};
act16 acrash16_3d = {INIT_OBJ_SEQ, 22, PENNY_3d, LEFT};
-act16 acrash18_3d = {INIT_OBJ_SEQ, 40, HERO, _UP};
+act16 acrash18_3d = {INIT_OBJ_SEQ, 40, HERO, __UP};
act16 acrash2_3d = {INIT_OBJ_SEQ, 1, PENNY_3d, DOWN};
act16 acrash3_3d = {INIT_OBJ_SEQ, 1, HERO, DOWN};
act16 acrash8_3d = {INIT_OBJ_SEQ, 4, PENNY_3d, RIGHT};
act16 adart6_3d = {INIT_OBJ_SEQ, DARTTIME - 1, E_EYES_3d, 1};
-act16 adoc1_3d = {INIT_OBJ_SEQ, 0, HERO, _UP};
+act16 adoc1_3d = {INIT_OBJ_SEQ, 0, HERO, __UP};
act16 aeleblink1_3d = {INIT_OBJ_SEQ, 41, E_EYES_3d, 1};
act16 aeleblink2_3d = {INIT_OBJ_SEQ, 42, E_EYES_3d, 0};
act16 aeleblink3_3d = {INIT_OBJ_SEQ, 43, E_EYES_3d, 1};
diff --git a/devtools/create_lure/process_actions.cpp b/devtools/create_lure/process_actions.cpp
index 8539391d57..db965730cb 100644
--- a/devtools/create_lure/process_actions.cpp
+++ b/devtools/create_lure/process_actions.cpp
@@ -255,7 +255,7 @@ uint16 process_action_sequence_entry(int supportIndex, byte *data, uint16 remain
// Replace code offset with an index
params[0] = index;
else {
- printf("\nEncountered unrecognised NPC code jump point: %xh\n", params[0]);
+ printf("\nEncountered unrecognized NPC code jump point: %xh\n", params[0]);
exit(1);
}
break;
diff --git a/devtools/create_mads/main.cpp b/devtools/create_mads/main.cpp
deleted file mode 100644
index b4de34d832..0000000000
--- a/devtools/create_mads/main.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// HACK to allow building with the SDL backend on MinGW
-// see bug #1800764 "TOOLS: MinGW tools building broken"
-#ifdef main
-#undef main
-#endif // main
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "parser.h"
-
-#define BUFFER_SIZE 8192
-
-void link(const char *destFilename, char **srcFilenames, int srcCount) {
- if (srcCount <= 0)
- return;
-
- FILE *destFile = fopen(destFilename, "wb");
- if (!destFile)
- return;
- unsigned int v = 0;
- const char *headerStr = "MADS";
- int fileOffset = 4 * (srcCount + 2);
-
- // Write header bit
- fwrite(headerStr, 1, 4, destFile);
- for (int i = 0; i <= srcCount; ++i)
- fwrite(&v, 1, 4, destFile);
-
- // Set up buffer for copying
- void *tempBuffer = malloc(BUFFER_SIZE);
-
- // Loop through copying each source file and setting it's file offset in the header
- for (int i = 0; i < srcCount; ++i) {
- // Add any extra padding to ensure that each file starts on a paragraph boundary
- if ((fileOffset % 16) != 0) {
- v = 0;
- while ((fileOffset % 16) != 0) {
- fwrite(&v, 1, 1, destFile);
- ++fileOffset;
- }
- }
-
- FILE *srcFile = fopen(srcFilenames[i], "rb");
- if (!srcFile) {
- printf("Could not locate file '%s'\n", srcFilenames[i]);
- break;
- }
-
- // Set the starting position of the file
- fseek(destFile, 4 + (i * 4), SEEK_SET);
- fwrite(&fileOffset, 1, 4, destFile);
-
- // Move back to the end of the destination and copy the source file contents over
- fseek(destFile, 0, SEEK_END);
- while (!feof(srcFile)) {
- int bytesRead = fread(tempBuffer, 1, BUFFER_SIZE, srcFile);
- fwrite(tempBuffer, 1, bytesRead, destFile);
- fileOffset += bytesRead;
- }
-
- fclose(srcFile);
- }
-
- fclose(destFile);
- free(tempBuffer);
- printf("Done.\n");
-}
-
-int main(int argc, char *argv[]) {
- if (argc == 1) {
- printf("%s - ScummVM MADS Game script compiler v 1.0\n\n", argv[0]);
- printf("Parameters: %s src_filename.txt [dest_filename.bin] - Compiles a script text file to an output binary\t", argv[0]);
- printf("\t%s /link mads.dat filename1.bin [filename2.bin ..] - Joins one or more compiled Bin files to make\n", argv[0]);
- printf("an output suitable for running in ScummVM.\n\n");
- } else if (!strcmp(argv[1], "/link")) {
- // Link intermediate files into a final mads.dat file
- if (argc < 4)
- printf("Insufficient parameters\n");
- else
- link(argv[2], &argv[3], argc - 3);
-
- } else {
- // Compile a file
- char buffer[256];
- const char *destFilename = buffer;
- if (argc >= 3)
- destFilename = argv[2];
- else {
- // Use the source filename, but change the extension to '.bin'
- strcpy(buffer, argv[1]);
- char *p = buffer + strlen(buffer) - 1;
- while ((p >= buffer) && (*p != '.')) --p;
- if (p > buffer)
- // Change the extension
- strcpy(p, ".bin");
- }
-
- // Compile the specified source file
- bool result = Compile(argv[1], destFilename);
- return result ? 0 : 1;
- }
-
- return 0;
-}
diff --git a/devtools/create_mads/module.mk b/devtools/create_mads/module.mk
deleted file mode 100644
index 20d8deb8af..0000000000
--- a/devtools/create_mads/module.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-
-MODULE := devtools/create_mads
-
-MODULE_OBJS := \
- main.o \
- parser.o
-
-# Set the name of the executable
-TOOL_EXECUTABLE := create_mads
-
-# Include common rules
-include $(srcdir)/rules.mk
diff --git a/devtools/create_mads/parser.cpp b/devtools/create_mads/parser.cpp
deleted file mode 100644
index 5df505e0df..0000000000
--- a/devtools/create_mads/parser.cpp
+++ /dev/null
@@ -1,937 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#define MAX_SOURCE_LINE_LENGTH 256
-#define MAX_TOKEN_STRING_LENGTH MAX_SOURCE_LINE_LENGTH
-#define MAX_DIGIT_COUNT 20
-#define MAX_SYMBOLS 1024
-#define MAX_SUBROUTINES 1024
-#define MAX_SUBROUTINE_SIZE 4096
-#define MAX_SUBROUTINE_JUMPS 256
-
-#define OPSIZE8 0x40 ///< when this bit is set - the operand size is 8 bits
-#define OPSIZE16 0x80 ///< when this bit is set - the operand size is 16 bits
-#define OPSIZE32 0x00 ///< when no bits are set - the operand size is 32 bits
-
-#define VERSION 1
-
-enum CharCode {
- LETTER, DIGIT, SPECIAL, EOF_CODE, EOL_CODE
-};
-
-enum TokenCode {
- NO_TOKEN, WORD, NUMBER, IDENTIFIER, END_OF_FILE, END_OF_LINE,
- RW_DEFINE, RW_COLON, RW_SUB, RW_END, RW_OPCODE,
- ERROR
-};
-
-enum LiteralType {
- INTEGER_LIT
-};
-
-struct Literal {
- LiteralType type;
- union {
- int integer;
- } value;
-};
-
-struct SymbolEntry {
- char symbol[MAX_TOKEN_STRING_LENGTH];
- char value[MAX_TOKEN_STRING_LENGTH];
-};
-
-struct SubEntry {
- char name[MAX_TOKEN_STRING_LENGTH];
- int fileOffset;
-};
-
-struct JumpSource {
- char name[MAX_TOKEN_STRING_LENGTH];
- int line_number;
- int offset;
-};
-
-struct JumpDest {
- char name[MAX_TOKEN_STRING_LENGTH];
- int offset;
-};
-
-enum Opcodes {
- OP_HALT = 0, OP_IMM = 1, OP_ZERO = 2, OP_ONE = 3, OP_MINUSONE = 4, OP_STR = 5, OP_DLOAD = 6,
- OP_DSTORE = 7, OP_PAL = 8, OP_LOAD = 9, OP_GLOAD = 10, OP_STORE = 11, OP_GSTORE = 12,
- OP_CALL = 13, OP_LIBCALL = 14, OP_RET = 15, OP_ALLOC = 16, OP_JUMP = 17, OP_JMPFALSE = 18,
- OP_JMPTRUE = 19, OP_EQUAL = 20, OP_LESS = 21, OP_LEQUAL = 22, OP_NEQUAL = 23, OP_GEQUAL = 24,
- OP_GREAT = 25, OP_PLUS = 26, OP_MINUS = 27, OP_LOR = 28, OP_MULT = 29, OP_DIV = 30,
- OP_MOD = 31, OP_AND = 32, OP_OR = 33, OP_EOR = 34, OP_LAND = 35, OP_NOT = 36, OP_COMP = 37,
- OP_NEG = 38, OP_DUP = 39,
- TOTAL_OPCODES = 40
-};
-
-typedef unsigned char byte;
-
-const unsigned char EOF_CHAR = (unsigned char)255;
-const unsigned char EOL_CHAR = (unsigned char)254;
-
-/*----------------------------------------------------------------------*/
-/* Reserved words tables */
-/*----------------------------------------------------------------------*/
-
-enum OpcodeParamType {OP_NO_PARAM, OP_IMM_PARAM, OP_TRANSFER_PARAM};
-
-struct OpcodeEntry {
- const char *str;
- OpcodeParamType paramType;
-};
-
-OpcodeEntry OpcodeList[OP_DUP + 1] = {
- {"HALT", OP_NO_PARAM}, {"IMM", OP_IMM_PARAM}, {"ZERO", OP_NO_PARAM}, {"ONE", OP_NO_PARAM},
- {"MINUSONE", OP_NO_PARAM}, {"STR", OP_IMM_PARAM}, {"DLOAD", OP_IMM_PARAM}, {"DSTORE", OP_IMM_PARAM},
- {"PAL", OP_IMM_PARAM}, {"LOAD", OP_IMM_PARAM}, {"GLOAD", OP_IMM_PARAM}, {"STORE", OP_IMM_PARAM},
- {"GSTORE", OP_IMM_PARAM}, {"CALL", OP_IMM_PARAM}, {"LIBCALL", OP_IMM_PARAM}, {"RET", OP_NO_PARAM},
- {"ALLOC", OP_IMM_PARAM}, {"JUMP", OP_TRANSFER_PARAM}, {"JMPFALSE", OP_TRANSFER_PARAM},
- {"JMPTRUE", OP_TRANSFER_PARAM}, {"EQUAL", OP_NO_PARAM}, {"LESS", OP_NO_PARAM},
- {"LEQUAL", OP_NO_PARAM}, {"NEQUAL", OP_NO_PARAM}, {"GEQUAL", OP_NO_PARAM},
- {"GREAT", OP_NO_PARAM}, {"PLUS", OP_NO_PARAM}, {"MINUS", OP_NO_PARAM},
- {"LOR", OP_NO_PARAM}, {"MULT", OP_NO_PARAM}, {"DIV", OP_IMM_PARAM}, {"MOD", OP_NO_PARAM},
- {"AND", OP_NO_PARAM}, {"OR", OP_NO_PARAM}, {"EOR", OP_NO_PARAM}, {"LAND", OP_NO_PARAM},
- {"NOT", OP_NO_PARAM}, {"COMP", OP_NO_PARAM}, {"NEG", OP_NO_PARAM}, {"DUP", OP_NO_PARAM}
-};
-
-
-const char *symbol_strings[] = {"#DEFINE", ":", "SUB", "END"};
-
-/*----------------------------------------------------------------------*/
-/* Globals */
-/*----------------------------------------------------------------------*/
-
-unsigned char ch; // Current input character
-TokenCode token; // code of current token
-Opcodes opcode; // Current instruction opcode
-OpcodeParamType paramType; // Parameter type opcode expects
-Literal literal; // Value of literal
-int buffer_offset; // Char offset into source buffer
-int level = 0; // current nesting level
-int line_number = 0; // current line number
-
-char source_buffer[MAX_SOURCE_LINE_LENGTH]; // Source file buffer
-char token_string[MAX_TOKEN_STRING_LENGTH]; // Token string
-const char *bufferp = source_buffer; // Source buffer ptr
-char *tokenp = token_string; // Token string ptr
-
-int digit_count; // Total no. of digits in number
-bool count_error; // Too many digits in number?
-
-FILE *source_file;
-FILE *dest_file;
-CharCode char_table[256];
-
-SymbolEntry symbolTable[MAX_SYMBOLS];
-int symbolCount = 0;
-
-int game_number = 0;
-int language = 0;
-
-int indexSize = 0;
-int fileOffset = 0;
-SubEntry subroutinesTable[MAX_SUBROUTINES];
-int subroutinesCount = 0;
-
-byte subroutineData[MAX_SUBROUTINE_SIZE];
-int subroutineSize = 0;
-
-JumpSource jumpSources[MAX_SUBROUTINE_JUMPS];
-int jumpSourceCount = 0;
-JumpDest jumpDests[MAX_SUBROUTINE_JUMPS];
-int jumpDestCount = 0;
-
-#define char_code(ch) char_table[ch]
-
-void get_char();
-void get_token();
-
-/*----------------------------------------------------------------------*/
-/* Miscellaneous support functions */
-/*----------------------------------------------------------------------*/
-
-void strToUpper(char *string) {
- while (*string) {
- *string = toupper(*string);
- ++string;
- }
-}
-
-void strToLower(char *string) {
- while (*string) {
- *string = tolower(*string);
- ++string;
- }
-}
-
-int strToInt(const char *s) {
- unsigned int tmp;
-
- if (!*s)
- // No string at all
- return 0;
- else if (toupper(s[strlen(s) - 1]) == 'H')
- // Hexadecimal string with trailing 'h'
- sscanf(s, "%xh", &tmp);
- else if (*s == '$')
- // Hexadecimal string starting with '$'
- sscanf(s + 1, "%x", &tmp);
- else
- // Standard decimal string
- return atoi(s);
-
- return (int)tmp;
-}
-
-/*----------------------------------------------------------------------*/
-/* Initialisation / De-initialisation code */
-/*----------------------------------------------------------------------*/
-
-/**
- * Open the input file for parsing
- */
-void open_source_file(const char *name) {
- if ((source_file = fopen(name, "r")) == NULL) {
- printf("*** Error: Failed to open source file.\n");
- exit(0);
- }
-
- // Fetch the first character
- bufferp = "";
- get_char();
-}
-
-/**
- * Close the source file
- */
-void close_source_file() {
- fclose(source_file);
-}
-
-/**
- * Initializes the scanner
- */
-void init_scanner(const char *name) {
- // Initialize character table
- for (int i = 0; i < 256; ++i) char_table[i] = SPECIAL;
- for (int i = '0'; i <= '9'; ++i) char_table[i] = DIGIT;
- for (int i = 'A'; i <= 'Z'; ++i) char_table[i] = LETTER;
- for (int i = 'a'; i <= 'z'; ++i) char_table[i] = LETTER;
- char_table[EOF_CHAR] = EOF_CODE;
- char_table[EOL_CHAR] = EOL_CODE;
- char_table[(int)'$'] = DIGIT; // Needed for hexadecimal number handling
-
- open_source_file(name);
-}
-
-/**
- * Shuts down the scanner
- */
-void quit_scanner() {
- close_source_file();
-}
-
-/*----------------------------------------------------------------------*/
-/* Output routines */
-/*----------------------------------------------------------------------*/
-
-
-/**
- * Initializes the output
- */
-void init_output(const char *destFilename) {
- dest_file = fopen(destFilename, "wb");
- if (dest_file == NULL) {
- printf("Could not open file for writing\n");
- exit(0);
- }
-}
-
-/**
- * Closes the output file
- */
-void close_output() {
- fclose(dest_file);
-}
-
-/**
- * Writes a single byte to the output
- */
-void write_byte(byte v) {
- fwrite(&v, 1, 1, dest_file);
- ++fileOffset;
-}
-
-/**
- * Writes a word to the output
- */
-void write_word(int v) {
- write_byte(v & 0xff);
- write_byte((v >> 8) & 0xff);
-}
-
-/**
- * Writes a 32-bit value to the output
- */
-void write_long(int v) {
- write_byte(v & 0xff);
- write_byte((v >> 8) & 0xff);
- write_byte((v >> 16) & 0xff);
- write_byte((v >> 24) & 0xff);
-}
-
-/**
- * Writes a sequence of bytes to the output
- */
-void write_bytes(byte *v, int len) {
- fwrite(v, 1, len, dest_file);
- fileOffset += len;
-}
-
-/**
- * Writes a repeat sequence of a value to the output
- */
-void write_byte_seq(byte v, int len) {
- byte *tempData = (byte *)malloc(len);
- memset(tempData, v, len);
- write_bytes(tempData, len);
- free(tempData);
-}
-
-/**
- * Writes out the header and allocates space for the symbol table
- */
-void write_header() {
- // Write out three bytes - game Id, language Id, and version number
- if (game_number == 0) {
- game_number = 1;
- printf("No game specified, defaulting to Rex Nebular\n");
- }
- write_byte(game_number);
-
- if (language == 0) {
- language = 1;
- printf("No language specified, defaulting to English\n");
- }
- write_byte(language);
-
- write_byte(VERSION);
-
- // Write out space to later come back and store the list of subroutine names and offsets
- if (indexSize == 0) {
- indexSize = 4096;
- printf("No index size specified, defaulting to %d bytes\n", indexSize);
- }
- write_byte_seq(0, indexSize - 3);
-
- fileOffset = indexSize;
-}
-
-/**
- * Goes back and writes out the subroutine list
- */
-void write_index() {
- fseek(dest_file, 3, SEEK_SET);
-
- int bytesRemaining = indexSize - 3;
- for (int i = 0; i < subroutinesCount; ++i) {
- int entrySize = strlen(subroutinesTable[i].name) + 5;
-
- // Ensure there is enough remaining space
- if ((bytesRemaining - entrySize) < 0) {
- printf("Index has exceeded allowable size.\n");
- token = ERROR;
- }
-
- // Write out the name and the file offset
- write_bytes((byte *)&subroutinesTable[i].name, strlen(subroutinesTable[i].name) + 1);
- write_long(subroutinesTable[i].fileOffset);
- }
-}
-
-/*----------------------------------------------------------------------*/
-/* Processing routines */
-/*----------------------------------------------------------------------*/
-
-int symbolFind() {
- for (int i = 0; i < symbolCount; ++i) {
- if (!strcmp(symbolTable[i].symbol, token_string))
- return i;
- }
- return -1;
-}
-
-int subIndexOf() {
- for (int i = 0; i < subroutinesCount; ++i) {
- if (!strcmp(subroutinesTable[i].name, token_string))
- return i;
- }
- return -1;
-}
-
-int jumpIndexOf(const char *name) {
- for (int i = 0; i < jumpDestCount; ++i) {
- if (!strcmp(jumpDests[i].name, name))
- return i;
- }
- return -1;
-}
-
-void handle_define() {
- // Read the variable name
- get_token();
- if (token != IDENTIFIER) {
- token = ERROR;
- return;
- }
-
- // Make sure it doesn't already exist
- if (symbolFind() != -1) {
- printf("Duplicate symbol encountered.\n");
- token = ERROR;
- return;
- }
-
- // Store the new symbol name
- strcpy(symbolTable[symbolCount].symbol, token_string);
-
- // Get the value
- get_token();
- if (token == END_OF_LINE) {
- printf("Unexpected end of line.\n");
- token = ERROR;
- }
- if ((token != NUMBER) && (token != IDENTIFIER)) {
- printf("Invalid define value.\n");
- token = ERROR;
- }
- if (token == ERROR)
- return;
-
- // Handle special symbols
- if (!strcmp(symbolTable[symbolCount].symbol, "GAME_ID")) {
- // Specify game number
- if (!strcmp(token_string, "REX"))
- game_number = 1;
- else
- token = ERROR;
- } else if (!strcmp(symbolTable[symbolCount].symbol, "LANGUAGE")) {
- // Specify the language
- if (!strcmp(token_string, "ENGLISH"))
- language = 1;
- else
- token = ERROR;
- } else if (!strcmp(symbolTable[symbolCount].symbol, "INDEX_BLOCK_SIZE")) {
- // Specifying the size of the index
- indexSize = strToInt(token_string);
- } else {
- // Standard symbol - save it's value
- strcpy(symbolTable[symbolCount].value, token_string);
- ++symbolCount;
- }
-
- if (token == ERROR)
- return;
-
- // Ensure the next symbol is the end of line
- get_token();
- if (token != END_OF_LINE) {
- printf("Extraneous information on line.\n");
- token = ERROR;
- }
-}
-
-/**
- * Handles getting a parameter for an opcode
- */
-void get_parameter() {
- int nvalue;
-
- if (token == NUMBER) {
- literal.value.integer = strToInt(token_string);
- return;
- }
-
- if (token != IDENTIFIER)
- return;
-
- nvalue = symbolFind();
- if (nvalue != -1) {
- // Found symbol, so get it's numeric value and return
- token = NUMBER;
- literal.value.integer = strToInt(symbolTable[nvalue].value);
- return;
- }
-
- // Check if the parameter is the name of an already processed subroutine
- strToLower(token_string);
- nvalue = subIndexOf();
- if (nvalue == -1) {
- token = ERROR;
- return;
- }
-
- // Store the index (not the offset) of the subroutine to call
- token = NUMBER;
- literal.value.integer = nvalue;
-}
-
-#define INC_SUB_PTR if (++subroutineSize == MAX_SUBROUTINE_SIZE) { \
- printf("Maximum allowable subroutine size exceeded\n"); \
- token = ERROR; \
- return; \
- }
-
-#define WRITE_SUB_BYTE(v) subroutineData[subroutineSize] = (byte)(v)
-
-/**
- * Handles a single instruction within the sub-routine
- */
-void handle_instruction() {
- // Write out the opcode
- WRITE_SUB_BYTE(opcode);
- INC_SUB_PTR;
-
- get_token();
-
- if (OpcodeList[opcode].paramType == OP_IMM_PARAM) {
- get_parameter();
-
- if (token != NUMBER) {
- printf("Incorrect opcode parameter encountered\n");
- token = ERROR;
- return;
- }
-
- // Apply the correct opcode size to the previously stored opcode and save the byte(s)
- if (literal.value.integer <= 0xff) {
- subroutineData[subroutineSize - 1] |= OPSIZE8;
- WRITE_SUB_BYTE(literal.value.integer);
- INC_SUB_PTR;
- } else if (literal.value.integer <= 0xffff) {
- subroutineData[subroutineSize - 1] |= OPSIZE16;
- WRITE_SUB_BYTE(literal.value.integer);
- INC_SUB_PTR;
- WRITE_SUB_BYTE(literal.value.integer >> 8);
- INC_SUB_PTR;
-
- } else {
- subroutineData[subroutineSize - 1] |= OPSIZE32;
- int v = literal.value.integer;
- for (int i = 0; i < 4; ++i, v >>= 8) {
- WRITE_SUB_BYTE(v);
- INC_SUB_PTR;
- }
- }
-
- get_token();
- } else if (OpcodeList[opcode].paramType == OP_TRANSFER_PARAM) {
-
- if (token != IDENTIFIER) {
- printf("Incorrect opcode parameter encountered\n");
- token = ERROR;
- return;
- }
-
- // Check to see if it's a backward jump to an existing label
- int idx = jumpIndexOf(token_string);
- if (idx != -1) {
- // It's a backwards jump whose destination is already known
- if (jumpDests[idx].offset < 256) {
- // 8-bit destination
- subroutineData[subroutineSize - 1] |= OPSIZE8;
- subroutineData[subroutineSize] = jumpDests[idx].offset;
- INC_SUB_PTR;
- } else {
- // 16-bit destination
- subroutineData[subroutineSize - 1] |= OPSIZE16;
- INC_SUB_PTR;
- subroutineData[subroutineSize] = jumpDests[idx].offset & 0xff;
- INC_SUB_PTR;
- subroutineData[subroutineSize] = (jumpDests[idx].offset >> 8) & 0xff;
- }
- } else {
- // Unknown destination, so save it for later resolving
- strcpy(jumpSources[jumpSourceCount].name, token_string);
- jumpSources[jumpSourceCount].line_number = line_number;
- jumpSources[jumpSourceCount].offset = subroutineSize;
- if (++jumpSourceCount == MAX_SUBROUTINE_JUMPS) {
- printf("Maximum allowable jumps size exceeded\n");
- token = ERROR;
- return;
- }
-
- // Store a 16-bit placeholder
- subroutineData[subroutineSize - 1] |= OPSIZE16;
- WRITE_SUB_BYTE(0);
- INC_SUB_PTR;
- WRITE_SUB_BYTE(0);
- INC_SUB_PTR;
- }
-
- get_token();
- }
-
- if (token != END_OF_LINE)
- token = ERROR;
-}
-
-/**
- * Called at the end of the sub-routine, fixes the destination of any forward jump references
- */
-void fix_subroutine_jumps() {
- for (int i = 0; i < jumpSourceCount; ++i) {
- // Scan through the list of transfer destinations within the script
- int idx = jumpIndexOf(jumpSources[i].name);
- if (idx == -1) {
- token = ERROR;
- line_number = jumpSources[i].line_number;
- return;
- }
-
- // Replace the placeholder bytes with the new destination
- subroutineData[jumpSources[i].offset] = jumpDests[idx].offset & 0xff;
- subroutineData[jumpSources[i].offset + 1] = (jumpDests[idx].offset >> 8) & 0xff;
- }
-}
-
-/**
- * Handles parsing a sub-routine
- */
-void handle_sub() {
- // Get the subroutine name
- get_token();
- if (token != IDENTIFIER) {
- printf("Missing subroutine name.\n");
- token = ERROR;
- return;
- }
-
- strToLower(token_string);
- if (subIndexOf() != -1) {
- printf("Duplicate sub-routine encountered\n");
- token = ERROR;
- return;
- }
-
- // If this is the first subroutine, start writing out the data
- if (subroutinesCount == 0)
- write_header();
-
- // Save the sub-routine details
- strcpy(subroutinesTable[subroutinesCount].name, token_string);
- subroutinesTable[subroutinesCount].fileOffset = fileOffset;
- if (++subroutinesCount == MAX_SUBROUTINES) {
- printf("Exceeded maximum allowed subroutine count\n");
- token = ERROR;
- return;
- }
-
- // Ensure the line end
- get_token();
- if (token != END_OF_LINE) {
- token = ERROR;
- return;
- }
-
- // Initial processing arrays
- memset(subroutineData, 0, MAX_SUBROUTINE_SIZE);
- subroutineSize = 0;
- jumpSourceCount = 0;
- jumpDestCount = 0;
-
- // Loop through the lines of the sub-routine
- while (token != ERROR) {
- get_token();
-
- if (token == END_OF_LINE) continue;
- if (token == RW_OPCODE) {
- // Handle instructions
- handle_instruction();
-
- } else if (token == IDENTIFIER) {
- // Save identifier, it's hopefully a jump symbol
- strcpy(jumpDests[jumpDestCount].name, token_string);
- get_token();
- if (token != RW_COLON)
- token = ERROR;
- else {
- // Save the jump point
- jumpDests[jumpDestCount].offset = subroutineSize;
-
- if (++jumpDestCount == MAX_SUBROUTINE_JUMPS) {
- printf("Subroutine exceeded maximum allowable jump points\n");
- token = ERROR;
- return;
- }
-
- // Ensure it's the last value on the line
- get_token();
- if (token != END_OF_LINE)
- token = ERROR;
- }
- } else if (token == RW_END) {
- // End of subroutine reached
- get_token();
- if (token != ERROR)
- fix_subroutine_jumps();
- write_bytes(&subroutineData[0], subroutineSize);
- break;
-
- } else {
- token = ERROR;
- printf("Unexpected error\n");
- }
- }
-}
-
-/*----------------------------------------------------------------------*/
-/* Character routines */
-/*----------------------------------------------------------------------*/
-
-/**
- * Read the next line from the source file.
- */
-bool get_source_line() {
- if ((fgets(source_buffer, MAX_SOURCE_LINE_LENGTH, source_file)) != NULL) {
- return true;
- }
-
- return false;
-}
-
-/**
- * Set ch to the next character from the source buffer
- */
-void get_char() {
- // If at the end of current source line, read another line.
- // If at end of file, set ch to the EOF character and return
- if (*bufferp == '\0') {
- if (!get_source_line()) {
- ch = EOF_CHAR;
- return;
- }
- bufferp = source_buffer;
- buffer_offset = 0;
- ++line_number;
- ch = EOL_CHAR;
- return;
- }
-
- ch = *bufferp++; // Next character in the buffer
-
- if ((ch == '\n') || (ch == '\t')) ch = ' ';
-}
-
-/**
- * Skip past any blanks in the current location in the source buffer.
- * Set ch to the next nonblank character
- */
-void skip_blanks() {
- while (ch == ' ') get_char();
-}
-
-/*----------------------------------------------------------------------*/
-/* Token routines */
-/*----------------------------------------------------------------------*/
-
-bool is_reserved_word() {
- for (int i = 0; i < 4; ++i) {
- if (!strcmp(symbol_strings[i], token_string)) {
- token = (TokenCode)(RW_DEFINE + i);
- return true;
- }
- }
- return false;
-}
-
-bool is_opcode() {
- for (int i = 0; i < TOTAL_OPCODES; ++i) {
- if (!strcmp(OpcodeList[i].str, token_string)) {
- token = RW_OPCODE;
- opcode = (Opcodes)i;
- paramType = OpcodeList[i].paramType;
- return true;
- }
- }
- return false;
-}
-
-/**
- * Extract a word token and set token to IDENTIFIER
- */
-void get_word() {
- // Extract the word
- while ((char_code(ch) == LETTER) || (char_code(ch) == DIGIT) || (ch == '_')) {
- *tokenp++ = ch;
- get_char();
- }
-
- *tokenp = '\0';
-
- strToUpper(token_string);
- token = WORD;
- if (!is_reserved_word() && !is_opcode()) token = IDENTIFIER;
-}
-
-/**
- * Extract a number token and set literal to it's value. Set token to NUMBER
- */
-void get_number() {
- digit_count = 0; // Total no. of digits in number */
- count_error = false; // Too many digits in number?
-
- do {
- *tokenp++ = ch;
-
- if (++digit_count > MAX_DIGIT_COUNT) {
- count_error = true;
- break;
- }
-
- get_char();
- } while ((char_code(ch) == DIGIT) || (toupper(ch) == 'X') || ((toupper(ch) >= 'A') && (toupper(ch) <= 'F')));
-
- if (count_error) {
- token = ERROR;
- return;
- }
-
- literal.type = INTEGER_LIT;
- literal.value.integer = strToInt(token_string);
- *tokenp = '\0';
- token = NUMBER;
-}
-
-/**
- * Extract a special token
- */
-void get_special() {
- *tokenp++ = ch;
- if (ch == ':') {
- token = RW_COLON;
- get_char();
- return;
- } else if (ch == '/') {
- *tokenp++ = ch;
- get_char();
- if (ch == '/') {
- // Comment, so read until end of line
- while ((ch != EOL_CHAR) && (ch != EOF_CHAR))
- get_char();
- token = END_OF_LINE;
- return;
- }
- }
-
- // Extract the rest of the word
- get_char();
- while ((char_code(ch) == LETTER) || (char_code(ch) == DIGIT)) {
- *tokenp++ = ch;
- get_char();
- }
- *tokenp = '\0';
-
- strToUpper(token_string);
- if (token_string[0] == '@')
- token = IDENTIFIER;
- else if (!is_reserved_word())
- token = ERROR;
-}
-
-/**
- * Extract the next token from the source buffer
- */
-void get_token() {
- skip_blanks();
- tokenp = token_string;
-
- switch (char_code(ch)) {
- case LETTER: get_word(); break;
- case DIGIT: get_number(); break;
- case EOL_CODE: { token = END_OF_LINE; get_char(); break; }
- case EOF_CODE: token = END_OF_FILE; break;
- default: get_special(); break;
- }
-}
-
-/**
- * Handles processing a line outside of subroutines
- */
-void process_line() {
- if ((token == ERROR) || (token == END_OF_FILE)) return;
-
- switch (token) {
- case RW_DEFINE:
- handle_define();
- break;
- case RW_SUB:
- handle_sub();
- break;
- case END_OF_LINE:
- break;
- default:
- token = ERROR;
- break;
- }
-
- if (token == END_OF_LINE) {
- get_token();
- }
-}
-
-/*----------------------------------------------------------------------*/
-/* Interface methods */
-/*----------------------------------------------------------------------*/
-
-/**
- * Main compiler method
- */
-bool Compile(const char *srcFilename, const char *destFilename) {
- init_scanner(srcFilename);
- init_output(destFilename);
-
- get_token();
- while ((token != END_OF_FILE) && (token != ERROR))
- process_line();
-
- if (token != ERROR) {
- write_index();
- }
-
- quit_scanner();
-
- if (token == ERROR)
- printf("Error encountered on line %d\n", line_number);
- else
- printf("Compilation complete\n");
- return token != ERROR;
-}
diff --git a/devtools/create_mads/parser.h b/devtools/create_mads/parser.h
deleted file mode 100644
index a7141c497a..0000000000
--- a/devtools/create_mads/parser.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef CREATE_MADS_PARSER
-#define CREATE_MADS_PARSER
-
-bool Compile(const char *srcFilename, const char *destFilename);
-
-#endif
diff --git a/devtools/create_mads/scripts/rex_nebular.txt b/devtools/create_mads/scripts/rex_nebular.txt
deleted file mode 100644
index f33a574813..0000000000
--- a/devtools/create_mads/scripts/rex_nebular.txt
+++ /dev/null
@@ -1,2241 +0,0 @@
-// MADS Script Engine auto-generated script file
-
-// Special #defines
-#define INDEX_BLOCK_SIZE 8192
-#define GAME_ID REX
-#define LANGUAGE ENGLISH
-
-// List of data variables
-#define Scene_abortTimersMode2 1
-#define Scene_abortTimers 2
-#define Player_stepEnabled 3
-#define Scene_nextScene 4
-#define Scene_priorSceneId 5
-#define Player_playerPos_x 6
-#define Player_playerPos_y 7
-#define Player_direction 8
-#define Player_visible 9
-#define Scene_activeAnimation 10
-#define Animation_currentFrame 11
-
-// Library function list
-#define dialog_show 1
-#define SequenceList_remove 2
-#define start_reversible_sprite_sequence 3
-#define SequenceList_setAnimRange 4
-#define SequenceList_addSubEntry 5
-#define start_cycled_sprite_sequence 6
-#define quotes_get_pointer 7
-#define KernelMessageList_add 8
-#define SequenceList_unk3 9
-#define start_sound 10
-#define SceneLogic_formAnimName 11
-#define SpriteList_addSprites 12
-#define hotspot_activate 13
-#define DynamicHotspots_add 14
-#define SequenceList_setDepth 15
-#define quotes_load 16
-#define form_resource_name 17
-#define MadsScene_loadAnimation 18
-#define Action_isAction 19
-#define start_sprite_sequence3 20
-#define DynamicHotspots_remove 21
-#define object_is_present 22
-#define inventory_add 23
-#define dialog_picture_show 24
-#define object_is_in_inventory 25
-
-// Script functions start here
-
-sub scene101_sub1
- ONE
- DSTORE Scene_abortTimersMode2 // 2ecf2h
- ZERO
- DSTORE Player_stepEnabled // 2ecf8h
- DLOAD Scene_abortTimers // 2ecfeh
- STORE 0
- JUMP @2edc0 // 2ed01h
-@2ed04:
- DLOAD $546E // 2ed04h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- IMM 6 // 2ed10h
- DLOAD $5450 // 2ed12h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_reversible_sprite_sequence
- STORE 0 // 2ed1ah
- LOAD 0 // 2ed1fh
- DSTORE $546E
- IMM 21
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- IMM 72 // 2ed2dh
- DLOAD $546E // 2ed2fh
- STORE 0
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2ed36h
- IMM 17 // 2ed3bh
- LIBCALL start_sound
- ZERO
- ZERO
- IMM 2 // 2ed49h
- DLOAD $544A // 2ed4bh
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2ed53h
- LOAD 0 // 2ed58h
- DSTORE $5468
- RET
-@2ed5c:
- ZERO
- ZERO
- ZERO
- DLOAD $5450 // 2ed62h
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2ed6ah
- LOAD 0 // 2ed6fh
- DSTORE $546E
- IMM 17 // 2ed75h
- IMM 17
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- IMM 57
- LIBCALL quotes_get_pointer
- ZERO
- IMM 60 // 2ed90h
- ZERO
- ZERO
- IMM $1110
- IMM 61
- IMM 143
- LIBCALL KernelMessageList_add
- STORE 0 // 2ed9fh
- IMM 120
- LIBCALL SequenceList_unk3
- STORE 0 // 2edaah
- RET
-@2edb0:
- IMM $2785
- ZERO
- LIBCALL dialog_show
- MINUSONE
- DSTORE Player_stepEnabled // 2edb9h
- RET
-@2edc0:
- LOAD 0 // 2edc0h
- DUP
- STORE 4
- IMM 73
- DUP
- STORE 5
- EQUAL
- JMPTRUE @2edb0 // 2edc3h
- LOAD 4 // 2edc5h
- LOAD 5
- GREAT
- JMPTRUE @2edd2
- LOAD 0 // 2edc7h
- ZERO
- NEQUAL
- JMPTRUE @2edce // 2edc9h
- JUMP @2ed04 // 2edcbh
-@2edce:
- LOAD 0 // 2edceh
- IMM 72
- MINUS
- STORE 0
- LOAD 0 // 2edd0h
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2ed5c
-@2edd2:
- RET
-end
-
-
-sub low_rooms_entry_sound
- DLOAD $5A00 // 2b48ch
- ZERO
- NEQUAL
- JMPTRUE @2b49e // 2b491h
- IMM 2 // 2b493h
-@2b495:
- LIBCALL start_sound
- RET
-@2b49e:
- DLOAD Scene_nextScene // 2b49eh
- STORE 0
- JUMP @2b4d8 // 2b4a1h
-@2b4a4:
- IMM 11 // 2b4a4h
- JUMP @2b495 // 2b4a6h
-@2b4a8:
- IMM 12 // 2b4a8h
- JUMP @2b495 // 2b4aah
-@2b4ac:
- IMM 3 // 2b4ach
- LIBCALL start_sound
- IMM 25 // 2b4b6h
- JUMP @2b495 // 2b4b8h
-@2b4ba:
- DLOAD Scene_priorSceneId // 2b4bah
- IMM 104
- LESS
- JMPTRUE @2b4c8 // 2b4bfh
- DLOAD Scene_priorSceneId // 2b4c1h
- IMM 108
- LEQUAL
- JMPTRUE @2b500 // 2b4c6h
-@2b4c8:
- IMM 10 // 2b4c8h
- JUMP @2b495 // 2b4cah
-@2b4cc:
- IMM 13 // 2b4cch
- JUMP @2b495 // 2b4ceh
-@2b4d0:
- IMM 3 // 2b4d0h
- JUMP @2b495 // 2b4d2h
-@2b4d4:
- IMM 15 // 2b4d4h
- JUMP @2b495 // 2b4d6h
-@2b4d8:
- LOAD 0 // 2b4d8h
- IMM 101
- MINUS
- STORE 0
- LOAD 0 // 2b4dbh
- IMM 11
- GREAT
- JMPTRUE @2b500 // 2b4deh
- LOAD 0 // 2b4e0h
- IMM 2
- MULT
- LOAD 0 // 2b4e2h
- LOAD 1
- STORE 0
-//--- Begin Jump Table ---
- LOAD 1
- ZERO
- EQUAL
- JMPTRUE @2b4a4
- LOAD 1
- ONE
- EQUAL
- JMPTRUE @2b4a8
- LOAD 1
- IMM 2
- EQUAL
- JMPTRUE @2b4ac
- LOAD 1
- IMM 3
- EQUAL
- JMPTRUE @2b4ba
- LOAD 1
- IMM 4
- EQUAL
- JMPTRUE @2b4ba
- LOAD 1
- IMM 5
- EQUAL
- JMPTRUE @2b4ba
- LOAD 1
- IMM 6
- EQUAL
- JMPTRUE @2b4ba
- LOAD 1
- IMM 7
- EQUAL
- JMPTRUE @2b4ba
- LOAD 1
- IMM 8
- EQUAL
- JMPTRUE @2b4cc
- LOAD 1
- IMM 9
- EQUAL
- JMPTRUE @2b4c8
- LOAD 1
- IMM 10
- EQUAL
- JMPTRUE @2b4d0
- LOAD 1
- IMM 11
- EQUAL
- JMPTRUE @2b4d4
-//--- End Jump Table ---
-@2b500:
- RET
-end
-
-
-sub scene101_enter
- ONE
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c985h
- LOAD 0 // 2c98ah
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c98eh
- LOAD 0 // 2c993h
- DSTORE $543C
- IMM 2
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c99bh
- LOAD 0 // 2c9a0h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c9a4h
- LOAD 0 // 2c9a9h
- DSTORE $543E
- IMM 3
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c9b1h
- LOAD 0 // 2c9b6h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c9bah
- LOAD 0 // 2c9bfh
- DSTORE $5440
- IMM 4
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c9c7h
- LOAD 0 // 2c9cch
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c9d0h
- LOAD 0 // 2c9d5h
- DSTORE $5442
- IMM 5
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c9ddh
- LOAD 0 // 2c9e2h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c9e6h
- LOAD 0 // 2c9ebh
- DSTORE $5444
- IMM 6
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2c9f3h
- LOAD 0 // 2c9f8h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2c9fch
- LOAD 0 // 2ca01h
- DSTORE $5446
- IMM 7
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca09h
- LOAD 0 // 2ca0eh
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca12h
- LOAD 0 // 2ca17h
- DSTORE $5448
- MINUSONE
- IMM 109
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca1fh
- LOAD 0 // 2ca24h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca28h
- LOAD 0 // 2ca2dh
- DSTORE $544A
- ONE
- IMM 98
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca35h
- LOAD 0 // 2ca3ah
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca3eh
- LOAD 0 // 2ca43h
- DSTORE $544C
- IMM 2
- IMM 98
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca4bh
- LOAD 0 // 2ca50h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca54h
- LOAD 0 // 2ca59h
- DSTORE $544E
- ZERO
- IMM 97
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca60h
- LOAD 0 // 2ca65h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca69h
- LOAD 0 // 2ca6eh
- DSTORE $5450
- ONE
- IMM 97
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca76h
- LOAD 0 // 2ca7bh
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca7fh
- LOAD 0 // 2ca84h
- DSTORE $5452
- IMM 8
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2ca8ch
- LOAD 0 // 2ca91h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2ca95h
- LOAD 0 // 2ca9ah
- DSTORE $5454
- ZERO
- IMM 120
- LIBCALL SceneLogic_formAnimName
- STORE 0 // 2caa1h
- LOAD 0 // 2caa6h
- STORE 1
- ZERO
- LOAD 1
- LIBCALL SpriteList_addSprites
- STORE 0 // 2caaah
- LOAD 0 // 2caafh
- DSTORE $5456
- IMM 25 // 2cab2h
- ZERO
- ZERO
- DLOAD $543C // 2cab8h
- STORE 0
- IMM 5
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cac0h
- LOAD 0 // 2cac5h
- DSTORE $545A
- ZERO
- ONE
- ZERO
- DLOAD $543E // 2caceh
- STORE 0
- IMM 4
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cad6h
- LOAD 0 // 2cadbh
- DSTORE $545C
- ZERO
- IMM 2 // 2cae0h
- ZERO
- DLOAD $5440 // 2cae4h
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2caech
- LOAD 0 // 2caf1h
- DSTORE $545E
- IMM 70 // 2caf4h
- IMM 7
- IMM 2
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2cafch
- IMM 60 // 2cb01h
- ZERO
- ZERO
- DLOAD $5442 // 2cb07h
- STORE 0
- IMM 10
- ZERO
- LOAD 0
- LIBCALL start_reversible_sprite_sequence
- STORE 0 // 2cb0fh
- LOAD 0 // 2cb14h
- DSTORE $5460
- ZERO
- ONE
- ZERO
- DLOAD $5444 // 2cb1dh
- STORE 0
- IMM 5
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cb25h
- LOAD 0 // 2cb2ah
- DSTORE $5462
- ZERO
- IMM 2 // 2cb2fh
- ZERO
- DLOAD $5446 // 2cb33h
- STORE 0
- IMM 10
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cb3bh
- LOAD 0 // 2cb40h
- DSTORE $5464
- ZERO
- ZERO
- ZERO
- DLOAD $5448 // 2cb49h
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cb51h
- LOAD 0 // 2cb56h
- DSTORE $5466
- IMM 4 // 2cb59h
- IMM 10 // 2cb5bh
- ZERO
- DLOAD $544C // 2cb5fh
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cb67h
- LOAD 0 // 2cb6ch
- DSTORE $546A
- IMM 47 // 2cb6fh
- IMM 32 // 2cb71h
- ZERO
- DLOAD $544E // 2cb75h
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cb7dh
- LOAD 0 // 2cb82h
- DSTORE $546C
- ZERO
- IMM 311
- LIBCALL hotspot_activate
- ZERO
- DSTORE $547E // 2cb8eh
- DLOAD Scene_priorSceneId // 2cb94h
- MINUSONE
- EQUAL
- JMPTRUE @2cba1 // 2cb99h
- ZERO
- GSTORE 10 // 2cb9bh
-@2cba1:
- DLOAD Scene_priorSceneId // 2cba1h
- IMM $FFFE
- EQUAL
- JMPTRUE @2cbb4 // 2cba6h
- IMM 100 // 2cba8h
- DSTORE Player_playerPos_x
- IMM 152 // 2cbaeh
- DSTORE Player_playerPos_y
-@2cbb4:
- DLOAD Scene_priorSceneId // 2cbb4h
- IMM 112
- EQUAL
- JMPTRUE @2cbc9 // 2cbb9h
- DLOAD Scene_priorSceneId // 2cbbbh
- IMM $FFFE
- NEQUAL
- JMPTRUE @2cc36 // 2cbc0h
- DLOAD $5476 // 2cbc2h
- ZERO
- EQUAL
- JMPTRUE @2cc36 // 2cbc7h
-@2cbc9:
- IMM 161 // 2cbcfh
- DSTORE Player_playerPos_x
- IMM 123 // 2cbd5h
- DSTORE Player_playerPos_y
- IMM 9 // 2cbdbh
- DSTORE Player_direction
- ZERO
- ZERO
- ZERO
- DLOAD $5450 // 2cbe7h
- STORE 0
- ZERO
- DSTORE Player_visible // 2cbech
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cbf3h
- LOAD 0 // 2cbf8h
- DSTORE $546E
- IMM 17 // 2cbfeh
- IMM 17
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- ZERO
- IMM 71
- LIBCALL hotspot_activate
- IMM 159 // 2cc0eh
- IMM 84 // 2cc11h
- IMM 33 // 2cc13h
- IMM 36 // 2cc15h
- MINUSONE
- IMM 319
- IMM 71
- LIBCALL DynamicHotspots_add
- STORE 0 // 2cc20h
- LOAD 0 // 2cc25h
- DSTORE $5478
- DLOAD Scene_priorSceneId // 2cc28h
- IMM 112
- NEQUAL
- JMPTRUE @2cc54 // 2cc2dh
- CALL scene101_sub1
- JUMP @2cc54 // 2cc34h
-@2cc36:
- ZERO
- ZERO
- ZERO
- DLOAD $5452 // 2cc3ch
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2cc44h
- LOAD 0 // 2cc49h
- DSTORE $5470
- IMM 4
- LOAD 0
- LIBCALL SequenceList_setDepth
-@2cc54:
- ZERO
- IMM 56 // 2cc56h
- IMM 55 // 2cc58h
- IMM 54 // 2cc5ah
- IMM 57 // 2cc5ch
- IMM 50 // 2cc5eh
- IMM 49 // 2cc60h
- LIBCALL quotes_load
- STORE 0 // 2cc62h
- LOAD 0 // 2cc6ah
- DSTORE $5674
- GLOAD 10 // 2cc71h
- ZERO
- EQUAL
- JMPTRUE @2ccb8 // 2cc76h
- ZERO
- ZERO
- IMM 2 // 2cc7ch
- MINUSONE
- IMM 83
- IMM 101
- LIBCALL form_resource_name
- STORE 0 // 2cc86h
- LOAD 0 // 2cc8bh
- STORE 1
- LOAD 1
- IMM 71
- LIBCALL MadsScene_loadAnimation
- IMM 68 // 2cc95h
- DSTORE Player_playerPos_x
- IMM 140 // 2cc9bh
- DSTORE Player_playerPos_y
- IMM 4 // 2cca1h
- DSTORE Player_direction
- ZERO
- DSTORE Player_visible // 2cca9h
- ZERO
- DSTORE Player_stepEnabled // 2ccach
- ZERO
- DSTORE $5482 // 2ccafh
- IMM 30 // 2ccb2h
- DSTORE $5484
-@2ccb8:
- ZERO
- DSTORE $5486 // 2ccb8h
- CALL low_rooms_entry_sound
- RET
-end
-
-
-sub scene101_step
- DLOAD $56E4 // 2eb30h
- STORE 0
- DLOAD $5486 // 2eb33h
- LOAD 0
- EQUAL
- JMPTRUE @2eb4e // 2eb37h
- LOAD 0 // 2eb39h
- DSTORE $5486
- LOAD 0 // 2eb3ch
- ZERO
- EQUAL
- JMPTRUE @2eb44 // 2eb3eh
- IMM 39 // 2eb40h
- JUMP @2eb46 // 2eb42h
-@2eb44:
- IMM 11 // 2eb44h
-@2eb46:
- LIBCALL start_sound
-@2eb4e:
- DLOAD Scene_abortTimers // 2eb4eh
- STORE 0
- JUMP @2eb92 // 2eb51h
-@2eb54:
- IMM 9 // 2eb54h
- LIBCALL start_sound
- JUMP @2eba0 // 2eb5eh
-@2eb60:
- ZERO
- GSTORE 10 // 2eb60h
- MINUSONE
- DSTORE Player_visible // 2eb69h
- MINUSONE
- DSTORE Player_stepEnabled // 2eb6ch
- DLOAD $56E8 // 2eb6fh
- STORE 0
- DLOAD $542A // 2eb73h
- STORE 2
- ZERO
- STORE 1 // 2eb77h
- LOAD 2 // 2eb7bh
- LOAD 0
- MINUS
- STORE 2
- LOAD 2 // 2eb7fh
- DSTORE $57D0
- JUMP @2eba0 // 2eb87h
-@2eb8a:
- CALL scene101_sub1
- JUMP @2eba0 // 2eb8fh
-@2eb92:
- LOAD 0 // 2eb92h
- IMM 70
- MINUS
- STORE 0
- LOAD 0 // 2eb95h
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2eb54
- LOAD 0 // 2eb97h
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2eb98h
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2eb60
- LOAD 0 // 2eb9ah
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2eb9bh
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2eb8a
- LOAD 0 // 2eb9dh
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2eb9eh
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2eb8a
-@2eba0:
- ZERO
- STORE 0 // 2eba0h
- LOAD 0 // 2eba3h
- DLOAD Scene_activeAnimation
- OR
- ZERO
- NEQUAL
- JMPTRUE @2ebac // 2eba7h
- JUMP @2ecf1 // 2eba9h
-@2ebac:
- DLOAD Animation_currentFrame // 2ebach
- IMM 6
- LESS
- JMPTRUE @2ebed // 2ebb1h
- DLOAD $5482 // 2ebb3h
- ZERO
- NEQUAL
- JMPTRUE @2ebed // 2ebb8h
- DLOAD $5482 // 2ebbah
- ONE
- PLUS
- DSTORE $5482
- IMM 49
- LIBCALL quotes_get_pointer
- ZERO
- IMM 240 // 2ebd2h
- ZERO
- ZERO
- DLOAD $5484 // 2ebd9h
- STORE 3
- IMM $1110
- LOAD 3
- IMM 63
- LIBCALL KernelMessageList_add
- STORE 0 // 2ebe3h
- DLOAD $5484 // 2ebe8h
- IMM 14
- PLUS
- DSTORE $5484
-@2ebed:
- DLOAD Animation_currentFrame // 2ebedh
- IMM 7
- LESS
- JMPTRUE @2ec2e // 2ebf2h
- DLOAD $5482 // 2ebf4h
- ONE
- NEQUAL
- JMPTRUE @2ec2e // 2ebf9h
- DLOAD $5482 // 2ebfbh
- ONE
- PLUS
- DSTORE $5482
- IMM 54
- LIBCALL quotes_get_pointer
- ZERO
- IMM 240 // 2ec13h
- ZERO
- ZERO
- DLOAD $5484 // 2ec1ah
- STORE 3
- IMM $1110
- LOAD 3
- IMM 63
- LIBCALL KernelMessageList_add
- STORE 0 // 2ec24h
- DLOAD $5484 // 2ec29h
- IMM 14
- PLUS
- DSTORE $5484
-@2ec2e:
- DLOAD Animation_currentFrame // 2ec2eh
- IMM 10
- LESS
- JMPTRUE @2ec6f // 2ec33h
- DLOAD $5482 // 2ec35h
- IMM 2
- NEQUAL
- JMPTRUE @2ec6f // 2ec3ah
- DLOAD $5482 // 2ec3ch
- ONE
- PLUS
- DSTORE $5482
- IMM 55
- LIBCALL quotes_get_pointer
- ZERO
- IMM 240 // 2ec54h
- ZERO
- ZERO
- DLOAD $5484 // 2ec5bh
- STORE 3
- IMM $1110
- LOAD 3
- IMM 63
- LIBCALL KernelMessageList_add
- STORE 0 // 2ec65h
- DLOAD $5484 // 2ec6ah
- IMM 14
- PLUS
- DSTORE $5484
-@2ec6f:
- DLOAD Animation_currentFrame // 2ec6fh
- IMM 17
- LESS
- JMPTRUE @2ecb0 // 2ec74h
- DLOAD $5482 // 2ec76h
- IMM 3
- NEQUAL
- JMPTRUE @2ecb0 // 2ec7bh
- DLOAD $5482 // 2ec7dh
- ONE
- PLUS
- DSTORE $5482
- IMM 56
- LIBCALL quotes_get_pointer
- ZERO
- IMM 240 // 2ec95h
- ZERO
- ZERO
- DLOAD $5484 // 2ec9ch
- STORE 3
- IMM $1110
- LOAD 3
- IMM 63
- LIBCALL KernelMessageList_add
- STORE 0 // 2eca6h
- DLOAD $5484 // 2ecabh
- IMM 14
- PLUS
- DSTORE $5484
-@2ecb0:
- DLOAD Animation_currentFrame // 2ecb0h
- IMM 20
- LESS
- JMPTRUE @2ecf1 // 2ecb5h
- DLOAD $5482 // 2ecb7h
- IMM 4
- NEQUAL
- JMPTRUE @2ecf1 // 2ecbch
- DLOAD $5482 // 2ecbeh
- ONE
- PLUS
- DSTORE $5482
- IMM 50
- LIBCALL quotes_get_pointer
- ZERO
- IMM 240 // 2ecd6h
- ZERO
- ZERO
- DLOAD $5484 // 2ecddh
- STORE 3
- IMM $1110
- LOAD 3
- IMM 63
- LIBCALL KernelMessageList_add
- STORE 0 // 2ece7h
- DLOAD $5484 // 2ecech
- IMM 14
- PLUS
- DSTORE $5484
-@2ecf1:
- RET
-end
-
-
-sub scene101_preaction
- ZERO
- IMM 384 // 2edd6h
- IMM 3 // 2edd9h
- LIBCALL Action_isAction
- STORE 0 // 2eddbh
- LOAD 0 // 2ede3h
- ZERO
- EQUAL
- JMPTRUE @2eded // 2ede5h
- MINUSONE
- DSTORE $56F2 // 2ede7h
-@2eded:
- DLOAD $5476 // 2ededh
- ZERO
- NEQUAL
- JMPTRUE @2edf7 // 2edf2h
- JUMP @2eea9 // 2edf4h
-@2edf7:
- ZERO
- IMM 3 // 2edf9h
- LIBCALL Action_isAction
- STORE 0 // 2edfbh
- LOAD 0 // 2ee03h
- ZERO
- NEQUAL
- JMPTRUE @2ee44 // 2ee05h
- LOAD 0 // 2ee07h
- IMM 71 // 2ee08h
- LIBCALL Action_isAction
- STORE 0 // 2ee0ah
- LOAD 0 // 2ee12h
- ZERO
- NEQUAL
- JMPTRUE @2ee44 // 2ee14h
- LOAD 0 // 2ee16h
- IMM 8 // 2ee17h
- LIBCALL Action_isAction
- STORE 0 // 2ee19h
- LOAD 0 // 2ee21h
- ZERO
- NEQUAL
- JMPTRUE @2ee44 // 2ee23h
- LOAD 0 // 2ee25h
- IMM 259 // 2ee26h
- LIBCALL Action_isAction
- STORE 0 // 2ee29h
- LOAD 0 // 2ee31h
- ZERO
- NEQUAL
- JMPTRUE @2ee44 // 2ee33h
- LOAD 0 // 2ee35h
- IMM 125 // 2ee36h
- LIBCALL Action_isAction
- STORE 0 // 2ee38h
- LOAD 0 // 2ee40h
- ZERO
- EQUAL
- JMPTRUE @2ee4a // 2ee42h
-@2ee44:
- ZERO
- DSTORE $56F2 // 2ee44h
-@2ee4a:
- DLOAD $56F2 // 2ee4ah
- ZERO
- EQUAL
- JMPTRUE @2eea9 // 2ee4fh
- DLOAD Scene_abortTimers // 2ee51h
- STORE 0
- LOAD 0 // 2ee54h
- ZERO
- EQUAL
- JMPTRUE @2ee60 // 2ee56h
- LOAD 0 // 2ee58h
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2ee59h
- STORE 4
- LOAD 4
- ZERO
- NEQUAL
- JMPTRUE @2ee5e
- JUMP @2eee0 // 2ee5bh
-@2ee5e:
- JUMP @2eea9 // 2ee5eh
-@2ee60:
- ZERO
- DSTORE $56F4 // 2ee62h
- ZERO
- DSTORE Player_stepEnabled // 2ee65h
- DLOAD $546E // 2ee68h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- ONE
- DLOAD $5450 // 2ee76h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_sprite_sequence3
- STORE 0 // 2ee7eh
- LOAD 0 // 2ee83h
- DSTORE $546E
- ONE
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2ee8ch
- DLOAD $546E // 2ee91h
- STORE 0
- IMM 17
- ONE
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- IMM 16 // 2ee9fh
- LIBCALL start_sound
-@2eea9:
- DLOAD $547E // 2eea9h
- ZERO
- NEQUAL
- JMPTRUE @2eeb3 // 2eeaeh
- JUMP @2ef9f // 2eeb0h
-@2eeb3:
- ZERO
- IMM 309 // 2eeb5h
- LIBCALL Action_isAction
- STORE 0 // 2eeb8h
- LOAD 0 // 2eec0h
- ZERO
- EQUAL
- JMPTRUE @2eec7 // 2eec2h
- JUMP @2ef9f // 2eec4h
-@2eec7:
- LOAD 0 // 2eec7h
- IMM 311 // 2eec8h
- LIBCALL Action_isAction
- STORE 0 // 2eecbh
- LOAD 0 // 2eed3h
- ZERO
- EQUAL
- JMPTRUE @2eeda // 2eed5h
- JUMP @2ef9f // 2eed7h
-@2eeda:
- DLOAD Scene_abortTimers // 2eedah
- STORE 0
- JUMP @2ef98 // 2eeddh
-@2eee0:
- MINUSONE
- DSTORE Player_visible // 2eee9h
- MINUSONE
- DSTORE Player_stepEnabled // 2eeedh
- MINUSONE
- DSTORE $56F4 // 2eef1h
- MINUSONE
- IMM 71
- LIBCALL hotspot_activate
- DLOAD $5478 // 2eefdh
- STORE 0
- LOAD 0
- LIBCALL DynamicHotspots_remove
- ZERO
- ZERO
- ZERO
- DLOAD $5452 // 2ef0bh
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2ef13h
- LOAD 0 // 2ef18h
- DSTORE $5470
- IMM 4
- LOAD 0
- LIBCALL SequenceList_setDepth
- JUMP @2eea9 // 2ef23h
-@2ef26:
- DLOAD $56F2 // 2ef26h
- ZERO
- EQUAL
- JMPTRUE @2ef9f // 2ef2bh
- DLOAD $5472 // 2ef2dh
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- IMM 24
- LIBCALL object_is_present
- STORE 0 // 2ef38h
- ONE
- STORE 4 // 2ef3dh
- LOAD 0
- ONE
- EQUAL
- JMPFALSE @2ef42
- ZERO
- STORE 4
-@2ef42:
- LOAD 4
- STORE 0
- LOAD 0 // 2ef45h
- IMM 13
- PLUS
- STORE 0
- LOAD 0 // 2ef48h
- DSTORE $5480
- ZERO
- ZERO
- ONE
- LOAD 0 // 2ef51h
- STORE 1
- LOAD 1 // 2ef53h
- IMM 2
- MULT
- IMM 6
- ZERO
- ONE
- LIBCALL start_sprite_sequence3
- STORE 0 // 2ef5eh
- LOAD 0 // 2ef63h
- DSTORE $5472
- ONE
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2ef6ch
- ZERO
- DSTORE Player_stepEnabled // 2ef71h
- IMM 20 // 2ef77h
- LIBCALL start_sound
- RET
-@2ef82:
- MINUSONE
- DSTORE Player_stepEnabled // 2ef82h
- ZERO
- DSTORE $547E // 2ef8ah
- ZERO
- IMM 311
- LIBCALL hotspot_activate
- RET
-@2ef98:
- LOAD 0 // 2ef98h
- ZERO
- EQUAL
- JMPTRUE @2ef26 // 2ef9ah
- LOAD 0 // 2ef9ch
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2ef9dh
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2ef82
-@2ef9f:
- RET
-end
-
-
-sub scene101_actions
- DLOAD $577A // 2efa0h
- ZERO
- EQUAL
- JMPTRUE @2efae // 2efa5h
- DLOAD 0 // 2efaah
- STORE 0
- JUMP @2f28f
-@2efae:
- ZERO
- IMM 204 // 2efb0h
- IMM 13 // 2efb3h
- LIBCALL Action_isAction
- STORE 0 // 2efb5h
- LOAD 0 // 2efbdh
- ZERO
- EQUAL
- JMPTRUE @2efca // 2efbfh
- IMM 102 // 2efc1h
- DSTORE Scene_nextScene
- JUMP @2f6b4 // 2efc7h
-@2efca:
- ZERO
- IMM 71 // 2efcch
- IMM 319 // 2efceh
- LIBCALL Action_isAction
- STORE 0 // 2efd1h
- LOAD 0 // 2efd9h
- ZERO
- NEQUAL
- JMPTRUE @2eff9 // 2efdbh
- LOAD 0 // 2efddh
- IMM 384 // 2efdeh
- IMM 3 // 2efe1h
- LIBCALL Action_isAction
- STORE 0 // 2efe3h
- LOAD 0 // 2efebh
- ZERO
- NEQUAL
- JMPTRUE @2eff2 // 2efedh
- JUMP @2f072 // 2efefh
-@2eff2:
- DLOAD $5476 // 2eff2h
- ZERO
- NEQUAL
- JMPTRUE @2f072 // 2eff7h
-@2eff9:
- DLOAD $5476 // 2eff9h
- ZERO
- EQUAL
- JMPTRUE @2f003 // 2effeh
- JUMP @2f120 // 2f000h
-@2f003:
- DLOAD Scene_abortTimers // 2f003h
- STORE 0
- LOAD 0 // 2f006h
- ZERO
- EQUAL
- JMPTRUE @2f016 // 2f008h
- LOAD 0 // 2f00ah
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f00bh
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2f068
- LOAD 0 // 2f00dh
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f00eh
- STORE 4
- LOAD 4
- ZERO
- NEQUAL
- JMPTRUE @2f013
- JUMP @2f0b4 // 2f010h
-@2f013:
- JUMP @2f072 // 2f013h
-@2f016:
- DLOAD $5470 // 2f016h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- ONE
- DLOAD $5450 // 2f024h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f02ch
- LOAD 0 // 2f031h
- DSTORE $546E
- IMM 17
- ONE
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- ONE
- DLOAD $546E // 2f041h
- STORE 0
- IMM 10
- IMM 2
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f04ah
- IMM 2 // 2f04fh
- DLOAD $546E // 2f051h
- STORE 0
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f058h
- ZERO
- DSTORE Player_stepEnabled // 2f05fh
- ZERO
- DSTORE Player_visible // 2f062h
- DLOAD 0 // 2f065h
- STORE 0
- JUMP @2f6b4
-@2f068:
- IMM 16 // 2f068h
- LIBCALL start_sound
-@2f072:
- ZERO
- IMM 309 // 2f074h
- IMM 13 // 2f077h
- LIBCALL Action_isAction
- STORE 0 // 2f079h
- LOAD 0 // 2f081h
- ZERO
- NEQUAL
- JMPTRUE @2f09a // 2f083h
- LOAD 0 // 2f085h
- IMM 309 // 2f086h
- IMM 6 // 2f089h
- LIBCALL Action_isAction
- STORE 0 // 2f08bh
- LOAD 0 // 2f093h
- ZERO
- NEQUAL
- JMPTRUE @2f09a // 2f095h
- JUMP @2f1cc // 2f097h
-@2f09a:
- DLOAD $547E // 2f09ah
- ZERO
- EQUAL
- JMPTRUE @2f0a4 // 2f09fh
- JUMP @2f1cc // 2f0a1h
-@2f0a4:
- DLOAD Scene_abortTimers // 2f0a4h
- STORE 0
- LOAD 0 // 2f0a7h
- ZERO
- EQUAL
- JMPTRUE @2f126 // 2f0a9h
- LOAD 0 // 2f0abh
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f0ach
- STORE 4
- LOAD 4
- ZERO
- NEQUAL
- JMPTRUE @2f0b1
- JUMP @2f176 // 2f0aeh
-@2f0b1:
- JUMP @2f6b4 // 2f0b1h
-@2f0b4:
- ZERO
- ZERO
- ZERO
- DLOAD $5450 // 2f0bah
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f0c2h
- LOAD 0 // 2f0c7h
- DSTORE $546E
- IMM 17 // 2f0cdh
- IMM 17
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- MINUSONE
- DSTORE Player_stepEnabled // 2f0d7h
- ZERO
- IMM 71
- LIBCALL hotspot_activate
- IMM 159 // 2f0e6h
- IMM 84 // 2f0e9h
- IMM 33 // 2f0ebh
- IMM 36 // 2f0edh
- MINUSONE
- IMM 319
- IMM 71
- LIBCALL DynamicHotspots_add
- STORE 0 // 2f0f8h
- LOAD 0 // 2f0fdh
- DSTORE $5478
- ZERO
- IMM 384 // 2f102h
- IMM 3 // 2f105h
- LIBCALL Action_isAction
- STORE 0 // 2f107h
- LOAD 0 // 2f10fh
- ZERO
- NEQUAL
- JMPTRUE @2f116 // 2f111h
- JUMP @2f6b4 // 2f113h
-@2f116:
- ZERO
- DSTORE Scene_abortTimers // 2f116h
- JUMP @2f072 // 2f11ch
-@2f120:
- DLOAD 0 // 2f123h
- STORE 0
- JUMP @2f28f
-@2f126:
- IMM 24
- LIBCALL object_is_present
- STORE 0 // 2f129h
- ONE
- STORE 4 // 2f12eh
- LOAD 0
- ONE
- EQUAL
- JMPFALSE @2f133
- ZERO
- STORE 4
-@2f133:
- LOAD 4
- STORE 0
- LOAD 0 // 2f136h
- IMM 13
- PLUS
- STORE 0
- LOAD 0 // 2f139h
- DSTORE $5480
- ZERO
- ZERO
- ONE
- LOAD 0 // 2f142h
- STORE 1
- LOAD 1 // 2f144h
- IMM 2
- MULT
- IMM 6
- ZERO
- ONE
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f14fh
- LOAD 0 // 2f154h
- DSTORE $5472
- ONE
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f15dh
- ZERO
- DSTORE Player_stepEnabled // 2f162h
- IMM 20 // 2f168h
-@2f16a:
- LIBCALL start_sound
- JUMP @2f6b4 // 2f172h
-@2f176:
- DLOAD $5472 // 2f176h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- ZERO
- DLOAD $5480 // 2f184h
- STORE 1
- LOAD 1 // 2f188h
- IMM 2
- MULT
- IMM 6
- ZERO
- ONE
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f193h
- LOAD 0 // 2f198h
- DSTORE $5472
- IMM $FFFE // 2f19eh
- IMM $FFFE
- IMM $FFFE
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- MINUSONE
- DSTORE Player_stepEnabled // 2f1a8h
- MINUSONE
- DSTORE $547E // 2f1abh
- IMM 24
- LIBCALL object_is_present
- STORE 0 // 2f1b1h
- LOAD 0 // 2f1b6h
- ZERO
- NEQUAL
- JMPTRUE @2f1bd // 2f1b8h
- JUMP @2f6b4 // 2f1bah
-@2f1bd:
- MINUSONE
- IMM 311
- LIBCALL hotspot_activate
- JUMP @2f6b4 // 2f1c8h
-@2f1cc:
- ZERO
- IMM 311 // 2f1ceh
- IMM 4 // 2f1d1h
- LIBCALL Action_isAction
- STORE 0 // 2f1d3h
- LOAD 0 // 2f1dbh
- ZERO
- NEQUAL
- JMPTRUE @2f1f1 // 2f1ddh
- LOAD 0 // 2f1dfh
- IMM 311 // 2f1e0h
- IMM 10 // 2f1e3h
- LIBCALL Action_isAction
- STORE 0 // 2f1e5h
- LOAD 0 // 2f1edh
- ZERO
- EQUAL
- JMPTRUE @2f248 // 2f1efh
-@2f1f1:
- IMM 24
- LIBCALL object_is_present
- STORE 0 // 2f1f4h
- LOAD 0 // 2f1f9h
- ZERO
- EQUAL
- JMPTRUE @2f248 // 2f1fbh
- IMM 24
- LIBCALL inventory_add
- DLOAD $5472 // 2f205h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- ZERO
- DLOAD $5456 // 2f213h
- STORE 0
- IMM 6
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f21bh
- LOAD 0 // 2f220h
- DSTORE $5472
- IMM $FFFE // 2f226h
- IMM $FFFE
- IMM $FFFE
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- ZERO
- IMM 311
- LIBCALL hotspot_activate
- ZERO
- IMM $2788 // 2f238h
- LIBCALL dialog_picture_show
- IMM 22 // 2f243h
- JUMP @2f16a // 2f245h
-@2f248:
- ZERO
- IMM 309 // 2f24ah
- IMM 3 // 2f24dh
- LIBCALL Action_isAction
- STORE 0 // 2f24fh
- LOAD 0 // 2f257h
- ZERO
- NEQUAL
- JMPTRUE @2f279 // 2f259h
- LOAD 0 // 2f25bh
- IMM 311 // 2f25ch
- IMM 3 // 2f25fh
- LIBCALL Action_isAction
- STORE 0 // 2f261h
- LOAD 0 // 2f269h
- ZERO
- EQUAL
- JMPTRUE @2f2a6 // 2f26bh
- LIBCALL object_is_in_inventory
- STORE 0 // 2f270h
- LOAD 0 // 2f275h
- ZERO
- NEQUAL
- JMPTRUE @2f2a6 // 2f277h
-@2f279:
- DLOAD $547E // 2f279h
- ZERO
- EQUAL
- JMPTRUE @2f2a0 // 2f27eh
- IMM 24
- LIBCALL object_is_present
- STORE 0 // 2f283h
- LOAD 0 // 2f288h
- ZERO
- EQUAL
- JMPTRUE @2f29a // 2f28ah
-@2f28f:
-@2f291:
- IMM $2790
- ZERO
- LIBCALL dialog_show
- JUMP @2f6b4 // 2f296h
-@2f29a:
-@2f29d:
- DLOAD 0 // 2f29eh
- STORE 0
- JUMP @2f291
-@2f2a0:
- DLOAD 0 // 2f2a3h
- STORE 0
- JUMP @2f29d
-@2f2a6:
- ZERO
- IMM 309 // 2f2a8h
- IMM 6 // 2f2abh
- LIBCALL Action_isAction
- STORE 0 // 2f2adh
- LOAD 0 // 2f2b5h
- ZERO
- EQUAL
- JMPTRUE @2f2c6 // 2f2b7h
- DLOAD $547E // 2f2b9h
- ZERO
- EQUAL
- JMPTRUE @2f2c6 // 2f2beh
- DLOAD 0 // 2f2c3h
- STORE 0
- JUMP @2f28f
-@2f2c6:
- ZERO
- IMM 384 // 2f2c8h
- IMM 3 // 2f2cbh
- LIBCALL Action_isAction
- STORE 0 // 2f2cdh
- LOAD 0 // 2f2d5h
- ZERO
- NEQUAL
- JMPTRUE @2f2dc // 2f2d7h
- JUMP @2f3d8 // 2f2d9h
-@2f2dc:
- DLOAD $5476 // 2f2dch
- ZERO
- NEQUAL
- JMPTRUE @2f2e6 // 2f2e1h
- JUMP @2f3d8 // 2f2e3h
-@2f2e6:
- GLOAD 14 // 2f2e6h
- ZERO
- EQUAL
- JMPTRUE @2f2f4 // 2f2ebh
- CALL scene101_sub1
- JUMP @2f6b4 // 2f2f1h
-@2f2f4:
- DLOAD Scene_abortTimers // 2f2f4h
- STORE 0
- LOAD 0 // 2f2f7h
- ZERO
- EQUAL
- JMPTRUE @2f30a // 2f2f9h
- LOAD 0 // 2f2fbh
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f2fch
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2f34c
- LOAD 0 // 2f2feh
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f2ffh
- STORE 4
- LOAD 4
- ZERO
- EQUAL
- JMPTRUE @2f37e
- LOAD 0 // 2f301h
- ONE
- MINUS
- STORE 0
- LOAD 0 // 2f302h
- STORE 4
- LOAD 4
- ZERO
- NEQUAL
- JMPTRUE @2f307
- JUMP @2f3c2 // 2f304h
-@2f307:
- JUMP @2f6b4 // 2f307h
-@2f30a:
- ZERO
- DSTORE Player_stepEnabled // 2f30ah
- DLOAD $546E // 2f310h
- STORE 0
- LOAD 0
- LIBCALL SequenceList_remove
- ZERO
- ZERO
- ONE
- DLOAD $5450 // 2f31eh
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f326h
- LOAD 0 // 2f32bh
- DSTORE $546E
- IMM 21
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- ONE
- DLOAD $546E // 2f33bh
- STORE 0
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f342h
- IMM 17 // 2f347h
- JUMP @2f16a // 2f349h
-@2f34c:
- ZERO
- ZERO
- ONE
- DLOAD $5450 // 2f352h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_sprite_sequence3
- STORE 0 // 2f35ah
- LOAD 0 // 2f35fh
- DSTORE $546E
- IMM 2 // 2f362h
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f368h
- DLOAD $546E // 2f36dh
- STORE 0
- IMM 21
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- JUMP @2f6b4 // 2f37bh
-@2f37e:
- ZERO
- ZERO
- ZERO
- DLOAD $5450 // 2f384h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f38ch
- LOAD 0 // 2f391h
- DSTORE $546E
- IMM 17 // 2f397h
- IMM 17
- IMM 17
- LOAD 0
- LIBCALL SequenceList_setAnimRange
- ZERO
- ZERO
- ONE
- DLOAD $544A // 2f3a4h
- STORE 0
- IMM 3
- ZERO
- LOAD 0
- LIBCALL start_cycled_sprite_sequence
- STORE 0 // 2f3ach
- LOAD 0 // 2f3b1h
- DSTORE $5468
- IMM 3 // 2f3b4h
- ZERO
- ZERO
- LOAD 0
- LIBCALL SequenceList_addSubEntry
- STORE 0 // 2f3bah
- JUMP @2f6b4 // 2f3bfh
-@2f3c2:
- MINUSONE
- DSTORE Player_stepEnabled // 2f3c5h
- MINUSONE
- GSTORE 14 // 2f3c8h
- IMM 112 // 2f3ceh
- DSTORE Scene_nextScene
- DLOAD 0 // 2f3d4h
- STORE 0
- JUMP @2f6b4
-@2f3d8:
- ZERO
- IMM 71 // 2f3dah
- IMM 3 // 2f3dch
- LIBCALL Action_isAction
- STORE 0 // 2f3deh
- LOAD 0 // 2f3e6h
- ZERO
- EQUAL
- JMPTRUE @2f3f0 // 2f3e8h
- DLOAD 0 // 2f3edh
- STORE 0
- JUMP @2f28f
-@2f3f0:
- ZERO
- IMM 3 // 2f3f2h
- LIBCALL Action_isAction
- STORE 0 // 2f3f4h
- LOAD 0 // 2f3fch
- ZERO
- NEQUAL
- JMPTRUE @2f410 // 2f3feh
- LOAD 0 // 2f400h
- IMM 259 // 2f401h
- LIBCALL Action_isAction
- STORE 0 // 2f404h
- LOAD 0 // 2f40ch
- ZERO
- EQUAL
- JMPTRUE @2f438 // 2f40eh
-@2f410:
- ZERO
- IMM 142 // 2f412h
- LIBCALL Action_isAction
- STORE 0 // 2f415h
- LOAD 0 // 2f41dh
- ZERO
- NEQUAL
- JMPTRUE @2f431 // 2f41fh
- LOAD 0 // 2f421h
- IMM 249 // 2f422h
- LIBCALL Action_isAction
- STORE 0 // 2f425h
- LOAD 0 // 2f42dh
- ZERO
- EQUAL
- JMPTRUE @2f438 // 2f42fh
-@2f431:
- DLOAD 0 // 2f434h
- STORE 0
- JUMP @2f28f
-@2f438:
- ZERO
- IMM 168 // 2f43ah
- IMM 3 // 2f43dh
- LIBCALL Action_isAction
- STORE 0 // 2f43fh
- LOAD 0 // 2f447h
- ZERO
- NEQUAL
- JMPTRUE @2f481 // 2f449h
- LOAD 0 // 2f44bh
- IMM 248 // 2f44ch
- IMM 3 // 2f44fh
- LIBCALL Action_isAction
- STORE 0 // 2f451h
- LOAD 0 // 2f459h
- ZERO
- NEQUAL
- JMPTRUE @2f481 // 2f45bh
- LOAD 0 // 2f45dh
- IMM 168 // 2f45eh
- IMM 125 // 2f461h
- LIBCALL Action_isAction
- STORE 0 // 2f463h
- LOAD 0 // 2f46bh
- ZERO
- NEQUAL
- JMPTRUE @2f481 // 2f46dh
- LOAD 0 // 2f46fh
- IMM 248 // 2f470h
- IMM 125 // 2f473h
- LIBCALL Action_isAction
- STORE 0 // 2f475h
- LOAD 0 // 2f47dh
- ZERO
- EQUAL
- JMPTRUE @2f488 // 2f47fh
-@2f481:
- DLOAD 0 // 2f484h
- STORE 0
- JUMP @2f28f
-@2f488:
- ZERO
- IMM 145 // 2f48ah
- IMM 3 // 2f48dh
- LIBCALL Action_isAction
- STORE 0 // 2f48fh
- LOAD 0 // 2f497h
- ZERO
- EQUAL
- JMPTRUE @2f4a2 // 2f499h
- DLOAD 0 // 2f49eh
- STORE 0
- JUMP @2f28f
-@2f4a2:
- ZERO
- IMM 225 // 2f4a4h
- IMM 3 // 2f4a7h
- LIBCALL Action_isAction
- STORE 0 // 2f4a9h
- LOAD 0 // 2f4b1h
- ZERO
- NEQUAL
- JMPTRUE @2f4c8 // 2f4b3h
- LOAD 0 // 2f4b5h
- IMM 225 // 2f4b6h
- IMM 210 // 2f4b9h
- LIBCALL Action_isAction
- STORE 0 // 2f4bch
- LOAD 0 // 2f4c4h
- ZERO
- EQUAL
- JMPTRUE @2f4ce // 2f4c6h
-@2f4c8:
- DLOAD 0 // 2f4cbh
- STORE 0
- JUMP @2f28f
-@2f4ce:
- ZERO
- IMM 96 // 2f4d0h
- IMM 3 // 2f4d2h
- LIBCALL Action_isAction
- STORE 0 // 2f4d4h
- LOAD 0 // 2f4dch
- ZERO
- EQUAL
- JMPTRUE @2f4e6 // 2f4deh
- DLOAD 0 // 2f4e3h
- STORE 0
- JUMP @2f28f
-@2f4e6:
- ZERO
- IMM 273 // 2f4e8h
- IMM 3 // 2f4ebh
- LIBCALL Action_isAction
- STORE 0 // 2f4edh
- LOAD 0 // 2f4f5h
- ZERO
- EQUAL
- JMPTRUE @2f500 // 2f4f7h
- DLOAD 0 // 2f4fch
- STORE 0
- JUMP @2f28f
-@2f500:
- ZERO
- IMM 123 // 2f502h
- IMM 3 // 2f504h
- LIBCALL Action_isAction
- STORE 0 // 2f506h
- LOAD 0 // 2f50eh
- ZERO
- NEQUAL
- JMPTRUE @2f52f // 2f510h
- LOAD 0 // 2f512h
- IMM 123 // 2f513h
- IMM 6 // 2f515h
- LIBCALL Action_isAction
- STORE 0 // 2f517h
- LOAD 0 // 2f51fh
- ZERO
- EQUAL
- JMPTRUE @2f536 // 2f521h
- LIBCALL object_is_in_inventory
- STORE 0 // 2f526h
- LOAD 0 // 2f52bh
- ZERO
- NEQUAL
- JMPTRUE @2f536 // 2f52dh
-@2f52f:
- DLOAD 0 // 2f532h
- STORE 0
- JUMP @2f28f
-@2f536:
- ZERO
- IMM 123 // 2f538h
- IMM 6 // 2f53ah
- LIBCALL Action_isAction
- STORE 0 // 2f53ch
- LOAD 0 // 2f544h
- ZERO
- EQUAL
- JMPTRUE @2f54e // 2f546h
- DLOAD 0 // 2f54bh
- STORE 0
- JUMP @2f28f
-@2f54e:
- ZERO
- IMM 358 // 2f550h
- IMM 3 // 2f553h
- LIBCALL Action_isAction
- STORE 0 // 2f555h
- LOAD 0 // 2f55dh
- ZERO
- EQUAL
- JMPTRUE @2f568 // 2f55fh
- DLOAD 0 // 2f564h
- STORE 0
- JUMP @2f28f
-@2f568:
- ZERO
- IMM 202 // 2f56ah
- IMM 3 // 2f56dh
- LIBCALL Action_isAction
- STORE 0 // 2f56fh
- LOAD 0 // 2f577h
- ZERO
- EQUAL
- JMPTRUE @2f582 // 2f579h
- DLOAD 0 // 2f57eh
- STORE 0
- JUMP @2f28f
-@2f582:
- ZERO
- IMM 99 // 2f584h
- IMM 3 // 2f586h
- LIBCALL Action_isAction
- STORE 0 // 2f588h
- LOAD 0 // 2f590h
- ZERO
- EQUAL
- JMPTRUE @2f59a // 2f592h
- DLOAD 0 // 2f597h
- STORE 0
- JUMP @2f28f
-@2f59a:
- ZERO
- IMM 235 // 2f59ch
- IMM 3 // 2f59fh
- LIBCALL Action_isAction
- STORE 0 // 2f5a1h
- LOAD 0 // 2f5a9h
- ZERO
- EQUAL
- JMPTRUE @2f5b4 // 2f5abh
- DLOAD 0 // 2f5b0h
- STORE 0
- JUMP @2f28f
-@2f5b4:
- ZERO
- IMM 120 // 2f5b6h
- IMM 3 // 2f5b8h
- LIBCALL Action_isAction
- STORE 0 // 2f5bah
- LOAD 0 // 2f5c2h
- ZERO
- EQUAL
- JMPTRUE @2f5cc // 2f5c4h
- DLOAD 0 // 2f5c9h
- STORE 0
- JUMP @2f28f
-@2f5cc:
- ZERO
- IMM 400 // 2f5ceh
- IMM 3 // 2f5d1h
- LIBCALL Action_isAction
- STORE 0 // 2f5d3h
- LOAD 0 // 2f5dbh
- ZERO
- EQUAL
- JMPTRUE @2f5e6 // 2f5ddh
- DLOAD 0 // 2f5e2h
- STORE 0
- JUMP @2f28f
-@2f5e6:
- ZERO
- IMM 312 // 2f5e8h
- IMM 3 // 2f5ebh
- LIBCALL Action_isAction
- STORE 0 // 2f5edh
- LOAD 0 // 2f5f5h
- ZERO
- EQUAL
- JMPTRUE @2f600 // 2f5f7h
- DLOAD 0 // 2f5fch
- STORE 0
- JUMP @2f28f
-@2f600:
- ZERO
- IMM 273 // 2f602h
- IMM 4 // 2f605h
- LIBCALL Action_isAction
- STORE 0 // 2f607h
- LOAD 0 // 2f60fh
- ZERO
- EQUAL
- JMPTRUE @2f61a // 2f611h
- DLOAD 0 // 2f616h
- STORE 0
- JUMP @2f28f
-@2f61a:
- ZERO
- IMM 145 // 2f61ch
- IMM 4 // 2f61fh
- LIBCALL Action_isAction
- STORE 0 // 2f621h
- LOAD 0 // 2f629h
- ZERO
- EQUAL
- JMPTRUE @2f634 // 2f62bh
- DLOAD 0 // 2f630h
- STORE 0
- JUMP @2f28f
-@2f634:
- ZERO
- IMM 99 // 2f636h
- IMM 6 // 2f638h
- LIBCALL Action_isAction
- STORE 0 // 2f63ah
- LOAD 0 // 2f642h
- ZERO
- EQUAL
- JMPTRUE @2f64c // 2f644h
- DLOAD 0 // 2f649h
- STORE 0
- JUMP @2f28f
-@2f64c:
- ZERO
- IMM 96 // 2f64eh
- IMM 6 // 2f650h
- LIBCALL Action_isAction
- STORE 0 // 2f652h
- LOAD 0 // 2f65ah
- ZERO
- EQUAL
- JMPTRUE @2f664 // 2f65ch
- DLOAD 0 // 2f661h
- STORE 0
- JUMP @2f28f
-@2f664:
- ZERO
- IMM 96 // 2f666h
- IMM 11 // 2f668h
- LIBCALL Action_isAction
- STORE 0 // 2f66ah
- LOAD 0 // 2f672h
- ZERO
- EQUAL
- JMPTRUE @2f67c // 2f674h
- DLOAD 0 // 2f679h
- STORE 0
- JUMP @2f28f
-@2f67c:
- ZERO
- IMM 3 // 2f67eh
- LIBCALL Action_isAction
- STORE 0 // 2f680h
- LOAD 0 // 2f688h
- ZERO
- NEQUAL
- JMPTRUE @2f69c // 2f68ah
- LOAD 0 // 2f68ch
- IMM 274 // 2f68dh
- LIBCALL Action_isAction
- STORE 0 // 2f690h
- LOAD 0 // 2f698h
- ZERO
- EQUAL
- JMPTRUE @2f6ba // 2f69ah
-@2f69c:
- ZERO
- IMM 382 // 2f69eh
- LIBCALL Action_isAction
- STORE 0 // 2f6a1h
- LOAD 0 // 2f6a9h
- ZERO
- EQUAL
- JMPTRUE @2f6ba // 2f6abh
- DLOAD 0 // 2f6b0h
- STORE 0
- JUMP @2f28f
-@2f6b4:
- ZERO
- DSTORE $5768 // 2f6b4h
-@2f6ba:
- RET
-end
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index 084641608a..527136c7d4 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -105,6 +105,30 @@ struct FSNode {
};
typedef std::list<FSNode> FileList;
+
+typedef StringList TokenList;
+
+/**
+ * Takes a given input line and creates a list of tokens out of it.
+ *
+ * A token in this context is separated by whitespaces. A special case
+ * are quotation marks though. A string inside quotation marks is treated
+ * as single token, even when it contains whitespaces.
+ *
+ * Thus for example the input:
+ * foo bar "1 2 3 4" ScummVM
+ * will create a list with the following entries:
+ * "foo", "bar", "1 2 3 4", "ScummVM"
+ * As you can see the quotation marks will get *removed* too.
+ *
+ * You can also use this with non-whitespace by passing another separator
+ * character (e.g. ',').
+ *
+ * @param input The text to be tokenized.
+ * @param separator The token separator.
+ * @return A list of tokens.
+ */
+TokenList tokenize(const std::string &input, char separator = ' ');
} // End of anonymous namespace
enum ProjectType {
@@ -201,6 +225,38 @@ int main(int argc, char *argv[]) {
std::cerr << "ERROR: Unsupported version: \"" << msvcVersion << "\" passed to \"--msvc-version\"!\n";
return -1;
}
+ } else if (!strncmp(argv[i], "--enable-engine=", 16)) {
+ const char *names = &argv[i][16];
+ if (!*names) {
+ std::cerr << "ERROR: Invalid command \"" << argv[i] << "\"\n";
+ return -1;
+ }
+
+ TokenList tokens = tokenize(names, ',');
+ TokenList::const_iterator token = tokens.begin();
+ while (token != tokens.end()) {
+ std::string name = *token++;
+ if (!setEngineBuildState(name, setup.engines, true)) {
+ std::cerr << "ERROR: \"" << name << "\" is not a known engine!\n";
+ return -1;
+ }
+ }
+ } else if (!strncmp(argv[i], "--disable-engine=", 17)) {
+ const char *names = &argv[i][17];
+ if (!*names) {
+ std::cerr << "ERROR: Invalid command \"" << argv[i] << "\"\n";
+ return -1;
+ }
+
+ TokenList tokens = tokenize(names, ',');
+ TokenList::const_iterator token = tokens.begin();
+ while (token != tokens.end()) {
+ std::string name = *token++;
+ if (!setEngineBuildState(name, setup.engines, false)) {
+ std::cerr << "ERROR: \"" << name << "\" is not a known engine!\n";
+ return -1;
+ }
+ }
} else if (!strncmp(argv[i], "--enable-", 9)) {
const char *name = &argv[i][9];
if (!*name) {
@@ -211,12 +267,9 @@ int main(int argc, char *argv[]) {
if (!std::strcmp(name, "all-engines")) {
for (EngineDescList::iterator j = setup.engines.begin(); j != setup.engines.end(); ++j)
j->enable = true;
- } else if (!setEngineBuildState(name, setup.engines, true)) {
- // If none found, we'll try the features list
- if (!setFeatureBuildState(name, setup.features, true)) {
- std::cerr << "ERROR: \"" << name << "\" is neither an engine nor a feature!\n";
- return -1;
- }
+ } else if (!setFeatureBuildState(name, setup.features, true)) {
+ std::cerr << "ERROR: \"" << name << "\" is not a feature!\n";
+ return -1;
}
} else if (!strncmp(argv[i], "--disable-", 10)) {
const char *name = &argv[i][10];
@@ -228,12 +281,9 @@ int main(int argc, char *argv[]) {
if (!std::strcmp(name, "all-engines")) {
for (EngineDescList::iterator j = setup.engines.begin(); j != setup.engines.end(); ++j)
j->enable = false;
- } else if (!setEngineBuildState(name, setup.engines, false)) {
- // If none found, we'll try the features list
- if (!setFeatureBuildState(name, setup.features, false)) {
- std::cerr << "ERROR: \"" << name << "\" is neither an engine nor a feature!\n";
- return -1;
- }
+ } else if (!setFeatureBuildState(name, setup.features, false)) {
+ std::cerr << "ERROR: \"" << name << "\" is not a feature!\n";
+ return -1;
}
} else if (!std::strcmp(argv[i], "--file-prefix")) {
if (i + 1 >= argc) {
@@ -411,6 +461,12 @@ int main(int argc, char *argv[]) {
// 4310 (cast truncates constant value)
// used in some engines
//
+ // 4345 (behavior change: an object of POD type constructed with an
+ // initializer of the form () will be default-initialized)
+ // used in Common::Array(), and it basically means that newer VS
+ // versions adhere to the standard in this case. Can be safely
+ // disabled.
+ //
// 4351 (new behavior: elements of array 'array' will be default initialized)
// a change in behavior in Visual Studio 2005. We want the new behavior, so it can be disabled
//
@@ -460,6 +516,7 @@ int main(int argc, char *argv[]) {
globalWarnings.push_back("4244");
globalWarnings.push_back("4250");
globalWarnings.push_back("4310");
+ globalWarnings.push_back("4345");
globalWarnings.push_back("4351");
globalWarnings.push_back("4512");
globalWarnings.push_back("4702");
@@ -476,6 +533,8 @@ int main(int argc, char *argv[]) {
projectWarnings["agos"].push_back("4511");
+ projectWarnings["dreamweb"].push_back("4355");
+
projectWarnings["lure"].push_back("4189");
projectWarnings["lure"].push_back("4355");
@@ -611,26 +670,6 @@ void displayHelp(const char *exe) {
cout.setf(std::ios_base::right, std::ios_base::adjustfield);
}
-typedef StringList TokenList;
-
-/**
- * Takes a given input line and creates a list of tokens out of it.
- *
- * A token in this context is separated by whitespaces. A special case
- * are quotation marks though. A string inside quotation marks is treated
- * as single token, even when it contains whitespaces.
- *
- * Thus for example the input:
- * foo bar "1 2 3 4" ScummVM
- * will create a list with the following entries:
- * "foo", "bar", "1 2 3 4", "ScummVM"
- * As you can see the quotation marks will get *removed* too.
- *
- * @param input The text to be tokenized.
- * @return A list of tokens.
- */
-TokenList tokenize(const std::string &input);
-
/**
* Try to parse a given line and create an engine definition
* out of the result.
@@ -760,7 +799,7 @@ bool parseEngine(const std::string &line, EngineDesc &engine) {
return true;
}
-TokenList tokenize(const std::string &input) {
+TokenList tokenize(const std::string &input, char separator) {
TokenList result;
std::string::size_type sIdx = input.find_first_not_of(" \t");
@@ -774,12 +813,15 @@ TokenList tokenize(const std::string &input) {
++sIdx;
nIdx = input.find_first_of('\"', sIdx);
} else {
- nIdx = input.find_first_of(' ', sIdx);
+ nIdx = input.find_first_of(separator, sIdx);
}
if (nIdx != std::string::npos) {
result.push_back(input.substr(sIdx, nIdx - sIdx));
- sIdx = input.find_first_not_of(" \t", nIdx + 1);
+ if (separator == ' ')
+ sIdx = input.find_first_not_of(" \t", nIdx + 1);
+ else
+ sIdx = input.find_first_not_of(separator, nIdx + 1);
} else {
result.push_back(input.substr(sIdx));
break;
@@ -820,7 +862,6 @@ const Tool s_tools[] = {
{ "create_hugo", true},
{ "create_kyradat", true},
{ "create_lure", true},
- { "create_mads", true},
{ "create_teenagent", true},
{ "create_toon", true},
{ "create_translations", true},
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index 55e04be4ec..8719143f4a 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -371,7 +371,7 @@ protected:
*
* @param output File stream to write to.
*/
- virtual void writeReferences(const BuildSetup &, std::ofstream &) {};
+ virtual void writeReferences(const BuildSetup &, std::ofstream &) {}
/**
* Get the file extension for project files
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index 77ac88f85d..eb51ab3da1 100755
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -448,7 +448,6 @@ void XCodeProvider::setupResourcesBuildPhase() {
properties["sky.cpt"] = FileProperty("file", "", "sky.cpt", "\"<group>\"");
properties["drascula.dat"] = FileProperty("file", "", "drascula.dat", "\"<group>\"");
properties["hugo.dat"] = FileProperty("file", "", "hugo.dat", "\"<group>\"");
- properties["m4.dat"] = FileProperty("file", "", "m4.dat", "\"<group>\"");
properties["teenagent.dat"] = FileProperty("file", "", "teenagent.dat", "\"<group>\"");
properties["toon.dat"] = FileProperty("file", "", "toon.dat", "\"<group>\"");
@@ -481,7 +480,6 @@ void XCodeProvider::setupResourcesBuildPhase() {
files_list.push_back("icon4.png");
files_list.push_back("drascula.dat");
files_list.push_back("hugo.dat");
- files_list.push_back("m4.dat");
files_list.push_back("teenagent.dat");
files_list.push_back("toon.dat");
diff --git a/devtools/credits.pl b/devtools/credits.pl
index 77f63bf774..2833236e75 100755
--- a/devtools/credits.pl
+++ b/devtools/credits.pl
@@ -444,684 +444,683 @@ sub add_paragraph {
#
begin_credits("Credits");
- begin_section("ScummVM Team");
- begin_section("Project Leader");
- begin_persons();
- add_person("Eugene Sandulenko", "sev", "");
- end_persons();
- end_section();
-
- begin_section("PR Office");
- begin_persons();
- add_person("Arnaud Boutonn&eacute;", "Strangerke", "Public Relations Officer, Project Administrator");
- add_person("Eugene Sandulenko", "sev", "Project Leader");
- end_persons();
- end_section();
-
- begin_section("Core Team");
- begin_persons();
- add_person("Willem Jan Palenstijn", "wjp", "");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("Johannes Schickel", "LordHoto", "");
- end_persons();
- end_section();
-
- begin_section("Retired Project Leaders");
- begin_persons();
- add_person("James Brown", "ender", "");
- add_person("Vincent Hamm", "yaz0r", "ScummVM co-founder, Original Cruise/CinE author");
- add_person("Max Horn", "Fingolfin", "");
- add_person("Ludvig Strigeus", "ludde", "Original ScummVM and SimonVM author");
- end_persons();
- end_section();
-
- begin_section("Engine Teams");
- begin_section("SCUMM");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("James Brown", "ender", "(retired)");
- add_person("Jonathan Gray", "khalek", "(retired)");
- add_person("Vincent Hamm", "yaz0r", "(retired)");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Travis Howell", "Kirben", "");
- add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "Codecs, iMUSE, Smush, etc.");
- add_person("Gregory Montoir", "cyx", "");
- add_person("Eugene Sandulenko", "sev", "FT INSANE, MM NES, MM C64, game detection, Herc/CGA");
- add_person("Ludvig Strigeus", "ludde", "(retired)");
- end_section();
-
- begin_section("HE");
- add_person("Jonathan Gray", "khalek", "(retired)");
- add_person("Travis Howell", "Kirben", "");
- add_person("Gregory Montoir", "cyx", "");
- add_person("Eugene Sandulenko", "sev", "");
- end_section();
-
- begin_section("AGI");
- add_person("Stuart George", "darkfiber", "");
- add_person("Matthew Hoops", "clone2727", "");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
- add_person("Walter van Niftrik", "waltervn", "(retired)");
- add_person("Kari Salminen", "Buddha^", "");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("David Symonds", "dsymonds", "(retired)");
- end_section();
-
- begin_section("AGOS");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Travis Howell", "Kirben", "");
- add_person("Oliver Kiehl", "olki", "(retired)");
- add_person("Ludvig Strigeus", "ludde", "(retired)");
- end_section();
-
- begin_section("CGE");
- add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
- add_person("Paul Gilbert", "dreammaster", "");
- end_section();
-
- begin_section("Cine");
- add_person("Vincent Hamm", "yaz0r", "(retired)");
- add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
- add_person("Gregory Montoir", "cyx", "");
- add_person("Kari Salminen", "Buddha^", "");
- add_person("Eugene Sandulenko", "sev", "");
- end_section();
-
- begin_section("CruisE");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Vincent Hamm", "yaz0r", "(retired)");
- end_section();
-
- begin_section("Draci");
- add_person("Denis Kasak", "dkasak13", "");
- add_person("Robert &Scaron;palek", "spalek", "");
- end_section();
-
- begin_section("Drascula");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
- end_section();
-
- begin_section("DreamWeb");
- add_person("Vladimir Menshakov", "whoozle", "");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Bertrand Augereau", "Tramb", "");
- end_section();
-
- begin_section("Gob");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
- add_person("Sven Hesse", "DrMcCoy", "");
- add_person("Eugene Sandulenko", "sev", "");
- end_section();
-
- begin_section("Groovie");
- add_person("Henry Bush", "spookypeanut", "");
- add_person("Scott Thomas", "ST", "");
- add_person("Jordi Vilalta Prat", "jvprat", "");
- end_section();
-
- begin_section("Hugo");
- add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
- add_person("Oystein Eftevaag", "vinterstum", "");
- add_person("Eugene Sandulenko", "sev", "");
- end_section();
-
- begin_section("Kyra");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "VQA Player");
- add_person("Oystein Eftevaag", "vinterstum", "");
- add_person("Florian Kagerer", "athrxx", "");
- add_person("Gregory Montoir", "cyx", "");
- add_person("Johannes Schickel", "LordHoto", "");
- end_section();
-
- begin_section("Lastexpress");
- add_person("Matthew Hoops", "clone2727", "");
- add_person("Jordi Vilalta Prat", "jvprat", "");
- add_person("Julien Templier", "littleboy", "");
- end_section();
+ begin_section("ScummVM Team");
+ begin_section("Project Leader");
+ begin_persons();
+ add_person("Eugene Sandulenko", "sev", "");
+ end_persons();
+ end_section();
- begin_section("Lure");
- add_person("Paul Gilbert", "dreammaster", "");
- end_section();
-
- begin_section("M4");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Benjamin Haisch", "john_doe", "");
- add_person("Filippos Karapetis", "[md5]", "");
- end_section();
-
- begin_section("MADE");
- add_person("Benjamin Haisch", "john_doe", "");
- add_person("Filippos Karapetis", "[md5]", "");
- end_section();
-
- begin_section("Mohawk");
- add_person("Bastien Bouclet", "bgk", "");
- add_person("Matthew Hoops", "clone2727", "");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Alyssa Milburn", "fuzzie", "");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("David Turner", "digitall", "");
- end_section();
-
- begin_section("Parallaction");
- add_person("", "peres", "");
- end_section();
-
- begin_section("Queen");
- add_person("David Eriksson", "twogood", "(retired)");
- add_person("Gregory Montoir", "cyx", "");
- add_person("Joost Peters", "joostp", "");
- end_section();
-
- begin_section("SAGA");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Andrew Kurushin", "ajax16384", "");
- add_person("Eugene Sandulenko", "sev", "");
- end_section();
-
- begin_section("SCI");
- add_person("Greg Frieger", "_FRG_", "");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Martin Kiewitz", "m_kiewitz", "");
- add_person("Walter van Niftrik", "waltervn", "(retired)");
- add_person("Willem Jan Palenstijn", "wjp", "");
- add_person("Jordi Vilalta Prat", "jvprat", "");
- add_person("Lars Skovlund", "lskovlun", "");
- end_section();
-
- begin_section("Sky");
- add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
- add_person("Oliver Kiehl", "olki", "(retired)");
- add_person("Joost Peters", "joostp", "");
- end_section();
-
- begin_section("Sword1");
- add_person("Fabio Battaglia", "Hkz", "PSX version support");
- add_person("Thierry Crozat", "criezy", "Mac version support");
- add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
- end_section();
-
- begin_section("Sword2");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Fabio Battaglia", "Hkz", "PSX version support");
- add_person("Jonathan Gray", "khalek", "(retired)");
- end_section();
-
- begin_section("Sword25");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- end_section();
-
- begin_section("TeenAgent");
- add_person("Robert Megone", "sanguine", "Help with callback rewriting");
- add_person("Vladimir Menshakov", "whoozle", "");
- end_section();
-
-
- begin_section("Tinsel");
- add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
- add_person("Fabio Battaglia", "Hkz", "PSX version support");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Sven Hesse", "DrMcCoy", "");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Filippos Karapetis", "[md5]", "");
- add_person("Joost Peters", "joostp", "");
- end_section();
-
- begin_section("Toon");
- add_person("Sylvain Dupont", "SylvainTV", "");
- end_section();
-
- begin_section("Touch&eacute;");
- add_person("Gregory Montoir", "cyx", "");
- end_section();
-
- begin_section("TsAGE");
- add_person("Paul Gilbert", "dreammaster", "");
- add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
- end_section();
-
- begin_section("Tucker");
- add_person("Gregory Montoir", "cyx", "");
- end_section();
-
- end_section();
-
-
- begin_section("Backend Teams");
- begin_section("Android");
- add_person("Andre Heider", "dhewg", "");
- add_person("Angus Lees", "Gus", "");
- end_section();
-
- begin_section("BADA");
- add_person("Chris Warren-Smith", "", "");
- end_section();
-
- begin_section("Dreamcast");
- add_person("Marcus Comstedt", "", "");
- end_section();
-
- begin_section("GPH Devices (GP2X, GP2XWiz &amp; Caanoo)");
- add_person("John Willis", "DJWillis", "");
- end_section();
-
- begin_section("iPhone");
- add_person("Oystein Eftevaag", "vinterstum", "");
- end_section();
-
- begin_section("LinuxMoto");
- add_person("Lubomyr Lisen", "", "");
- end_section();
-
- begin_section("Maemo");
- add_person("Frantisek Dufka", "fanoush", "(retired)");
- add_person("Tarek Soliman", "tsoliman", "");
- end_section();
-
- begin_section("Nintendo 64");
- add_person("Fabio Battaglia", "Hkz", "");
- end_section();
-
- begin_section("Nintendo DS");
- add_person("Neil Millstone", "agent-q", "");
- add_person("Bertrand Augereau", "Tramb", "HQ software scaler");
- end_section();
-
- begin_section("OpenPandora");
- add_person("John Willis", "DJWillis", "");
- end_section();
-
- begin_section("PocketPC / WinCE");
- add_person("Nicolas Bacca", "arisme", "(retired)");
- add_person("Ismail Khatib", "CeRiAl", "");
- add_person("Kostas Nakos", "Jubanka", "(retired)");
- end_section();
-
- begin_section("PlayStation 2");
- add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
- add_person("Max Lingua", "sunmax", "");
- end_section();
-
- begin_section("PSP (PlayStation Portable)");
- add_person("Joost Peters", "joostp", "");
- add_person("Yotam Barnoy", "bluddy", "");
- end_section();
-
- begin_section("SDL (Win/Linux/OS X/etc.)");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Eugene Sandulenko", "sev", "Asm routines, GFX layers");
- end_section();
-
- begin_section("SymbianOS");
- add_person("Jurgen Braam", "SumthinWicked", "");
- add_person("Lars Persson", "AnotherGuest", "");
- end_section();
-
- begin_section("WebOS");
- add_person("Klaus Reimer", "kayahr", "");
- end_section();
-
- begin_section("Wii");
- add_person("Andre Heider", "dhewg", "");
- end_section();
-
- end_section();
-
- begin_section("Other subsystems");
- begin_section("Infrastructure");
- add_person("Max Horn", "Fingolfin", "Backend &amp; Engine APIs, file API, sound mixer, audiostreams, data structures, etc. (retired)");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("Johannes Schickel", "LordHoto", "");
- end_section();
-
- begin_section("GUI");
- add_person("Vicent Marti", "tanoku", "");
- add_person("Eugene Sandulenko", "sev", "");
- add_person("Johannes Schickel", "LordHoto", "");
- end_section();
-
- begin_section("Miscellaneous");
- add_person("David Corrales-Lopez", "david_corrales", "Filesystem access improvements (GSoC 2007 task) (retired)");
- add_person("Jerome Fisher", "KingGuppy", "MT-32 emulator");
- add_person("Benjamin Haisch", "john_doe", "Heavily improved de-/encoder for DXA videos");
- add_person("Jochen Hoenicke", "hoenicke", "Speaker &amp; PCjr sound support, AdLib work (retired)");
- add_person("Chris Page", "cp88", "Return to launcher, savestate improvements, leak fixes, ... (GSoC 2008 task) (retired)");
- add_person("Robin Watts", "robinwatts", "ARM assembly routines for nice speedups on several ports; improvements to the sound mixer");
- end_section();
- end_section();
-
- begin_section("Website (code)");
- begin_persons();
- add_person("Fredrik Wendel", "", "(retired)");
- end_persons();
- end_section();
-
- begin_section("Website (maintenance)");
- begin_persons();
- add_person("James Brown", "Ender", "IRC Logs maintainer");
- add_person("Thierry Crozat", "criezy", "Wiki maintainer");
- add_person("Andre Heider", "dhewg", "Buildbot maintainer");
- add_person("Joost Peters", "JoostP", "Doxygen Project Documentation maintainer");
- add_person("Jordi Vilalta Prat", "jvprat", "Wiki maintainer");
- add_person("Eugene Sandulenko", "sev", "Forum, IRC channel, Screen Shots and Mailing list maintainer");
- add_person("John Willis", "DJWillis", "");
- end_persons();
- end_section();
-
- begin_section("Website (content)");
- add_paragraph("All active team members");
- end_section();
-
- begin_section("Documentation");
- begin_persons();
- add_person("Thierry Crozat", "criezy", "Numerous contributions to documentation");
- add_person("Joachim Eberhard", "joachimeberhard", "Numerous contributions to documentation (retired)");
- add_person("Matthew Hoops", "clone2727", "Wiki editor");
- end_persons();
- end_section();
-
- begin_section("Retired Team Members");
- begin_persons();
- add_person("Chris Apers", "chrilith ", "Former PalmOS porter");
- add_person("Ralph Brorsen", "painelf", "Help with GUI implementation");
- add_person("Jamieson Christian", "jamieson630", "iMUSE, MIDI, all things musical");
- add_person("Felix Jakschitsch", "yot", "Zak256 reverse engineering");
- add_person("Mutwin Kraus", "mutle", "Original MacOS porter");
- add_person("Peter Moraliyski", "ph0x", "Port: GP32");
- add_person("Jeremy Newman", "laxdragon", "Former webmaster");
- add_person("Lionel Ulmer", "bbrox", "Port: X11");
- add_person("Won Star", "wonst719", "Former GP32 porter");
- end_persons();
- end_section();
- end_section();
-
-
- begin_section("Other contributions");
-
- begin_section("Packages");
- begin_section("AmigaOS 4");
- add_person("Hans-J&ouml;rg Frieden", "", "(retired)");
- add_person("Hubert Maier", "Raziel_AOne", "");
- add_person("Juha Niemim&auml;ki", "", "(retired)");
- end_section();
-
- begin_section("Atari/FreeMiNT");
- add_person("Keith Scroggins", "KeithS", "");
- end_section();
-
- begin_section("BeOS");
- add_person("Stefan Parviainen", "", "");
- add_person("Luc Schrijvers", "Begasus", "");
- end_section();
-
- begin_section("Debian GNU/Linux");
- add_person("Tore Anderson", "tore", "(retired)");
- add_person("David Weinehall", "tao", "");
- end_section();
-
- begin_section("Fedora / RedHat");
- add_person("Willem Jan Palenstijn", "wjp", "");
- end_section();
-
- begin_section("Mac OS X");
- add_person("Max Horn", "Fingolfin", "(retired)");
- add_person("Oystein Eftevaag", "vinterstum", "");
- end_section();
-
- begin_section("Mandriva");
- add_person("Dominik Scherer", "", "(retired)");
- end_section();
-
- begin_section("MorphOS");
- add_person("Fabien Coeurjoly", "fab1", "");
- add_person("R&uuml;diger Hanke", "", "(retired)");
- end_section();
-
- begin_section("OS/2");
- add_person("Paul Smedley", "Creeping", "");
- end_section();
-
- begin_section("SlackWare");
- add_person("Robert Kelsen", "", "");
- end_section();
-
- begin_section("Solaris x86");
- add_person("Laurent Blume", "laurent", "");
- end_section();
-
- begin_section("Solaris SPARC");
- add_person("Markus Strangl", "WooShell", "");
- end_section();
-
- begin_section("Win32");
- add_person("Travis Howell", "Kirben", "");
- end_section();
-
- begin_section("Win64");
- add_person("Chris Gray", "Psychoid", "(retired)");
- add_person("Johannes Schickel", "LordHoto", "");
- end_section();
- end_section();
+ begin_section("PR Office");
+ begin_persons();
+ add_person("Arnaud Boutonn&eacute;", "Strangerke", "Public Relations Officer, Project Administrator");
+ add_person("Eugene Sandulenko", "sev", "Project Leader");
+ end_persons();
+ end_section();
- begin_section("Translations");
- begin_persons();
- add_person("Thierry Crozat", "criezy", "Translation Lead");
- end_persons();
- begin_section("Catalan");
- add_person("Jordi Vilalta Prat", "jvprat", "");
+ begin_section("Core Team");
+ begin_persons();
+ add_person("Willem Jan Palenstijn", "wjp", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ add_person("Johannes Schickel", "LordHoto", "");
+ end_persons();
end_section();
- begin_section("Czech");
- add_person("Zbyn&igrave;k Schwarz", "", "");
+
+ begin_section("Retired Project Leaders");
+ begin_persons();
+ add_person("James Brown", "ender", "");
+ add_person("Vincent Hamm", "yaz0r", "ScummVM co-founder, Original Cruise/CinE author");
+ add_person("Max Horn", "Fingolfin", "");
+ add_person("Ludvig Strigeus", "ludde", "Original ScummVM and SimonVM author");
+ end_persons();
end_section();
- begin_section("Danish");
- add_person("Steffen Nyeland", "", "");
+
+ begin_section("Engine Teams");
+ begin_section("SCUMM");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("James Brown", "ender", "(retired)");
+ add_person("Jonathan Gray", "khalek", "(retired)");
+ add_person("Vincent Hamm", "yaz0r", "(retired)");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Travis Howell", "Kirben", "");
+ add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "Codecs, iMUSE, Smush, etc.");
+ add_person("Gregory Montoir", "cyx", "");
+ add_person("Eugene Sandulenko", "sev", "FT INSANE, MM NES, MM C64, game detection, Herc/CGA");
+ add_person("Ludvig Strigeus", "ludde", "(retired)");
+ end_section();
+
+ begin_section("HE");
+ add_person("Jonathan Gray", "khalek", "(retired)");
+ add_person("Travis Howell", "Kirben", "");
+ add_person("Gregory Montoir", "cyx", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("AGI");
+ add_person("Stuart George", "darkfiber", "");
+ add_person("Matthew Hoops", "clone2727", "");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
+ add_person("Walter van Niftrik", "waltervn", "(retired)");
+ add_person("Kari Salminen", "Buddha^", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ add_person("David Symonds", "dsymonds", "(retired)");
+ end_section();
+
+ begin_section("AGOS");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Paul Gilbert", "dreammaster", "");
+ add_person("Travis Howell", "Kirben", "");
+ add_person("Oliver Kiehl", "olki", "(retired)");
+ add_person("Ludvig Strigeus", "ludde", "(retired)");
+ end_section();
+
+ begin_section("CGE");
+ add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
+ add_person("Paul Gilbert", "dreammaster", "");
+ end_section();
+
+ begin_section("Cine");
+ add_person("Vincent Hamm", "yaz0r", "(retired)");
+ add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
+ add_person("Gregory Montoir", "cyx", "");
+ add_person("Kari Salminen", "Buddha^", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("Composer");
+ add_person("Alyssa Milburn", "fuzzie", "");
+ end_section();
+
+ begin_section("CruisE");
+ add_person("Paul Gilbert", "dreammaster", "");
+ add_person("Vincent Hamm", "yaz0r", "(retired)");
+ end_section();
+
+ begin_section("Draci");
+ add_person("Denis Kasak", "dkasak13", "");
+ add_person("Robert &Scaron;palek", "spalek", "");
+ end_section();
+
+ begin_section("Drascula");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
+ end_section();
+
+ begin_section("DreamWeb");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Bertrand Augereau", "Tramb", "");
+ add_person("Vladimir Menshakov", "whoozle", "(retired)");
+ end_section();
+
+ begin_section("Gob");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
+ add_person("Sven Hesse", "DrMcCoy", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("Groovie");
+ add_person("Henry Bush", "spookypeanut", "");
+ add_person("Scott Thomas", "ST", "");
+ add_person("Jordi Vilalta Prat", "jvprat", "");
+ end_section();
+
+ begin_section("Hugo");
+ add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
+ add_person("Oystein Eftevaag", "vinterstum", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("Kyra");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "VQA Player");
+ add_person("Oystein Eftevaag", "vinterstum", "");
+ add_person("Florian Kagerer", "athrxx", "");
+ add_person("Gregory Montoir", "cyx", "");
+ add_person("Johannes Schickel", "LordHoto", "");
+ end_section();
+
+ begin_section("Lastexpress");
+ add_person("Matthew Hoops", "clone2727", "");
+ add_person("Jordi Vilalta Prat", "jvprat", "");
+ add_person("Julien Templier", "littleboy", "");
+ end_section();
+
+ begin_section("Lure");
+ add_person("Paul Gilbert", "dreammaster", "");
+ end_section();
+
+ begin_section("MADE");
+ add_person("Benjamin Haisch", "john_doe", "");
+ add_person("Filippos Karapetis", "[md5]", "");
+ end_section();
+
+ begin_section("Mohawk");
+ add_person("Bastien Bouclet", "bgk", "");
+ add_person("Matthew Hoops", "clone2727", "");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Alyssa Milburn", "fuzzie", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ add_person("David Turner", "digitall", "");
+ end_section();
+
+ begin_section("Parallaction");
+ add_person("", "peres", "");
+ end_section();
+
+ begin_section("Queen");
+ add_person("David Eriksson", "twogood", "(retired)");
+ add_person("Gregory Montoir", "cyx", "");
+ add_person("Joost Peters", "joostp", "");
+ end_section();
+
+ begin_section("SAGA");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Andrew Kurushin", "ajax16384", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("SCI");
+ add_person("Greg Frieger", "_FRG_", "");
+ add_person("Paul Gilbert", "dreammaster", "");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Martin Kiewitz", "m_kiewitz", "");
+ add_person("Walter van Niftrik", "waltervn", "(retired)");
+ add_person("Willem Jan Palenstijn", "wjp", "");
+ add_person("Jordi Vilalta Prat", "jvprat", "");
+ add_person("Lars Skovlund", "lskovlun", "");
+ end_section();
+
+ begin_section("Sky");
+ add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
+ add_person("Oliver Kiehl", "olki", "(retired)");
+ add_person("Joost Peters", "joostp", "");
+ end_section();
+
+ begin_section("Sword1");
+ add_person("Fabio Battaglia", "Hkz", "PSX version support");
+ add_person("Thierry Crozat", "criezy", "Mac version support");
+ add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
+ end_section();
+
+ begin_section("Sword2");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Fabio Battaglia", "Hkz", "PSX version support");
+ add_person("Jonathan Gray", "khalek", "(retired)");
+ end_section();
+
+ begin_section("Sword25");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Paul Gilbert", "dreammaster", "");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+
+ begin_section("TeenAgent");
+ add_person("Robert Megone", "sanguine", "Help with callback rewriting");
+ add_person("Vladimir Menshakov", "whoozle", "(retired)");
+ end_section();
+
+ begin_section("Tinsel");
+ add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Fabio Battaglia", "Hkz", "PSX version support");
+ add_person("Paul Gilbert", "dreammaster", "");
+ add_person("Sven Hesse", "DrMcCoy", "");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Filippos Karapetis", "[md5]", "");
+ add_person("Joost Peters", "joostp", "");
+ end_section();
+
+ begin_section("Toon");
+ add_person("Sylvain Dupont", "SylvainTV", "");
+ end_section();
+
+ begin_section("Touch&eacute;");
+ add_person("Gregory Montoir", "cyx", "");
+ end_section();
+
+ begin_section("TsAGE");
+ add_person("Arnaud Boutonn&eacute;", "Strangerke", "");
+ add_person("Paul Gilbert", "dreammaster", "");
+ end_section();
+
+ begin_section("Tucker");
+ add_person("Gregory Montoir", "cyx", "");
+ end_section();
+
end_section();
- begin_section("French");
- add_person("Thierry Crozat", "criezy", "");
+
+
+ begin_section("Backend Teams");
+ begin_section("Android");
+ add_person("Andre Heider", "dhewg", "");
+ add_person("Angus Lees", "Gus", "");
+ end_section();
+
+ begin_section("BADA");
+ add_person("Chris Warren-Smith", "", "");
+ end_section();
+
+ begin_section("Dreamcast");
+ add_person("Marcus Comstedt", "", "");
+ end_section();
+
+ begin_section("GPH Devices (GP2X, GP2XWiz &amp; Caanoo)");
+ add_person("John Willis", "DJWillis", "");
+ end_section();
+
+ begin_section("iPhone");
+ add_person("Oystein Eftevaag", "vinterstum", "");
+ end_section();
+
+ begin_section("LinuxMoto");
+ add_person("Lubomyr Lisen", "", "");
+ end_section();
+
+ begin_section("Maemo");
+ add_person("Frantisek Dufka", "fanoush", "(retired)");
+ add_person("Tarek Soliman", "tsoliman", "");
+ end_section();
+
+ begin_section("Nintendo 64");
+ add_person("Fabio Battaglia", "Hkz", "");
+ end_section();
+
+ begin_section("Nintendo DS");
+ add_person("Bertrand Augereau", "Tramb", "HQ software scaler");
+ add_person("Neil Millstone", "agent-q", "");
+ end_section();
+
+ begin_section("OpenPandora");
+ add_person("John Willis", "DJWillis", "");
+ end_section();
+
+ begin_section("PocketPC / WinCE");
+ add_person("Nicolas Bacca", "arisme", "(retired)");
+ add_person("Ismail Khatib", "CeRiAl", "");
+ add_person("Kostas Nakos", "Jubanka", "(retired)");
+ end_section();
+
+ begin_section("PlayStation 2");
+ add_person("Robert G&ouml;ffringmann", "lavosspawn", "(retired)");
+ add_person("Max Lingua", "sunmax", "");
+ end_section();
+
+ begin_section("PSP (PlayStation Portable)");
+ add_person("Yotam Barnoy", "bluddy", "");
+ add_person("Joost Peters", "joostp", "");
+ end_section();
+
+ begin_section("SDL (Win/Linux/OS X/etc.)");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Eugene Sandulenko", "sev", "Asm routines, GFX layers");
+ end_section();
+
+ begin_section("SymbianOS");
+ add_person("Jurgen Braam", "SumthinWicked", "");
+ add_person("Lars Persson", "AnotherGuest", "");
+ end_section();
+
+ begin_section("WebOS");
+ add_person("Klaus Reimer", "kayahr", "");
+ end_section();
+
+ begin_section("Wii");
+ add_person("Andre Heider", "dhewg", "");
+ end_section();
+
end_section();
- begin_section("German");
- add_person("Simon Sawatzki", "SimSaw", "");
- add_person("Lothar Serra Mari", "Lothar93", "");
+
+ begin_section("Other subsystems");
+ begin_section("Infrastructure");
+ add_person("Max Horn", "Fingolfin", "Backend &amp; Engine APIs, file API, sound mixer, audiostreams, data structures, etc. (retired)");
+ add_person("Eugene Sandulenko", "sev", "");
+ add_person("Johannes Schickel", "LordHoto", "");
+ end_section();
+
+ begin_section("GUI");
+ add_person("Vicent Marti", "tanoku", "");
+ add_person("Eugene Sandulenko", "sev", "");
+ add_person("Johannes Schickel", "LordHoto", "");
+ end_section();
+
+ begin_section("Miscellaneous");
+ add_person("David Corrales-Lopez", "david_corrales", "Filesystem access improvements (GSoC 2007 task) (retired)");
+ add_person("Jerome Fisher", "KingGuppy", "MT-32 emulator");
+ add_person("Benjamin Haisch", "john_doe", "Heavily improved de-/encoder for DXA videos");
+ add_person("Jochen Hoenicke", "hoenicke", "Speaker &amp; PCjr sound support, AdLib work (retired)");
+ add_person("Chris Page", "cp88", "Return to launcher, savestate improvements, leak fixes, ... (GSoC 2008 task) (retired)");
+ add_person("Robin Watts", "robinwatts", "ARM assembly routines for nice speedups on several ports; improvements to the sound mixer");
+ end_section();
end_section();
- begin_section("Hungarian");
- add_person("Alex Bevilacqua", "", "");
- add_person("George Kormendi", "GoodOldGeorg", "");
+
+ begin_section("Website (code)");
+ begin_persons();
+ add_person("Fredrik Wendel", "", "(retired)");
+ end_persons();
end_section();
- begin_section("Italian");
- add_person("Matteo Angelino", "Maff", "");
+
+ begin_section("Website (maintenance)");
+ begin_persons();
+ add_person("James Brown", "Ender", "IRC Logs maintainer");
+ add_person("Thierry Crozat", "criezy", "Wiki maintainer");
+ add_person("Andre Heider", "dhewg", "Buildbot maintainer");
+ add_person("Joost Peters", "JoostP", "Doxygen Project Documentation maintainer");
+ add_person("Jordi Vilalta Prat", "jvprat", "Wiki maintainer");
+ add_person("Eugene Sandulenko", "sev", "Forum, IRC channel, Screen Shots and Mailing list maintainer");
+ add_person("John Willis", "DJWillis", "");
+ end_persons();
end_section();
- begin_section("Norwegian (Bokm&aring;l)");
- add_person("Einar Johan T. S&oslash;m&aring;en", "", "");
+
+ begin_section("Website (content)");
+ add_paragraph("All active team members");
end_section();
- begin_section("Norwegian (Nynorsk)");
- add_person("Einar Johan T. S&oslash;m&aring;en", "", "");
+
+ begin_section("Documentation");
+ begin_persons();
+ add_person("Thierry Crozat", "criezy", "Numerous contributions to documentation");
+ add_person("Joachim Eberhard", "joachimeberhard", "Numerous contributions to documentation (retired)");
+ add_person("Matthew Hoops", "clone2727", "Wiki editor");
+ end_persons();
end_section();
- begin_section("Polish");
- add_person("GrajPoPolsku.pl Team", "", "");
+
+ begin_section("Retired Team Members");
+ begin_persons();
+ add_person("Chris Apers", "chrilith ", "Former PalmOS porter");
+ add_person("Ralph Brorsen", "painelf", "Help with GUI implementation");
+ add_person("Jamieson Christian", "jamieson630", "iMUSE, MIDI, all things musical");
+ add_person("Felix Jakschitsch", "yot", "Zak256 reverse engineering");
+ add_person("Mutwin Kraus", "mutle", "Original MacOS porter");
+ add_person("Peter Moraliyski", "ph0x", "Port: GP32");
+ add_person("Jeremy Newman", "laxdragon", "Former webmaster");
+ add_person("Lionel Ulmer", "bbrox", "Port: X11");
+ add_person("Won Star", "wonst719", "Former GP32 porter");
+ end_persons();
end_section();
- begin_section("Brazilian Portuguese");
- add_person("ScummBR Team", "", "");
+ end_section();
+
+
+ begin_section("Other contributions");
+
+ begin_section("Packages");
+ begin_section("AmigaOS 4");
+ add_person("Hans-J&ouml;rg Frieden", "", "(retired)");
+ add_person("Hubert Maier", "Raziel_AOne", "");
+ add_person("Juha Niemim&auml;ki", "", "(retired)");
+ end_section();
+
+ begin_section("Atari/FreeMiNT");
+ add_person("Keith Scroggins", "KeithS", "");
+ end_section();
+
+ begin_section("BeOS");
+ add_person("Stefan Parviainen", "", "");
+ add_person("Luc Schrijvers", "Begasus", "");
+ end_section();
+
+ begin_section("Debian GNU/Linux");
+ add_person("Tore Anderson", "tore", "(retired)");
+ add_person("David Weinehall", "tao", "");
+ end_section();
+
+ begin_section("Fedora / RedHat");
+ add_person("Willem Jan Palenstijn", "wjp", "");
+ end_section();
+
+ begin_section("Mac OS X");
+ add_person("Max Horn", "Fingolfin", "(retired)");
+ add_person("Oystein Eftevaag", "vinterstum", "");
+ end_section();
+
+ begin_section("Mandriva");
+ add_person("Dominik Scherer", "", "(retired)");
+ end_section();
+
+ begin_section("MorphOS");
+ add_person("Fabien Coeurjoly", "fab1", "");
+ add_person("R&uuml;diger Hanke", "", "(retired)");
+ end_section();
+
+ begin_section("OS/2");
+ add_person("Paul Smedley", "Creeping", "");
+ end_section();
+
+ begin_section("SlackWare");
+ add_person("Robert Kelsen", "", "");
+ end_section();
+
+ begin_section("Solaris x86");
+ add_person("Laurent Blume", "laurent", "");
+ end_section();
+
+ begin_section("Solaris SPARC");
+ add_person("Markus Strangl", "WooShell", "");
+ end_section();
+
+ begin_section("Win32");
+ add_person("Travis Howell", "Kirben", "");
+ end_section();
+
+ begin_section("Win64");
+ add_person("Chris Gray", "Psychoid", "(retired)");
+ add_person("Johannes Schickel", "LordHoto", "");
+ end_section();
end_section();
- begin_section("Russian");
- add_person("Eugene Sandulenko", "sev", "");
+
+ begin_section("Translations");
+ begin_persons();
+ add_person("Thierry Crozat", "criezy", "Translation Lead");
+ end_persons();
+ begin_section("Catalan");
+ add_person("Jordi Vilalta Prat", "jvprat", "");
+ end_section();
+ begin_section("Czech");
+ add_person("Zbyn&igrave;k Schwarz", "", "");
+ end_section();
+ begin_section("Danish");
+ add_person("Steffen Nyeland", "", "");
+ end_section();
+ begin_section("French");
+ add_person("Thierry Crozat", "criezy", "");
+ end_section();
+ begin_section("German");
+ add_person("Simon Sawatzki", "SimSaw", "");
+ add_person("Lothar Serra Mari", "Lothar93", "");
+ end_section();
+ begin_section("Hungarian");
+ add_person("Alex Bevilacqua", "", "");
+ add_person("George Kormendi", "GoodOldGeorg", "");
+ end_section();
+ begin_section("Italian");
+ add_person("Matteo Angelino", "Maff", "");
+ end_section();
+ begin_section("Norwegian (Bokm&aring;l)");
+ add_person("Einar Johan T. S&oslash;m&aring;en", "", "");
+ end_section();
+ begin_section("Norwegian (Nynorsk)");
+ add_person("Einar Johan T. S&oslash;m&aring;en", "", "");
+ end_section();
+ begin_section("Polish");
+ add_person("GrajPoPolsku.pl Team", "", "");
+ end_section();
+ begin_section("Brazilian Portuguese");
+ add_person("ScummBR Team", "", "");
+ end_section();
+ begin_section("Russian");
+ add_person("Eugene Sandulenko", "sev", "");
+ end_section();
+ begin_section("Spanish");
+ add_person("Tom&aacute;s Maidagan", "", "");
+ add_person("Jordi Vilalta Prat", "jvprat", "");
+ end_section();
+ begin_section("Swedish");
+ add_person("Hampus Flink", "", "");
+ end_section();
+ begin_section("Ukrainian");
+ add_person("Lubomyr Lisen", "", "");
+ end_section();
end_section();
- begin_section("Spanish");
- add_person("Tom&aacute;s Maidagan", "", "");
+
+ begin_section("Websites (design)");
+ begin_persons();
+ add_person("Dob&oacute; Bal&aacute;zs", "draven", "Website design");
+ add_person("William Claydon", "billwashere", "Skins for doxygen, buildbot and wiki");
+ add_person("Yaroslav Fedevych", "jafd", "HTML/CSS for the website");
+ add_person("Jean Marc Gimenez", "", "ScummVM logo");
+ add_person("David Jensen", "Tyst", "SVG logo conversion");
+ add_person("", "Raina", "ScummVM forum buttons");
+ end_persons();
end_section();
- begin_section("Swedish");
- add_person("Hampus Flink", "", "");
+
+ begin_section("Code contributions");
+ begin_persons();
+ add_person("Ori Avtalion", "salty-horse", "Subtitle control options in the GUI; BASS GUI fixes");
+ add_person("Stuart Caie", "", "Decoders for Amiga and AtariST data files (AGOS engine)");
+ add_person("Paolo Costabel", "", "PSP port contributions");
+ add_person("Martin Doucha", "next_ghost", "CinE engine objectification");
+ add_person("Thomas Fach-Pedersen", "madmoose", "ProTracker module player, Smacker video decoder");
+ add_person("Tobias Gunkel", "hennymcc", "Sound support for C64 version of MM/Zak, Loom PCE support");
+ add_person("Janne Huttunen", "", "V3 actor mask support, Dig/FT SMUSH audio");
+ add_person("Kov&aacute;cs Endre J&aacute;nos", "", "Several fixes for Simon1");
+ add_person("Jeroen Janssen", "japj", "Numerous readability and bugfix patches");
+ add_person("Andreas Karlsson", "Sprawl", "Initial port for SymbianOS");
+ add_person("Claudio Matsuoka", "", "Daily Linux builds");
+ add_person("Thomas Mayer", "", "PSP port contributions");
+ add_person("Sean Murray", "lightcast", "ScummVM tools GUI application (GSoC 2007 task)");
+ add_person("", "n0p", "Windows CE port aspect ratio correction scaler and right click input method");
+ add_person("Mikesch Nepomuk", "mnepomuk", "MI1 VGA floppy patches");
+ add_person("Nicolas Noble", "pixels", "Config file and ALSA support");
+ add_person("Tim Phillips", "realmz", "Initial MI1 CD music support");
+ add_person("", "Quietust", "Sound support for Amiga SCUMM V2/V3 games, MM NES support");
+ add_person("Robert Crossfield", "segra", "Improved support for Apple II/C64 versions of MM");
+ add_person("Andreas R&ouml;ver", "", "Broken Sword I &amp; II MPEG2 cutscene support");
+ add_person("Edward Rudd", "urkle", "Fixes for playing MP3 versions of MI1/Loom audio");
+ add_person("Daniel Schepler", "dschepler", "Final MI1 CD music support, initial Ogg Vorbis support");
+ add_person("Andr&eacute; Souza", "luke_br", "SDL-based OpenGL renderer");
+ end_persons();
end_section();
- begin_section("Ukrainian");
- add_person("Lubomyr Lisen", "", "");
+
+ begin_section("FreeSCI Contributors");
+ begin_persons();
+ add_person("Francois-R Boyer", "", "MT-32 information and mapping code");
+ add_person("Rainer Canavan", "", "IRIX MIDI driver and bug fixes");
+ add_person("Xiaojun Chen", "", "");
+ add_person("Paul David Doherty", "", "Game version information");
+ add_person("Vyacheslav Dikonov", "", "Config script improvements");
+ add_person("Ruediger Hanke", "", "Port to the MorphOS platform");
+ add_person("Matt Hargett", "", "Clean-ups, bugfixes, Hardcore QA, Win32");
+ add_person("Max Horn", "", "SetJump implementation");
+ add_person("Ravi I.", "", "SCI0 sound resource specification");
+ add_person("Emmanuel Jeandel", "", "Bugfixes and bug reports");
+ add_person("Dmitry Jemerov", "", "Port to the Win32 platform, numerous bugfixes");
+ add_person("Chris Kehler", "", "Makefile enhancements");
+ add_person("Christopher T. Lansdown", "", "Original CVS maintainer, Alpha compatibility fixes");
+ add_person("Sergey Lapin", "", "Port of Carl's type 2 decompression code");
+ add_person("Rickard Lind", "", "MT-32->GM MIDI mapping magic, sound research");
+ add_person("Hubert Maier", "", "AmigaOS 4 port");
+ add_person("Johannes Manhave", "", "Document format translation");
+ add_person("Claudio Matsuoka", "", "CVS snapshots, daily builds, BeOS and cygwin ports");
+ add_person("Dark Minister", "", "SCI research (bytecode and parser)");
+ add_person("Carl Muckenhoupt", "", "Sources to the SCI resource viewer tools that started it all");
+ add_person("Anders Baden Nielsen", "", "PPC testing");
+ add_person("Walter van Niftrik", "", "Ports to the Dreamcast and GP32 platforms");
+ add_person("Rune Orsval", "", "Configuration file editor");
+ add_person("Solomon Peachy", "", "SDL ports and much of the sound subsystem");
+ add_person("Robey Pointer", "", "Bug tracking system hosting");
+ add_person("Magnus Reftel", "", "Heap implementation, Python class viewer, bugfixes");
+ add_person("Christoph Reichenbach", "", "UN*X code, VM/Graphics/Sound/other infrastructure");
+ add_person("George Reid", "", "FreeBSD package management");
+ add_person("Lars Skovlund", "", "Project maintenance, most documentation, bugfixes, SCI1 support");
+ add_person("Rink Springer", "", "Port to the DOS platform, several bug fixes");
+ add_person("Rainer De Temple", "", "SCI research");
+ add_person("Sean Terrell", "", "");
+ add_person("Hugues Valois", "", "Game selection menu");
+ add_person("Jordi Vilalta", "", "Numerous code and website clean-up patches");
+ add_person("Petr Vyhnak", "", "The DCL-INFLATE algorithm, many Win32 improvements");
+ add_person("Bas Zoetekouw", "", "Man pages, debian package management, CVS maintenance");
+ end_persons();
+ add_paragraph("Special thanks to Prof. Dr. Gary Nutt ".
+ "for allowing the FreeSCI VM extension as a ".
+ "course project in his Advanced OS course.");
+ add_paragraph("Special thanks to Bob Heitman and Corey Cole for their support of FreeSCI.");
end_section();
- end_section();
- begin_section("Websites (design)");
- begin_persons();
- add_person("Dob&oacute; Bal&aacute;zs", "draven", "Website design");
- add_person("Yaroslav Fedevych", "jafd", "HTML/CSS for the website");
- add_person("David Jensen", "Tyst", "SVG logo conversion");
- add_person("Jean Marc Gimenez", "", "ScummVM logo");
- add_person("", "Raina", "ScummVM forum buttons");
- add_person("William Claydon", "billwashere", "Skins for doxygen, buildbot and wiki");
- end_persons();
- end_section();
+ add_paragraph("And to all the contributors, users, and beta testers we've missed. Thanks!");
- begin_section("Code contributions");
- begin_persons();
- add_person("Ori Avtalion", "salty-horse", "Subtitle control options in the GUI; BASS GUI fixes");
- add_person("Stuart Caie", "", "Decoders for Amiga and AtariST data files (AGOS engine)");
- add_person("Paolo Costabel", "", "PSP port contributions");
- add_person("Martin Doucha", "next_ghost", "CinE engine objectification");
- add_person("Thomas Fach-Pedersen", "madmoose", "ProTracker module player, Smacker video decoder");
- add_person("Tobias Gunkel", "hennymcc", "Sound support for C64 version of MM/Zak, Loom PCE support");
- add_person("Janne Huttunen", "", "V3 actor mask support, Dig/FT SMUSH audio");
- add_person("Kov&aacute;cs Endre J&aacute;nos", "", "Several fixes for Simon1");
- add_person("Jeroen Janssen", "japj", "Numerous readability and bugfix patches");
- add_person("Andreas Karlsson", "Sprawl", "Initial port for SymbianOS");
- add_person("Claudio Matsuoka", "", "Daily Linux builds");
- add_person("Thomas Mayer", "", "PSP port contributions");
- add_person("Sean Murray", "lightcast", "ScummVM tools GUI application (GSoC 2007 task)");
- add_person("", "n0p", "Windows CE port aspect ratio correction scaler and right click input method");
- add_person("Mikesch Nepomuk", "mnepomuk", "MI1 VGA floppy patches");
- add_person("Nicolas Noble", "pixels", "Config file and ALSA support");
- add_person("Tim Phillips", "realmz", "Initial MI1 CD music support");
- add_person("", "Quietust", "Sound support for Amiga SCUMM V2/V3 games, MM NES support");
- add_person("Robert Crossfield", "segra", "Improved support for Apple II/C64 versions of MM");
- add_person("Andreas R&ouml;ver", "", "Broken Sword I &amp; II MPEG2 cutscene support");
- add_person("Edward Rudd", "urkle", "Fixes for playing MP3 versions of MI1/Loom audio");
- add_person("Daniel Schepler", "dschepler", "Final MI1 CD music support, initial Ogg Vorbis support");
- add_person("Andr&eacute; Souza", "luke_br", "SDL-based OpenGL renderer");
- end_persons();
end_section();
- begin_section("FreeSCI Contributors");
- begin_persons();
- add_person("Anders Baden Nielsen", "", "PPC testing");
- add_person("Bas Zoetekouw", "", "Man pages, debian package management, CVS maintenance");
- add_person("Carl Muckenhoupt", "", "Sources to the SCI resource viewer tools that started it all");
- add_person("Chris Kehler", "", "Makefile enhancements");
- add_person("Christoph Reichenbach", "", "UN*X code, VM/Graphics/Sound/other infrastructure");
- add_person("Christopher T. Lansdown", "", "Original CVS maintainer, Alpha compatibility fixes");
- add_person("Claudio Matsuoka", "", "CVS snapshots, daily builds, BeOS and cygwin ports");
- add_person("Dark Minister", "", "SCI research (bytecode and parser)");
- add_person("Dmitry Jemerov", "", "Port to the Win32 platform, numerous bugfixes");
- add_person("Emmanuel Jeandel", "", "Bugfixes and bug reports");
- add_person("Francois-R Boyer", "", "MT-32 information and mapping code");
- add_person("George Reid", "", "FreeBSD package management");
- add_person("Hubert Maier", "", "AmigaOS 4 port");
- add_person("Hugues Valois", "", "Game selection menu");
- add_person("Johannes Manhave", "", "Document format translation");
- add_person("Jordi Vilalta", "", "Numerous code and website clean-up patches");
- add_person("Lars Skovlund", "", "Project maintenance, most documentation, bugfixes, SCI1 support");
- add_person("Magnus Reftel", "", "Heap implementation, Python class viewer, bugfixes");
- add_person("Matt Hargett", "", "Clean-ups, bugfixes, Hardcore QA, Win32");
- add_person("Max Horn", "", "SetJump implementation");
- add_person("Paul David Doherty", "", "Game version information");
- add_person("Petr Vyhnak", "", "The DCL-INFLATE algorithm, many Win32 improvements");
- add_person("Rainer Canavan", "", "IRIX MIDI driver and bug fixes");
- add_person("Rainer De Temple", "", "SCI research");
- add_person("Ravi I.", "", "SCI0 sound resource specification");
- add_person("Ruediger Hanke", "", "Port to the MorphOS platform");
- add_person("Rune Orsval", "", "Configuration file editor");
- add_person("Rickard Lind", "", "MT-32->GM MIDI mapping magic, sound research");
- add_person("Rink Springer", "", "Port to the DOS platform, several bug fixes");
- add_person("Robey Pointer", "", "Bug tracking system hosting");
- add_person("Sergey Lapin", "", "Port of Carl's type 2 decompression code");
- add_person("Solomon Peachy", "", "SDL ports and much of the sound subsystem");
- add_person("Vyacheslav Dikonov", "", "Config script improvements");
- add_person("Walter van Niftrik", "", "Ports to the Dreamcast and GP32 platforms");
- add_person("Xiaojun Chen", "", "");
- add_person("Sean Terrell", "", "");
- end_persons();
- add_paragraph("Special thanks to Prof. Dr. Gary Nutt ".
- "for allowing the FreeSCI VM extension as a ".
- "course project in his Advanced OS course.");
- add_paragraph("Special thanks to Bob Heitman and Corey Cole for their support of FreeSCI.");
- end_section();
- add_paragraph("And to all the contributors, users, and beta testers we've missed. Thanks!");
-
- end_section();
-
-
- # HACK!
- $max_name_width = 16;
-
- begin_section("Special thanks to");
- begin_persons();
- add_person("Sander Buskens", "", "For his work on the initial reversing of Monkey2");
- add_person("", "Canadacow", "For the original MT-32 emulator");
- add_person("Kevin Carnes", "", "For Scumm16, the basis of ScummVM's older gfx codecs");
- add_person("Curt Coder", "", "For the original TrollVM (preAGI) code");
- add_person("Patrick Combet", "Dorian Gray", "For the original Gobliiins ADL player");
- add_person("Ivan Dubrov", "", "For contributing the initial version of the Gobliiins engine");
- add_person("Henrik Engqvist", "qvist", "For generously providing hosting for our buildbot, SVN repository, planet and doxygen sites as well as tons of HD space");
- add_person("DOSBox Team", "", "For their awesome OPL2 and OPL3 emulator");
- add_person("Till Kresslein", "Krest", "For design of modern ScummVM GUI");
- add_person("", "Jezar", "For his freeverb filter implementation");
- add_person("Jim Leiterman", "", "Various info on his FM-TOWNS/Marty SCUMM ports");
- add_person("", "lloyd", "For deep tech details about C64 Zak &amp; MM");
- add_person("Sarien Team", "", "Original AGI engine code");
- add_person("Jimmi Th&oslash;gersen", "", "For ScummRev, and much obscure code/documentation");
- add_person("", "Tristan", "For additional work on the original MT-32 emulator");
- add_person("James Woodcock", "", "Soundtrack enhancements");
- end_persons();
-
- add_paragraph(
- "Tony Warriner and everyone at Revolution Software Ltd. for sharing ".
- "with us the source of some of their brilliant games, allowing us to ".
- "release Beneath a Steel Sky as freeware... and generally being ".
- "supportive above and beyond the call of duty.");
-
- add_paragraph(
- "John Passfield and Steve Stamatiadis for sharing the source of their ".
- "classic title, Flight of the Amazon Queen and also being incredibly ".
- "supportive.");
-
- add_paragraph(
- "Joe Pearce from The Wyrmkeep Entertainment Co. for sharing the source ".
- "of their famous title Inherit the Earth and always prompt replies to ".
- "our questions.");
-
- add_paragraph(
- "Aric Wilmunder, Ron Gilbert, David Fox, Vince Lee, and all those at ".
- "LucasFilm/LucasArts who made SCUMM the insane mess to reimplement ".
- "that it is today. Feel free to drop us a line and tell us what you ".
- "think, guys!");
-
- add_paragraph(
- "Alan Bridgman, Simon Woodroffe and everyone at Adventure Soft for ".
- "sharing the source code of some of their games with us.");
-
- add_paragraph(
- "John Young, Colin Smythe and especially Terry Pratchett himself for ".
- "sharing the source code of Discworld I &amp; II with us.");
-
- add_paragraph(
- "Emilio de Paz Arag&oacute;n from Alcachofa Soft for sharing the source code ".
- "of Drascula: The Vampire Strikes Back with us and his generosity with ".
- "freewaring the game.");
-
- add_paragraph(
- "David P. Gray from Gray Design Associates for sharing the source code ".
- "of the Hugo trilogy.");
-
- add_paragraph(
- "Broken Sword 2.5 team for providing sources of their engine and their great ".
- "support.");
-
- end_section();
+ # HACK!
+ $max_name_width = 16;
+
+ begin_section("Special thanks to");
+ begin_persons();
+ add_person("Sander Buskens", "", "For his work on the initial reversing of Monkey2");
+ add_person("", "Canadacow", "For the original MT-32 emulator");
+ add_person("Kevin Carnes", "", "For Scumm16, the basis of ScummVM's older gfx codecs");
+ add_person("Curt Coder", "", "For the original TrollVM (preAGI) code");
+ add_person("Patrick Combet", "Dorian Gray", "For the original Gobliiins ADL player");
+ add_person("Ivan Dubrov", "", "For contributing the initial version of the Gobliiins engine");
+ add_person("Henrik Engqvist", "qvist", "For generously providing hosting for our buildbot, SVN repository, planet and doxygen sites as well as tons of HD space");
+ add_person("DOSBox Team", "", "For their awesome OPL2 and OPL3 emulator");
+ add_person("Till Kresslein", "Krest", "For design of modern ScummVM GUI");
+ add_person("", "Jezar", "For his freeverb filter implementation");
+ add_person("Jim Leiterman", "", "Various info on his FM-TOWNS/Marty SCUMM ports");
+ add_person("", "lloyd", "For deep tech details about C64 Zak &amp; MM");
+ add_person("Sarien Team", "", "Original AGI engine code");
+ add_person("Jimmi Th&oslash;gersen", "", "For ScummRev, and much obscure code/documentation");
+ add_person("", "Tristan", "For additional work on the original MT-32 emulator");
+ add_person("James Woodcock", "", "Soundtrack enhancements");
+ end_persons();
+
+ add_paragraph("Some icons by Yusuke Kamiyamane");
+
+ add_paragraph(
+ "Tony Warriner and everyone at Revolution Software Ltd. for sharing ".
+ "with us the source of some of their brilliant games, allowing us to ".
+ "release Beneath a Steel Sky as freeware... and generally being ".
+ "supportive above and beyond the call of duty.");
+
+ add_paragraph(
+ "John Passfield and Steve Stamatiadis for sharing the source of their ".
+ "classic title, Flight of the Amazon Queen and also being incredibly ".
+ "supportive.");
+
+ add_paragraph(
+ "Joe Pearce from The Wyrmkeep Entertainment Co. for sharing the source ".
+ "of their famous title Inherit the Earth and always prompt replies to ".
+ "our questions.");
+
+ add_paragraph(
+ "Aric Wilmunder, Ron Gilbert, David Fox, Vince Lee, and all those at ".
+ "LucasFilm/LucasArts who made SCUMM the insane mess to reimplement ".
+ "that it is today. Feel free to drop us a line and tell us what you ".
+ "think, guys!");
+
+ add_paragraph(
+ "Alan Bridgman, Simon Woodroffe and everyone at Adventure Soft for ".
+ "sharing the source code of some of their games with us.");
+
+ add_paragraph(
+ "John Young, Colin Smythe and especially Terry Pratchett himself for ".
+ "sharing the source code of Discworld I &amp; II with us.");
+
+ add_paragraph(
+ "Emilio de Paz Arag&oacute;n from Alcachofa Soft for sharing the source code ".
+ "of Drascula: The Vampire Strikes Back with us and his generosity with ".
+ "freewaring the game.");
+
+ add_paragraph(
+ "David P. Gray from Gray Design Associates for sharing the source code ".
+ "of the Hugo trilogy.");
+
+ add_paragraph(
+ "Broken Sword 2.5 team for providing sources of their engine and their great ".
+ "support.");
+
+ end_section();
end_credits();
diff --git a/devtools/md5table.c b/devtools/md5table.c
index 9e57edbc35..cb1434c90b 100644
--- a/devtools/md5table.c
+++ b/devtools/md5table.c
@@ -81,6 +81,7 @@ static const StringMap platformMap[] = {
{ "C64", "kPlatformC64" },
{ "DOS", "kPlatformPC" },
{ "FM-TOWNS", "kPlatformFMTowns" },
+ { "iOS", "kPlatformIOS" },
{ "Mac", "kPlatformMacintosh" },
{ "NES", "kPlatformNES" },
{ "PC-Engine", "kPlatformPCEngine" },
diff --git a/devtools/sci/musicplayer.cpp b/devtools/sci/musicplayer.cpp
index d225195f71..25f2d684a8 100644
--- a/devtools/sci/musicplayer.cpp
+++ b/devtools/sci/musicplayer.cpp
@@ -90,7 +90,7 @@ int main(int argc, char** argv) {
return 2;
}
sfx_song_set_status(&sound, DUMMY_SOUND_HANDLE, SOUND_STATUS_PLAYING);
- while (sfx_poll(&sound, &dummy1, &dummy2) != SI_FINISHED) {};
+ while (sfx_poll(&sound, &dummy1, &dummy2) != SI_FINISHED) {}
}
sfx_exit(&sound);
scir_free_resource_manager(resmgr);
diff --git a/devtools/scumm-md5.txt b/devtools/scumm-md5.txt
index 53e3f38a2c..1682879385 100644
--- a/devtools/scumm-md5.txt
+++ b/devtools/scumm-md5.txt
@@ -759,6 +759,7 @@ puttzoo Putt-Putt Saves the Zoo
92e7727e67f5cd979d8a1070e4eb8cb3 -1 en All HE 98.5 Updated - cyx
3a3e592b074f595489f7f11e150c398d -1 us Windows HE 99 Updated - Adrian
c5cc7cba02a2fbd539c4439e775b0536 43470 de Windows HE 99 Updated - Lightkey
+ 5c9cecbd2952ccec14c9ecebf5822a34 -1 en iOS HE 100 - - clone2727
3486ede0f904789267d4bcc5537a46d4 14337 en Mac - Demo - khalek
d220d154aafbfa12bd6f3ab1b2dae420 -1 de Mac - Demo - Joachim Eberhard
diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm
index 8a52435b0c..fa3a4f7957 100644
--- a/devtools/tasmrecover/dreamweb/dreamweb.asm
+++ b/devtools/tasmrecover/dreamweb/dreamweb.asm
@@ -1129,6 +1129,8 @@ Screenupdate proc near
call newplace
call mainscreen
+ cmp quitrequested, 0
+ jnz finishearly
call animpointer
call showpointer
cmp watchingtime,0
@@ -5914,7 +5916,7 @@ Fileheader db "DREAMWEB DATA FILE "
db "CREATIVE REALITY"
Filedata dw 20 dup (0)
Extradata db 6 dup (0)
-Headerlen equ $-Fileheader
+Headerlen equ 96 ; $-Fileheader
Roomdata db "DREAMWEB.R00",0 ;Ryan's apartment
diff --git a/devtools/tasmrecover/dreamweb/object.asm b/devtools/tasmrecover/dreamweb/object.asm
index 807a100052..6a5f7c30a8 100644
--- a/devtools/tasmrecover/dreamweb/object.asm
+++ b/devtools/tasmrecover/dreamweb/object.asm
@@ -375,7 +375,7 @@ invlist1: dw 273,320,157,198,getbackfromob
dw inventx+167,inventx+167+(18*3),inventy-18,inventy-2,incryanpage
dw inventx
openchangesize: dw inventx+(4*itempicsize)
- dw inventy+100,inventy+100+itempicsize,useopened
+invlist1continued: dw inventy+100,inventy+100+itempicsize,useopened
dw inventx,inventx+(5*itempicsize)
dw inventy,inventy+(2*itempicsize),intoinv
dw 0,320,0,200,blank
diff --git a/devtools/tasmrecover/dreamweb/saveload.asm b/devtools/tasmrecover/dreamweb/saveload.asm
index 6c98774a0f..f3c92d36f6 100644
--- a/devtools/tasmrecover/dreamweb/saveload.asm
+++ b/devtools/tasmrecover/dreamweb/saveload.asm
@@ -1502,7 +1502,6 @@ Loadold proc near
alreadyloadold: mov ax,mousebutton
and ax,1
jz noloadold
- mov ax,0ffffh
call doload
cmp getback,4
jz noloadold
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index c4bcbb176c..7c89ab44f5 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -24,189 +24,1556 @@
from tasm.parser import parser
from tasm.cpp import cpp
-p = parser()
+p = parser(skip_binary_data = [
+ # These data blobs are not output
+ # dreamweb.asm
+ 'characterset1',
+ 'roomdata',
+ 'mainlist',
+ 'mainlist2',
+ 'menulist',
+ 'folderlist',
+ 'stak',
+ 'keyconverttab',
+ 'atmospherelist',
+ 'linedata',
+ 'madeuproomdat',
+ 'recname',
+ 'fileheader',
+ 'filedata',
+ 'extradata',
+ 'keybuffer',
+ 'spritename1',
+ 'icongraphics0',
+ 'icongraphics1',
+ 'savenames',
+ 'volumetabname',
+ # keypad.asm
+ 'keypadlist',
+ 'symbollist',
+ 'diarylist',
+ # newplace.asm
+ 'destlist',
+ # object.asm
+ 'invlist1',
+ 'invlist1continued',
+ 'examlist',
+ 'withlist1',
+ # saveload.asm
+ 'loadlist',
+ 'savelist',
+ 'gameerror1',
+ 'gameerror2',
+ 'gameerror3',
+ 'gameerror4',
+ 'gameerror5',
+ 'gameerror6',
+ 'gameerror7',
+ 'gameerror8',
+ 'error2patch',
+ 'error6patch',
+ 'gameinfo',
+ 'endgametext1',
+ 'savefiles',
+ 'decidelist',
+ 'discopslist',
+ 'opslist',
+ # sblaster.asm
+ 'dmaaddresses',
+ 'speechfilename',
+ 'speechfile',
+ # sprite.asm
+ 'reelcalls',
+ 'facelist',
+ 'rainlocations',
+ 'roombyroom',
+ 'r0','r1','r2','r6','r8','r9','r10','r11','r12','r13','r14',
+ 'r20','r22','r23','r25','r26','r27','r28','r29',
+ 'r45','r46','r47','r52','r53','r55',
+ #talk.asm
+ 'talklist',
+ 'quitlist',
+ # titles.asm
+ 'introtextname',
+ 'title0graphics',
+ 'title1graphics',
+ 'title2graphics',
+ 'title3graphics',
+ 'title4graphics',
+ 'title5graphics',
+ 'title6graphics',
+ # use.asm
+ 'uselist',
+ # vars.asm
+ 'currentset',
+ 'icons1',
+ 'icons2',
+ 'tempcharset',
+ 'currentframe',
+ 'takeoff',
+ 'reelpointer',
+ 'needsoundbuff',
+ 'oldint8seg',
+ 'oldint8add',
+ 'oldint9seg',
+ 'oldint9add',
+ 'soundbuffer',
+ 'soundbufferad',
+ 'soundbufferpage',
+ 'soundtimes',
+ 'oldsoundintseg',
+ 'oldsoundintadd',
+ 'soundbaseadd',
+ 'dsp_status',
+ 'dsp_write',
+ 'dmaaddress',
+ 'soundint',
+ 'sounddmachannel',
+ 'sampleplaying',
+ 'testresult',
+ 'currentirq',
+ 'gameerror',
+ 'howmuchalloc',
+ 'inputport',
+ 'emmhandle',
+ 'emmpageframe',
+ 'emmhardwarepage',
+ 'ch0emmpage',
+ 'ch0offset',
+ 'ch0oldemmpage',
+ 'ch0oldoffset',
+ 'ch0oldblockstocopy',
+ 'ch1emmpage',
+ 'ch1offset',
+ 'ch1blocksplayed',
+ 'soundemmpage',
+ 'speechemmpage',
+ # vgagrafx.asm
+ 'cityname',
+ 'extragraphics1',
+ 'icongraphics8',
+ 'shaketable',
+ 'symbolgraphic',
+ 'travelgraphic1',
+ 'travelgraphic2',
+ 'foldergraphic1',
+ 'foldergraphic2',
+ 'foldergraphic3',
+ 'foldertext',
+ 'traveltextname',
+ 'mongraphics2',
+ 'spritename3',
+ 'mongraphicname',
+ 'puzzletextname',
+ 'commandtextname',
+ 'characterset2',
+ 'characterset3',
+ 'monitorfile1',
+ 'monitorfile2',
+ 'monitorfile10',
+ 'monitorfile11',
+ 'monitorfile12',
+ 'monitorfile13',
+ 'monitorfile20',
+ 'monitorfile21',
+ 'monitorfile22',
+ 'monitorfile23',
+ 'monitorfile24',
+ 'introtextfile',
+ 'palettescreen',
+ 'idname',
+ 'samplename',
+ 'diarygraphic',
+ 'diarytext',
+ 'title7graphics',
+ 'handle',
+ # 'basicsample', # This can't be removed due to tasm-recover limitations
+ 'endtextname',
+ 'gungraphic',
+ 'monkface',
+ ])
p.strip_path = 3
context = p.parse('dreamweb/dreamweb.asm')
p.link()
generator = cpp(context, "DreamGen", blacklist = [
# These functions are not processed
- 'randomnumber',
- 'quickquit',
- 'quickquit2',
- 'seecommandtail',
- 'multiget',
- 'multiput',
- 'multidump',
- 'frameoutnm',
- 'frameoutbh',
- 'frameoutfx',
- 'cls',
- 'clearwork',
- 'printundermon',
- 'kernchars',
- 'getnextword',
- 'getnumber',
- 'dumptextline',
- 'printboth',
- 'printchar',
- 'printdirect',
- 'printslow',
- 'printmessage',
- 'usetimedtext',
- 'dumptimedtext',
- 'setuptimedtemp',
- 'putundertimed',
- 'getundertimed',
- 'worktoscreen',
- 'width160',
- 'convertkey',
- 'readabyte',
- 'readoneblock',
- 'printsprites',
- 'printasprite',
- 'eraseoldobs',
- 'clearsprites',
- 'makesprite',
- 'showframe',
- 'initman',
+
'aboutturn',
- 'readheader',
- 'fillspace',
- 'getroomdata',
- 'startloading',
- 'showreelframe',
- 'showgamereel',
- 'getreelframeax',
- 'findsource',
- 'walking',
- 'autosetwalk',
- 'checkdest',
- 'spriteupdate',
- 'dodoor',
- 'lockeddoorway',
- 'liftsprite',
- 'frameoutv',
- 'modifychar',
+ 'accesslightoff',
+ 'accesslighton',
+ 'actualload',
+ 'actualsave',
+ 'addalong',
+ 'addlength',
+ 'addtopeoplelist',
+ 'addtopresslist',
+ 'adjustlen',
+ 'advisor',
+ 'afterintroroom',
+ 'afternewroom',
+ 'aide',
+ 'alleybarksound',
+ 'allocatebuffers',
+ 'allocateload',
+ 'allocatemem',
'allocatework',
- 'lockmon',
+ 'allpalette',
+ 'allpointer',
+ 'animpointer',
+ 'atmospheres',
+ 'attendant',
+ 'autoappear',
+ 'autolook',
+ 'autosetwalk',
+ 'backobject',
+ 'barwoman',
+ 'biblequote',
+ 'blank',
+ 'blockget',
+ 'blocknametext',
+ 'bossman',
+ 'bothchannels',
+ 'bresenhams',
+ 'buttoneight',
+ 'buttonenter',
+ 'buttonfive',
+ 'buttonfour',
+ 'buttonnine',
+ 'buttonnought',
+ 'buttonone',
+ 'buttonpress',
+ 'buttonseven',
+ 'buttonsix',
+ 'buttonthree',
+ 'buttontwo',
+ 'calcfrframe',
+ 'calcmapad',
+ 'calledensdlift',
+ 'calledenslift',
+ 'callhotellift',
'cancelch0',
'cancelch1',
- 'getroomspaths',
- 'makebackob',
- 'dealwithspecial',
- 'plotreel',
- 'facerightway',
- 'zoom',
- 'crosshair',
- 'showrain',
- 'domix',
+ 'candles',
+ 'candles1',
+ 'candles2',
+ 'cantdrop',
+ 'carparkdrip',
+ 'channel0only',
'channel0tran',
- 'makenextblock',
- 'loopchannel0',
- 'parseblaster',
- 'deltextline',
- 'doblocks',
- 'checkifperson',
- 'checkiffree',
+ 'channel1only',
+ 'checkbasemem',
+ 'checkcoords',
+ 'checkdest',
+ 'checkforemm',
+ 'checkforshake',
'checkifex',
- 'getreelstart',
- 'findobname',
- 'copyname',
+ 'checkiffree',
+ 'checkifpathison',
+ 'checkifperson',
+ 'checkifset',
+ 'checkinput',
+ 'checkone',
+ 'checksoundint',
+ 'checkspeed',
+ 'chewy',
+ 'clearbeforeload',
+ 'clearendpal',
+ 'clearpalette',
+ 'clearreels',
+ 'clearrest',
+ 'clearsprites',
+ 'clearstartpal',
+ 'clearwork',
+ 'closefile',
+ 'cls',
+ 'commandonly',
'commandwithob',
- 'showpanel',
- 'updatepeople',
- 'madmantext',
- 'madmode',
- 'movemap',
+ 'compare',
+ 'constant',
+ 'convertkey',
+ 'convicons',
+ 'convnum',
+ 'copper',
+ 'copyname',
+ 'createfile',
+ 'createname',
+ 'createpanel',
+ 'createpanel2',
+ 'credits',
+ 'crosshair',
+ 'dealwithspecial',
+ 'deallocatemem',
+ 'decide',
+ 'delchar',
+ 'delcurs',
+ 'deletetaken',
+ 'deleverything',
+ 'delpointer',
+ 'delsprite',
+ 'deltextline',
+ 'delthisone',
+ 'destselect',
+ 'diarykeyp',
+ 'diarykeyn',
+ 'disablepath',
+ 'disablesoundint',
+ 'discops',
+ 'dmaend',
+ 'doblocks',
+ 'dochange',
+ 'dodoor',
+ 'dofade',
+ 'doload',
+ 'dolook',
+ 'domix',
+ 'dontloadseg',
'doorway',
- 'widedoor',
- 'showallobs',
- 'addalong',
- 'addlength',
- 'getdimension',
- 'getxad',
- 'getyad',
- 'getmapad',
- 'calcmapad',
- 'calcfrframe',
+ 'dosaveload',
+ 'dosreturn',
+ 'doshake',
+ 'drawflags',
+ 'drawfloor',
+ 'drinker',
+ 'droperror',
+ 'drunk',
+ 'dumpblink',
+ 'dumpcurrent',
+ 'dumpeverything',
+ 'dumpkeypad',
+ 'dumpmap',
+ 'dumpmenu',
+ 'dumppointer',
+ 'dumpsymbol',
+ 'dumpsymbox',
+ 'dumptextline',
+ 'dumptimedtext',
+ 'dumpwatch',
+ 'dumpzoom',
+ 'eden',
+ 'edeninbath',
+ 'edenscdplayer',
+ 'enablesoundint',
+ 'endgame',
+ 'endpaltostart',
+ 'entercode',
+ 'entersymbol',
+ 'eraseoldobs',
+ 'error',
+ 'errormessage1',
+ 'errormessage2',
+ 'errormessage3',
+ 'examicon',
+ 'examinventory',
+ 'examineob',
+ 'examineobtext',
+ 'facerightway',
+ 'fadecalculation',
+ 'fadedos',
+ 'fadefromwhite',
+ 'fadescreenup',
+ 'fadescreenups',
+ 'fadescreenuphalf',
+ 'fadescreendown',
+ 'fadescreendowns',
+ 'fadetowhite',
+ 'fadeupmonfirst',
+ 'fadeupyellows',
+ 'femalefan',
+ 'fillryan',
+ 'fillspace',
'finalframe',
- 'commandonly',
- 'makename',
+ 'findallryan',
'findlen',
- 'blocknametext',
- 'walktotext',
- 'personnametext',
- 'findxyfrompath',
+ 'findnextcolon',
+ 'findobname',
'findormake',
- 'setallchanges',
- 'dochange',
- 'deletetaken',
- 'placesetobject',
- 'removesetobject',
- 'showallfree',
- 'showallex',
- 'adjustlen',
+ 'findroominloc',
+ 'findsource',
+ 'findxyfrompath',
'finishedwalking',
- 'checkone',
+ 'folderexit',
+ 'folderhints',
+ 'foghornsound',
+ 'frameoutbh',
+ 'frameoutfx',
+ 'frameoutnm',
+ 'frameoutv',
+ 'gamer',
+ 'gates',
+ 'generalerror',
+ 'getanyaddir',
+ 'getback1',
+ 'getbackfromob',
+ 'getbackfromops',
+ 'getbacktoops',
'getblockofpixel',
+ 'getdimension',
+ 'getexpos',
'getflagunderp',
- 'walkandexamine',
+ 'getlocation',
+ 'getmapad',
+ 'getnamepos',
+ 'getnextword',
+ 'getnumber',
+ 'getpersframe',
+ 'getreelframeax',
+ 'getreelstart',
+ 'getridofall',
+ 'getridofpit',
+ 'getridofreels',
+ 'getridoftemp',
+ 'getridoftemp2',
+ 'getridoftemp3',
+ 'getridoftempcharset',
+ 'getridoftempsp',
+ 'getridoftemptext',
+ 'getroomdata',
+ 'getroomspaths',
+ 'gettime',
+ 'gettingshot',
+ 'getundermenu',
+ 'getundertimed',
+ 'getunderzoom',
+ 'getxad',
+ 'getyad',
+ 'grafittidoor',
+ 'greyscalesum',
+ 'handclap',
+ 'hangon',
+ 'hangoncurs',
+ 'hangone',
+ 'hangonp',
+ 'hangonpq',
+ 'hangonw',
+ 'hotelbell',
+ 'hotelcontrol',
+ 'initialinv',
+ 'initman',
+ 'initrain',
+ 'input',
+ 'interupttest',
+ 'interviewer',
+ 'intro',
+ 'intro1text',
+ 'intro2text',
+ 'intro3text',
+ 'intromagic1',
+ 'intromagic2',
+ 'intromagic3',
+ 'intromonks1',
+ 'intromonks2',
+ 'intromusic',
+ 'inventory',
+ 'isitdescribed',
+ 'isitright',
+ 'isitworn',
+ 'issetobonmap',
+ 'keeper',
+ 'kernchars',
+ 'keyboardread',
+ 'lastdest',
+ 'lastfolder',
+ 'liftnoise',
+ 'liftsprite',
+ 'loadcart',
+ 'loadfolder',
+ 'loadgame',
+ 'loadintroroom',
+ 'loadintotemp',
+ 'loadintotemp2',
+ 'loadintotemp3',
+ 'loadkeypad',
+ 'loadmenu',
+ 'loadnews',
+ 'loadold',
+ 'loadpalfromiff',
+ 'loadpersonal',
+ 'loadposition',
+ 'loadseg',
+ 'loadspeech',
+ 'loadroom',
+ 'loadroomssample',
+ 'loadsample',
+ 'loadsavebox',
+ 'loadsecondsample',
+ 'loadtempcharset',
+ 'loadtemptext',
+ 'loadtraveltext',
+ 'lockeddoorway',
+ 'locklightoff',
+ 'locklighton',
+ 'lockmon',
+ 'look',
+ 'loopchannel0',
+ 'louis',
+ 'louischair',
+ 'madman',
+ 'madmanrun',
+ 'madmanstelly',
+ 'madmantext',
+ 'madmode',
+ 'mainman',
+ 'mainscreen',
+ 'makebackob',
+ 'makeheader',
+ 'makemainscreen',
+ 'makename',
+ 'makenextblock',
+ 'makesprite',
+ 'makeworn',
+ 'malefan',
+ 'manasleep',
+ 'manasleep2',
+ 'mansatstill',
+ 'maptopanel',
+ 'middlepanel',
+ 'mode640x480',
+ 'modifychar',
+ 'monitorlogo',
+ 'monkandryan',
+ 'monks2text',
+ 'monkspeaking',
+ 'monmessage',
+ 'monprint',
+ 'moretalk',
+ 'mousecall',
+ 'movemap',
+ 'multidump',
+ 'multiget',
+ 'multiput',
+ 'namestoold',
+ 'neterror',
+ 'newgame',
+ 'newplace',
+ 'nextdest',
+ 'nextfolder',
+ 'nextsymbol',
+ 'obicons',
'obname',
- 'delpointer',
- 'showblink',
- 'dumpblink',
- 'dumppointer',
- 'showpointer',
- 'animpointer',
- 'checkcoords',
+ 'obpicture',
+ 'obsthatdothings',
+ 'obtoinv',
+ 'oldtonames',
+ 'onedigit',
+ 'openeden',
+ 'openfile',
+ 'openfilefromc',
+ 'openfilenocheck',
+ 'openforsave',
+ 'openhoteldoor',
+ 'openhoteldoor2',
+ 'openinv',
+ 'openlouis',
+ 'openpoolboss',
+ 'openryan',
+ 'opensarters',
+ 'opentomb',
+ 'opentvdoor',
+ 'openyourneighbour',
+ 'othersmoker',
+ 'out22c',
+ 'paltoendpal',
+ 'paltostartpal',
+ 'panelicons1',
+ 'paneltomap',
+ 'parseblaster',
+ 'personnametext',
+ 'pickupob',
+ 'pitinterupt',
+ 'pixelcheckset',
+ 'placefreeobject',
+ 'placesetobject',
+ 'playchannel0',
+ 'playchannel1',
+ 'playguitar',
+ 'plotreel',
+ 'powerlightoff',
+ 'powerlighton',
+ 'priest',
+ 'priesttext',
+ 'printasprite',
+ 'printboth',
+ 'printchar',
+ 'printcurs',
+ 'printdirect',
+ 'printlogo',
+ 'printmessage',
+ 'printoutermon',
+ 'printslow',
+ 'printsprites',
+ 'printundermon',
+ 'putbackobstuff',
+ 'putundermenu',
+ 'putundertimed',
+ 'putunderzoom',
+ 'quickquit',
+ 'quickquit2',
+ 'quitkey',
+ 'quitsymbol',
+ 'random',
+ 'randomaccess',
+ 'randomnum1',
+ 'randomnum2',
+ 'randomnumber',
+ 'readabyte',
+ 'readcitypic',
+ 'readdesticon',
+ 'readfromfile',
+ 'readheader',
+ 'readkey',
'readmouse',
'readmouse1',
'readmouse2',
'readmouse3',
'readmouse4',
- 'waitframes',
- 'drawflags',
- 'addtopeoplelist',
- 'getexpos',
- 'paneltomap',
- 'maptopanel',
- 'dumpmap',
- 'obpicture',
- 'delthisone',
+ 'readoneblock',
+ 'readsetdata',
+ 'realcredits',
+ 'reconstruct',
+ 'redes',
+ 'redrawmainscrn',
+ 'reelsonscreen',
+ 'reexfromopen',
+ 'removeemm',
+ 'removesetobject',
+ 'resetkeyboard',
+ 'restoreall',
+ 'restoreems',
+ 'restorereels',
+ 'rockstar',
+ 'rollendcredits',
+ 'rollendcredits2',
+ 'roomname',
+ 'runintroseq',
+ 'saveems',
+ 'savefileread',
+ 'savefilewrite',
+ 'savegame',
+ 'saveload',
+ 'saveposition',
+ 'saveseg',
+ 'scanfornames',
+ 'screenupdate',
+ 'scrollmonitor',
+ 'security',
+ 'seecommandtail',
+ 'selectlocation',
+ 'selectslot2',
+ 'set16colpalette',
+ 'setallchanges',
+ 'setbotleft',
+ 'setbotright',
+ 'setkeyboardint',
+ 'setlocation',
+ 'setmode',
+ 'setmouse',
+ 'setsoundoff',
+ 'settopleft',
+ 'settopright',
+ 'setupemm',
+ 'setuppit',
+ 'setuptimedtemp',
+ 'setwalk',
+ 'showallex',
+ 'showallfree',
+ 'showallobs',
+ 'showarrows',
+ 'showblink',
+ 'showbyte',
+ 'showcity',
+ 'showcurrentfile',
+ 'showdecisions',
+ 'showdiary',
+ 'showdiscops',
+ 'showexit',
+ 'showfirstuse',
+ 'showfolder',
+ 'showframe',
+ 'showgamereel',
+ 'showgroup',
+ 'showgun',
+ 'showicon',
+ 'showkeypad',
+ 'showleftpage',
+ 'showloadops',
+ 'showmainops',
+ 'showman',
+ 'showmenu',
+ 'showmonk',
+ 'shownames',
+ 'showopbox',
+ 'showoutermenu',
+ 'showouterpad',
+ 'showpanel',
+ 'showpcx',
+ 'showpointer',
+ 'showpuztext',
+ 'showrain',
+ 'showreelframe',
+ 'showrightpage',
+ 'showryanpage',
+ 'showsaveops',
+ 'showseconduse',
+ 'showsymbol',
+ 'showtime',
+ 'showwatch',
+ 'showword',
+ 'singlekey',
+ 'sitdowninbar',
+ 'slabdoora',
+ 'slabdoorb',
+ 'slabdoorc',
+ 'slabdoord',
+ 'slabdoore',
+ 'slabdoorf',
+ 'smallcandle',
+ 'smokebloke',
+ 'soldier1',
+ 'sortoutmap',
+ 'soundend',
+ 'soundonreels',
+ 'soundstartup',
+ 'sparky',
+ 'sparkydrip',
+ 'splitintolines',
+ 'spriteupdate',
+ 'standardload',
+ 'startdmablock',
+ 'startloading',
+ 'startpaltoend',
+ 'startup',
+ 'startup1',
+ 'steady',
+ 'storeit',
+ 'switchryanoff',
+ 'switchryanon',
+ 'talk',
+ 'tattooman',
+ 'textforend',
+ 'textformonk',
+ 'titles',
+ 'train',
'transferinv',
- 'obicons',
- 'compare',
- 'pixelcheckset',
- 'turnpathon',
- 'turnpathoff',
- 'turnanypathon',
+ 'transfertext',
+ 'trapdoor',
+ 'trysoundalloc',
'turnanypathoff',
- 'isitdescribed',
- 'checkifset',
- 'checkifpathison',
- 'delsprite',
- 'dumpeverything',
- 'isitworn',
- 'makeworn',
- 'obtoinv',
- 'showryanpage',
- 'findallryan',
- 'fillryan',
+ 'turnanypathon',
+ 'turnonpower',
+ 'turnpathoff',
+ 'turnpathon',
+ 'twodigitnum',
+ 'undertextline',
+ 'updatepeople',
+ 'usebalcony',
+ 'usebuttona',
+ 'usecardreader1',
+ 'usecardreader2',
+ 'usecardreader3',
+ 'usecart',
+ 'usecharset1',
+ 'usechurchgate',
+ 'usechurchhole',
+ 'useclearbox',
+ 'usecooker',
+ 'usecoveredbox',
+ 'usediary',
+ 'usedryer',
+ 'useelevator1',
+ 'useelevator2',
+ 'useelevator3',
+ 'useelevator4',
+ 'useelevator5',
+ 'useelvdoor',
+ 'usefullcart',
+ 'usehole',
+ 'useladder',
+ 'useladderb',
+ 'uselighter',
+ 'usehatch',
+ 'usemenu',
+ 'usemon',
+ 'useobject',
+ 'useplate',
+ 'useplinth',
+ 'usepoolreader',
+ 'userailing',
'useroutine',
- 'hangon',
- 'hangonp',
- 'findnextcolon',
+ 'useshield',
+ 'usetempcharset',
'usetext',
- 'bresenhams',
- 'examineobtext',
+ 'usetimedtext',
+ 'usetrainer',
+ 'usewall',
+ 'usewinch',
+ 'usewindow',
+ 'usewire',
+ 'viewfolder',
+ 'vsync',
+ 'volumeadjust',
+ 'waitframes',
+ 'walkandexamine',
+ 'walking',
+ 'walkintoroom',
+ 'walktotext',
+ 'watchcount',
+ 'watchreel',
+ 'wearwatch',
+ 'wearshades',
+ 'wheelsound',
+ 'widedoor',
+ 'width160',
+ 'workoutframes',
+ 'worktoscreen',
+ 'worktoscreenm',
+ 'wornerror',
+ 'zoom',
+ 'zoomicon',
+ 'zoomonoff',
], skip_output = [
# These functions are processed but not output
'dreamweb',
- 'backobject',
- 'mainman',
- 'madman',
- 'loadgame',
- 'savegame',
- 'doload'
- ])
+ ], skip_dispatch_call = True, skip_addr_constants = True,
+ header_omit_blacklisted = True,
+ function_name_remapping = {
+ # This remaps the function naming at output for readability
+ 'aboutturn' : 'aboutTurn',
+ 'accesslightoff' : 'accessLightOff',
+ 'accesslighton' : 'accessLightOn',
+ 'actualload' : 'actualLoad',
+ 'actualsave' : 'actualSave',
+ 'addalong' : 'addAlong',
+ 'additionaltext' : 'additionalText',
+ 'addlength' : 'addLength',
+ 'addtopeoplelist' : 'addToPeopleList',
+ 'addtopresslist' : 'addToPressList',
+ 'adjustdown' : 'adjustDown',
+ 'adjustleft' : 'adjustLeft',
+ 'adjustlen' : 'adjustLen',
+ 'adjustright' : 'adjustRight',
+ 'adjustup' : 'adjustUp',
+ 'advisor' : 'advisor',
+ 'afterintroroom' : 'afterIntroRoom',
+ 'afternewroom' : 'afterNewRoom',
+ 'aide' : 'aide',
+ 'alleybarksound' : 'alleyBarkSound',
+ 'allocatebuffers' : 'allocateBuffers',
+ 'allocateload' : 'allocateLoad',
+ 'allocatemem' : 'allocateMem',
+ 'allocatework' : 'allocateWork',
+ 'allpointer' : 'allPointer',
+ 'animpointer' : 'animPointer',
+ 'atmospheres' : 'atmospheres',
+ 'attendant' : 'attendant',
+ 'autoappear' : 'autoAppear',
+ 'autolook' : 'autoLook',
+ 'autosetwalk' : 'autoSetWalk',
+ 'backobject' : 'backObject',
+ 'bartender' : 'bartender',
+ 'barwoman' : 'barWoman',
+ 'biblequote' : 'bibleQuote',
+ 'blank' : 'blank',
+ 'blockget' : 'blockGet',
+ 'blocknametext' : 'blockNameText',
+ 'bossman' : 'bossMan',
+ 'bothchannels' : 'bothChannels',
+ 'businessman' : 'businessMan',
+ 'buttoneight' : 'buttonEight',
+ 'buttonenter' : 'buttonEnter',
+ 'buttonfive' : 'buttonFive',
+ 'buttonfour' : 'buttonFour',
+ 'buttonnine' : 'buttonNine',
+ 'buttonnought' : 'buttonNought',
+ 'buttonone' : 'buttonOne',
+ 'buttonpress' : 'buttonPress',
+ 'buttonseven' : 'buttonSeven',
+ 'buttonsix' : 'buttonSix',
+ 'buttonthree' : 'buttonThree',
+ 'buttontwo' : 'buttonTwo',
+ 'calcfrframe' : 'calcFrFrame',
+ 'calcmapad' : 'calcMapAd',
+ 'calledensdlift' : 'callEdensDLift',
+ 'calledenslift' : 'callEdensLift',
+ 'callhotellift' : 'callHotelLift',
+ 'cancelch0' : 'cancelCh0',
+ 'cancelch1' : 'cancelCh1',
+ 'candles' : 'candles',
+ 'candles1' : 'candles1',
+ 'candles2' : 'candles2',
+ 'cantdrop' : 'cantDrop',
+ 'carparkdrip' : 'carParkDrip',
+ 'channel0only' : 'channel0only',
+ 'channel0tran' : 'channel0Tran',
+ 'channel1only' : 'channel1only',
+ 'checkbasemem' : 'checkBaseMem',
+ 'checkcoords' : 'checkCoords',
+ 'checkdest' : 'checkDest',
+ 'checkforemm' : 'checkForEMM',
+ 'checkforexit' : 'checkForExit',
+ 'checkforshake' : 'checkForShake',
+ 'checkifex' : 'checkIfEx',
+ 'checkiffree' : 'checkIfFree',
+ 'checkifpathison' : 'checkIfPathIsOn',
+ 'checkifperson' : 'checkIfPerson',
+ 'checkifset' : 'checkIfSet',
+ 'checkinput' : 'checkInput',
+ 'checkinside' : 'checkInside',
+ 'checkobjectsize' : 'checkObjectSize',
+ 'checkone' : 'checkOne',
+ 'checksoundint' : 'checkSoundInt',
+ 'checkspeed' : 'checkSpeed',
+ 'chewy' : 'chewy',
+ 'clearbeforeload' : 'clearBeforeLoad',
+ 'clearbuffers' : 'clearBuffers',
+ 'clearchanges' : 'clearChanges',
+ 'clearendpal' : 'clearEndPal',
+ 'clearpalette' : 'clearPalette',
+ 'clearreels' : 'clearReels',
+ 'clearrest' : 'clearRest',
+ 'clearsprites' : 'clearSprites',
+ 'clearstartpal' : 'clearStartPal',
+ 'clearwork' : 'clearWork',
+ 'closefile' : 'closeFile',
+ 'commandonly' : 'commandOnly',
+ 'commandwithob' : 'commandWithOb',
+ 'constant' : 'constant',
+ 'convertkey' : 'convertKey',
+ 'convicons' : 'convIcons',
+ 'convnum' : 'convNum',
+ 'copper' : 'copper',
+ 'copyname' : 'copyName',
+ 'createfile' : 'createFile',
+ 'createname' : 'createName',
+ 'createpanel' : 'createPanel',
+ 'createpanel2' : 'createPanel2',
+ 'credits' : 'credits',
+ 'crosshair' : 'crossHair',
+ 'deallocatemem' : 'deallocateMem',
+ 'dealwithspecial' : 'dealWithSpecial',
+ 'decide' : 'decide',
+ 'delchar' : 'delChar',
+ 'delcurs' : 'delCurs',
+ 'deleteexframe' : 'deleteExFrame',
+ 'deleteexobject' : 'deleteExObject',
+ 'deleteextext' : 'deleteExText',
+ 'deletetaken' : 'deleteTaken',
+ 'deleverything' : 'delEverything',
+ 'delpointer' : 'delPointer',
+ 'delsprite' : 'delSprite',
+ 'deltextline' : 'delTextLine',
+ 'delthisone' : 'delThisOne',
+ 'describeob' : 'describeOb',
+ 'destselect' : 'destSelect',
+ 'diarykeyn' : 'diaryKeyN',
+ 'diarykeyp' : 'diaryKeyP',
+ 'dircom' : 'dirCom',
+ 'dirfile' : 'dirFile',
+ 'disablepath' : 'disablePath',
+ 'disablesoundint' : 'disableSoundInt',
+ 'discops' : 'discOps',
+ 'dmaend' : 'DMAEnd',
+ 'doblocks' : 'doBlocks',
+ 'dochange' : 'doChange',
+ 'dodoor' : 'doDoor',
+ 'doload' : 'doLoad',
+ 'dolook' : 'doLook',
+ 'domix' : 'doMix',
+ 'dontloadseg' : 'dontLoadSeg',
+ 'dosaveload' : 'doSaveLoad',
+ 'doshake' : 'doShake',
+ 'dosometalk' : 'doSomeTalk',
+ 'dosreturn' : 'DOSReturn',
+ 'drawflags' : 'drawFlags',
+ 'drawfloor' : 'drawFloor',
+ 'drawitall' : 'drawItAll',
+ 'dreamweb' : 'dreamweb',
+ 'drinker' : 'drinker',
+ 'droperror' : 'dropError',
+ 'dropobject' : 'dropObject',
+ 'drunk' : 'drunk',
+ 'dumpblink' : 'dumpBlink',
+ 'dumpdiarykeys' : 'dumpDiaryKeys',
+ 'dumpeverything' : 'dumpEverything',
+ 'dumpkeypad' : 'dumpKeypad',
+ 'dumpmap' : 'dumpMap',
+ 'dumpmenu' : 'dumpMenu',
+ 'dumppointer' : 'dumpPointer',
+ 'dumpsymbol' : 'dumpSymbol',
+ 'dumpsymbox' : 'dumpSymBox',
+ 'dumptextline' : 'dumpTextLine',
+ 'dumptimedtext' : 'dumpTimedText',
+ 'dumpwatch' : 'dumpWatch',
+ 'dumpzoom' : 'dumpZoom',
+ 'eden' : 'eden',
+ 'edeninbath' : 'edenInBath',
+ 'edenscdplayer' : 'edensCDPlayer',
+ 'emergencypurge' : 'emergencyPurge',
+ 'enablesoundint' : 'enableSoundInt',
+ 'endgame' : 'endGame',
+ 'endgameseq' : 'endGameSeq',
+ 'endpaltostart' : 'endPalToStart',
+ 'entercode' : 'enterCode',
+ 'entersymbol' : 'enterSymbol',
+ 'entryanims' : 'entryAnims',
+ 'entrytexts' : 'entryTexts',
+ 'eraseoldobs' : 'eraseOldObs',
+ 'error' : 'error',
+ 'errormessage1' : 'errorMessage1',
+ 'errormessage2' : 'errorMessage2',
+ 'errormessage3' : 'errorMessage3',
+ 'examicon' : 'examIcon',
+ 'examineob' : 'examineOb',
+ 'examineobtext' : 'examineObText',
+ 'examinventory' : 'examineInventory',
+ 'execcommand' : 'execCommand',
+ 'facerightway' : 'faceRightWay',
+ 'fadecalculation' : 'fadeCalculation',
+ 'fadedownmon' : 'fadeDownMon',
+ 'fadefromwhite' : 'fadeFromWhite',
+ 'fadescreendown' : 'fadeScreenDown',
+ 'fadescreendownhalf' : 'fadeScreenDownHalf',
+ 'fadescreendowns' : 'fadeScreenDowns',
+ 'fadescreenup' : 'fadeScreenUp',
+ 'fadescreenuphalf' : 'fadeScreenUpHalf',
+ 'fadescreenups' : 'fadeScreenUps',
+ 'fadetowhite' : 'fadeToWhite',
+ 'fadeupmon' : 'fadeUpMon',
+ 'fadeupmonfirst' : 'fadeUpMonFirst',
+ 'fadeupyellows' : 'fadeUpYellows',
+ 'femalefan' : 'femaleFan',
+ 'fillopen' : 'fillOpen',
+ 'fillryan' : 'fillRyan',
+ 'fillspace' : 'fillSpace',
+ 'finalframe' : 'finalFrame',
+ 'findallopen' : 'findAllOpen',
+ 'findallryan' : 'findAllRyan',
+ 'findexobject' : 'findExObject',
+ 'findfirstpath' : 'findFirstPath',
+ 'findinvpos' : 'findInvPos',
+ 'findlen' : 'findLen',
+ 'findnextcolon' : 'findNextColon',
+ 'findobname' : 'findObName',
+ 'findopenpos' : 'findOpenPos',
+ 'findormake' : 'findOrMake',
+ 'findpathofpoint' : 'findPathOfPoint',
+ 'findpuztext' : 'findPuzText',
+ 'findroominloc' : 'findRoomInLoc',
+ 'findsetobject' : 'findSetObject',
+ 'findsource' : 'findSource',
+ 'findtext1' : 'findText1',
+ 'findxyfrompath' : 'findXYFromPath',
+ 'finishedwalking' : 'finishedWalking',
+ 'foghornsound' : 'foghornSound',
+ 'folderexit' : 'folderExit',
+ 'folderhints' : 'folderHints',
+ 'frameoutbh' : 'frameOutbh',
+ 'frameoutfx' : 'frameOutfx',
+ 'frameoutnm' : 'frameOutnm',
+ 'frameoutv' : 'frameOutV',
+ 'gamer' : 'gamer',
+ 'gates' : 'gates',
+ 'generalerror' : 'generalError',
+ 'getanyad' : 'getAnyAd',
+ 'getanyaddir' : 'getAnyAdDir',
+ 'getback1' : 'getBack1',
+ 'getbackfromob' : 'getBackFromOb',
+ 'getbackfromops' : 'getBackFromOps',
+ 'getbacktoops' : 'getBackToOps',
+ 'getblockofpixel' : 'getBlockOfPixel',
+ 'getdestinfo' : 'getDestInfo',
+ 'getdimension' : 'getDimension',
+ 'geteitherad' : 'getEitherAd',
+ 'getexad' : 'getExAd',
+ 'getexpos' : 'getExPos',
+ 'getflagunderp' : 'getFlagUnderP',
+ 'getfreead' : 'getFreeAd',
+ 'getkeyandlogo' : 'getKeyAndLogo',
+ 'getlocation' : 'getLocation',
+ 'getmapad' : 'getMapAd',
+ 'getnamepos' : 'getNamePos',
+ 'getnextword' : 'getNextWord',
+ 'getnumber' : 'getNumber',
+ 'getobtextstart' : 'getObTextStart',
+ 'getopenedsize' : 'getOpenedSize',
+ 'getpersframe' : 'getPersFrame',
+ 'getpersontext' : 'getPersonText',
+ 'getreelframeax' : 'getReelFrameAX',
+ 'getreelstart' : 'getReelStart',
+ 'getridofall' : 'getRidOfAll',
+ 'getridofpit' : 'getRidOfPit',
+ 'getridofpitsetuppit' : 'getRidOfPitSetupPit',
+ 'getridofreels' : 'getRidOfReels',
+ 'getridoftemp' : 'getRidOfTemp',
+ 'getridoftemp2' : 'getRidOfTemp2',
+ 'getridoftemp3' : 'getRidOfTemp3',
+ 'getridoftempcharset' : 'getRidOfTempCharset',
+ 'getridoftempsp' : 'getRidOfTempsP',
+ 'getridoftemptext' : 'getRidOfTempText',
+ 'getroomdata' : 'getRoomData',
+ 'getroomspaths' : 'getRoomsPaths',
+ 'getsetad' : 'getSetAd',
+ 'gettime' : 'getTime',
+ 'gettingshot' : 'gettingShot',
+ 'getundercentre' : 'getUnderCentre',
+ 'getundermenu' : 'getUnderMenu',
+ 'getundertimed' : 'getUnderTimed',
+ 'getunderzoom' : 'getUnderZoom',
+ 'getxad' : 'getXAd',
+ 'getyad' : 'getYAd',
+ 'grafittidoor' : 'grafittiDoor',
+ 'handclap' : 'handClap',
+ 'hangon' : 'hangOn',
+ 'hangoncurs' : 'hangOnCurs',
+ 'hangone' : 'hangOne',
+ 'hangonp' : 'hangOnP',
+ 'hangonpq' : 'hangOnPQ',
+ 'hangonw' : 'hangOnW',
+ 'heavy' : 'heavy',
+ 'helicopter' : 'helicopter',
+ 'hotelbell' : 'hotelBell',
+ 'hotelcontrol' : 'hotelControl',
+ 'identifyob' : 'identifyOb',
+ 'incryanpage' : 'incRyanPage',
+ 'initialinv' : 'initialInv',
+ 'initialmoncols' : 'initialMonCols',
+ 'initman' : 'initMan',
+ 'initrain' : 'initRain',
+ 'interupttest' : 'interruptTest',
+ 'interviewer' : 'interviewer',
+ 'intoinv' : 'inToInv',
+ 'intro' : 'intro',
+ 'intro1text' : 'intro1Text',
+ 'intro2text' : 'intro2Text',
+ 'intro3text' : 'intro3Text',
+ 'intromagic1' : 'introMagic1',
+ 'intromagic2' : 'introMagic2',
+ 'intromagic3' : 'introMagic3',
+ 'intromonks1' : 'introMonks1',
+ 'intromonks2' : 'introMonks2',
+ 'intromusic' : 'introMusic',
+ 'inventory' : 'inventory',
+ 'isitdescribed' : 'isItDescribed',
+ 'isitright' : 'isItRight',
+ 'isitworn' : 'isItWorn',
+ 'isryanholding' : 'isRyanHolding',
+ 'issetobonmap' : 'isSetObOnMap',
+ 'keeper' : 'keeper',
+ 'kernchars' : 'kernChars',
+ 'keyboardread' : 'keyboardRead',
+ 'lastdest' : 'lastDest',
+ 'lastfolder' : 'lastFolder',
+ 'liftnoise' : 'liftNoise',
+ 'liftsprite' : 'liftSprite',
+ 'loadcart' : 'loadCart',
+ 'loadfolder' : 'loadFolder',
+ 'loadgame' : 'loadGame',
+ 'loadintotemp' : 'loadIntoTemp',
+ 'loadintotemp2' : 'loadIntoTemp2',
+ 'loadintotemp3' : 'loadIntoTemp3',
+ 'loadintroroom' : 'loadIntroRoom',
+ 'loadkeypad' : 'loadKeypad',
+ 'loadmenu' : 'loadMenu',
+ 'loadnews' : 'loadNews',
+ 'loadold' : 'loadOld',
+ 'loadpalfromiff' : 'loadPalFromIFF',
+ 'loadpersonal' : 'loadPersonal',
+ 'loadposition' : 'loadPosition',
+ 'loadroom' : 'loadRoom',
+ 'loadroomssample' : 'loadRoomsSample',
+ 'loadsample' : 'loadSample',
+ 'loadsavebox' : 'loadSaveBox',
+ 'loadsecondsample' : 'loadSecondSample',
+ 'loadseg' : 'loadSeg',
+ 'loadspeech' : 'loadSpeech',
+ 'loadtempcharset' : 'loadTempCharset',
+ 'loadtemptext' : 'loadTempText',
+ 'loadtraveltext' : 'loadTravelText',
+ 'locationpic' : 'locationPic',
+ 'lockeddoorway' : 'lockedDoorway',
+ 'locklightoff' : 'lockLightOff',
+ 'locklighton' : 'lockLightOn',
+ 'lockmon' : 'lockMon',
+ 'lookatcard' : 'lookAtCard',
+ 'lookatplace' : 'lookAtPlace',
+ 'lookininterface' : 'lookInInterface',
+ 'loopchannel0' : 'loopChannel0',
+ 'louis' : 'louis',
+ 'louischair' : 'louisChair',
+ 'madman' : 'madman',
+ 'madmanrun' : 'madmanRun',
+ 'madmanstelly' : 'madmansTelly',
+ 'madmantext' : 'madmanText',
+ 'madmode' : 'madMode',
+ 'mainman' : 'mainMan',
+ 'mainscreen' : 'mainScreen',
+ 'makebackob' : 'makeBackOb',
+ 'makecaps' : 'makeCaps',
+ 'makeheader' : 'makeHeader',
+ 'makemainscreen' : 'makeMainScreen',
+ 'makename' : 'makeName',
+ 'makenextblock' : 'makeNextBlock',
+ 'makesprite' : 'makeSprite',
+ 'makeworn' : 'makeWorn',
+ 'malefan' : 'maleFan',
+ 'manasleep' : 'manAsleep',
+ 'manasleep2' : 'manAsleep2',
+ 'mansatstill' : 'manSatStill',
+ 'maptopanel' : 'mapToPanel',
+ 'middlepanel' : 'middlePanel',
+ 'mode640x480' : 'mode640x480',
+ 'modifychar' : 'modifyChar',
+ 'moneypoke' : 'moneyPoke',
+ 'monitorlogo' : 'monitorLogo',
+ 'monkandryan' : 'monkAndRyan',
+ 'monks2text' : 'monks2text',
+ 'monkspeaking' : 'monkSpeaking',
+ 'monmessage' : 'monMessage',
+ 'monprint' : 'monPrint',
+ 'moretalk' : 'moreTalk',
+ 'mousecall' : 'mouseCall',
+ 'movemap' : 'moveMap',
+ 'mugger' : 'mugger',
+ 'multidump' : 'multiDump',
+ 'multiget' : 'multiGet',
+ 'multiput' : 'multiPut',
+ 'namestoold' : 'namesToOld',
+ 'neterror' : 'netError',
+ 'newgame' : 'newGame',
+ 'newplace' : 'newPlace',
+ 'nextcolon' : 'nextColon',
+ 'nextdest' : 'nextDest',
+ 'nextfolder' : 'nextFolder',
+ 'nextsymbol' : 'nextSymbol',
+ 'nothelderror' : 'notHeldError',
+ 'obicons' : 'obIcons',
+ 'obname' : 'obName',
+ 'obpicture' : 'obPicture',
+ 'obsthatdothings' : 'obsThatDoThings',
+ 'obtoinv' : 'obToInv',
+ 'oldtonames' : 'oldToNames',
+ 'onedigit' : 'oneDigit',
+ 'openeden' : 'openEden',
+ 'openfile' : 'openFile',
+ 'openfilefromc' : 'openFileFromC',
+ 'openfilenocheck' : 'openFileNoCheck',
+ 'openforsave' : 'openForSave',
+ 'openhoteldoor' : 'openHotelDoor',
+ 'openhoteldoor2' : 'openHotelDoor2',
+ 'openinv' : 'openInv',
+ 'openlouis' : 'openLouis',
+ 'openob' : 'openOb',
+ 'openpoolboss' : 'openPoolBoss',
+ 'openryan' : 'openRyan',
+ 'opensarters' : 'openSarters',
+ 'opentomb' : 'openTomb',
+ 'opentvdoor' : 'openTVDoor',
+ 'openyourneighbour' : 'openYourNeighbour',
+ 'othersmoker' : 'otherSmoker',
+ 'out22c' : 'out22c',
+ 'outofinv' : 'outOfInv',
+ 'outofopen' : 'outOfOpen',
+ 'paltoendpal' : 'palToEndPal',
+ 'paltostartpal' : 'palToStartPal',
+ 'panelicons1' : 'panelIcons1',
+ 'paneltomap' : 'panelToMap',
+ 'parseblaster' : 'parseBlaster',
+ 'parser' : 'parser',
+ 'personnametext' : 'personNameText',
+ 'pickupconts' : 'pickupConts',
+ 'pickupob' : 'pickupOb',
+ 'pitinterupt' : 'pitInterrupt',
+ 'pixelcheckset' : 'pixelCheckSet',
+ 'placefreeobject' : 'placeFreeObject',
+ 'placesetobject' : 'placeSetObject',
+ 'playchannel0' : 'playChannel0',
+ 'playchannel1' : 'playChannel1',
+ 'playguitar' : 'playGuitar',
+ 'plotreel' : 'plotReel',
+ 'poolguard' : 'poolGuard',
+ 'powerlightoff' : 'powerLightOff',
+ 'powerlighton' : 'powerLightOn',
+ 'priest' : 'priest',
+ 'priesttext' : 'priestText',
+ 'printasprite' : 'printASprite',
+ 'printboth' : 'printBoth',
+ 'printchar' : 'printChar',
+ 'printcurs' : 'printCurs',
+ 'printdirect' : 'printDirect',
+ 'printlogo' : 'printLogo',
+ 'printmessage' : 'printMessage',
+ 'printmessage2' : 'printmessage2',
+ 'printoutermon' : 'printOuterMon',
+ 'printslow' : 'printSlow',
+ 'printsprites' : 'printSprites',
+ 'printundermon' : 'printUnderMon',
+ 'processtrigger' : 'processTrigger',
+ 'purgealocation' : 'purgeALocation',
+ 'purgeanitem' : 'purgeAnItem',
+ 'putbackobstuff' : 'putBackObStuff',
+ 'putundercentre' : 'putUnderCentre',
+ 'putundermenu' : 'putUnderMenu',
+ 'putundertimed' : 'putUnderTimed',
+ 'putunderzoom' : 'putUnderZoom',
+ 'quickquit' : 'quickQuit',
+ 'quickquit2' : 'quickQuit2',
+ 'quitkey' : 'quitKey',
+ 'quitsymbol' : 'quitSymbol',
+ 'random' : 'random',
+ 'randomaccess' : 'randomAccess',
+ 'randomnum1' : 'randomNum1',
+ 'randomnum2' : 'randomNum2',
+ 'randomnumber' : 'randomNumber',
+ 'read' : 'read',
+ 'readabyte' : 'readAByte',
+ 'readcitypic' : 'readCityPic',
+ 'readdesticon' : 'readDestIcon',
+ 'readfromfile' : 'readFromFile',
+ 'readheader' : 'readHeader',
+ 'readkey' : 'readKey',
+ 'readmouse' : 'readMouse',
+ 'readmouse1' : 'readMouse1',
+ 'readmouse2' : 'readMouse2',
+ 'readmouse3' : 'readMouse3',
+ 'readmouse4' : 'readMouse4',
+ 'readoneblock' : 'readOneBlock',
+ 'readsetdata' : 'readSetData',
+ 'realcredits' : 'realCredits',
+ 'receptionist' : 'receptionist',
+ 'redes' : 'redes',
+ 'redrawmainscrn' : 'redrawMainScrn',
+ 'reelsonscreen' : 'reelsOnScreen',
+ 'reexfrominv' : 'reExFromInv',
+ 'reexfromopen' : 'reExFromOpen',
+ 'reminders' : 'reminders',
+ 'removeemm' : 'removeEMM',
+ 'removefreeobject' : 'removeFreeObject',
+ 'removeobfrominv' : 'removeObFromInv',
+ 'removesetobject' : 'removeSetObject',
+ 'resetkeyboard' : 'resetKeyboard',
+ 'resetlocation' : 'resetLocation',
+ 'restoreall' : 'restoreAll',
+ 'restoreems' : 'restoreEMS',
+ 'restorereels' : 'restoreReels',
+ 'rockstar' : 'rockstar',
+ 'rollem' : 'rollEm',
+ 'rollendcredits' : 'rollEndCredits',
+ 'rollendcredits2' : 'rollEndCredits2',
+ 'roomname' : 'roomName',
+ 'runendseq' : 'runEndSeq',
+ 'runintroseq' : 'runIntroSeq',
+ 'runtap' : 'runTap',
+ 'saveems' : 'saveEMS',
+ 'savefileread' : 'saveFileRead',
+ 'savefilewrite' : 'savefileWrite',
+ 'savegame' : 'saveGame',
+ 'saveload' : 'saveLoad',
+ 'saveposition' : 'savePosition',
+ 'saveseg' : 'saveSeg',
+ 'scanfornames' : 'scanForNames',
+ 'screenupdate' : 'screenUpdate',
+ 'scrollmonitor' : 'scrollMonitor',
+ 'searchforfiles' : 'searchForFiles',
+ 'searchforsame' : 'searchForSame',
+ 'searchforstring' : 'searchForString',
+ 'security' : 'security',
+ 'seecommandtail' : 'seeCommandTail',
+ 'selectlocation' : 'selectLocation',
+ 'selectob' : 'selectOb',
+ 'selectopenob' : 'selectOpenOb',
+ 'selectslot' : 'selectSlot',
+ 'selectslot2' : 'selectSlot2',
+ 'set16colpalette' : 'set16ColPalette',
+ 'setallchanges' : 'setAllChanges',
+ 'setbotleft' : 'setBotLeft',
+ 'setbotright' : 'setBotRight',
+ 'setkeyboardint' : 'setKeyboardInt',
+ 'setlocation' : 'setLocation',
+ 'setmode' : 'setMode',
+ 'setmouse' : 'setMouse',
+ 'setpickup' : 'setPickup',
+ 'setsoundoff' : 'setSoundOff',
+ 'settopleft' : 'setTopLeft',
+ 'settopright' : 'setTopRight',
+ 'setupemm' : 'setupEMM',
+ 'setuppit' : 'setupPit',
+ 'setuptimedtemp' : 'setupTimedTemp',
+ 'setuptimeduse' : 'setupTimedUse',
+ 'setwalk' : 'setWalk',
+ 'showallex' : 'showAllEx',
+ 'showallfree' : 'showAllFree',
+ 'showallobs' : 'showAllObs',
+ 'showarrows' : 'showArrows',
+ 'showblink' : 'showBlink',
+ 'showbyte' : 'showByte',
+ 'showcity' : 'showCity',
+ 'showcurrentfile' : 'showCurrentFile',
+ 'showdecisions' : 'showDecisions',
+ 'showdiary' : 'showDiary',
+ 'showdiarykeys' : 'showDiaryKeys',
+ 'showdiarypage' : 'showDiaryPage',
+ 'showdiscops' : 'showDiscOps',
+ 'showexit' : 'showExit',
+ 'showfirstuse' : 'showFirstUse',
+ 'showfolder' : 'showFolder',
+ 'showframe' : 'showFrame',
+ 'showgamereel' : 'showGameReel',
+ 'showgroup' : 'showGroup',
+ 'showgun' : 'showGun',
+ 'showicon' : 'showIcon',
+ 'showkeypad' : 'showKeypad',
+ 'showkeys' : 'showKeys',
+ 'showleftpage' : 'showLeftPage',
+ 'showloadops' : 'showLoadOps',
+ 'showmainops' : 'showMainOps',
+ 'showman' : 'showMan',
+ 'showmenu' : 'showMenu',
+ 'showmonk' : 'showMonk',
+ 'shownames' : 'showNames',
+ 'showopbox' : 'showOpBox',
+ 'showoutermenu' : 'showOuterMenu',
+ 'showouterpad' : 'showOuterPad',
+ 'showpanel' : 'showPanel',
+ 'showpcx' : 'showPCX',
+ 'showpointer' : 'showPointer',
+ 'showpuztext' : 'showPuzText',
+ 'showrain' : 'showRain',
+ 'showreelframe' : 'showReelFrame',
+ 'showrightpage' : 'showRightPage',
+ 'showryanpage' : 'showRyanPage',
+ 'showsaveops' : 'showSaveOps',
+ 'showseconduse' : 'showSecondUse',
+ 'showslots' : 'showSlots',
+ 'showsymbol' : 'showSymbol',
+ 'showtime' : 'showTime',
+ 'showwatch' : 'showWatch',
+ 'showword' : 'showWord',
+ 'signon' : 'signOn',
+ 'singlekey' : 'singleKey',
+ 'sitdowninbar' : 'sitDownInBar',
+ 'slabdoora' : 'sLabDoorA',
+ 'slabdoorb' : 'sLabDoorB',
+ 'slabdoorc' : 'sLabDoorC',
+ 'slabdoord' : 'sLabDoorD',
+ 'slabdoore' : 'sLabDoorE',
+ 'slabdoorf' : 'sLabDoorF',
+ 'smallcandle' : 'smallCandle',
+ 'smokebloke' : 'smokeBloke',
+ 'soldier1' : 'soldier1',
+ 'sortoutmap' : 'sortOutMap',
+ 'soundend' : 'soundEnd',
+ 'soundonreels' : 'soundOnReels',
+ 'soundstartup' : 'soundStartup',
+ 'sparky' : 'sparky',
+ 'sparkydrip' : 'sparkyDrip',
+ 'splitintolines' : 'splitIntoLines',
+ 'spriteupdate' : 'spriteUpdate',
+ 'standardload' : 'standardLoad',
+ 'startdmablock' : 'startDMABlock',
+ 'startloading' : 'startLoading',
+ 'startpaltoend' : 'startPalToEnd',
+ 'starttalk' : 'startTalk',
+ 'steady' : 'steady',
+ 'storeit' : 'storeIt',
+ 'swapwithinv' : 'swapWithInv',
+ 'swapwithopen' : 'swapWithOpen',
+ 'switchryanoff' : 'switchRyanOff',
+ 'switchryanon' : 'switchRyanOn',
+ 'talk' : 'talk',
+ 'tattooman' : 'tattooMan',
+ 'textforend' : 'textForEnd',
+ 'textformonk' : 'textForMonk',
+ 'titles' : 'titles',
+ 'train' : 'train',
+ 'transfercontoex' : 'transferConToEx',
+ 'transferinv' : 'transferInv',
+ 'transfermap' : 'transferMap',
+ 'transfertext' : 'transferText',
+ 'transfertoex' : 'transferToEx',
+ 'trapdoor' : 'trapDoor',
+ 'triggermessage' : 'triggerMessage',
+ 'trysoundalloc' : 'trySoundAlloc',
+ 'turnanypathoff' : 'turnAnyPathOff',
+ 'turnanypathon' : 'turnAnyPathOn',
+ 'turnonpower' : 'turnOnPower',
+ 'turnpathoff' : 'turnPathOff',
+ 'turnpathon' : 'turnPathOn',
+ 'twodigitnum' : 'twoDigitNum',
+ 'undertextline' : 'underTextLine',
+ 'updatepeople' : 'updatePeople',
+ 'updatesymbolbot' : 'updateSymbolBot',
+ 'updatesymboltop' : 'updateSymbolTop',
+ 'usealtar' : 'useAltar',
+ 'useaxe' : 'useAxe',
+ 'usebalcony' : 'useBalcony',
+ 'usebuttona' : 'useButtonA',
+ 'usecardreader1' : 'useCardReader1',
+ 'usecardreader2' : 'useCardReader2',
+ 'usecardreader3' : 'useCardReader3',
+ 'usecart' : 'useCart',
+ 'usecashcard' : 'useCashCard',
+ 'usecharset1' : 'useCharset1',
+ 'usechurchgate' : 'useChurchGate',
+ 'usechurchhole' : 'useChurchHole',
+ 'useclearbox' : 'useClearBox',
+ 'usecontrol' : 'useControl',
+ 'usecooker' : 'useCooker',
+ 'usecoveredbox' : 'useCoveredBox',
+ 'usediary' : 'useDiary',
+ 'usedryer' : 'useDryer',
+ 'useelevator1' : 'useElevator1',
+ 'useelevator2' : 'useElevator2',
+ 'useelevator3' : 'useElevator3',
+ 'useelevator4' : 'useElevator4',
+ 'useelevator5' : 'useElevator5',
+ 'useelvdoor' : 'useElvDoor',
+ 'usefullcart' : 'useFullCart',
+ 'usegun' : 'useGun',
+ 'usehandle' : 'useHandle',
+ 'usehatch' : 'useHatch',
+ 'usehole' : 'useHole',
+ 'usekey' : 'useKey',
+ 'useladder' : 'useLadder',
+ 'useladderb' : 'useLadderB',
+ 'uselighter' : 'useLighter',
+ 'usemenu' : 'useMenu',
+ 'usemon' : 'useMon',
+ 'useobject' : 'useObject',
+ 'useopenbox' : 'useOpenBox',
+ 'useopened' : 'useOpened',
+ 'usepipe' : 'usePipe',
+ 'useplate' : 'usePlate',
+ 'useplinth' : 'usePlinth',
+ 'usepoolreader' : 'usePoolReader',
+ 'userailing' : 'useRailing',
+ 'useroutine' : 'useRoutine',
+ 'useshield' : 'useShield',
+ 'useslab' : 'useSLab',
+ 'usestereo' : 'useStereo',
+ 'usetempcharset' : 'useTempCharset',
+ 'usetext' : 'useText',
+ 'usetimedtext' : 'useTimedText',
+ 'usetrainer' : 'useTrainer',
+ 'usewall' : 'useWall',
+ 'usewinch' : 'useWinch',
+ 'usewindow' : 'useWindow',
+ 'usewire' : 'useWire',
+ 'viewfolder' : 'viewFolder',
+ 'vsync' : 'vSync',
+ 'waitframes' : 'waitFrames',
+ 'walkandexamine' : 'walkAndExamine',
+ 'walkintoroom' : 'walkIntoRoom',
+ 'walktotext' : 'walkToText',
+ 'watchcount' : 'watchCount',
+ 'watchreel' : 'watchReel',
+ 'wearshades' : 'wearShades',
+ 'wearwatch' : 'wearWatch',
+ 'wheelsound' : 'wheelSound',
+ 'widedoor' : 'wideDoor',
+ 'withwhat' : 'withWhat',
+ 'worktoscreen' : 'workToScreen',
+ 'worktoscreenm' : 'workToScreenM',
+ 'wornerror' : 'wornError',
+ 'zoomicon' : 'zoomIcon',
+ 'zoomonoff' : 'zoomOnOff',
+ })
generator.generate('dreamweb') #start routine
diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index 61edb41fb2..686aea9ee9 100644
--- a/devtools/tasmrecover/tasm/cpp.py
+++ b/devtools/tasmrecover/tasm/cpp.py
@@ -33,7 +33,7 @@ def parse_bin(s):
return v
class cpp:
- def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = []):
+ def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = [], skip_dispatch_call = False, skip_addr_constants = False, header_omit_blacklisted = False, function_name_remapping = { }):
self.namespace = namespace
fname = namespace.lower() + ".cpp"
header = namespace.lower() + ".h"
@@ -60,7 +60,6 @@ class cpp:
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
-
"""
self.fd = open(fname, "wt")
self.hd = open(header, "wt")
@@ -68,9 +67,7 @@ class cpp:
self.hd.write("""#ifndef %s
#define %s
-%s
-
-""" %(hid, hid, banner))
+%s""" %(hid, hid, banner))
self.context = context
self.data_seg = context.binary_data
self.procs = context.proc_list
@@ -80,12 +77,15 @@ class cpp:
self.blacklist = blacklist
self.failed = list(blacklist)
self.skip_output = skip_output
+ self.skip_dispatch_call = skip_dispatch_call
+ self.skip_addr_constants = skip_addr_constants
+ self.header_omit_blacklisted = header_omit_blacklisted
+ self.function_name_remapping = function_name_remapping
self.translated = []
self.proc_addr = []
self.used_data_offsets = set()
self.methods = []
self.fd.write("""%s
-
#include \"%s\"
namespace %s {
@@ -286,7 +286,10 @@ namespace %s {
jump_proc = True
if jump_proc:
- return "{ %s(); return; }" %name
+ if name in self.function_name_remapping:
+ return "{ %s(); return; }" %self.function_name_remapping[name]
+ else:
+ return "{ %s(); return; }" %name
else:
# TODO: name or self.resolve_label(name) or self.mangle_label(name)??
if name in self.proc.retlabels:
@@ -308,7 +311,10 @@ namespace %s {
if name == 'ax':
self.body += "\t__dispatch_call(%s);\n" %self.expand('ax', 2)
return
- self.body += "\t%s();\n" %name
+ if name in self.function_name_remapping:
+ self.body += "\t%s();\n" %self.function_name_remapping[name]
+ else:
+ self.body += "\t%s();\n" %name
self.schedule(name)
def _ret(self):
@@ -499,7 +505,10 @@ namespace %s {
self.proc_addr.append((name, self.proc.offset))
self.body = str()
- self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, name);
+ if name in self.function_name_remapping:
+ self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, self.function_name_remapping[name]);
+ else:
+ self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, name);
self.proc.optimize()
self.unbounded = []
self.proc.visit(self, skip)
@@ -550,8 +559,11 @@ namespace %s {
fd = open(fname, "wt")
fd.write("namespace %s {\n" %self.namespace)
for p in procs:
- fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, p, p))
- fd.write("} /*namespace %s */\n" %self.namespace)
+ if p in self.function_name_remapping:
+ fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, self.function_name_remapping[p], self.function_name_remapping[p]))
+ else:
+ fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, p, p))
+ fd.write("} // End of namespace %s\n" %self.namespace)
fd.close()
@@ -578,7 +590,7 @@ namespace %s {
self.fd.write("\n")
self.fd.write("\n".join(self.translated))
- self.fd.write("\n\n")
+ self.fd.write("\n")
print "%d ok, %d failed of %d, %.02g%% translated" %(done, failed, done + failed, 100.0 * done / (done + failed))
print "\n".join(self.failed)
data_bin = self.data_seg
@@ -596,26 +608,25 @@ namespace %s {
elif (n & 0x3) == 0:
comment += " "
data_impl += "};\n\tds.assign(src, src + sizeof(src));\n"
+
self.hd.write(
"""\n#include "dreamweb/runtime.h"
+#include "dreamweb/structs.h"
+#include "dreamweb/dreambase.h"
+
namespace %s {
-#include "structs.h"
-class %sContext : public Context {
-public:
- void __start();
- void __dispatch_call(uint16 addr);
-#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
-"""
-%(self.namespace, self.namespace))
+"""
+%(self.namespace))
- for name,addr in self.proc_addr:
- self.hd.write("\tstatic const uint16 addr_%s = 0x%04x;\n" %(name, addr))
+ if self.skip_addr_constants == False:
+ for name,addr in self.proc_addr:
+ self.hd.write("static const uint16 addr_%s = 0x%04x;\n" %(name, addr))
for name,addr in self.used_data_offsets:
- self.hd.write("\tstatic const uint16 offset_%s = 0x%04x;\n" %(name, addr))
+ self.hd.write("static const uint16 offset_%s = 0x%04x;\n" %(name, addr))
offsets = []
for k, v in self.context.get_globals().items():
@@ -626,24 +637,50 @@ public:
offsets = sorted(offsets, key=lambda t: t[1])
for o in offsets:
- self.hd.write("\tstatic const uint16 k%s = %s;\n" %o)
+ self.hd.write("static const uint16 k%s = %s;\n" %o)
self.hd.write("\n")
+
+ self.hd.write(
+"""
+class %sContext : public DreamBase, public Context {
+public:
+ DreamGenContext(DreamWeb::DreamWebEngine *en) : DreamBase(en), Context(this) {}
+
+ void __start();
+"""
+%(self.namespace))
+ if self.skip_dispatch_call == False:
+ self.hd.write(
+""" void __dispatch_call(uint16 addr);
+""")
+ self.hd.write(
+"""#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
+
+""")
+
+
for p in set(self.methods):
if p in self.blacklist:
- self.hd.write("\t//void %s();\n" %p)
+ if self.header_omit_blacklisted == False:
+ self.hd.write("\t//void %s();\n" %p)
else:
- self.hd.write("\tvoid %s();\n" %p)
+ if p in self.function_name_remapping:
+ self.hd.write("\tvoid %s();\n" %self.function_name_remapping[p])
+ else:
+ self.hd.write("\tvoid %s();\n" %p)
- self.hd.write("};\n}\n\n#endif\n")
+ self.hd.write("};\n\n} // End of namespace DreamGen\n\n#endif\n")
self.hd.close()
- self.fd.write("\nvoid %sContext::__start() { %s%s(); \n}\n" %(self.namespace, data_impl, start))
+ self.fd.write("void %sContext::__start() { %s\t%s(); \n}\n" %(self.namespace, data_impl, start))
- self.fd.write("\nvoid %sContext::__dispatch_call(uint16 addr) {\n\tswitch(addr) {\n" %self.namespace)
- self.proc_addr.sort(cmp = lambda x, y: x[1] - y[1])
- for name,addr in self.proc_addr:
- self.fd.write("\t\tcase addr_%s: %s(); break;\n" %(name, name))
- self.fd.write("\t\tdefault: ::error(\"invalid call to %04x dispatched\", (uint16)ax);")
- self.fd.write("\n\t}\n}\n\n} /*namespace*/\n")
-
+ if self.skip_dispatch_call == False:
+ self.fd.write("\nvoid %sContext::__dispatch_call(uint16 addr) {\n\tswitch(addr) {\n" %self.namespace)
+ self.proc_addr.sort(cmp = lambda x, y: x[1] - y[1])
+ for name,addr in self.proc_addr:
+ self.fd.write("\t\tcase addr_%s: %s(); break;\n" %(name, name))
+ self.fd.write("\t\tdefault: ::error(\"invalid call to %04x dispatched\", (uint16)ax);")
+ self.fd.write("\n\t}\n}")
+
+ self.fd.write("\n} // End of namespace DreamGen\n")
self.fd.close()
diff --git a/devtools/tasmrecover/tasm/parser.py b/devtools/tasmrecover/tasm/parser.py
index ebbd714cf4..6fd3567b01 100644
--- a/devtools/tasmrecover/tasm/parser.py
+++ b/devtools/tasmrecover/tasm/parser.py
@@ -25,7 +25,8 @@ import lex
import op
class parser:
- def __init__(self):
+ def __init__(self, skip_binary_data = []):
+ self.skip_binary_data = skip_binary_data
self.strip_path = 0
self.__globals = {}
self.__offsets = {}
@@ -186,6 +187,7 @@ class parser:
def parse(self, fname):
# print "opening file %s..." %(fname, basedir)
+ skipping_binary_data = False
fd = open(fname, 'rb')
for line in fd:
line = line.strip()
@@ -198,10 +200,15 @@ class parser:
line = line[len(m.group(0)):].strip()
if self.visible():
name = m.group(1)
- if self.proc is not None:
- self.proc.add_label(name)
- print "offset %s -> %d" %(name, len(self.binary_data))
- self.set_offset(name, (len(self.binary_data), self.proc, len(self.proc.stmts) if self.proc is not None else 0))
+ if not (name.lower() in self.skip_binary_data):
+ if self.proc is not None:
+ self.proc.add_label(name)
+ print "offset %s -> %d" %(name, len(self.binary_data))
+ self.set_offset(name, (len(self.binary_data), self.proc, len(self.proc.stmts) if self.proc is not None else 0))
+ skipping_binary_data = False
+ else:
+ print "skipping binary data for %s" % (name,)
+ skipping_binary_data = True
#print line
cmd = line.split()
@@ -224,9 +231,10 @@ class parser:
if cmd0 == 'db' or cmd0 == 'dw' or cmd0 == 'dd':
arg = line[len(cmd0):].strip()
- print "%d:1: %s" %(len(self.binary_data), arg) #fixme: COPYPASTE
- binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd0[1]]
- self.binary_data += self.compact_data(binary_width, lex.parse_args(arg))
+ if not skipping_binary_data:
+ print "%d:1: %s" %(len(self.binary_data), arg) #fixme: COPYPASTE
+ binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd0[1]]
+ self.binary_data += self.compact_data(binary_width, lex.parse_args(arg))
continue
elif cmd0 == 'include':
self.include(os.path.dirname(fname), cmd[1])
@@ -248,13 +256,18 @@ class parser:
v = cmd[2]
self.set_global(cmd0, op.const(self.fix_dollar(v)))
elif cmd1 == 'db' or cmd1 == 'dw' or cmd1 == 'dd':
- binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd1[1]]
- offset = len(self.binary_data)
- arg = line[len(cmd0):].strip()
- arg = arg[len(cmd1):].strip()
- print "%d: %s" %(offset, arg)
- self.binary_data += self.compact_data(binary_width, lex.parse_args(arg))
- self.set_global(cmd0.lower(), op.var(binary_width, offset))
+ if not (cmd0.lower() in self.skip_binary_data):
+ binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd1[1]]
+ offset = len(self.binary_data)
+ arg = line[len(cmd0):].strip()
+ arg = arg[len(cmd1):].strip()
+ print "%d: %s" %(offset, arg)
+ self.binary_data += self.compact_data(binary_width, lex.parse_args(arg))
+ self.set_global(cmd0.lower(), op.var(binary_width, offset))
+ skipping_binary_data = False
+ else:
+ print "skipping binary data for %s" % (cmd0.lower(),)
+ skipping_binary_data = True
continue
elif cmd1 == 'proc':
name = cmd0.lower()