aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2011-11-20 04:34:22 +0100
committerJohannes Schickel2011-11-20 04:34:22 +0100
commit8f58ddefc629a270b4661b5263c07f59ca0560d6 (patch)
tree8c573abda5b9857b6065541f5b7852b2e1728967
parentef8b106055c638377806e32e24922380118d03c7 (diff)
downloadscummvm-rg350-8f58ddefc629a270b4661b5263c07f59ca0560d6.tar.gz
scummvm-rg350-8f58ddefc629a270b4661b5263c07f59ca0560d6.tar.bz2
scummvm-rg350-8f58ddefc629a270b4661b5263c07f59ca0560d6.zip
ALL: Remove more m4/mads leftovers.
Some project files (iPhone) and backend files (Symbian) still reference m4.dat, but I know not enough on how to remove that without breaking something.
-rw-r--r--Makefile.common3
-rwxr-xr-xbackends/platform/maemo/debian/rules2
-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.cpp1
-rwxr-xr-xdevtools/create_project/xcode.cpp2
-rw-r--r--dists/irix/scummvm.idb1
-rw-r--r--dists/scummvm.rc.in3
-rw-r--r--dists/win32/ScummVM.iss1
-rw-r--r--dists/win32/scummvm.nsi2
-rw-r--r--dists/win32/scummvm.nsi.in2
14 files changed, 1 insertions, 3361 deletions
diff --git a/Makefile.common b/Makefile.common
index 7c81a0d80c..1ec3f66246 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -252,9 +252,6 @@ endif
ifdef ENABLE_LURE
DIST_FILES_ENGINEDATA+=lure.dat
endif
-ifdef ENABLE_M4
-DIST_FILES_ENGINEDATA+=m4.dat
-endif
ifdef ENABLE_QUEEN
DIST_FILES_ENGINEDATA+=queen.tbl
endif
diff --git a/backends/platform/maemo/debian/rules b/backends/platform/maemo/debian/rules
index 7613df25b4..64add08de8 100755
--- a/backends/platform/maemo/debian/rules
+++ b/backends/platform/maemo/debian/rules
@@ -47,7 +47,7 @@ install: build
install -m0644 gui/themes/scummclassic.zip gui/themes/scummmodern.zip debian/scummvm/opt/scummvm/share
install -m0644 backends/vkeybd/packs/vkeybd_default.zip debian/scummvm/opt/scummvm/share
# for optified version we can also add engine datafiles
- install -m0644 dists/engine-data/drascula.dat dists/engine-data/hugo.dat dists/engine-data/kyra.dat dists/engine-data/lure.dat dists/engine-data/m4.dat dists/engine-data/mads.dat dists/engine-data/queen.tbl dists/engine-data/sky.cpt dists/engine-data/teenagent.dat dists/engine-data/toon.dat debian/scummvm/opt/scummvm/share
+ install -m0644 dists/engine-data/drascula.dat dists/engine-data/hugo.dat dists/engine-data/kyra.dat dists/engine-data/lure.dat dists/engine-data/queen.tbl dists/engine-data/sky.cpt dists/engine-data/teenagent.dat dists/engine-data/toon.dat debian/scummvm/opt/scummvm/share
install -m0644 -d debian/scummvm/usr/share/doc/scummvm
install -m0644 NEWS README COPYRIGHT debian/scummvm/usr/share/doc/scummvm
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 df06542e72..0a80bedee1 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -829,7 +829,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/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/dists/irix/scummvm.idb b/dists/irix/scummvm.idb
index 73876e6bd1..6a613bbbd5 100644
--- a/dists/irix/scummvm.idb
+++ b/dists/irix/scummvm.idb
@@ -8,7 +8,6 @@ f 0644 root sys usr/ScummVM/share/pixmaps/scummvm.xpm scummvm.xpm scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/drascula.dat drascula.dat scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/kyra.dat kyra.dat scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/lure.dat lure.dat scummvm.sw.eoe
-f 0644 root sys usr/ScummVM/share/scummvm/m4.dat m4.dat scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/pred.dic pred.dic scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/queen.tbl queen.tbl scummvm.sw.eoe
f 0644 root sys usr/ScummVM/share/scummvm/scummmodern.zip scummmodern.zip scummvm.sw.eoe
diff --git a/dists/scummvm.rc.in b/dists/scummvm.rc.in
index b91e7ebb0c..6ca807c413 100644
--- a/dists/scummvm.rc.in
+++ b/dists/scummvm.rc.in
@@ -31,9 +31,6 @@ kyra.dat FILE "dists/engine-data/kyra.dat"
#if ENABLE_LURE == STATIC_PLUGIN
lure.dat FILE "dists/engine-data/lure.dat"
#endif
-#if ENABLE_M4 == STATIC_PLUGIN
-m4.dat FILE "dists/engine-data/m4.dat"
-#endif
#if ENABLE_QUEEN == STATIC_PLUGIN
queen.tbl FILE "dists/engine-data/queen.tbl"
#endif
diff --git a/dists/win32/ScummVM.iss b/dists/win32/ScummVM.iss
index 072f53bf8f..c2132e1217 100644
--- a/dists/win32/ScummVM.iss
+++ b/dists/win32/ScummVM.iss
@@ -95,7 +95,6 @@ Source: drascula.dat; DestDir: {app}; Flags: ignoreversion
Source: hugo.dat; DestDir: {app}; Flags: ignoreversion
Source: kyra.dat; DestDir: {app}; Flags: ignoreversion
Source: lure.dat; DestDir: {app}; Flags: ignoreversion
-Source: m4.dat; DestDir: {app}; Flags: ignoreversion
Source: pred.dic; DestDir: {app}; Flags: ignoreversion
Source: queen.tbl; DestDir: {app}; Flags: ignoreversion
Source: sky.cpt; DestDir: {app}; Flags: ignoreversion
diff --git a/dists/win32/scummvm.nsi b/dists/win32/scummvm.nsi
index 23a3abcfd4..d3689f46fc 100644
--- a/dists/win32/scummvm.nsi
+++ b/dists/win32/scummvm.nsi
@@ -265,7 +265,6 @@ Section "ScummVM" SecMain
File "${engine_data}\hugo.dat"
File "${engine_data}\kyra.dat"
File "${engine_data}\lure.dat"
- File "${engine_data}\m4.dat"
File "${engine_data}\queen.tbl"
File "${engine_data}\sky.cpt"
File "${engine_data}\teenagent.dat"
@@ -352,7 +351,6 @@ Section -un.Main SecUninstall
Delete /REBOOTOK $INSTDIR\hugo.dat
Delete /REBOOTOK $INSTDIR\kyra.dat
Delete /REBOOTOK $INSTDIR\lure.dat
- Delete /REBOOTOK $INSTDIR\m4.dat
Delete /REBOOTOK $INSTDIR\queen.tbl
Delete /REBOOTOK $INSTDIR\sky.cpt
Delete /REBOOTOK $INSTDIR\teenagent.dat
diff --git a/dists/win32/scummvm.nsi.in b/dists/win32/scummvm.nsi.in
index cba1e81e33..dd63a21242 100644
--- a/dists/win32/scummvm.nsi.in
+++ b/dists/win32/scummvm.nsi.in
@@ -265,7 +265,6 @@ Section "ScummVM" SecMain
File "${engine_data}\hugo.dat"
File "${engine_data}\kyra.dat"
File "${engine_data}\lure.dat"
- File "${engine_data}\m4.dat"
File "${engine_data}\queen.tbl"
File "${engine_data}\sky.cpt"
File "${engine_data}\teenagent.dat"
@@ -352,7 +351,6 @@ Section -un.Main SecUninstall
Delete /REBOOTOK $INSTDIR\hugo.dat
Delete /REBOOTOK $INSTDIR\kyra.dat
Delete /REBOOTOK $INSTDIR\lure.dat
- Delete /REBOOTOK $INSTDIR\m4.dat
Delete /REBOOTOK $INSTDIR\queen.tbl
Delete /REBOOTOK $INSTDIR\sky.cpt
Delete /REBOOTOK $INSTDIR\teenagent.dat