aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2013-04-18 23:35:23 +0200
committerWillem Jan Palenstijn2013-05-08 20:40:58 +0200
commit9c2341678ef4984bf92b3878295250faf980b066 (patch)
tree2fb4805e05e16b9924e80c9947e6bad723b28c4b /devtools
parent8172d679df5148a4a32f46074b20cb6caf91844f (diff)
parenta5f4ff36ffc386d48f2da49387a9655ce9295a4d (diff)
downloadscummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.tar.gz
scummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.tar.bz2
scummvm-rg350-9c2341678ef4984bf92b3878295250faf980b066.zip
Merge branch 'master'
Diffstat (limited to 'devtools')
-rw-r--r--devtools/convbdf.c928
-rw-r--r--devtools/convbdf.cpp510
-rw-r--r--devtools/create_hugo/enums.h2
-rw-r--r--devtools/create_hugo/staticdata.h36
-rw-r--r--devtools/create_kyradat/create_kyradat.cpp1567
-rw-r--r--devtools/create_kyradat/create_kyradat.h569
-rw-r--r--devtools/create_kyradat/extract.cpp180
-rw-r--r--devtools/create_kyradat/extract.h18
-rw-r--r--devtools/create_kyradat/games.cpp1129
-rw-r--r--devtools/create_kyradat/module.mk3
-rw-r--r--devtools/create_kyradat/tables.cpp2748
-rw-r--r--devtools/create_kyradat/util.cpp13
-rw-r--r--devtools/create_kyradat/util.h1
-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/scripts/rex_nebular.txt2241
-rw-r--r--devtools/create_project/create_project.cpp165
-rw-r--r--devtools/create_project/create_project.h2
-rwxr-xr-xdevtools/create_project/xcode.cpp2
-rw-r--r--devtools/create_translations/cp_parser.cpp104
-rw-r--r--devtools/create_translations/cp_parser.h (renamed from devtools/create_mads/parser.h)36
-rw-r--r--devtools/create_translations/create_translations.cpp105
-rw-r--r--devtools/create_translations/create_translations.h1
-rw-r--r--devtools/create_translations/module.mk1
-rwxr-xr-xdevtools/credits.pl34
-rw-r--r--devtools/md5table.c1
-rw-r--r--devtools/module.mk4
-rw-r--r--devtools/sci/musicplayer.cpp2
-rw-r--r--devtools/scumm-md5.txt27
-rw-r--r--devtools/skycpt/AsciiCptCompile.cpp2
-rw-r--r--devtools/skycpt/TextFile.cpp4
-rw-r--r--devtools/skycpt/cptcompiler.cpp34
-rw-r--r--devtools/tasmrecover/dreamweb/backdrop.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/debug.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/dreamweb.asm6
-rw-r--r--devtools/tasmrecover/dreamweb/keypad.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/look.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/monitor.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/newplace.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/object.asm4
-rw-r--r--devtools/tasmrecover/dreamweb/print.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/saveload.asm3
-rw-r--r--devtools/tasmrecover/dreamweb/sblaster.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/sprite.asm4
-rw-r--r--devtools/tasmrecover/dreamweb/talk.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/titles.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/use.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/vars.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/vgafades.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/vgagrafx.asm2
-rwxr-xr-xdevtools/tasmrecover/tasm-recover2237
-rw-r--r--devtools/tasmrecover/tasm/cpp.py103
-rw-r--r--devtools/tasmrecover/tasm/parser.py51
-rwxr-xr-xdevtools/update-version.pl6
56 files changed, 8633 insertions, 5356 deletions
diff --git a/devtools/convbdf.c b/devtools/convbdf.c
deleted file mode 100644
index e465b77a9c..0000000000
--- a/devtools/convbdf.c
+++ /dev/null
@@ -1,928 +0,0 @@
-/*
- * Convert BDF files to C++ source.
- *
- * Copyright (c) 2002 by Greg Haerr <greg@censoft.com>
- *
- * Originally writen for the Microwindows Project <http://microwindows.org>
- *
- * Greg then modified it for Rockbox <http://rockbox.haxx.se/>
- *
- * Max Horn took that version and changed it to work for ScummVM.
- * Changes include: warning fixes, removed .FNT output, output C++ source,
- * tweak code generator so that the generated code fits into ScummVM code base.
- *
- * What fun it is converting font data...
- *
- * 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 <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-int READ_UINT16(void *addr) {
- unsigned char *buf = (unsigned char *)addr;
- return (buf[0] << 8) | buf[1];
-}
-
-void WRITE_UINT16(void *addr, int value) {
- unsigned char *buf = (unsigned char *)addr;
- buf[0] = (value >> 8) & 0xFF;
- buf[1] = value & 0xFF;
-}
-
-/* BEGIN font.h*/
-/* bitmap_t helper macros*/
-#define BITMAP_WORDS(x) (((x)+15)/16) /* image size in words*/
-#define BITMAP_BYTES(x) (BITMAP_WORDS(x)*sizeof(bitmap_t))
-#define BITMAP_BITSPERIMAGE (sizeof(bitmap_t) * 8)
-#define BITMAP_BITVALUE(n) ((bitmap_t) (((bitmap_t) 1) << (n)))
-#define BITMAP_FIRSTBIT (BITMAP_BITVALUE(BITMAP_BITSPERIMAGE - 1))
-#define BITMAP_TESTBIT(m) ((m) & BITMAP_FIRSTBIT)
-#define BITMAP_SHIFTBIT(m) ((bitmap_t) ((m) << 1))
-
-typedef unsigned short bitmap_t; /* bitmap image unit size*/
-
-typedef struct {
- signed char w;
- signed char h;
- signed char x;
- signed char y;
-} BBX;
-
-/* builtin C-based proportional/fixed font structure */
-/* based on The Microwindows Project http://microwindows.org */
-struct font {
- char * name; /* font name*/
- int maxwidth; /* max width in pixels*/
- int height; /* height in pixels*/
- int fbbw, fbbh, fbbx, fbby; /* max bounding box */
- int ascent; /* ascent (baseline) height*/
- int firstchar; /* first character in bitmap*/
- int size; /* font size in glyphs*/
- bitmap_t* bits; /* 16-bit right-padded bitmap data*/
- unsigned long* offset; /* offsets into bitmap data*/
- unsigned char* width; /* character widths or NULL if fixed*/
- BBX* bbx; /* character bounding box or NULL if fixed*/
- int defaultchar; /* default char (not glyph index)*/
- long bits_size; /* # words of bitmap_t bits*/
-
- /* unused by runtime system, read in by convbdf*/
- char * facename; /* facename of font*/
- char * copyright; /* copyright info for loadable fonts*/
- int pixel_size;
- int descent;
-};
-/* END font.h*/
-
-#define isprefix(buf,str) (!strncmp(buf, str, strlen(str)))
-#define strequal(s1,s2) (!strcmp(s1, s2))
-
-#define EXTRA 300 /* # bytes extra allocation for buggy .bdf files*/
-
-int gen_map = 1;
-int start_char = 0;
-int limit_char = 65535;
-int oflag = 0;
-char outfile[256];
-
-void usage(void);
-void getopts(int *pac, char ***pav);
-int convbdf(char *path);
-
-void free_font(struct font* pf);
-struct font* bdf_read_font(char *path);
-int bdf_read_header(FILE *fp, struct font* pf);
-int bdf_read_bitmaps(FILE *fp, struct font* pf);
-char * bdf_getline(FILE *fp, char *buf, int len);
-bitmap_t bdf_hexval(unsigned char *buf);
-
-int gen_c_source(struct font* pf, char *path);
-
-void error(const char *s, ...) {
- char buf[1024];
- va_list va;
-
- va_start(va, s);
- vsnprintf(buf, 1024, s, va);
- va_end(va);
-
- fprintf(stderr, "ERROR: %s!\n", buf);
-
- exit(1);
-}
-
-void warning(const char *s, ...) {
- char buf[1024];
- va_list va;
-
- va_start(va, s);
- vsnprintf(buf, 1024, s, va);
- va_end(va);
-
- fprintf(stderr, "WARNING: %s!\n", buf);
-}
-
-void
-usage(void) {
- char help[] = {
- "Usage: convbdf [options] [input-files]\n"
- " convbdf [options] [-o output-file] [single-input-file]\n"
- "Options:\n"
- " -s N Start output at character encodings >= N\n"
- " -l N Limit output to character encodings <= N\n"
- " -n Don't generate bitmaps as comments in .c file\n"
- };
-
- fprintf(stderr, "%s", help);
-}
-
-/* parse command line options*/
-void getopts(int *pac, char ***pav) {
- const char *p;
- char **av;
- int ac;
-
- ac = *pac;
- av = *pav;
- while (ac > 0 && av[0][0] == '-') {
- p = &av[0][1];
- while (*p) {
- switch (*p++) {
- case ' ': /* multiple -args on av[]*/
- while (*p && *p == ' ')
- p++;
- if (*p++ != '-') /* next option must have dash*/
- p = "";
- break; /* proceed to next option*/
- case 'n': /* don't gen bitmap comments*/
- gen_map = 0;
- break;
- case 'o': /* set output file*/
- oflag = 1;
- if (*p) {
- strcpy(outfile, p);
- while (*p && *p != ' ')
- p++;
- }
- else {
- av++; ac--;
- if (ac > 0)
- strcpy(outfile, av[0]);
- }
- break;
- case 'l': /* set encoding limit*/
- if (*p) {
- limit_char = atoi(p);
- while (*p && *p != ' ')
- p++;
- }
- else {
- av++; ac--;
- if (ac > 0)
- limit_char = atoi(av[0]);
- }
- break;
- case 's': /* set encoding start*/
- if (*p) {
- start_char = atoi(p);
- while (*p && *p != ' ')
- p++;
- }
- else {
- av++; ac--;
- if (ac > 0)
- start_char = atoi(av[0]);
- }
- break;
- default:
- fprintf(stderr, "Unknown option ignored: %c\r\n", *(p-1));
- }
- }
- ++av; --ac;
- }
- *pac = ac;
- *pav = av;
-}
-
-/* remove directory prefix and file suffix from full path*/
-char *basename(char *path) {
- char *p, *b;
- static char base[256];
-
- /* remove prepended path and extension*/
- b = path;
- for (p = path; *p; ++p) {
- if (*p == '/')
- b = p + 1;
- }
- strcpy(base, b);
- for (p = base; *p; ++p) {
- if (*p == '.') {
- *p = 0;
- break;
- }
- }
- return base;
-}
-
-int convbdf(char *path) {
- struct font* pf;
- int ret = 0;
-
- pf = bdf_read_font(path);
- if (!pf)
- exit(1);
-
- if (!oflag) {
- strcpy(outfile, basename(path));
- strcat(outfile, ".cpp");
- }
- ret |= gen_c_source(pf, outfile);
-
- free_font(pf);
- return ret;
-}
-
-int main(int ac, char *av[]) {
- int ret = 0;
-
- ++av; --ac; /* skip av[0]*/
- getopts(&ac, &av); /* read command line options*/
-
- if (ac < 1) {
- usage();
- exit(1);
- }
- if (oflag && ac > 1) {
- usage();
- exit(1);
- }
-
- while (ac > 0) {
- ret |= convbdf(av[0]);
- ++av; --ac;
- }
-
- exit(ret);
-}
-
-/* free font structure*/
-void free_font(struct font* pf) {
- if (!pf)
- return;
- free(pf->name);
- free(pf->facename);
- free(pf->bits);
- free(pf->offset);
- free(pf->width);
- free(pf);
-}
-
-/* build incore structure from .bdf file*/
-struct font* bdf_read_font(char *path) {
- FILE *fp;
- struct font* pf;
-
- fp = fopen(path, "rb");
- if (!fp) {
- fprintf(stderr, "Error opening file: %s\n", path);
- return NULL;
- }
-
- pf = (struct font*)calloc(1, sizeof(struct font));
- if (!pf)
- goto errout;
-
- pf->name = strdup(basename(path));
-
- if (!bdf_read_header(fp, pf)) {
- fprintf(stderr, "Error reading font header\n");
- goto errout;
- }
-
- if (!bdf_read_bitmaps(fp, pf)) {
- fprintf(stderr, "Error reading font bitmaps\n");
- goto errout;
- }
-
- fclose(fp);
- return pf;
-
- errout:
- fclose(fp);
- free_font(pf);
- return NULL;
-}
-
-/* read bdf font header information, return 0 on error*/
-int bdf_read_header(FILE *fp, struct font* pf) {
- int encoding;
- int nchars, maxwidth;
- int firstchar = 65535;
- int lastchar = -1;
- char buf[256];
- char facename[256];
- char copyright[256];
-
- /* set certain values to errors for later error checking*/
- pf->defaultchar = -1;
- pf->ascent = -1;
- pf->descent = -1;
-
- for (;;) {
- if (!bdf_getline(fp, buf, sizeof(buf))) {
- fprintf(stderr, "Error: EOF on file\n");
- return 0;
- }
- if (isprefix(buf, "FONT ")) { /* not required*/
- if (sscanf(buf, "FONT %[^\n]", facename) != 1) {
- fprintf(stderr, "Error: bad 'FONT'\n");
- return 0;
- }
- pf->facename = strdup(facename);
- continue;
- }
- if (isprefix(buf, "COPYRIGHT ")) { /* not required*/
- if (sscanf(buf, "COPYRIGHT \"%[^\"]", copyright) != 1) {
- fprintf(stderr, "Error: bad 'COPYRIGHT'\n");
- return 0;
- }
- pf->copyright = strdup(copyright);
- continue;
- }
- if (isprefix(buf, "DEFAULT_CHAR ")) { /* not required*/
- if (sscanf(buf, "DEFAULT_CHAR %d", &pf->defaultchar) != 1) {
- fprintf(stderr, "Error: bad 'DEFAULT_CHAR'\n");
- return 0;
- }
- }
- if (isprefix(buf, "FONT_DESCENT ")) {
- if (sscanf(buf, "FONT_DESCENT %d", &pf->descent) != 1) {
- fprintf(stderr, "Error: bad 'FONT_DESCENT'\n");
- return 0;
- }
- continue;
- }
- if (isprefix(buf, "FONT_ASCENT ")) {
- if (sscanf(buf, "FONT_ASCENT %d", &pf->ascent) != 1) {
- fprintf(stderr, "Error: bad 'FONT_ASCENT'\n");
- return 0;
- }
- continue;
- }
- if (isprefix(buf, "FONTBOUNDINGBOX ")) {
- if (sscanf(buf, "FONTBOUNDINGBOX %d %d %d %d",
- &pf->fbbw, &pf->fbbh, &pf->fbbx, &pf->fbby) != 4) {
- fprintf(stderr, "Error: bad 'FONTBOUNDINGBOX'\n");
- return 0;
- }
- continue;
- }
- if (isprefix(buf, "CHARS ")) {
- if (sscanf(buf, "CHARS %d", &nchars) != 1) {
- fprintf(stderr, "Error: bad 'CHARS'\n");
- return 0;
- }
- continue;
- }
-
- /*
- * Reading ENCODING is necessary to get firstchar/lastchar
- * which is needed to pre-calculate our offset and widths
- * array sizes.
- */
- if (isprefix(buf, "ENCODING ")) {
- if (sscanf(buf, "ENCODING %d", &encoding) != 1) {
- fprintf(stderr, "Error: bad 'ENCODING'\n");
- return 0;
- }
- if (encoding >= 0 &&
- encoding <= limit_char &&
- encoding >= start_char) {
-
- if (firstchar > encoding)
- firstchar = encoding;
- if (lastchar < encoding)
- lastchar = encoding;
- }
- continue;
- }
- if (strequal(buf, "ENDFONT"))
- break;
- }
-
- /* calc font height*/
- if (pf->ascent < 0 || pf->descent < 0 || firstchar < 0) {
- fprintf(stderr, "Error: Invalid BDF file, requires FONT_ASCENT/FONT_DESCENT/ENCODING\n");
- return 0;
- }
- pf->height = pf->ascent + pf->descent;
-
- /* calc default char*/
- if (pf->defaultchar < 0 ||
- pf->defaultchar < firstchar ||
- pf->defaultchar > limit_char )
- pf->defaultchar = firstchar;
-
- /* calc font size (offset/width entries)*/
- pf->firstchar = firstchar;
- pf->size = lastchar - firstchar + 1;
-
- /* use the font boundingbox to get initial maxwidth*/
- /*maxwidth = pf->fbbw - pf->fbbx;*/
- maxwidth = pf->fbbw;
-
- /* initially use font maxwidth * height for bits allocation*/
- pf->bits_size = nchars * BITMAP_WORDS(maxwidth) * pf->height;
-
- /* allocate bits, offset, and width arrays*/
- pf->bits = (bitmap_t *)malloc(pf->bits_size * sizeof(bitmap_t) + EXTRA);
- pf->offset = (unsigned long *)malloc(pf->size * sizeof(unsigned long));
- pf->width = (unsigned char *)malloc(pf->size * sizeof(unsigned char));
- pf->bbx = (BBX *)malloc(pf->size * sizeof(BBX));
-
- if (!pf->bits || !pf->offset || !pf->width) {
- fprintf(stderr, "Error: no memory for font load\n");
- return 0;
- }
-
- return 1;
-}
-
-/* read bdf font bitmaps, return 0 on error*/
-int bdf_read_bitmaps(FILE *fp, struct font* pf) {
- long ofs = 0;
- int maxwidth = 0;
- int i, k, encoding, width;
- int bbw, bbh, bbx, bby;
- int proportional = 0;
- int need_bbx = 0;
- int encodetable = 0;
- long l;
- char buf[256];
-
- /* reset file pointer*/
- fseek(fp, 0L, SEEK_SET);
-
- /* initially mark offsets as not used*/
- for (i = 0; i < pf->size; ++i)
- pf->offset[i] = -1;
-
- for (;;) {
- if (!bdf_getline(fp, buf, sizeof(buf))) {
- fprintf(stderr, "Error: EOF on file\n");
- return 0;
- }
- if (isprefix(buf, "STARTCHAR")) {
- encoding = width = bbw = bbh = bbx = bby = -1;
- continue;
- }
- if (isprefix(buf, "ENCODING ")) {
- if (sscanf(buf, "ENCODING %d", &encoding) != 1) {
- fprintf(stderr, "Error: bad 'ENCODING'\n");
- return 0;
- }
- if (encoding < start_char || encoding > limit_char)
- encoding = -1;
- continue;
- }
- if (isprefix(buf, "DWIDTH ")) {
- if (sscanf(buf, "DWIDTH %d", &width) != 1) {
- fprintf(stderr, "Error: bad 'DWIDTH'\n");
- return 0;
- }
- /* use font boundingbox width if DWIDTH <= 0*/
- if (width <= 0)
- width = pf->fbbw - pf->fbbx;
- continue;
- }
- if (isprefix(buf, "BBX ")) {
- if (sscanf(buf, "BBX %d %d %d %d", &bbw, &bbh, &bbx, &bby) != 4) {
- fprintf(stderr, "Error: bad 'BBX'\n");
- return 0;
- }
- continue;
- }
- if (strequal(buf, "BITMAP")) {
- bitmap_t *ch_bitmap = pf->bits + ofs;
- int ch_words;
-
- if (encoding < 0)
- continue;
-
- /* set bits offset in encode map*/
- if (pf->offset[encoding-pf->firstchar] != (unsigned long)-1) {
- fprintf(stderr, "Error: duplicate encoding for character %d (0x%02x), ignoring duplicate\n",
- encoding, encoding);
- continue;
- }
- pf->offset[encoding-pf->firstchar] = ofs;
- pf->width[encoding-pf->firstchar] = width;
-
- pf->bbx[encoding-pf->firstchar].w = bbw;
- pf->bbx[encoding-pf->firstchar].h = bbh;
- pf->bbx[encoding-pf->firstchar].x = bbx;
- pf->bbx[encoding-pf->firstchar].y = bby;
-
- if (width > maxwidth)
- maxwidth = width;
-
- /* clear bitmap*/
- memset(ch_bitmap, 0, BITMAP_BYTES(bbw) * bbh);
-
- ch_words = BITMAP_WORDS(bbw);
-
- /* read bitmaps*/
- for (i = 0; i < bbh; ++i) {
- if (!bdf_getline(fp, buf, sizeof(buf))) {
- fprintf(stderr, "Error: EOF reading BITMAP data\n");
- return 0;
- }
- if (isprefix(buf, "ENDCHAR"))
- break;
-
- for (k = 0; k < ch_words; ++k) {
- bitmap_t value;
-
- value = bdf_hexval((unsigned char *)buf);
-
- if (bbw > 8) {
- WRITE_UINT16(ch_bitmap, value);
- } else {
- WRITE_UINT16(ch_bitmap, value << 8);
- }
- ch_bitmap++;
- }
- }
-
- // If the default glyph is completely empty, the next
- // glyph will not be dumped. Work around this by
- // never generating completely empty glyphs.
-
- if (bbh == 0 && bbw == 0) {
- pf->bbx[encoding-pf->firstchar].w = 1;
- pf->bbx[encoding-pf->firstchar].h = 1;
- *ch_bitmap++ = 0;
- ofs++;
- } else {
- ofs += ch_words * bbh;
- }
- continue;
- }
- if (strequal(buf, "ENDFONT"))
- break;
- }
-
- /* set max width*/
- pf->maxwidth = maxwidth;
-
- /* change unused offset/width values to default char values*/
- for (i = 0; i < pf->size; ++i) {
- int defchar = pf->defaultchar - pf->firstchar;
-
- if (pf->offset[i] == (unsigned long)-1) {
- pf->offset[i] = pf->offset[defchar];
- pf->width[i] = pf->width[defchar];
- pf->bbx[i].w = pf->bbx[defchar].w;
- pf->bbx[i].h = pf->bbx[defchar].h;
- pf->bbx[i].x = pf->bbx[defchar].x;
- pf->bbx[i].y = pf->bbx[defchar].y;
- }
- }
-
- /* determine whether font doesn't require encode table*/
- l = 0;
- for (i = 0; i < pf->size; ++i) {
- if (pf->offset[i] != (unsigned long)l) {
- encodetable = 1;
- break;
- }
- l += BITMAP_WORDS(pf->bbx[i].w) * pf->bbx[i].h;
- }
- if (!encodetable) {
- free(pf->offset);
- pf->offset = NULL;
- }
-
- /* determine whether font is fixed-width*/
- for (i = 0; i < pf->size; ++i) {
- if (pf->width[i] != maxwidth) {
- proportional = 1;
- break;
- }
- }
- if (!proportional) {
- free(pf->width);
- pf->width = NULL;
- }
-
- /* determine if the font needs a bbx table */
- for (i = 0; i < pf->size; ++i) {
- if (pf->bbx[i].w != pf->fbbw || pf->bbx[i].h != pf->fbbh || pf->bbx[i].x != pf->fbbx || pf->bbx[i].y != pf->fbby) {
- need_bbx = 1;
- break;
- }
- }
- if (!need_bbx) {
- free(pf->bbx);
- pf->bbx = NULL;
- }
-
- /* reallocate bits array to actual bits used*/
- if (ofs < pf->bits_size) {
- pf->bits = (bitmap_t *)realloc(pf->bits, ofs * sizeof(bitmap_t));
- pf->bits_size = ofs;
- }
- else {
- if (ofs > pf->bits_size) {
- fprintf(stderr, "Warning: DWIDTH spec > max FONTBOUNDINGBOX\n");
- if (ofs > pf->bits_size+EXTRA) {
- fprintf(stderr, "Error: Not enough bits initially allocated\n");
- return 0;
- }
- pf->bits_size = ofs;
- }
- }
-
- return 1;
-}
-
-/* read the next non-comment line, returns buf or NULL if EOF*/
-char *bdf_getline(FILE *fp, char *buf, int len) {
- int c;
- char *b;
-
- for (;;) {
- b = buf;
- while ((c = getc(fp)) != EOF) {
- if (c == '\r')
- continue;
- if (c == '\n')
- break;
- if (b - buf >= (len - 1))
- break;
- *b++ = c;
- }
- *b = '\0';
- if (c == EOF && b == buf)
- return NULL;
- if (b != buf && !isprefix(buf, "COMMENT"))
- break;
- }
- return buf;
-}
-
-/* return hex value of buffer */
-bitmap_t bdf_hexval(unsigned char *buf) {
- bitmap_t val = 0;
- unsigned char *ptr;
-
- for (ptr = buf; *ptr; ptr++) {
- int c = *ptr;
-
- if (c >= '0' && c <= '9')
- c -= '0';
- else if (c >= 'A' && c <= 'F')
- c = c - 'A' + 10;
- else if (c >= 'a' && c <= 'f')
- c = c - 'a' + 10;
- else
- c = 0;
- val = (val << 4) | c;
- }
- return val;
-}
-
-/* generate C source from in-core font*/
-int gen_c_source(struct font* pf, char *path) {
- FILE *ofp;
- int h, i;
- int did_defaultchar = 0;
- int did_syncmsg = 0;
- time_t t = time(0);
- bitmap_t *ofs = pf->bits;
- char buf[256];
- char obuf[256];
- char bbuf[256];
- char hdr1[] = {
- "/* Generated by convbdf on %s. */\n"
- "#include \"graphics/fonts/bdf.h\"\n"
- "\n"
- "/* Font information:\n"
- " name: %s\n"
- " facename: %s\n"
- " w x h: %dx%d\n"
- " bbx: %d %d %d %d\n"
- " size: %d\n"
- " ascent: %d\n"
- " descent: %d\n"
- " first char: %d (0x%02x)\n"
- " last char: %d (0x%02x)\n"
- " default char: %d (0x%02x)\n"
- " proportional: %s\n"
- " %s\n"
- "*/\n"
- "\n"
- "namespace Graphics {\n"
- "\n"
- "/* Font character bitmap data. */\n"
- "static const bitmap_t _font_bits[] = {\n"
- };
-
- ofp = fopen(path, "w");
- if (!ofp) {
- fprintf(stderr, "Can't create %s\n", path);
- return 1;
- }
-
- strcpy(buf, ctime(&t));
- buf[strlen(buf) - 1] = 0;
-
- fprintf(ofp, hdr1, buf,
- pf->name,
- pf->facename? pf->facename: "",
- pf->maxwidth, pf->height,
- pf->fbbw, pf->fbbh, pf->fbbx, pf->fbby,
- pf->size,
- pf->ascent, pf->descent,
- pf->firstchar, pf->firstchar,
- pf->firstchar+pf->size-1, pf->firstchar+pf->size-1,
- pf->defaultchar, pf->defaultchar,
- pf->width? "yes": "no",
- pf->copyright? pf->copyright: "");
-
- /* generate bitmaps*/
- for (i = 0; i < pf->size; ++i) {
- int x;
- int bitcount = 0;
- int width = pf->bbx ? pf->bbx[i].w : pf->fbbw;
- int height = pf->bbx ? pf->bbx[i].h : pf->fbbh;
- int xoff = pf->bbx ? pf->bbx[i].x : pf->fbbx;
- int yoff = pf->bbx ? pf->bbx[i].y : pf->fbby;
- bitmap_t *bits = pf->bits + (pf->offset? pf->offset[i]: (height * i));
- bitmap_t bitvalue = 0;
-
- /*
- * Generate bitmap bits only if not this index isn't
- * the default character in encode map, or the default
- * character hasn't been generated yet.
- */
- if (pf->offset &&
- (pf->offset[i] == pf->offset[pf->defaultchar-pf->firstchar])) {
- if (did_defaultchar)
- continue;
- did_defaultchar = 1;
- }
-
- fprintf(ofp, "\n/* Character %d (0x%02x):\n width %d\n bbx ( %d, %d, %d, %d )\n",
- i+pf->firstchar, i+pf->firstchar,
- pf->width ? pf->width[i+pf->firstchar] : pf->maxwidth,
- width, height, xoff, yoff);
-
- if (gen_map) {
- fprintf(ofp, "\n +");
- for (x=0; x<width; ++x) fprintf(ofp, "-");
- fprintf(ofp, "+\n");
-
- x = 0;
- h = height;
- while (h > 0) {
- if (x == 0) fprintf(ofp, " |");
-
- if (bitcount <= 0) {
- bitcount = BITMAP_BITSPERIMAGE;
- bitvalue = READ_UINT16(bits);
- bits++;
- }
-
- fprintf(ofp, BITMAP_TESTBIT(bitvalue)? "*": " ");
-
- bitvalue = BITMAP_SHIFTBIT(bitvalue);
- --bitcount;
- if (++x == width) {
- fprintf(ofp, "|\n");
- --h;
- x = 0;
- bitcount = 0;
- }
- }
- fprintf(ofp, " +");
- for (x = 0; x < width; ++x)
- fprintf(ofp, "-");
- fprintf(ofp, "+\n*/\n");
- } else
- fprintf(ofp, "\n*/\n");
-
- bits = pf->bits + (pf->offset? pf->offset[i]: (height * i));
- for (x = BITMAP_WORDS(width) * height; x > 0; --x) {
- fprintf(ofp, "0x%04x,\n", READ_UINT16(bits));
- if (!did_syncmsg && *bits++ != *ofs++) {
- fprintf(stderr, "Warning: found encoding values in non-sorted order (not an error).\n");
- did_syncmsg = 1;
- }
- }
- }
- fprintf(ofp, "};\n\n");
-
- if (pf->offset) {
- /* output offset table*/
- fprintf(ofp, "/* Character->glyph mapping. */\n"
- "static const unsigned long _sysfont_offset[] = {\n");
-
- for (i = 0; i < pf->size; ++i)
- fprintf(ofp, " %ld,\t/* (0x%02x) */\n",
- pf->offset[i], i+pf->firstchar);
- fprintf(ofp, "};\n\n");
- }
-
- /* output width table for proportional fonts*/
- if (pf->width) {
- fprintf(ofp, "/* Character width data. */\n"
- "static const unsigned char _sysfont_width[] = {\n");
-
- for (i = 0; i < pf->size; ++i)
- fprintf(ofp, " %d,\t/* (0x%02x) */\n",
- pf->width[i], i+pf->firstchar);
- fprintf(ofp, "};\n\n");
- }
-
- /* output bbox table */
- if (pf->bbx) {
- fprintf(ofp, "/* Bounding box data. */\n"
- "static const BBX _sysfont_bbx[] = {\n");
-
- for (i = 0; i < pf->size; ++i)
- fprintf(ofp, "\t{ %d, %d, %d, %d },\t/* (0x%02x) */\n",
- pf->bbx[i].w, pf->bbx[i].h, pf->bbx[i].x, pf->bbx[i].y, i+pf->firstchar);
- fprintf(ofp, "};\n\n");
- }
-
- /* output struct font struct*/
- if (pf->offset)
- sprintf(obuf, "_sysfont_offset,");
- else
- sprintf(obuf, "0, /* no encode table*/");
-
- if (pf->width)
- sprintf(buf, "_sysfont_width,");
- else
- sprintf(buf, "0, /* fixed width*/");
-
- if (pf->bbx)
- sprintf(bbuf, "_sysfont_bbx,");
- else
- sprintf(bbuf, "0, /* fixed bbox*/");
-
- fprintf(ofp,
- "/* Exported structure definition. */\n"
- "static const BdfFontDesc desc = {\n"
- "\t" "\"%s\",\n"
- "\t" "%d,\n"
- "\t" "%d,\n"
- "\t" "%d, %d, %d, %d,\n"
- "\t" "%d,\n"
- "\t" "%d,\n"
- "\t" "%d,\n"
- "\t" "_font_bits,\n"
- "\t" "%s\n"
- "\t" "%s\n"
- "\t" "%s\n"
- "\t" "%d,\n"
- "\t" "sizeof(_font_bits)/sizeof(bitmap_t)\n"
- "};\n",
- pf->name,
- pf->maxwidth, pf->height,
- pf->fbbw, pf->fbbh, pf->fbbx, pf->fbby,
- pf->ascent,
- pf->firstchar,
- pf->size,
- obuf,
- buf,
- bbuf,
- pf->defaultchar);
-
- fprintf(ofp, "\n" "#if !(defined(__GP32__))\n");
- fprintf(ofp, "extern const BdfFont g_sysfont(desc);\n");
- fprintf(ofp, "#else\n");
- fprintf(ofp, "DEFINE_FONT(g_sysfont)\n");
- fprintf(ofp, "#endif\n");
- fprintf(ofp, "\n} // End of namespace Graphics\n");
- fclose(ofp);
-
- return 0;
-}
diff --git a/devtools/convbdf.cpp b/devtools/convbdf.cpp
new file mode 100644
index 0000000000..c8b1fb7d6d
--- /dev/null
+++ b/devtools/convbdf.cpp
@@ -0,0 +1,510 @@
+/* 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 <fstream>
+#include <string>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <time.h>
+
+struct BdfBoundingBox {
+ int width, height;
+ int xOffset, yOffset;
+};
+
+struct BdfFont {
+ int maxAdvance;
+ int height;
+ BdfBoundingBox defaultBox;
+ int ascent;
+
+ int firstCharacter;
+ int defaultCharacter;
+ int numCharacters;
+
+ unsigned char **bitmaps;
+ unsigned char *advances;
+ BdfBoundingBox *boxes;
+
+ BdfFont() : bitmaps(0), advances(0), boxes(0) {
+ }
+
+ ~BdfFont() {
+ if (bitmaps) {
+ for (int i = 0; i < numCharacters; ++i)
+ delete[] bitmaps[i];
+ }
+ delete[] bitmaps;
+ delete[] advances;
+ delete[] boxes;
+ }
+};
+
+void error(const char *s, ...) {
+ char buf[1024];
+ va_list va;
+
+ va_start(va, s);
+ vsnprintf(buf, 1024, s, va);
+ va_end(va);
+
+ fprintf(stderr, "ERROR: %s!\n", buf);
+ exit(1);
+}
+
+void warning(const char *s, ...) {
+ char buf[1024];
+ va_list va;
+
+ va_start(va, s);
+ vsnprintf(buf, 1024, s, va);
+ va_end(va);
+
+ fprintf(stderr, "WARNING: %s!\n", buf);
+}
+
+bool hasPrefix(const std::string &str, const std::string &prefix) {
+ return str.compare(0, prefix.size(), prefix) == 0;
+}
+
+inline void hexToInt(unsigned char &h) {
+ if (h >= '0' && h <= '9')
+ h -= '0';
+ else if (h >= 'A' && h <= 'F')
+ h -= 'A' - 10;
+ else if (h >= 'a' && h <= 'f')
+ h -= 'a' - 10;
+ else
+ h = 0;
+}
+
+int main(int argc, char *argv[]) {
+ if (argc != 3) {
+ printf("Usage: convbdf [input] [fontname]\n");
+ return 1;
+ }
+
+ std::ifstream in(argv[1]);
+ std::string line;
+
+ std::getline(in, line);
+ if (in.fail() || in.eof())
+ error("Premature end of file");
+
+ int verMajor, verMinor;
+ if (sscanf(line.c_str(), "STARTFONT %d.%d", &verMajor, &verMinor) != 2)
+ error("File '%s' is no BDF file", argv[1]);
+
+ if (verMajor != 2 || (verMinor != 1 && verMinor != 2))
+ error("File '%s' does not use a supported BDF version (%d.%d)", argv[1], verMajor, verMinor);
+
+ std::string fontName;
+ std::string copyright;
+ BdfFont font;
+ memset(&font, 0, sizeof(font));
+ font.ascent = -1;
+ font.defaultCharacter = -1;
+
+ int charsProcessed = 0, charsAvailable = 0, descent = -1;
+
+ while (true) {
+ std::getline(in, line);
+ if (in.fail() || in.eof())
+ error("Premature end of file");
+
+ if (hasPrefix(line, "SIZE ")) {
+ // Ignore
+ } else if (hasPrefix(line, "FONT ")) {
+ fontName = line.substr(5);
+ } else if (hasPrefix(line, "COPYRIGHT ")) {
+ copyright = line.substr(10);
+ } else if (hasPrefix(line, "COMMENT ")) {
+ // Ignore
+ } else if (hasPrefix(line, "FONTBOUNDINGBOX ")) {
+ if (sscanf(line.c_str(), "FONTBOUNDINGBOX %d %d %d %d",
+ &font.defaultBox.width, &font.defaultBox.height,
+ &font.defaultBox.xOffset, &font.defaultBox.yOffset) != 4)
+ error("Invalid FONTBOUNDINGBOX");
+ } else if (hasPrefix(line, "CHARS ")) {
+ if (sscanf(line.c_str(), "CHARS %d", &charsAvailable) != 1)
+ error("Invalid CHARS");
+
+ font.numCharacters = 256;
+ font.bitmaps = new unsigned char *[font.numCharacters];
+ memset(font.bitmaps, 0, sizeof(unsigned char *) * font.numCharacters);
+ font.advances = new unsigned char[font.numCharacters];
+ font.boxes = new BdfBoundingBox[font.numCharacters];
+ } else if (hasPrefix(line, "FONT_ASCENT ")) {
+ if (sscanf(line.c_str(), "FONT_ASCENT %d", &font.ascent) != 1)
+ error("Invalid FONT_ASCENT");
+ } else if (hasPrefix(line, "FONT_DESCENT ")) {
+ if (sscanf(line.c_str(), "FONT_DESCENT %d", &descent) != 1)
+ error("Invalid FONT_ASCENT");
+ } else if (hasPrefix(line, "DEFAULT_CHAR ")) {
+ if (sscanf(line.c_str(), "DEFAULT_CHAR %d", &font.defaultCharacter) != 1)
+ error("Invalid DEFAULT_CHAR");
+ } else if (hasPrefix(line, "STARTCHAR ")) {
+ ++charsProcessed;
+ if (charsProcessed > charsAvailable)
+ error("Too many characters defined (only %d specified, but %d existing already)",
+ charsAvailable, charsProcessed);
+
+ bool hasWidth = false, hasBitmap = false;
+
+ int encoding = -1;
+ int xAdvance;
+ unsigned char *bitmap = 0;
+ BdfBoundingBox bbox = font.defaultBox;
+
+ while (true) {
+ std::getline(in, line);
+ if (in.fail() || in.eof())
+ error("Premature end of file");
+
+ if (hasPrefix(line, "ENCODING ")) {
+ if (sscanf(line.c_str(), "ENCODING %d", &encoding) != 1)
+ error("Invalid ENCODING");
+ } else if (hasPrefix(line, "DWIDTH ")) {
+ int yAdvance;
+ if (sscanf(line.c_str(), "DWIDTH %d %d", &xAdvance, &yAdvance) != 2)
+ error("Invalid DWIDTH");
+ if (yAdvance != 0)
+ error("Character %d uses a DWIDTH y advance of %d", encoding, yAdvance);
+ if (xAdvance < 0)
+ error("Character %d has a negative x advance", encoding);
+
+ if (xAdvance > font.maxAdvance)
+ font.maxAdvance = xAdvance;
+
+ hasWidth = true;
+ } else if (hasPrefix(line, "BBX" )) {
+ if (sscanf(line.c_str(), "BBX %d %d %d %d",
+ &bbox.width, &bbox.height,
+ &bbox.xOffset, &bbox.yOffset) != 4)
+ error("Invalid BBX");
+ } else if (line == "BITMAP") {
+ hasBitmap = true;
+
+ const size_t bytesPerRow = ((bbox.width + 7) / 8);
+
+ // Since we do not load all characters, we only create a
+ // buffer for the ones we actually load.
+ if (encoding < font.numCharacters)
+ bitmap = new unsigned char[bbox.height * bytesPerRow];
+
+ for (int i = 0; i < bbox.height; ++i) {
+ std::getline(in, line);
+ if (in.fail() || in.eof())
+ error("Premature end of file");
+ if (line.size() != bytesPerRow * 2)
+ error("Glyph bitmap line too short");
+
+ if (!bitmap)
+ continue;
+
+ for (size_t j = 0; j < bytesPerRow; ++j) {
+ unsigned char nibble1 = line[j * 2 + 0];
+ hexToInt(nibble1);
+ unsigned char nibble2 = line[j * 2 + 1];
+ hexToInt(nibble2);
+ bitmap[i * bytesPerRow + j] = (nibble1 << 4) | nibble2;
+ }
+ }
+ } else if (line == "ENDCHAR") {
+ if (encoding == -1 || !hasWidth || !hasBitmap)
+ error("Character not completly defined");
+
+ if (encoding < font.numCharacters) {
+ font.advances[encoding] = xAdvance;
+ font.boxes[encoding] = bbox;
+ font.bitmaps[encoding] = bitmap;
+ }
+ break;
+ }
+ }
+ } else if (line == "ENDFONT") {
+ break;
+ } else {
+ // Silently ignore other declarations
+ //warning("Unsupported declaration: \"%s\"", line.c_str());
+ }
+ }
+
+ if (font.ascent < 0)
+ error("No ascent specified");
+ if (descent < 0)
+ error("No descent specified");
+
+ font.height = font.ascent + descent;
+
+ int firstCharacter = font.numCharacters;
+ int lastCharacter = -1;
+ bool hasFixedBBox = true;
+ bool hasFixedAdvance = true;
+
+ for (int i = 0; i < font.numCharacters; ++i) {
+ if (!font.bitmaps[i])
+ continue;
+
+ if (i < firstCharacter)
+ firstCharacter = i;
+
+ if (i > lastCharacter)
+ lastCharacter = i;
+
+ if (font.advances[i] != font.maxAdvance)
+ hasFixedAdvance = false;
+
+ const BdfBoundingBox &bbox = font.boxes[i];
+ if (bbox.width != font.defaultBox.width
+ || bbox.height != font.defaultBox.height
+ || bbox.xOffset != font.defaultBox.xOffset
+ || bbox.yOffset != font.defaultBox.yOffset)
+ hasFixedBBox = false;
+ }
+
+ if (lastCharacter == -1)
+ error("No glyphs found");
+
+ // Free the advance table, in case all glyphs use the same advance
+ if (hasFixedAdvance) {
+ delete[] font.advances;
+ font.advances = 0;
+ }
+
+ // Free the box table, in case all glyphs use the same box
+ if (hasFixedBBox) {
+ delete[] font.boxes;
+ font.boxes = 0;
+ }
+
+ // Adapt for the fact that we never use encoding 0.
+ if (font.defaultCharacter < firstCharacter
+ || font.defaultCharacter > lastCharacter)
+ font.defaultCharacter = -1;
+
+ font.firstCharacter = firstCharacter;
+
+ charsAvailable = lastCharacter - firstCharacter + 1;
+ // Try to compact the tables
+ if (charsAvailable < font.numCharacters) {
+ unsigned char **bitmaps = new unsigned char *[charsAvailable];
+ BdfBoundingBox *boxes = 0;
+ if (!hasFixedBBox)
+ boxes = new BdfBoundingBox[charsAvailable];
+ unsigned char *advances = 0;
+ if (!hasFixedAdvance)
+ advances = new unsigned char[charsAvailable];
+
+ for (int i = 0; i < charsAvailable; ++i) {
+ const int encoding = i + firstCharacter;
+ if (font.bitmaps[encoding]) {
+ bitmaps[i] = font.bitmaps[encoding];
+
+ if (!hasFixedBBox)
+ boxes[i] = font.boxes[encoding];
+ if (!hasFixedAdvance)
+ advances[i] = font.advances[encoding];
+ } else {
+ bitmaps[i] = 0;
+ }
+ }
+
+ delete[] font.bitmaps;
+ font.bitmaps = bitmaps;
+ delete[] font.advances;
+ font.advances = advances;
+ delete[] font.boxes;
+ font.boxes = boxes;
+
+ font.numCharacters = charsAvailable;
+ }
+
+ char dateBuffer[256];
+ time_t curTime = time(0);
+ snprintf(dateBuffer, sizeof(dateBuffer), "%s", ctime(&curTime));
+
+ // Finally output the cpp source file to stdout
+ printf("// Generated by convbdf on %s"
+ "#include \"graphics/fonts/bdf.h\"\n"
+ "\n"
+ "// Font information:\n"
+ "// Name: %s\n"
+ "// Size: %dx%d\n"
+ "// Box: %d %d %d %d\n"
+ "// Ascent: %d\n"
+ "// First character: %d\n"
+ "// Default character: %d\n"
+ "// Characters: %d\n"
+ "// Copyright: %s\n"
+ "\n",
+ dateBuffer, fontName.c_str(), font.maxAdvance, font.height,
+ font.defaultBox.width, font.defaultBox.height, font.defaultBox.xOffset,
+ font.defaultBox.yOffset, font.ascent, font.firstCharacter,
+ font.defaultCharacter, font.numCharacters, copyright.c_str());
+
+ printf("namespace Graphics {\n"
+ "\n");
+
+ for (int i = 0; i < font.numCharacters; ++i) {
+ if (!font.bitmaps[i])
+ continue;
+
+ BdfBoundingBox box = hasFixedBBox ? font.defaultBox : font.boxes[i];
+ printf("// Character %d (0x%02X)\n"
+ "// Box: %d %d %d %d\n"
+ "// Advance: %d\n"
+ "//\n", i + font.firstCharacter, i + font.firstCharacter,
+ box.width, box.height, box.xOffset, box.yOffset,
+ hasFixedAdvance ? font.maxAdvance : font.advances[i]);
+
+ printf("// +");
+ for (int x = 0; x < box.width; ++x)
+ printf("-");
+ printf("+\n");
+
+ const unsigned char *bitmap = font.bitmaps[i];
+
+ for (int y = 0; y < box.height; ++y) {
+ printf("// |");
+ unsigned char data;
+ for (int x = 0; x < box.width; ++x) {
+ if (!(x % 8))
+ data = *bitmap++;
+
+ printf("%c", (data & 0x80) ? '*' : ' ');
+ data <<= 1;
+ }
+ printf("|\n");
+ }
+
+ printf("// +");
+ for (int x = 0; x < box.width; ++x)
+ printf("-");
+ printf("+\n");
+
+ const int bytesPerRow = (box.width + 7) / 8;
+ bitmap = font.bitmaps[i];
+ printf("static const byte glyph%d[] = {\n", i);
+ for (int y = 0; y < box.height; ++y) {
+ printf("\t");
+
+ for (int x = 0; x < bytesPerRow; ++x) {
+ if (x)
+ printf(", ");
+ printf("0x%02X", *bitmap++);
+ }
+
+ if (y != box.height - 1)
+ printf(",");
+ printf("\n");
+ }
+ printf("};\n"
+ "\n");
+ }
+
+ printf("// Bitmap pointer table\n"
+ "const byte *const bitmapTable[] = {\n");
+ for (int i = 0; i < font.numCharacters; ++i) {
+ if (font.bitmaps[i])
+ printf("\tglyph%d", i);
+ else
+ printf("\t0");
+
+ if (i != font.numCharacters - 1)
+ printf(",");
+ printf("\n");
+ }
+ printf("};\n"
+ "\n");
+
+ if (!hasFixedAdvance) {
+ printf("// Advance table\n"
+ "static const byte advances[] = {\n");
+ for (int i = 0; i < font.numCharacters; ++i) {
+ if (font.bitmaps[i])
+ printf("\t%d", font.advances[i]);
+ else
+ printf("\t0");
+
+ if (i != font.numCharacters - 1)
+ printf(",");
+ printf("\n");
+ }
+ printf("};\n"
+ "\n");
+ }
+
+ if (!hasFixedBBox) {
+ printf("// Bounding box table\n"
+ "static const BdfBoundingBox boxes[] = {\n");
+ for (int i = 0; i < font.numCharacters; ++i) {
+ if (font.bitmaps[i]) {
+ const BdfBoundingBox &box = font.boxes[i];
+ printf("\t{ %d, %d, %d, %d }", box.width, box.height, box.xOffset, box.yOffset);
+ } else {
+ printf("\t{ 0, 0, 0, 0 }");
+ }
+
+ if (i != font.numCharacters - 1)
+ printf(",");
+ printf("\n");
+ }
+ printf("};\n"
+ "\n");
+ }
+
+ printf("// Font structure\n"
+ "static const BdfFontData desc = {\n"
+ "\t%d, // Max advance\n"
+ "\t%d, // Height\n"
+ "\t{ %d, %d, %d, %d }, // Bounding box\n"
+ "\t%d, // Ascent\n"
+ "\n"
+ "\t%d, // First character\n"
+ "\t%d, // Default character\n"
+ "\t%d, // Characters\n"
+ "\n"
+ "\tbitmapTable, // Bitmaps\n",
+ font.maxAdvance, font.height, font.defaultBox.width,
+ font.defaultBox.height, font.defaultBox.xOffset, font.defaultBox.yOffset,
+ font.ascent, font.firstCharacter, font.defaultCharacter, font.numCharacters);
+
+ if (hasFixedAdvance)
+ printf("\t0, // Advances\n");
+ else
+ printf("\tadvances, // Advances\n");
+
+ if (hasFixedBBox)
+ printf("\t0 // Boxes\n");
+ else
+ printf("\tboxes // Boxes\n");
+
+ printf("};\n"
+ "\n"
+ "DEFINE_FONT(%s)\n"
+ "\n"
+ "} // End of namespace Graphics\n",
+ argv[2]);
+}
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_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index 627b517c62..489be3e04d 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -45,7 +45,7 @@
#include <map>
enum {
- kKyraDatVersion = 78
+ kKyraDatVersion = 82
};
const ExtractFilename extractFilenames[] = {
@@ -215,92 +215,482 @@ const ExtractFilename extractFilenames[] = {
{ k3ItemMagicTable, k3TypeRaw16to8, false },
{ k3ItemStringMap, kTypeRawData, false },
+ // EYE OF THE BEHOLDER COMMON
+ { kEoBBaseChargenStrings1, kTypeStringList, true },
+ { kEoBBaseChargenStrings2, kTypeStringList, true },
+ { kEoBBaseChargenStartLevels, kTypeRawData, false },
+ { kEoBBaseChargenStatStrings, kTypeStringList, true},
+ { kEoBBaseChargenRaceSexStrings, kTypeStringList, true },
+ { kEoBBaseChargenClassStrings, kTypeStringList, true },
+ { kEoBBaseChargenAlignmentStrings, kTypeStringList, true },
+ { kEoBBaseChargenEnterGameStrings, kTypeStringList, true },
+ { kEoBBaseChargenClassMinStats, k3TypeRaw16to8, false },
+ { kEoBBaseChargenRaceMinStats, k3TypeRaw16to8, false },
+ { kEoBBaseChargenRaceMaxStats, kLoLTypeRaw16, false },
+
+ { kEoBBaseSaveThrowTable1, kTypeRawData, false },
+ { kEoBBaseSaveThrowTable2, kTypeRawData, false },
+ { kEoBBaseSaveThrowTable3, kTypeRawData, false },
+ { kEoBBaseSaveThrowTable4, kTypeRawData, false },
+ { kEoBBaseSaveThrwLvlIndex, kTypeRawData, false },
+ { kEoBBaseSaveThrwModDiv, kTypeRawData, false },
+ { kEoBBaseSaveThrwModExt, kTypeRawData, false },
+
+ { kEoBBasePryDoorStrings, kTypeStringList, true },
+ { kEoBBaseWarningStrings, kTypeStringList, true },
+
+ { kEoBBaseItemSuffixStringsRings, kTypeStringList, true },
+ { kEoBBaseItemSuffixStringsPotions, kTypeStringList, true },
+ { kEoBBaseItemSuffixStringsWands, kTypeStringList, true },
+
+ { kEoBBaseRipItemStrings, kTypeStringList, true },
+ { kEoBBaseCursedString, kTypeStringList, true },
+ { kEoBBaseEnchantedString, kTypeStringList, false },
+ { kEoBBaseMagicObjectStrings, kTypeStringList, true },
+ { kEoBBaseMagicObject5String, kTypeStringList, true },
+ { kEoBBasePatternSuffix, kTypeStringList, true },
+ { kEoBBasePatternGrFix1, kTypeStringList, true },
+ { kEoBBasePatternGrFix2, kTypeStringList, true },
+ { kEoBBaseValidateArmorString, kTypeStringList, true },
+ { kEoBBaseValidateCursedString, kTypeStringList, true },
+ { kEoBBaseValidateNoDropString, kTypeStringList, true },
+ { kEoBBasePotionStrings, kTypeStringList, true },
+ { kEoBBaseWandString, kTypeStringList, true },
+ { kEoBBaseItemMisuseStrings, kTypeStringList, true },
+
+ { kEoBBaseTakenStrings, kTypeStringList, true },
+ { kEoBBasePotionEffectStrings, kTypeStringList, true },
+
+ { kEoBBaseYesNoStrings, kTypeStringList, true },
+ { kRpgCommonMoreStrings, kTypeStringList, true },
+ { kEoBBaseNpcMaxStrings, kTypeStringList, true },
+ { kEoBBaseOkStrings, kTypeStringList, true },
+ { kEoBBaseNpcJoinStrings, kTypeStringList, true },
+ { kEoBBaseCancelStrings, kTypeStringList, true },
+ { kEoBBaseAbortStrings, kTypeStringList, true },
+
+ { kEoBBaseMenuStringsMain, kTypeStringList, true },
+ { kEoBBaseMenuStringsSaveLoad, kTypeStringList, true },
+ { kEoBBaseMenuStringsOnOff, kTypeStringList, true },
+ { kEoBBaseMenuStringsSpells, kTypeStringList, true },
+ { kEoBBaseMenuStringsRest, kTypeStringList, true },
+ { kEoBBaseMenuStringsDrop, kTypeStringList, true },
+ { kEoBBaseMenuStringsExit, kTypeStringList, true },
+ { kEoBBaseMenuStringsStarve, kTypeStringList, true },
+ { kEoBBaseMenuStringsScribe, kTypeStringList, true },
+ { kEoBBaseMenuStringsDrop2, kTypeStringList, true },
+ { kEoBBaseMenuStringsHead, kTypeStringList, true },
+ { kEoBBaseMenuStringsPoison, kTypeStringList, true },
+ { kEoBBaseMenuStringsMgc, kTypeStringList, true },
+ { kEoBBaseMenuStringsPrefs, kTypeStringList, true },
+ { kEoBBaseMenuStringsRest2, kTypeStringList, true },
+ { kEoBBaseMenuStringsRest3, kTypeStringList, true },
+ { kEoBBaseMenuStringsRest4, kTypeStringList, true },
+ { kEoBBaseMenuStringsDefeat, kTypeStringList, true },
+ { kEoBBaseMenuStringsTransfer, kTypeStringList, true },
+ { kEoBBaseMenuStringsSpec, kTypeStringList, true },
+ { kEoBBaseMenuStringsSpellNo, kTypeStringList, false },
+ { kEoBBaseMenuYesNoStrings, kTypeStringList, true },
+
+ { kEoBBaseSpellLevelsMage, kTypeRawData, false },
+ { kEoBBaseSpellLevelsCleric, kTypeRawData, false },
+ { kEoBBaseNumSpellsCleric, kTypeRawData, false },
+ { kEoBBaseNumSpellsWisAdj, kTypeRawData, false },
+ { kEoBBaseNumSpellsPal, kTypeRawData, false },
+ { kEoBBaseNumSpellsMage, kTypeRawData, false },
+
+ { kEoBBaseCharGuiStringsHp, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsWp1, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsWp2, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsWr, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsSt1, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsSt2, kTypeStringList, true },
+ { kEoBBaseCharGuiStringsIn, kTypeStringList, true },
+
+ { kEoBBaseCharStatusStrings7, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings81, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings82, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings9, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings12, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings131, kTypeStringList, true },
+ { kEoBBaseCharStatusStrings132, kTypeStringList, true },
+
+ { kEoBBaseLevelGainStrings, kTypeStringList, true },
+ { kEoBBaseExperienceTable0, kLoLTypeRaw32, false },
+ { kEoBBaseExperienceTable1, kLoLTypeRaw32, false },
+ { kEoBBaseExperienceTable2, kLoLTypeRaw32, false },
+ { kEoBBaseExperienceTable3, kLoLTypeRaw32, false },
+ { kEoBBaseExperienceTable4, kLoLTypeRaw32, false },
+
+ { kEoBBaseWllFlagPreset, kTypeRawData, false },
+ { kEoBBaseDscShapeCoords, kLoLTypeRaw16, false },
+ { kEoBBaseDscDoorScaleOffs, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult1, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult2, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult3, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult4, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult5, kTypeRawData, false },
+ { kEoBBaseDscDoorScaleMult6, kTypeRawData, false },
+ { kEoBBaseDscDoorType5Offs, kTypeRawData, false },
+ { kEoBBaseDscDoorXE, kTypeRawData, false },
+ { kEoBBaseDscDoorY1, kTypeRawData, false },
+ { kEoBBaseDscDoorY3, kTypeRawData, false },
+ { kEoBBaseDscDoorY4, kTypeRawData, false },
+ { kEoBBaseDscDoorY5, kTypeRawData, false },
+ { kEoBBaseDscDoorY6, kTypeRawData, false },
+ { kEoBBaseDscDoorY7, kTypeRawData, false },
+ { kEoBBaseDscDoorCoordsExt, kLoLTypeRaw16, false },
+
+ { kEoBBaseDscItemPosIndex, kTypeRawData, false },
+ { kEoBBaseDscItemShpX, kLoLTypeRaw16, false },
+ { kEoBBaseDscItemPosUnk, kTypeRawData, false },
+ { kEoBBaseDscItemTileIndex, kTypeRawData, false },
+ { kEoBBaseDscItemShapeMap, kTypeRawData, false },
+ { kEoBBaseDscTelptrShpCoords, kTypeRawData, false },
+
+ { kEoBBasePortalSeqData, kTypeRawData, false },
+ { kEoBBaseManDef, kTypeRawData, true },
+ { kEoBBaseManWord, kTypeStringList, true },
+ { kEoBBaseManPrompt, kTypeStringList, true },
+
+ { kEoBBaseDscMonsterFrmOffsTbl1, kTypeRawData, false },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kTypeRawData, false },
+
+ { kEoBBaseInvSlotX, kLoLTypeRaw16, false },
+ { kEoBBaseInvSlotY, kTypeRawData, false },
+ { kEoBBaseSlotValidationFlags, kLoLTypeRaw16, false },
+
+ { kEoBBaseProjectileWeaponTypes, kTypeRawData, false },
+ { kEoBBaseWandTypes, kTypeRawData, false },
+
+ { kEoBBaseDrawObjPosIndex, kTypeRawData, false },
+ { kEoBBaseFlightObjFlipIndex, kTypeRawData, false },
+ { kEoBBaseFlightObjShpMap, kTypeRawData, false },
+ { kEoBBaseFlightObjSclIndex, kTypeRawData, false },
+
+ { kEoBBaseBookNumbers, kTypeStringList, true },
+ { kEoBBaseMageSpellsList, kTypeStringList, true },
+ { kEoBBaseClericSpellsList, kTypeStringList, true },
+ { kEoBBaseSpellNames, kTypeStringList, true },
+
+ { kEoBBaseMagicStrings1, kTypeStringList, true },
+ { kEoBBaseMagicStrings2, kTypeStringList, true },
+ { kEoBBaseMagicStrings3, kTypeStringList, true },
+ { kEoBBaseMagicStrings4, kTypeStringList, true },
+ { kEoBBaseMagicStrings6, kTypeStringList, true },
+ { kEoBBaseMagicStrings7, kTypeStringList, true },
+ { kEoBBaseMagicStrings8, kTypeStringList, true },
+
+ { kEoBBaseExpObjectTlMode, kTypeRawData, false },
+ { kEoBBaseExpObjectTblIndex, kTypeRawData, false },
+ { kEoBBaseExpObjectShpStart, kTypeRawData, false },
+ { kEoBBaseExpObjectTbl1, kTypeRawData, false },
+ { kEoBBaseExpObjectTbl2, kTypeRawData, false },
+ { kEoBBaseExpObjectTbl3, kTypeRawData, false },
+ { kEoBBaseExpObjectY, k3TypeRaw16to8, false },
+
+ { kEoBBaseSparkDefSteps, kTypeRawData, false },
+ { kEoBBaseSparkDefSubSteps, kTypeRawData, false },
+ { kEoBBaseSparkDefShift, kTypeRawData, false },
+ { kEoBBaseSparkDefAdd, kTypeRawData, false },
+ { kEoBBaseSparkDefX, k3TypeRaw16to8, false },
+ { kEoBBaseSparkDefY, kTypeRawData, false },
+ { kEoBBaseSparkOfFlags1, kLoLTypeRaw32, false },
+ { kEoBBaseSparkOfFlags2, kLoLTypeRaw32, false },
+ { kEoBBaseSparkOfShift, kTypeRawData, false },
+ { kEoBBaseSparkOfX, kTypeRawData, false },
+ { kEoBBaseSparkOfY, kTypeRawData, false },
+ { kEoBBaseSpellProperties, kTypeRawData, false },
+ { kEoBBaseMagicFlightProps, kTypeRawData, false },
+ { kEoBBaseTurnUndeadEffect, kTypeRawData, false },
+ { kEoBBaseBurningHandsDest, kTypeRawData, false },
+ { kEoBBaseConeOfColdDest1, kTypeRawData, false },
+ { kEoBBaseConeOfColdDest2, kTypeRawData, false },
+ { kEoBBaseConeOfColdDest3, kTypeRawData, false },
+ { kEoBBaseConeOfColdDest4, kTypeRawData, false },
+ { kEoBBaseConeOfColdGfxTbl, k3TypeRaw16to8, false },
+
+ // EYE OF THE BEHOLDER I
+ { kEoB1MainMenuStrings, kTypeStringList, true },
+ { kEoB1BonusStrings, kTypeStringList, true },
+
+ { kEoB1IntroFilesOpening, kTypeStringList, false },
+ { kEoB1IntroFilesTower, kTypeStringList, false },
+ { kEoB1IntroFilesOrb, kTypeStringList, false },
+ { kEoB1IntroFilesWdEntry, kTypeStringList, false },
+ { kEoB1IntroFilesKing, kTypeStringList, false },
+ { kEoB1IntroFilesHands, kTypeStringList, false },
+ { kEoB1IntroFilesWdExit, kTypeStringList, false },
+ { kEoB1IntroFilesTunnel, kTypeStringList, false },
+ { kEoB1IntroOpeningFrmDelay, k3TypeRaw16to8, false },
+ { kEoB1IntroWdEncodeX, kTypeRawData, false },
+ { kEoB1IntroWdEncodeY, kTypeRawData, false },
+ { kEoB1IntroWdEncodeWH, kTypeRawData, false },
+ { kEoB1IntroWdDsX, kLoLTypeRaw16, false },
+ { kEoB1IntroWdDsY, kTypeRawData, false },
+ { kEoB1IntroTvlX1, kTypeRawData, false },
+ { kEoB1IntroTvlY1, kTypeRawData, false },
+ { kEoB1IntroTvlX2, kTypeRawData, false },
+ { kEoB1IntroTvlY2, kTypeRawData, false },
+ { kEoB1IntroTvlW, kTypeRawData, false },
+ { kEoB1IntroTvlH, kTypeRawData, false },
+
+ { kEoB1DoorShapeDefs, kTypeRawData, false },
+ { kEoB1DoorSwitchShapeDefs, kTypeRawData, false },
+ { kEoB1DoorSwitchCoords, kTypeRawData, false },
+ { kEoB1MonsterProperties, kTypeRawData, false },
+ { kEoB1EnemyMageSpellList, kTypeRawData, false },
+ { kEoB1EnemyMageSfx, kTypeRawData, false },
+ { kEoB1BeholderSpellList, kTypeRawData, false },
+ { kEoB1BeholderSfx, kTypeRawData, false },
+ { kEoB1TurnUndeadString, kTypeStringList, true },
+
+ { kEoB1CgaMappingDefault, kTypeRawData, false },
+ { kEoB1CgaMappingAlt, kTypeRawData, false },
+ { kEoB1CgaMappingInv, kTypeRawData, false },
+ { kEoB1CgaMappingItemsL, kTypeRawData, false },
+ { kEoB1CgaMappingItemsS, kTypeRawData, false },
+ { kEoB1CgaMappingThrown, kTypeRawData, false },
+ { kEoB1CgaMappingIcons, kTypeRawData, false },
+ { kEoB1CgaMappingDeco, kTypeRawData, false },
+ { kEoB1CgaLevelMappingIndex, kTypeRawData, false },
+ { kEoB1CgaMappingLevel0, kTypeRawData, false },
+ { kEoB1CgaMappingLevel1, kTypeRawData, false },
+ { kEoB1CgaMappingLevel2, kTypeRawData, false },
+ { kEoB1CgaMappingLevel3, kTypeRawData, false },
+ { kEoB1CgaMappingLevel4, kTypeRawData, false },
+
+ { kEoB1NpcShpData, kTypeRawData, false },
+ { kEoB1NpcSubShpIndex1, kTypeRawData, false },
+ { kEoB1NpcSubShpIndex2, kTypeRawData, false },
+ { kEoB1NpcSubShpY, kTypeRawData, false },
+ { kEoB1Npc0Strings, kTypeStringList, true },
+ { kEoB1Npc11Strings, kTypeStringList, true },
+ { kEoB1Npc12Strings, kTypeStringList, true },
+ { kEoB1Npc21Strings, kTypeStringList, true },
+ { kEoB1Npc22Strings, kTypeStringList, true },
+ { kEoB1Npc31Strings, kTypeStringList, true },
+ { kEoB1Npc32Strings, kTypeStringList, true },
+ { kEoB1Npc4Strings, kTypeStringList, true },
+ { kEoB1Npc5Strings, kTypeStringList, true },
+ { kEoB1Npc6Strings, kTypeStringList, true },
+ { kEoB1Npc7Strings, kTypeStringList, true },
+
+ // EYE OF THE BEHOLDER II
+ { kEoB2MainMenuStrings, kTypeStringList, true },
+
+ { kEoB2TransferPortraitFrames, kLoLTypeRaw16, false },
+ { kEoB2TransferConvertTable, kTypeRawData, false },
+ { kEoB2TransferItemTable, kTypeRawData, false },
+ { kEoB2TransferExpTable, kLoLTypeRaw32, false },
+ { kEoB2TransferStrings1, kTypeStringList, true },
+ { kEoB2TransferStrings2, kTypeStringList, true },
+ { kEoB2TransferLabels, kTypeStringList, true },
+
+ { kEoB2IntroStrings, k2TypeSfxList, true },
+ { kEoB2IntroCPSFiles, kTypeStringList, true },
+ { kEob2IntroAnimData00, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData01, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData02, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData03, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData04, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData05, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData06, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData07, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData08, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData09, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData10, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData11, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData12, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData13, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData14, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData15, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData16, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData17, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData18, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData19, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData20, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData21, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData22, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData23, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData24, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData25, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData26, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData27, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData28, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData29, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData30, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData31, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData32, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData33, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData34, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData35, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData36, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData37, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData38, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData39, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData40, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData41, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData42, kEoB2TypeSeqData, false },
+ { kEob2IntroAnimData43, kEoB2TypeSeqData, false },
+ { kEoB2IntroShapes00, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes01, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes04, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes07, kEoB2TypeShapeData, false },
+
+ { kEoB2FinaleStrings, k2TypeSfxList, true },
+ { kEoB2CreditsData, kTypeRawData, true },
+ { kEoB2FinaleCPSFiles, kTypeStringList, true },
+ { kEob2FinaleAnimData00, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData01, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData02, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData03, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData04, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData05, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData06, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData07, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData08, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData09, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData10, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData11, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData12, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData13, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData14, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData15, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData16, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData17, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData18, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData19, kEoB2TypeSeqData, false },
+ { kEob2FinaleAnimData20, kEoB2TypeSeqData, false },
+ { kEoB2FinaleShapes00, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes09, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes10, kEoB2TypeShapeData, false },
+ { kEoB2NpcShapeData, kTypeRawData, false },
+ { kEoBBaseClassModifierFlags, kTypeRawData, false },
+ { kEoBBaseMonsterStepTable01, kTypeRawData, false },
+ { kEoBBaseMonsterStepTable02, kTypeRawData, false },
+ { kEoBBaseMonsterStepTable1, kTypeRawData, false },
+ { kEoBBaseMonsterStepTable2, k3TypeRaw16to8, false },
+ { kEoBBaseMonsterStepTable3, k3TypeRaw16to8, false },
+ { kEoBBaseMonsterCloseAttPosTable1, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable21, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable22, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttUnkTable, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable1, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable2, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable1, kTypeRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable2, kTypeRawData, false },
+ { kEoBBaseMonsterProximityTable, kTypeRawData, false },
+ { kEoBBaseFindBlockMonstersTable, kTypeRawData, false },
+ { kEoBBaseMonsterDirChangeTable, kTypeRawData, false },
+ { kEoBBaseMonsterDistAttStrings, kTypeStringList, true },
+ { kEoBBaseEncodeMonsterDefs, kLoLTypeRaw16, false },
+ { kEoBBaseNpcPresets, kEoBTypeNpcData, false },
+ { kEoB2Npc1Strings, kTypeStringList, true },
+ { kEoB2Npc2Strings, kTypeStringList, true },
+ { kEoB2MonsterDustStrings, kTypeStringList, true },
+ { kEoB2DreamSteps, kTypeRawData, false },
+ { kEoB2KheldranStrings, kTypeStringList, true },
+ { kEoB2HornStrings, kTypeStringList, true },
+ { kEoB2HornSounds, kTypeRawData, false },
+ { kEoB2WallOfForceDsX, kLoLTypeRaw16, false },
+ { kEoB2WallOfForceDsY, kTypeRawData, false },
+ { kEoB2WallOfForceNumW, kTypeRawData, false },
+ { kEoB2WallOfForceNumH, kTypeRawData, false },
+ { kEoB2WallOfForceShpId, kTypeRawData, false },
+
// LANDS OF LORE
// Ingame
- { kLolIngamePakFiles, kTypeStringList, false },
-
- { kLolCharacterDefs, kLolTypeCharData, true },
- { kLolIngameSfxFiles, k2TypeSfxList, false },
- { kLolIngameSfxIndex, kTypeRawData, false },
- { kLolMusicTrackMap, kTypeRawData, false },
- { kLolIngameGMSfxIndex, kTypeRawData, false },
- { kLolIngameMT32SfxIndex, kTypeRawData, false },
- { kLolIngamePcSpkSfxIndex, kTypeRawData, false },
- { kLolSpellProperties, kLolTypeSpellData, false },
- { kLolGameShapeMap, kTypeRawData, false },
- { kLolSceneItemOffs, kTypeRawData, false },
- { kLolCharInvIndex, k3TypeRaw16to8, false },
- { kLolCharInvDefs, kTypeRawData, false },
- { kLolCharDefsMan, kLolTypeRaw16, false },
- { kLolCharDefsWoman, kLolTypeRaw16, false },
- { kLolCharDefsKieran, kLolTypeRaw16, false },
- { kLolCharDefsAkshel, kLolTypeRaw16, false },
- { kLolExpRequirements, kLolTypeRaw32, false },
- { kLolMonsterModifiers, kLolTypeRaw16, false },
- { kLolMonsterShiftOffsets, kTypeRawData, false },
- { kLolMonsterDirFlags, kTypeRawData, false },
- { kLolMonsterScaleY, kTypeRawData, false },
- { kLolMonsterScaleX, kTypeRawData, false },
- { kLolMonsterScaleWH, kLolTypeRaw16, false },
- { kLolFlyingObjectShp, kLolTypeFlightShpData, false },
- { kLolInventoryDesc, kLolTypeRaw16, false },
- { kLolLevelShpList, kTypeStringList, false },
- { kLolLevelDatList, kTypeStringList, false },
- { kLolCompassDefs, kLolTypeCompassData, false },
- { kLolItemPrices, kLolTypeRaw16, false },
- { kLolStashSetup, kTypeRawData, false },
-
- { kLolDscUnk1, kTypeRawData, false },
- { kLolDscShapeIndex, kTypeRawData, false },
- { kLolDscOvlMap, kTypeRawData, false },
- { kLolDscScaleWidthData, kLolTypeRaw16, false },
- { kLolDscScaleHeightData, kLolTypeRaw16, false },
- { kLolDscX, kLolTypeRaw16, false },
- { kLolDscY, kTypeRawData, false },
- { kLolDscTileIndex, kTypeRawData, false },
- { kLolDscUnk2, kTypeRawData, false },
- { kLolDscDoorShapeIndex, kTypeRawData, false },
- { kLolDscDimData1, kTypeRawData, false },
- { kLolDscDimData2, kTypeRawData, false },
- { kLolDscBlockMap, kTypeRawData, false },
- { kLolDscDimMap, kTypeRawData, false },
- { kLolDscDoorScale, kLolTypeRaw16, false },
- { kLolDscOvlIndex, k3TypeRaw16to8, false },
- { kLolDscBlockIndex, kTypeRawData, false },
- { kLolDscDoor4, kLolTypeRaw16, false },
- { kLolDscDoor1, kTypeRawData, false },
- { kLolDscDoorX, kLolTypeRaw16, false },
- { kLolDscDoorY, kLolTypeRaw16, false },
-
- { kLolScrollXTop, k3TypeRaw16to8, false },
- { kLolScrollYTop, k3TypeRaw16to8, false },
- { kLolScrollXBottom, k3TypeRaw16to8, false },
- { kLolScrollYBottom, k3TypeRaw16to8, false },
-
- { kLolButtonDefs, kLolTypeButtonDef, false },
- { kLolButtonList1, kLolTypeRaw16, false },
- { kLolButtonList2, kLolTypeRaw16, false },
- { kLolButtonList3, kLolTypeRaw16, false },
- { kLolButtonList4, kLolTypeRaw16, false },
- { kLolButtonList5, kLolTypeRaw16, false },
- { kLolButtonList6, kLolTypeRaw16, false },
- { kLolButtonList7, kLolTypeRaw16, false },
- { kLolButtonList8, kLolTypeRaw16, false },
-
- { kLolLegendData, kTypeRawData, false },
- { kLolMapCursorOvl, kTypeRawData, false },
- { kLolMapStringId, kLolTypeRaw16, false },
-
- { kLolSpellbookAnim, k3TypeRaw16to8, false },
- { kLolSpellbookCoords, k3TypeRaw16to8, false },
- { kLolHealShapeFrames, kTypeRawData, false },
- { kLolLightningDefs, kTypeRawData, false },
- { kLolFireballCoords, kLolTypeRaw16, false },
-
- { kLolCredits, kTypeRawData, false },
-
- { kLolHistory, kTypeRawData, false },
+ { kLoLIngamePakFiles, kTypeStringList, false },
+
+ { kLoLCharacterDefs, kLoLTypeCharData, true },
+ { kLoLIngameSfxFiles, k2TypeSfxList, false },
+ { kLoLIngameSfxIndex, kTypeRawData, false },
+ { kLoLMusicTrackMap, kTypeRawData, false },
+ { kLoLIngameGMSfxIndex, kTypeRawData, false },
+ { kLoLIngameMT32SfxIndex, kTypeRawData, false },
+ { kLoLIngamePcSpkSfxIndex, kTypeRawData, false },
+ { kLoLSpellProperties, kLoLTypeSpellData, false },
+ { kLoLGameShapeMap, kTypeRawData, false },
+ { kLoLSceneItemOffs, kTypeRawData, false },
+ { kLoLCharInvIndex, k3TypeRaw16to8, false },
+ { kLoLCharInvDefs, kTypeRawData, false },
+ { kLoLCharDefsMan, kLoLTypeRaw16, false },
+ { kLoLCharDefsWoman, kLoLTypeRaw16, false },
+ { kLoLCharDefsKieran, kLoLTypeRaw16, false },
+ { kLoLCharDefsAkshel, kLoLTypeRaw16, false },
+ { kLoLExpRequirements, kLoLTypeRaw32, false },
+ { kLoLMonsterModifiers, kLoLTypeRaw16, false },
+ { kLoLMonsterShiftOffsets, kTypeRawData, false },
+ { kLoLMonsterDirFlags, kTypeRawData, false },
+ { kLoLMonsterScaleY, kTypeRawData, false },
+ { kLoLMonsterScaleX, kTypeRawData, false },
+ { kLoLMonsterScaleWH, kLoLTypeRaw16, false },
+ { kLoLFlyingObjectShp, kLoLTypeFlightShpData, false },
+ { kLoLInventoryDesc, kLoLTypeRaw16, false },
+ { kLoLLevelShpList, kTypeStringList, false },
+ { kLoLLevelDatList, kTypeStringList, false },
+ { kLoLCompassDefs, kLoLTypeCompassData, false },
+ { kLoLItemPrices, kLoLTypeRaw16, false },
+ { kLoLStashSetup, kTypeRawData, false },
+
+ { kLoLDscWalls, kTypeRawData, false },
+ { kRpgCommonDscShapeIndex, kTypeRawData, false },
+ { kLoLDscOvlMap, kTypeRawData, false },
+ { kLoLDscScaleWidthData, kLoLTypeRaw16, false },
+ { kLoLDscScaleHeightData, kLoLTypeRaw16, false },
+ { kRpgCommonDscX, kLoLTypeRaw16, false },
+ { kLoLDscY, kTypeRawData, false },
+ { kRpgCommonDscTileIndex, kTypeRawData, false },
+ { kRpgCommonDscUnk2, kTypeRawData, false },
+ { kRpgCommonDscDoorShapeIndex, kTypeRawData, false },
+ { kRpgCommonDscDimData1, kTypeRawData, false },
+ { kRpgCommonDscDimData2, kTypeRawData, false },
+ { kRpgCommonDscBlockMap, kTypeRawData, false },
+ { kRpgCommonDscDimMap, kTypeRawData, false },
+ { kLoLDscDoorScale, kLoLTypeRaw16, false },
+ { kLoLDscOvlIndex, k3TypeRaw16to8, false },
+ { kRpgCommonDscBlockIndex, kTypeRawData, false },
+ { kLoLDscDoor4, kLoLTypeRaw16, false },
+ { kRpgCommonDscDoorY2, kTypeRawData, false },
+ { kRpgCommonDscDoorFrameY1, kTypeRawData, false },
+ { kRpgCommonDscDoorFrameY2, kTypeRawData, false },
+ { kRpgCommonDscDoorFrameIndex1, kTypeRawData, false },
+ { kRpgCommonDscDoorFrameIndex2, kTypeRawData, false },
+ { kLoLDscDoorX, kLoLTypeRaw16, false },
+ { kLoLDscDoorY, kLoLTypeRaw16, false },
+
+ { kLoLScrollXTop, k3TypeRaw16to8, false },
+ { kLoLScrollYTop, k3TypeRaw16to8, false },
+ { kLoLScrollXBottom, k3TypeRaw16to8, false },
+ { kLoLScrollYBottom, k3TypeRaw16to8, false },
+
+ { kLoLButtonDefs, kLoLTypeButtonDef, false },
+ { kLoLButtonList1, kLoLTypeRaw16, false },
+ { kLoLButtonList2, kLoLTypeRaw16, false },
+ { kLoLButtonList3, kLoLTypeRaw16, false },
+ { kLoLButtonList4, kLoLTypeRaw16, false },
+ { kLoLButtonList5, kLoLTypeRaw16, false },
+ { kLoLButtonList6, kLoLTypeRaw16, false },
+ { kLoLButtonList7, kLoLTypeRaw16, false },
+ { kLoLButtonList8, kLoLTypeRaw16, false },
+
+ { kLoLLegendData, kTypeRawData, false },
+ { kLoLMapCursorOvl, kTypeRawData, false },
+ { kLoLMapStringId, kLoLTypeRaw16, false },
+
+ { kLoLSpellbookAnim, k3TypeRaw16to8, false },
+ { kLoLSpellbookCoords, k3TypeRaw16to8, false },
+ { kLoLHealShapeFrames, kTypeRawData, false },
+ { kLoLLightningDefs, kTypeRawData, false },
+ { kLoLFireballCoords, kLoLTypeRaw16, false },
+
+ { kLoLCredits, kTypeRawData, false },
+
+ { kLoLHistory, kTypeRawData, false },
{ -1, 0, 0 }
};
@@ -326,7 +716,9 @@ const TypeTable gameTable[] = {
{ kKyra1, 0 },
{ kKyra2, 1 },
{ kKyra3, 2 },
- { kLol, 3 },
+ { kEoB1, 3 },
+ { kEoB2, 4 },
+ { kLoL, 5 },
{ -1, -1 }
};
@@ -980,154 +1372,863 @@ const char *getIdString(const int id) {
return "k3ItemMagicTable";
case k3ItemStringMap:
return "k3ItemStringMap";
- case kLolIngamePakFiles:
- return "kLolIngamePakFiles";
- case kLolCharacterDefs:
- return "kLolCharacterDefs";
- case kLolIngameSfxFiles:
- return "kLolIngameSfxFiles";
- case kLolIngameSfxIndex:
- return "kLolIngameSfxIndex";
- case kLolMusicTrackMap:
- return "kLolMusicTrackMap";
- case kLolIngameGMSfxIndex:
- return "kLolIngameGMSfxIndex";
- case kLolIngameMT32SfxIndex:
- return "kLolIngameMT32SfxIndex";
- case kLolIngamePcSpkSfxIndex:
- return "kLolIngamePcSpkSfxIndex";
- case kLolSpellProperties:
- return "kLolSpellProperties";
- case kLolGameShapeMap:
- return "kLolGameShapeMap";
- case kLolSceneItemOffs:
- return "kLolSceneItemOffs";
- case kLolCharInvIndex:
- return "kLolCharInvIndex";
- case kLolCharInvDefs:
- return "kLolCharInvDefs";
- case kLolCharDefsMan:
- return "kLolCharDefsMan";
- case kLolCharDefsWoman:
- return "kLolCharDefsWoman";
- case kLolCharDefsKieran:
- return "kLolCharDefsKieran";
- case kLolCharDefsAkshel:
- return "kLolCharDefsAkshel";
- case kLolExpRequirements:
- return "kLolExpRequirements";
- case kLolMonsterModifiers:
- return "kLolMonsterModifiers";
- case kLolMonsterShiftOffsets:
- return "kLolMonsterShiftOffsets";
- case kLolMonsterDirFlags:
- return "kLolMonsterDirFlags";
- case kLolMonsterScaleY:
- return "kLolMonsterScaleY";
- case kLolMonsterScaleX:
- return "kLolMonsterScaleX";
- case kLolMonsterScaleWH:
- return "kLolMonsterScaleWH";
- case kLolFlyingObjectShp:
- return "kLolFlyingObjectShp";
- case kLolInventoryDesc:
- return "kLolInventoryDesc";
- case kLolLevelShpList:
- return "kLolLevelShpList";
- case kLolLevelDatList:
- return "kLolLevelDatList";
- case kLolCompassDefs:
- return "kLolCompassDefs";
- case kLolItemPrices:
- return "kLolItemPrices";
- case kLolStashSetup:
- return "kLolStashSetup";
- case kLolDscUnk1:
- return "kLolDscUnk1";
- case kLolDscShapeIndex:
- return "kLolDscShapeIndex";
- case kLolDscOvlMap:
- return "kLolDscOvlMap";
- case kLolDscScaleWidthData:
- return "kLolDscScaleWidthData";
- case kLolDscScaleHeightData:
- return "kLolDscScaleHeightData";
- case kLolDscX:
- return "kLolDscX";
- case kLolDscY:
- return "kLolDscY";
- case kLolDscTileIndex:
- return "kLolDscTileIndex";
- case kLolDscUnk2:
- return "kLolDscUnk2";
- case kLolDscDoorShapeIndex:
- return "kLolDscDoorShapeIndex";
- case kLolDscDimData1:
- return "kLolDscDimData1";
- case kLolDscDimData2:
- return "kLolDscDimData2";
- case kLolDscBlockMap:
- return "kLolDscBlockMap";
- case kLolDscDimMap:
- return "kLolDscDimMap";
- case kLolDscOvlIndex:
- return "kLolDscOvlIndex";
- case kLolDscBlockIndex:
- return "kLolDscBlockIndex";
- case kLolDscDoor1:
- return "kLolDscDoor1";
- case kLolDscDoorScale:
- return "kLolDscDoorScale";
- case kLolDscDoor4:
- return "kLolDscDoor4";
- case kLolDscDoorX:
- return "kLolDscDoorX";
- case kLolDscDoorY:
- return "kLolDscDoorY";
- case kLolScrollXTop:
- return "kLolScrollXTop";
- case kLolScrollYTop:
- return "kLolScrollYTop";
- case kLolScrollXBottom:
- return "kLolScrollXBottom";
- case kLolScrollYBottom:
- return "kLolScrollYBottom";
- case kLolButtonDefs:
- return "kLolButtonDefs";
- case kLolButtonList1:
- return "kLolButtonList1";
- case kLolButtonList2:
- return "kLolButtonList2";
- case kLolButtonList3:
- return "kLolButtonList3";
- case kLolButtonList4:
- return "kLolButtonList4";
- case kLolButtonList5:
- return "kLolButtonList5";
- case kLolButtonList6:
- return "kLolButtonList6";
- case kLolButtonList7:
- return "kLolButtonList7";
- case kLolButtonList8:
- return "kLolButtonList8";
- case kLolLegendData:
- return "kLolLegendData";
- case kLolMapCursorOvl:
- return "kLolMapCursorOvl";
- case kLolMapStringId:
- return "kLolMapStringId";
- case kLolSpellbookAnim:
- return "kLolSpellbookAnim";
- case kLolSpellbookCoords:
- return "kLolSpellbookCoords";
- case kLolHealShapeFrames:
- return "kLolHealShapeFrames";
- case kLolLightningDefs:
- return "kLolLightningDefs";
- case kLolFireballCoords:
- return "kLolFireballCoords";
- case kLolHistory:
- return "kLolHistory";
+ case kEoBBaseChargenStrings1:
+ return "kEoBBaseChargenStrings1";
+ case kEoBBaseChargenStrings2:
+ return "kEoBBaseChargenStrings2";
+ case kEoBBaseChargenStartLevels:
+ return "kEoBBaseChargenStartLevels";
+ case kEoBBaseChargenStatStrings:
+ return "kEoBBaseChargenStatStrings";
+ case kEoBBaseChargenRaceSexStrings:
+ return "kEoBBaseChargenRaceSexStrings";
+ case kEoBBaseChargenClassStrings:
+ return "kEoBBaseChargenClassStrings";
+ case kEoBBaseChargenAlignmentStrings:
+ return "kEoBBaseChargenAlignmentStrings";
+ case kEoBBaseChargenEnterGameStrings:
+ return "kEoBBaseChargenEnterGameStrings";
+ case kEoBBaseChargenClassMinStats:
+ return "kEoBBaseChargenClassMinStats";
+ case kEoBBaseChargenRaceMinStats:
+ return "kEoBBaseChargenRaceMinStats";
+ case kEoBBaseChargenRaceMaxStats:
+ return "kEoBBaseChargenRaceMaxStats";
+ case kEoBBaseSaveThrowTable1:
+ return "kEoBBaseSaveThrowTable1";
+ case kEoBBaseSaveThrowTable2:
+ return "kEoBBaseSaveThrowTable2";
+ case kEoBBaseSaveThrowTable3:
+ return "kEoBBaseSaveThrowTable3";
+ case kEoBBaseSaveThrowTable4:
+ return "kEoBBaseSaveThrowTable4";
+ case kEoBBaseSaveThrwLvlIndex:
+ return "kEoBBaseSaveThrwLvlIndex";
+ case kEoBBaseSaveThrwModDiv:
+ return "kEoBBaseSaveThrwModDiv";
+ case kEoBBaseSaveThrwModExt:
+ return "kEoBBaseSaveThrwModExt";
+ case kEoBBasePryDoorStrings:
+ return "kEoBBasePryDoorStrings";
+ case kEoBBaseWarningStrings:
+ return "kEoBBaseWarningStrings";
+ case kEoBBaseItemSuffixStringsRings:
+ return "kEoBBaseItemSuffixStringsRings";
+ case kEoBBaseItemSuffixStringsPotions:
+ return "kEoBBaseItemSuffixStringsPotions";
+ case kEoBBaseItemSuffixStringsWands:
+ return "kEoBBaseItemSuffixStringsWands";
+ case kEoBBaseRipItemStrings:
+ return "kEoBBaseRipItemStrings";
+ case kEoBBaseCursedString:
+ return "kEoBBaseCursedString";
+ case kEoBBaseEnchantedString:
+ return "kEoBBaseEnchantedString";
+ case kEoBBaseMagicObjectStrings:
+ return "kEoBBaseMagicObjectStrings";
+ case kEoBBaseMagicObject5String:
+ return "kEoBBaseMagicObject5String";
+ case kEoBBasePatternSuffix:
+ return "kEoBBasePatternSuffix";
+ case kEoBBasePatternGrFix1:
+ return "kEoBBasePatternGrFix1";
+ case kEoBBasePatternGrFix2:
+ return "kEoBBasePatternGrFix2";
+ case kEoBBaseValidateArmorString:
+ return "kEoBBaseValidateArmorString";
+ case kEoBBaseValidateCursedString:
+ return "kEoBBaseValidateCursedString";
+ case kEoBBaseValidateNoDropString:
+ return "kEoBBaseValidateNoDropString";
+ case kEoBBasePotionStrings:
+ return "kEoBBasePotionStrings";
+ case kEoBBaseWandString:
+ return "kEoBBaseWandString";
+ case kEoBBaseItemMisuseStrings:
+ return "kEoBBaseItemMisuseStrings";
+ case kEoBBaseTakenStrings:
+ return "kEoBBaseTakenStrings";
+ case kEoBBasePotionEffectStrings:
+ return "kEoBBasePotionEffectStrings";
+ case kEoBBaseYesNoStrings:
+ return "kEoBBaseYesNoStrings";
+ case kRpgCommonMoreStrings:
+ return "kRpgCommonMoreStrings";
+ case kEoBBaseNpcMaxStrings:
+ return "kEoBBaseNpcMaxStrings";
+ case kEoBBaseOkStrings:
+ return "kEoBBaseOkStrings";
+ case kEoBBaseNpcJoinStrings:
+ return "kEoBBaseNpcJoinStrings";
+ case kEoBBaseCancelStrings:
+ return "kEoBBaseCancelStrings";
+ case kEoBBaseAbortStrings:
+ return "kEoBBaseAbortStrings";
+ case kEoBBaseMenuStringsMain:
+ return "kEoBBaseMenuStringsMain";
+ case kEoBBaseMenuStringsSaveLoad:
+ return "kEoBBaseMenuStringsSaveLoad";
+ case kEoBBaseMenuStringsOnOff:
+ return "kEoBBaseMenuStringsOnOff";
+ case kEoBBaseMenuStringsSpells:
+ return "kEoBBaseMenuStringsSpells";
+ case kEoBBaseMenuStringsRest:
+ return "kEoBBaseMenuStringsRest";
+ case kEoBBaseMenuStringsDrop:
+ return "kEoBBaseMenuStringsDrop";
+ case kEoBBaseMenuStringsExit:
+ return "kEoBBaseMenuStringsExit";
+ case kEoBBaseMenuStringsStarve:
+ return "kEoBBaseMenuStringsStarve";
+ case kEoBBaseMenuStringsScribe:
+ return "kEoBBaseMenuStringsScribe";
+ case kEoBBaseMenuStringsDrop2:
+ return "kEoBBaseMenuStringsDrop2";
+ case kEoBBaseMenuStringsHead:
+ return "kEoBBaseMenuStringsHead";
+ case kEoBBaseMenuStringsPoison:
+ return "kEoBBaseMenuStringsPoison";
+ case kEoBBaseMenuStringsMgc:
+ return "kEoBBaseMenuStringsMgc";
+ case kEoBBaseMenuStringsPrefs:
+ return "kEoBBaseMenuStringsPrefs";
+ case kEoBBaseMenuStringsRest2:
+ return "kEoBBaseMenuStringsRest2";
+ case kEoBBaseMenuStringsRest3:
+ return "kEoBBaseMenuStringsRest3";
+ case kEoBBaseMenuStringsRest4:
+ return "kEoBBaseMenuStringsRest4";
+ case kEoBBaseMenuStringsDefeat:
+ return "kEoBBaseMenuStringsDefeat";
+ case kEoBBaseMenuStringsTransfer:
+ return "kEoBBaseMenuStringsTransfer";
+ case kEoBBaseMenuStringsSpec:
+ return "kEoBBaseMenuStringsSpec";
+ case kEoBBaseMenuStringsSpellNo:
+ return "kEoBBaseMenuStringsSpellNo";
+ case kEoBBaseMenuYesNoStrings:
+ return "kEoBBaseMenuYesNoStrings";
+ case kEoBBaseSpellLevelsMage:
+ return "kEoBBaseSpellLevelsMage";
+ case kEoBBaseSpellLevelsCleric:
+ return "kEoBBaseSpellLevelsCleric";
+ case kEoBBaseNumSpellsCleric:
+ return "kEoBBaseNumSpellsCleric";
+ case kEoBBaseNumSpellsWisAdj:
+ return "kEoBBaseNumSpellsWisAdj";
+ case kEoBBaseNumSpellsPal:
+ return "kEoBBaseNumSpellsPal";
+ case kEoBBaseNumSpellsMage:
+ return "kEoBBaseNumSpellsMage";
+ case kEoBBaseCharGuiStringsHp:
+ return "kEoBBaseCharGuiStringsHp";
+ case kEoBBaseCharGuiStringsWp1:
+ return "kEoBBaseCharGuiStringsWp1";
+ case kEoBBaseCharGuiStringsWp2:
+ return "kEoBBaseCharGuiStringsWp2";
+ case kEoBBaseCharGuiStringsWr:
+ return "kEoBBaseCharGuiStringsWr";
+ case kEoBBaseCharGuiStringsSt1:
+ return "kEoBBaseCharGuiStringsSt1";
+ case kEoBBaseCharGuiStringsSt2:
+ return "kEoBBaseCharGuiStringsSt2";
+ case kEoBBaseCharGuiStringsIn:
+ return "kEoBBaseCharGuiStringsIn";
+ case kEoBBaseCharStatusStrings7:
+ return "kEoBBaseCharStatusStrings7";
+ case kEoBBaseCharStatusStrings81:
+ return "kEoBBaseCharStatusStrings81";
+ case kEoBBaseCharStatusStrings82:
+ return "kEoBBaseCharStatusStrings82";
+ case kEoBBaseCharStatusStrings9:
+ return "kEoBBaseCharStatusStrings9";
+ case kEoBBaseCharStatusStrings12:
+ return "kEoBBaseCharStatusStrings12";
+ case kEoBBaseCharStatusStrings131:
+ return "kEoBBaseCharStatusStrings131";
+ case kEoBBaseCharStatusStrings132:
+ return "kEoBBaseCharStatusStrings132";
+ case kEoBBaseLevelGainStrings:
+ return "kEoBBaseLevelGainStrings";
+ case kEoBBaseExperienceTable0:
+ return "kEoBBaseExperienceTable0";
+ case kEoBBaseExperienceTable1:
+ return "kEoBBaseExperienceTable1";
+ case kEoBBaseExperienceTable2:
+ return "kEoBBaseExperienceTable2";
+ case kEoBBaseExperienceTable3:
+ return "kEoBBaseExperienceTable3";
+ case kEoBBaseExperienceTable4:
+ return "kEoBBaseExperienceTable4";
+ case kEoBBaseWllFlagPreset:
+ return "kEoBBaseWllFlagPreset";
+ case kEoBBaseDscShapeCoords:
+ return "kEoBBaseDscShapeCoords";
+ case kEoBBaseDscDoorScaleOffs:
+ return "kEoBBaseDscDoorScaleOffs";
+ case kEoBBaseDscDoorScaleMult1:
+ return "kEoBBaseDscDoorScaleMult1";
+ case kEoBBaseDscDoorScaleMult2:
+ return "kEoBBaseDscDoorScaleMult2";
+ case kEoBBaseDscDoorScaleMult3:
+ return "kEoBBaseDscDoorScaleMult3";
+ case kEoBBaseDscDoorScaleMult4:
+ return "kEoBBaseDscDoorScaleMult4";
+ case kEoBBaseDscDoorScaleMult5:
+ return "kEoBBaseDscDoorScaleMult5";
+ case kEoBBaseDscDoorScaleMult6:
+ return "kEoBBaseDscDoorScaleMult6";
+ case kEoBBaseDscDoorType5Offs:
+ return "kEoBBaseDscDoorType5Offs";
+ case kEoBBaseDscDoorXE:
+ return "kEoBBaseDscDoorXE";
+ case kEoBBaseDscDoorY1:
+ return "kEoBBaseDscDoorY1";
+ case kEoBBaseDscDoorY3:
+ return "kEoBBaseDscDoorY3";
+ case kEoBBaseDscDoorY4:
+ return "kEoBBaseDscDoorY4";
+ case kEoBBaseDscDoorY5:
+ return "kEoBBaseDscDoorY5";
+ case kEoBBaseDscDoorY6:
+ return "kEoBBaseDscDoorY6";
+ case kEoBBaseDscDoorY7:
+ return "kEoBBaseDscDoorY7";
+ case kEoBBaseDscDoorCoordsExt:
+ return "kEoBBaseDscDoorCoordsExt";
+ case kEoBBaseDscItemPosIndex:
+ return "kEoBBaseDscItemPosIndex";
+ case kEoBBaseDscItemShpX:
+ return "kEoBBaseDscItemShpX";
+ case kEoBBaseDscItemPosUnk:
+ return "kEoBBaseDscItemPosUnk";
+ case kEoBBaseDscItemTileIndex:
+ return "kEoBBaseDscItemTileIndex";
+ case kEoBBaseDscItemShapeMap:
+ return "kEoBBaseDscItemShapeMap";
+ case kEoBBaseDscMonsterFrmOffsTbl1:
+ return "kEoBBaseDscMonsterFrmOffsTbl1";
+ case kEoBBaseDscMonsterFrmOffsTbl2:
+ return "kEoBBaseDscMonsterFrmOffsTbl2";
+ case kEoBBaseInvSlotX:
+ return "kEoBBaseInvSlotX";
+ case kEoBBaseInvSlotY:
+ return "kEoBBaseInvSlotY";
+ case kEoBBaseSlotValidationFlags:
+ return "kEoBBaseSlotValidationFlags";
+ case kEoBBaseProjectileWeaponTypes:
+ return "kEoBBaseProjectileWeaponTypes";
+ case kEoBBaseWandTypes:
+ return "kEoBBaseWandTypes";
+ case kEoBBaseDrawObjPosIndex:
+ return "kEoBBaseDrawObjPosIndex";
+ case kEoBBaseFlightObjFlipIndex:
+ return "kEoBBaseFlightObjFlipIndex";
+ case kEoBBaseFlightObjShpMap:
+ return "kEoBBaseFlightObjShpMap";
+ case kEoBBaseFlightObjSclIndex:
+ return "kEoBBaseFlightObjSclIndex";
+ case kEoBBaseDscTelptrShpCoords:
+ return "kEoBBaseDscTelptrShpCoords";
+ case kEoBBasePortalSeqData:
+ return "kEoBBasePortalSeqData";
+ case kEoBBaseManDef:
+ return "kEoBBaseManDef";
+ case kEoBBaseManWord:
+ return "kEoBBaseManWord";
+ case kEoBBaseManPrompt:
+ return "kEoBBaseManPrompt";
+ case kEoBBaseBookNumbers:
+ return "kEoBBaseBookNumbers";
+ case kEoBBaseMageSpellsList:
+ return "kEoBBaseMageSpellsList";
+ case kEoBBaseClericSpellsList:
+ return "kEoBBaseClericSpellsList";
+ case kEoBBaseSpellNames:
+ return "kEoBBaseSpellNames";
+
+ case kEoBBaseMagicStrings1:
+ return "kEoBBaseMagicStrings1";
+ case kEoBBaseMagicStrings2:
+ return "kEoBBaseMagicStrings2";
+ case kEoBBaseMagicStrings3:
+ return "kEoBBaseMagicStrings3";
+ case kEoBBaseMagicStrings4:
+ return "kEoBBaseMagicStrings4";
+ case kEoBBaseMagicStrings6:
+ return "kEoBBaseMagicStrings6";
+ case kEoBBaseMagicStrings7:
+ return "kEoBBaseMagicStrings7";
+ case kEoBBaseMagicStrings8:
+ return "kEoBBaseMagicStrings8";
+ case kEoBBaseExpObjectTlMode:
+ return "kEoBBaseExpObjectTlMode";
+ case kEoBBaseExpObjectTblIndex:
+ return "kEoBBaseExpObjectTblIndex";
+ case kEoBBaseExpObjectShpStart:
+ return "kEoBBaseExpObjectShpStart";
+ case kEoBBaseExpObjectTbl1:
+ return "kEoBBaseExpObjectTbl1";
+ case kEoBBaseExpObjectTbl2:
+ return "kEoBBaseExpObjectTbl2";
+ case kEoBBaseExpObjectTbl3:
+ return "kEoBBaseExpObjectTbl3";
+ case kEoBBaseExpObjectY:
+ return "kEoBBaseExpObjectY";
+ case kEoBBaseSparkDefSteps:
+ return "kEoBBaseSparkDefSteps";
+ case kEoBBaseSparkDefSubSteps:
+ return "kEoBBaseSparkDefSubSteps";
+ case kEoBBaseSparkDefShift:
+ return "kEoBBaseSparkDefShift";
+ case kEoBBaseSparkDefAdd:
+ return "kEoBBaseSparkDefAdd";
+ case kEoBBaseSparkDefX:
+ return "kEoBBaseSparkDefX";
+ case kEoBBaseSparkDefY:
+ return "kEoBBaseSparkDefY";
+ case kEoBBaseSparkOfFlags1:
+ return "kEoBBaseSparkOfFlags1";
+ case kEoBBaseSparkOfFlags2:
+ return "kEoBBaseSparkOfFlags2";
+ case kEoBBaseSparkOfShift:
+ return "kEoBBaseSparkOfShift";
+ case kEoBBaseSparkOfX:
+ return "kEoBBaseSparkOfX";
+ case kEoBBaseSparkOfY:
+ return "kEoBBaseSparkOfY";
+ case kEoBBaseSpellProperties:
+ return "kEoBBaseSpellProperties";
+ case kEoBBaseMagicFlightProps:
+ return "kEoBBaseMagicFlightProps";
+ case kEoBBaseTurnUndeadEffect:
+ return "kEoBBaseTurnUndeadEffect";
+ case kEoBBaseBurningHandsDest:
+ return "kEoBBaseBurningHandsDest";
+ case kEoBBaseConeOfColdDest1:
+ return "kEoBBaseConeOfColdDest1";
+ case kEoBBaseConeOfColdDest2:
+ return "kEoBBaseConeOfColdDest2";
+ case kEoBBaseConeOfColdDest3:
+ return "kEoBBaseConeOfColdDest3";
+ case kEoBBaseConeOfColdDest4:
+ return "kEoBBaseConeOfColdDest4";
+ case kEoBBaseConeOfColdGfxTbl:
+ return "kEoBBaseConeOfColdGfxTbl";
+ case kEoB1MainMenuStrings:
+ return "kEoB1MainMenuStrings";
+ case kEoB1BonusStrings:
+ return "kEoB1BonusStrings";
+ case kEoB1IntroFilesOpening:
+ return "kEoB1IntroFilesOpening";
+ case kEoB1IntroFilesTower:
+ return "kEoB1IntroFilesTower";
+ case kEoB1IntroFilesOrb:
+ return "kEoB1IntroFilesOrb";
+ case kEoB1IntroFilesWdEntry:
+ return "kEoB1IntroFilesWdEntry";
+ case kEoB1IntroFilesKing:
+ return "kEoB1IntroFilesKing";
+ case kEoB1IntroFilesHands:
+ return "kEoB1IntroFilesHands";
+ case kEoB1IntroFilesWdExit:
+ return "kEoB1IntroFilesWdExit";
+ case kEoB1IntroFilesTunnel:
+ return "kEoB1IntroFilesTunnel";
+ case kEoB1IntroOpeningFrmDelay:
+ return "kEoB1IntroOpeningFrmDelay";
+ case kEoB1IntroWdEncodeX:
+ return "kEoB1IntroWdEncodeX";
+ case kEoB1IntroWdEncodeY:
+ return "kEoB1IntroWdEncodeY";
+ case kEoB1IntroWdEncodeWH:
+ return "kEoB1IntroWdEncodeWH";
+ case kEoB1IntroWdDsX:
+ return "kEoB1IntroWdDsX";
+ case kEoB1IntroWdDsY:
+ return "kEoB1IntroWdDsY";
+ case kEoB1IntroTvlX1:
+ return "kEoB1IntroTvlX1";
+ case kEoB1IntroTvlY1:
+ return "kEoB1IntroTvlY1";
+ case kEoB1IntroTvlX2:
+ return "kEoB1IntroTvlX2";
+ case kEoB1IntroTvlY2:
+ return "kEoB1IntroTvlY2";
+ case kEoB1IntroTvlW:
+ return "kEoB1IntroTvlW";
+ case kEoB1IntroTvlH:
+ return "kEoB1IntroTvlH";
+ case kEoB1DoorShapeDefs:
+ return "kEoB1DoorShapeDefs";
+ case kEoB1DoorSwitchCoords:
+ return "kEoB1DoorSwitchCoords";
+ case kEoB1MonsterProperties:
+ return "kEoB1MonsterProperties";
+ case kEoB1EnemyMageSpellList:
+ return "kEoB1EnemyMageSpellList";
+ case kEoB1EnemyMageSfx:
+ return "kEoB1EnemyMageSfx";
+ case kEoB1BeholderSpellList:
+ return "kEoB1BeholderSpellList";
+ case kEoB1BeholderSfx:
+ return "kEoB1BeholderSfx";
+ case kEoB1TurnUndeadString:
+ return "kEoB1TurnUndeadString";
+ case kEoB1CgaMappingDefault:
+ return "kEoB1CgaMappingDefault";
+ case kEoB1CgaMappingAlt:
+ return "kEoB1CgaMappingAlt";
+ case kEoB1CgaMappingInv:
+ return "kEoB1CgaMappingInv";
+ case kEoB1CgaMappingItemsL:
+ return "kEoB1CgaMappingItemsL";
+ case kEoB1CgaMappingItemsS:
+ return "kEoB1CgaMappingItemsS";
+ case kEoB1CgaMappingThrown:
+ return "kEoB1CgaMappingThrown";
+ case kEoB1CgaMappingIcons:
+ return "kEoB1CgaMappingIcons";
+ case kEoB1CgaMappingDeco:
+ return "kEoB1CgaMappingDeco";
+ case kEoB1CgaLevelMappingIndex:
+ return "kEoB1CgaLevelMappingIndex";
+ case kEoB1CgaMappingLevel0:
+ return "kEoB1CgaMappingLevel0";
+ case kEoB1CgaMappingLevel1:
+ return "kEoB1CgaMappingLevel1";
+ case kEoB1CgaMappingLevel2:
+ return "kEoB1CgaMappingLevel2";
+ case kEoB1CgaMappingLevel3:
+ return "kEoB1CgaMappingLevel3";
+ case kEoB1CgaMappingLevel4:
+ return "kEoB1CgaMappingLevel4";
+ case kEoB1NpcShpData:
+ return "kEoB1NpcShpData";
+ case kEoB1NpcSubShpIndex1:
+ return "kEoB1NpcSubShpIndex1";
+ case kEoB1NpcSubShpIndex2:
+ return "kEoB1NpcSubShpIndex2";
+ case kEoB1NpcSubShpY:
+ return "kEoB1NpcSubShpY";
+ case kEoB1Npc0Strings:
+ return "kEoB1Npc0Strings";
+ case kEoB1Npc11Strings:
+ return "kEoB1Npc11Strings";
+ case kEoB1Npc12Strings:
+ return "kEoB1Npc12Strings";
+ case kEoB1Npc21Strings:
+ return "kEoB1Npc21Strings";
+ case kEoB1Npc22Strings:
+ return "kEoB1Npc22Strings";
+ case kEoB1Npc31Strings:
+ return "kEoB1Npc31Strings";
+ case kEoB1Npc32Strings:
+ return "kEoB1Npc32Strings";
+ case kEoB1Npc4Strings:
+ return "kEoB1Npc4Strings";
+ case kEoB1Npc5Strings:
+ return "kEoB1Npc5Strings";
+ case kEoB1Npc6Strings:
+ return "kEoB1Npc6Strings";
+ case kEoB1Npc7Strings:
+ return "kEoB1Npc7Strings";
+ case kEoB2MainMenuStrings:
+ return "kEoB2MainMenuStrings";
+ case kEoB2TransferPortraitFrames:
+ return "kEoB2TransferPortraitFrames";
+ case kEoB2TransferConvertTable:
+ return "kEoB2TransferConvertTable";
+ case kEoB2TransferItemTable:
+ return "kEoB2TransferItemTable";
+ case kEoB2TransferExpTable:
+ return "kEoB2TransferExpTable";
+ case kEoB2TransferStrings1:
+ return "kEoB2TransferStrings1";
+ case kEoB2TransferStrings2:
+ return "kEoB2TransferStrings2";
+ case kEoB2TransferLabels:
+ return "kEoB2TransferLabels";
+ case kEoB2IntroStrings:
+ return "kEoB2IntroStrings";
+ case kEoB2IntroCPSFiles:
+ return "kEoB2IntroCPSFiles";
+ case kEob2IntroAnimData00:
+ return "kEob2IntroAnimData00";
+ case kEob2IntroAnimData01:
+ return "kEob2IntroAnimData01";
+ case kEob2IntroAnimData02:
+ return "kEob2IntroAnimData02";
+ case kEob2IntroAnimData03:
+ return "kEob2IntroAnimData03";
+ case kEob2IntroAnimData04:
+ return "kEob2IntroAnimData04";
+ case kEob2IntroAnimData05:
+ return "kEob2IntroAnimData05";
+ case kEob2IntroAnimData06:
+ return "kEob2IntroAnimData06";
+ case kEob2IntroAnimData07:
+ return "kEob2IntroAnimData07";
+ case kEob2IntroAnimData08:
+ return "kEob2IntroAnimData08";
+ case kEob2IntroAnimData09:
+ return "kEob2IntroAnimData09";
+ case kEob2IntroAnimData10:
+ return "kEob2IntroAnimData10";
+ case kEob2IntroAnimData11:
+ return "kEob2IntroAnimData11";
+ case kEob2IntroAnimData12:
+ return "kEob2IntroAnimData12";
+ case kEob2IntroAnimData13:
+ return "kEob2IntroAnimData13";
+ case kEob2IntroAnimData14:
+ return "kEob2IntroAnimData14";
+ case kEob2IntroAnimData15:
+ return "kEob2IntroAnimData15";
+ case kEob2IntroAnimData16:
+ return "kEob2IntroAnimData16";
+ case kEob2IntroAnimData17:
+ return "kEob2IntroAnimData17";
+ case kEob2IntroAnimData18:
+ return "kEob2IntroAnimData18";
+ case kEob2IntroAnimData19:
+ return "kEob2IntroAnimData19";
+ case kEob2IntroAnimData20:
+ return "kEob2IntroAnimData20";
+ case kEob2IntroAnimData21:
+ return "kEob2IntroAnimData21";
+ case kEob2IntroAnimData22:
+ return "kEob2IntroAnimData22";
+ case kEob2IntroAnimData23:
+ return "kEob2IntroAnimData23";
+ case kEob2IntroAnimData24:
+ return "kEob2IntroAnimData24";
+ case kEob2IntroAnimData25:
+ return "kEob2IntroAnimData25";
+ case kEob2IntroAnimData26:
+ return "kEob2IntroAnimData26";
+ case kEob2IntroAnimData27:
+ return "kEob2IntroAnimData27";
+ case kEob2IntroAnimData28:
+ return "kEob2IntroAnimData28";
+ case kEob2IntroAnimData29:
+ return "kEob2IntroAnimData29";
+ case kEob2IntroAnimData30:
+ return "kEob2IntroAnimData30";
+ case kEob2IntroAnimData31:
+ return "kEob2IntroAnimData31";
+ case kEob2IntroAnimData32:
+ return "kEob2IntroAnimData32";
+ case kEob2IntroAnimData33:
+ return "kEob2IntroAnimData33";
+ case kEob2IntroAnimData34:
+ return "kEob2IntroAnimData34";
+ case kEob2IntroAnimData35:
+ return "kEob2IntroAnimData35";
+ case kEob2IntroAnimData36:
+ return "kEob2IntroAnimData36";
+ case kEob2IntroAnimData37:
+ return "kEob2IntroAnimData37";
+ case kEob2IntroAnimData38:
+ return "kEob2IntroAnimData38";
+ case kEob2IntroAnimData39:
+ return "kEob2IntroAnimData39";
+ case kEob2IntroAnimData40:
+ return "kEob2IntroAnimData40";
+ case kEob2IntroAnimData41:
+ return "kEob2IntroAnimData41";
+ case kEob2IntroAnimData42:
+ return "kEob2IntroAnimData42";
+ case kEob2IntroAnimData43:
+ return "kEob2IntroAnimData43";
+ case kEoB2IntroShapes00:
+ return "kEoB2IntroShapes00";
+ case kEoB2IntroShapes01:
+ return "kEoB2IntroShapes01";
+ case kEoB2IntroShapes04:
+ return "kEoB2IntroShapes04";
+ case kEoB2IntroShapes07:
+ return "kEoB2IntroShapes07";
+ case kEoB2FinaleStrings:
+ return "kEoB2FinaleStrings";
+ case kEoB2CreditsData:
+ return "kEoB2CreditsData";
+ case kEoB2FinaleCPSFiles:
+ return "kEoB2FinaleCPSFiles";
+ case kEob2FinaleAnimData00:
+ return "kEob2FinaleAnimData00";
+ case kEob2FinaleAnimData01:
+ return "kEob2FinaleAnimData01";
+ case kEob2FinaleAnimData02:
+ return "kEob2FinaleAnimData02";
+ case kEob2FinaleAnimData03:
+ return "kEob2FinaleAnimData03";
+ case kEob2FinaleAnimData04:
+ return "kEob2FinaleAnimData04";
+ case kEob2FinaleAnimData05:
+ return "kEob2FinaleAnimData05";
+ case kEob2FinaleAnimData06:
+ return "kEob2FinaleAnimData06";
+ case kEob2FinaleAnimData07:
+ return "kEob2FinaleAnimData07";
+ case kEob2FinaleAnimData08:
+ return "kEob2FinaleAnimData08";
+ case kEob2FinaleAnimData09:
+ return "kEob2FinaleAnimData09";
+ case kEob2FinaleAnimData10:
+ return "kEob2FinaleAnimData10";
+ case kEob2FinaleAnimData11:
+ return "kEob2FinaleAnimData11";
+ case kEob2FinaleAnimData12:
+ return "kEob2FinaleAnimData12";
+ case kEob2FinaleAnimData13:
+ return "kEob2FinaleAnimData13";
+ case kEob2FinaleAnimData14:
+ return "kEob2FinaleAnimData14";
+ case kEob2FinaleAnimData15:
+ return "kEob2FinaleAnimData15";
+ case kEob2FinaleAnimData16:
+ return "kEob2FinaleAnimData16";
+ case kEob2FinaleAnimData17:
+ return "kEob2FinaleAnimData17";
+ case kEob2FinaleAnimData18:
+ return "kEob2FinaleAnimData18";
+ case kEob2FinaleAnimData19:
+ return "kEob2FinaleAnimData19";
+ case kEob2FinaleAnimData20:
+ return "kEob2FinaleAnimData20";
+ case kEoB2FinaleShapes00:
+ return "kEoB2FinaleShapes00";
+ case kEoB2FinaleShapes03:
+ return "kEoB2FinaleShapes03";
+ case kEoB2FinaleShapes07:
+ return "kEoB2FinaleShapes07";
+ case kEoB2FinaleShapes09:
+ return "kEoB2FinaleShapes09";
+ case kEoB2FinaleShapes10:
+ return "kEoB2FinaleShapes10";
+ case kEoB2NpcShapeData:
+ return "kEoB2NpcShapeData";
+ case kEoBBaseClassModifierFlags:
+ return "kEoBBaseClassModifierFlags";
+ case kEoBBaseMonsterStepTable01:
+ return "kEoBBaseMonsterStepTable01";
+ case kEoBBaseMonsterStepTable02:
+ return "kEoBBaseMonsterStepTable02";
+ case kEoBBaseMonsterStepTable1:
+ return "kEoBBaseMonsterStepTable1";
+ case kEoBBaseMonsterStepTable2:
+ return "kEoBBaseMonsterStepTable2";
+ case kEoBBaseMonsterStepTable3:
+ return "kEoBBaseMonsterStepTable3";
+ case kEoBBaseMonsterCloseAttPosTable1:
+ return "kEoBBaseMonsterCloseAttPosTable1";
+ case kEoBBaseMonsterCloseAttPosTable21:
+ return "kEoBBaseMonsterCloseAttPosTable21";
+ case kEoBBaseMonsterCloseAttPosTable22:
+ return "kEoBBaseMonsterCloseAttPosTable22";
+ case kEoBBaseMonsterCloseAttUnkTable:
+ return "kEoBBaseMonsterCloseAttUnkTable";
+ case kEoBBaseMonsterCloseAttChkTable1:
+ return "kEoBBaseMonsterCloseAttChkTable1";
+ case kEoBBaseMonsterCloseAttChkTable2:
+ return "kEoBBaseMonsterCloseAttChkTable2";
+ case kEoBBaseMonsterCloseAttDstTable1:
+ return "kEoBBaseMonsterCloseAttDstTable1";
+ case kEoBBaseMonsterCloseAttDstTable2:
+ return "kEoBBaseMonsterCloseAttDstTable2";
+ case kEoBBaseMonsterProximityTable:
+ return "kEoBBaseMonsterProximityTable";
+ case kEoBBaseFindBlockMonstersTable:
+ return "kEoBBaseFindBlockMonstersTable";
+ case kEoBBaseMonsterDirChangeTable:
+ return "kEoBBaseMonsterDirChangeTable";
+ case kEoBBaseMonsterDistAttStrings:
+ return "kEoBBaseMonsterDistAttStrings";
+ case kEoBBaseEncodeMonsterDefs:
+ return "kEoBBaseEncodeMonsterDefs";
+ case kEoBBaseNpcPresets:
+ return "kEoBBaseNpcPresets";
+ case kEoB2Npc1Strings:
+ return "kEoB2Npc1Strings";
+ case kEoB2Npc2Strings:
+ return "kEoB2Npc2Strings";
+ case kEoB2MonsterDustStrings:
+ return "kEoB2MonsterDustStrings";
+ case kEoB2DreamSteps:
+ return "kEoB2DreamSteps";
+ case kEoB2KheldranStrings:
+ return "kEoB2KheldranStrings";
+ case kEoB2HornStrings:
+ return "kEoB2HornStrings";
+ case kEoB2HornSounds:
+ return "kEoB2HornSounds";
+ case kEoB2WallOfForceDsX:
+ return "kEoB2WallOfForceDsX";
+ case kEoB2WallOfForceDsY:
+ return "kEoB2WallOfForceDsY";
+ case kEoB2WallOfForceNumW:
+ return "kEoB2WallOfForceNumW";
+ case kEoB2WallOfForceNumH:
+ return "kEoB2WallOfForceNumH";
+ case kEoB2WallOfForceShpId:
+ return "kEoB2WallOfForceShpId";
+ case kLoLIngamePakFiles:
+ return "kLoLIngamePakFiles";
+ case kLoLCharacterDefs:
+ return "kLoLCharacterDefs";
+ case kLoLIngameSfxFiles:
+ return "kLoLIngameSfxFiles";
+ case kLoLIngameSfxIndex:
+ return "kLoLIngameSfxIndex";
+ case kLoLMusicTrackMap:
+ return "kLoLMusicTrackMap";
+ case kLoLIngameGMSfxIndex:
+ return "kLoLIngameGMSfxIndex";
+ case kLoLIngameMT32SfxIndex:
+ return "kLoLIngameMT32SfxIndex";
+ case kLoLIngamePcSpkSfxIndex:
+ return "kLoLIngamePcSpkSfxIndex";
+ case kLoLSpellProperties:
+ return "kLoLSpellProperties";
+ case kLoLGameShapeMap:
+ return "kLoLGameShapeMap";
+ case kLoLSceneItemOffs:
+ return "kLoLSceneItemOffs";
+ case kLoLCharInvIndex:
+ return "kLoLCharInvIndex";
+ case kLoLCharInvDefs:
+ return "kLoLCharInvDefs";
+ case kLoLCharDefsMan:
+ return "kLoLCharDefsMan";
+ case kLoLCharDefsWoman:
+ return "kLoLCharDefsWoman";
+ case kLoLCharDefsKieran:
+ return "kLoLCharDefsKieran";
+ case kLoLCharDefsAkshel:
+ return "kLoLCharDefsAkshel";
+ case kLoLExpRequirements:
+ return "kLoLExpRequirements";
+ case kLoLMonsterModifiers:
+ return "kLoLMonsterModifiers";
+ case kLoLMonsterShiftOffsets:
+ return "kLoLMonsterShiftOffsets";
+ case kLoLMonsterDirFlags:
+ return "kLoLMonsterDirFlags";
+ case kLoLMonsterScaleY:
+ return "kLoLMonsterScaleY";
+ case kLoLMonsterScaleX:
+ return "kLoLMonsterScaleX";
+ case kLoLMonsterScaleWH:
+ return "kLoLMonsterScaleWH";
+ case kLoLFlyingObjectShp:
+ return "kLoLFlyingObjectShp";
+ case kLoLInventoryDesc:
+ return "kLoLInventoryDesc";
+ case kLoLLevelShpList:
+ return "kLoLLevelShpList";
+ case kLoLLevelDatList:
+ return "kLoLLevelDatList";
+ case kLoLCompassDefs:
+ return "kLoLCompassDefs";
+ case kLoLItemPrices:
+ return "kLoLItemPrices";
+ case kLoLStashSetup:
+ return "kLoLStashSetup";
+ case kLoLDscWalls:
+ return "kLoLDscWalls";
+ case kRpgCommonDscShapeIndex:
+ return "kRpgCommonDscShapeIndex";
+ case kLoLDscOvlMap:
+ return "kLoLDscOvlMap";
+ case kLoLDscScaleWidthData:
+ return "kLoLDscScaleWidthData";
+ case kLoLDscScaleHeightData:
+ return "kLoLDscScaleHeightData";
+ case kRpgCommonDscX:
+ return "kRpgCommonDscX";
+ case kLoLDscY:
+ return "kLoLDscY";
+ case kRpgCommonDscTileIndex:
+ return "kRpgCommonDscTileIndex";
+ case kRpgCommonDscUnk2:
+ return "kRpgCommonDscUnk2";
+ case kRpgCommonDscDoorShapeIndex:
+ return "kRpgCommonDscDoorShapeIndex";
+ case kRpgCommonDscDimData1:
+ return "kRpgCommonDscDimData1";
+ case kRpgCommonDscDimData2:
+ return "kRpgCommonDscDimData2";
+ case kRpgCommonDscBlockMap:
+ return "kRpgCommonDscBlockMap";
+ case kRpgCommonDscDimMap:
+ return "kRpgCommonDscDimMap";
+ case kLoLDscOvlIndex:
+ return "kLoLDscOvlIndex";
+ case kRpgCommonDscBlockIndex:
+ return "kRpgCommonDscBlockIndex";
+ case kRpgCommonDscDoorY2:
+ return "kRpgCommonDscDoorY2";
+ case kRpgCommonDscDoorFrameY1:
+ return "kRpgCommonDscDoorFrameY1";
+ case kRpgCommonDscDoorFrameY2:
+ return "kRpgCommonDscDoorFrameY2";
+ case kRpgCommonDscDoorFrameIndex1:
+ return "kRpgCommonDscDoorFrameIndex1";
+ case kRpgCommonDscDoorFrameIndex2:
+ return "kRpgCommonDscDoorFrameIndex2";
+ case kLoLDscDoorScale:
+ return "kLoLDscDoorScale";
+ case kLoLDscDoor4:
+ return "kLoLDscDoor4";
+ case kLoLDscDoorX:
+ return "kLoLDscDoorX";
+ case kLoLDscDoorY:
+ return "kLoLDscDoorY";
+ case kLoLScrollXTop:
+ return "kLoLScrollXTop";
+ case kLoLScrollYTop:
+ return "kLoLScrollYTop";
+ case kLoLScrollXBottom:
+ return "kLoLScrollXBottom";
+ case kLoLScrollYBottom:
+ return "kLoLScrollYBottom";
+ case kLoLButtonDefs:
+ return "kLoLButtonDefs";
+ case kLoLButtonList1:
+ return "kLoLButtonList1";
+ case kLoLButtonList2:
+ return "kLoLButtonList2";
+ case kLoLButtonList3:
+ return "kLoLButtonList3";
+ case kLoLButtonList4:
+ return "kLoLButtonList4";
+ case kLoLButtonList5:
+ return "kLoLButtonList5";
+ case kLoLButtonList6:
+ return "kLoLButtonList6";
+ case kLoLButtonList7:
+ return "kLoLButtonList7";
+ case kLoLButtonList8:
+ return "kLoLButtonList8";
+ case kLoLLegendData:
+ return "kLoLLegendData";
+ case kLoLMapCursorOvl:
+ return "kLoLMapCursorOvl";
+ case kLoLMapStringId:
+ return "kLoLMapStringId";
+ case kLoLSpellbookAnim:
+ return "kLoLSpellbookAnim";
+ case kLoLSpellbookCoords:
+ return "kLoLSpellbookCoords";
+ case kLoLHealShapeFrames:
+ return "kLoLHealShapeFrames";
+ case kLoLLightningDefs:
+ return "kLoLLightningDefs";
+ case kLoLFireballCoords:
+ return "kLoLFireballCoords";
+ case kLoLHistory:
+ return "kLoLHistory";
default:
return "Unknown";
}
diff --git a/devtools/create_kyradat/create_kyradat.h b/devtools/create_kyradat/create_kyradat.h
index cabf65706f..c2a69cfd79 100644
--- a/devtools/create_kyradat/create_kyradat.h
+++ b/devtools/create_kyradat/create_kyradat.h
@@ -179,89 +179,488 @@ enum kExtractID {
k3ItemMagicTable,
k3ItemStringMap,
- kLolIngamePakFiles,
- kLolCharacterDefs,
- kLolIngameSfxFiles,
- kLolIngameSfxIndex,
- kLolMusicTrackMap,
- kLolIngameGMSfxIndex,
- kLolIngameMT32SfxIndex,
- kLolIngamePcSpkSfxIndex,
- kLolSpellProperties,
- kLolGameShapeMap,
- kLolSceneItemOffs,
- kLolCharInvIndex,
- kLolCharInvDefs,
- kLolCharDefsMan,
- kLolCharDefsWoman,
- kLolCharDefsKieran,
- kLolCharDefsAkshel,
- kLolExpRequirements,
- kLolMonsterModifiers,
- kLolMonsterShiftOffsets,
- kLolMonsterDirFlags,
- kLolMonsterScaleY,
- kLolMonsterScaleX,
- kLolMonsterScaleWH,
- kLolFlyingObjectShp,
- kLolInventoryDesc,
-
- kLolLevelShpList,
- kLolLevelDatList,
- kLolCompassDefs,
- kLolItemPrices,
- kLolStashSetup,
-
- kLolDscUnk1,
- kLolDscShapeIndex,
- kLolDscOvlMap,
- kLolDscScaleWidthData,
- kLolDscScaleHeightData,
- kLolDscX,
- kLolDscY,
- kLolDscTileIndex,
- kLolDscUnk2,
- kLolDscDoorShapeIndex,
- kLolDscDimData1,
- kLolDscDimData2,
- kLolDscBlockMap,
- kLolDscDimMap,
- kLolDscDoor1,
- kLolDscDoorScale,
- kLolDscDoor4,
- kLolDscDoorX,
- kLolDscDoorY,
- kLolDscOvlIndex,
- kLolDscBlockIndex,
-
- kLolScrollXTop,
- kLolScrollYTop,
- kLolScrollXBottom,
- kLolScrollYBottom,
-
- kLolButtonDefs,
- kLolButtonList1,
- kLolButtonList2,
- kLolButtonList3,
- kLolButtonList4,
- kLolButtonList5,
- kLolButtonList6,
- kLolButtonList7,
- kLolButtonList8,
-
- kLolLegendData,
- kLolMapCursorOvl,
- kLolMapStringId,
-
- kLolSpellbookAnim,
- kLolSpellbookCoords,
- kLolHealShapeFrames,
- kLolLightningDefs,
- kLolFireballCoords,
-
- kLolCredits,
-
- kLolHistory,
+ kRpgCommonMoreStrings,
+ kRpgCommonDscShapeIndex,
+ kRpgCommonDscX,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDoorShapeIndex,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kRpgCommonDscDoorY2,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+ kRpgCommonDscDoorFrameIndex1,
+ kRpgCommonDscDoorFrameIndex2,
+ kRpgCommonDscBlockIndex,
+
+ kEoBBaseChargenStrings1,
+ kEoBBaseChargenStrings2,
+ kEoBBaseChargenStartLevels,
+ kEoBBaseChargenStatStrings,
+ kEoBBaseChargenRaceSexStrings,
+ kEoBBaseChargenClassStrings,
+ kEoBBaseChargenAlignmentStrings,
+ kEoBBaseChargenEnterGameStrings,
+ kEoBBaseChargenClassMinStats,
+ kEoBBaseChargenRaceMinStats,
+ kEoBBaseChargenRaceMaxStats,
+
+ kEoBBaseSaveThrowTable1,
+ kEoBBaseSaveThrowTable2,
+ kEoBBaseSaveThrowTable3,
+ kEoBBaseSaveThrowTable4,
+ kEoBBaseSaveThrwLvlIndex,
+ kEoBBaseSaveThrwModDiv,
+ kEoBBaseSaveThrwModExt,
+
+ kEoBBasePryDoorStrings,
+ kEoBBaseWarningStrings,
+
+ kEoBBaseItemSuffixStringsRings,
+ kEoBBaseItemSuffixStringsPotions,
+ kEoBBaseItemSuffixStringsWands,
+
+ kEoBBaseRipItemStrings,
+ kEoBBaseCursedString,
+ kEoBBaseEnchantedString,
+ kEoBBaseMagicObjectStrings,
+ kEoBBaseMagicObject5String,
+ kEoBBasePatternSuffix,
+ kEoBBasePatternGrFix1,
+ kEoBBasePatternGrFix2,
+ kEoBBaseValidateArmorString,
+ kEoBBaseValidateCursedString,
+ kEoBBaseValidateNoDropString,
+ kEoBBasePotionStrings,
+ kEoBBaseWandString,
+ kEoBBaseItemMisuseStrings,
+
+ kEoBBaseTakenStrings,
+ kEoBBasePotionEffectStrings,
+
+ kEoBBaseYesNoStrings,
+ kEoBBaseNpcMaxStrings,
+ kEoBBaseOkStrings,
+ kEoBBaseNpcJoinStrings,
+ kEoBBaseCancelStrings,
+ kEoBBaseAbortStrings,
+
+ kEoBBaseMenuStringsMain,
+ kEoBBaseMenuStringsSaveLoad,
+ kEoBBaseMenuStringsOnOff,
+ kEoBBaseMenuStringsSpells,
+ kEoBBaseMenuStringsRest,
+ kEoBBaseMenuStringsDrop,
+ kEoBBaseMenuStringsExit,
+ kEoBBaseMenuStringsStarve,
+ kEoBBaseMenuStringsScribe,
+ kEoBBaseMenuStringsDrop2,
+ kEoBBaseMenuStringsHead,
+ kEoBBaseMenuStringsPoison,
+ kEoBBaseMenuStringsMgc,
+ kEoBBaseMenuStringsPrefs,
+ kEoBBaseMenuStringsRest2,
+ kEoBBaseMenuStringsRest3,
+ kEoBBaseMenuStringsRest4,
+ kEoBBaseMenuStringsDefeat,
+ kEoBBaseMenuStringsTransfer,
+ kEoBBaseMenuStringsSpec,
+ kEoBBaseMenuStringsSpellNo,
+ kEoBBaseMenuYesNoStrings,
+
+ kEoBBaseSpellLevelsMage,
+ kEoBBaseSpellLevelsCleric,
+ kEoBBaseNumSpellsCleric,
+ kEoBBaseNumSpellsWisAdj,
+ kEoBBaseNumSpellsPal,
+ kEoBBaseNumSpellsMage,
+
+ kEoBBaseCharGuiStringsHp,
+ kEoBBaseCharGuiStringsWp1,
+ kEoBBaseCharGuiStringsWp2,
+ kEoBBaseCharGuiStringsWr,
+ kEoBBaseCharGuiStringsSt1,
+ kEoBBaseCharGuiStringsSt2,
+ kEoBBaseCharGuiStringsIn,
+
+ kEoBBaseCharStatusStrings7,
+ kEoBBaseCharStatusStrings81,
+ kEoBBaseCharStatusStrings82,
+ kEoBBaseCharStatusStrings9,
+ kEoBBaseCharStatusStrings12,
+ kEoBBaseCharStatusStrings131,
+ kEoBBaseCharStatusStrings132,
+
+ kEoBBaseLevelGainStrings,
+ kEoBBaseExperienceTable0,
+ kEoBBaseExperienceTable1,
+ kEoBBaseExperienceTable2,
+ kEoBBaseExperienceTable3,
+ kEoBBaseExperienceTable4,
+
+ kEoBBaseClassModifierFlags,
+
+ kEoBBaseMonsterStepTable01,
+ kEoBBaseMonsterStepTable02,
+ kEoBBaseMonsterStepTable1,
+ kEoBBaseMonsterStepTable2,
+ kEoBBaseMonsterStepTable3,
+ kEoBBaseMonsterCloseAttPosTable1,
+ kEoBBaseMonsterCloseAttPosTable21,
+ kEoBBaseMonsterCloseAttPosTable22,
+ kEoBBaseMonsterCloseAttUnkTable,
+ kEoBBaseMonsterCloseAttChkTable1,
+ kEoBBaseMonsterCloseAttChkTable2,
+ kEoBBaseMonsterCloseAttDstTable1,
+ kEoBBaseMonsterCloseAttDstTable2,
+
+ kEoBBaseMonsterProximityTable,
+ kEoBBaseFindBlockMonstersTable,
+ kEoBBaseMonsterDirChangeTable,
+ kEoBBaseMonsterDistAttStrings,
+
+ kEoBBaseEncodeMonsterDefs,
+ kEoBBaseNpcPresets,
+
+ kEoBBaseWllFlagPreset,
+ kEoBBaseDscShapeCoords,
+
+ kEoBBaseDscDoorScaleOffs,
+ kEoBBaseDscDoorScaleMult1,
+ kEoBBaseDscDoorScaleMult2,
+ kEoBBaseDscDoorScaleMult3,
+ kEoBBaseDscDoorScaleMult4,
+ kEoBBaseDscDoorScaleMult5,
+ kEoBBaseDscDoorScaleMult6,
+ kEoBBaseDscDoorType5Offs,
+ kEoBBaseDscDoorXE,
+ kEoBBaseDscDoorY1,
+ kEoBBaseDscDoorY3,
+ kEoBBaseDscDoorY4,
+ kEoBBaseDscDoorY5,
+ kEoBBaseDscDoorY6,
+ kEoBBaseDscDoorY7,
+ kEoBBaseDscDoorCoordsExt,
+
+ kEoBBaseDscItemPosIndex,
+ kEoBBaseDscItemShpX,
+ kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemTileIndex,
+ kEoBBaseDscItemShapeMap,
+
+ kEoBBaseDscMonsterFrmOffsTbl1,
+ kEoBBaseDscMonsterFrmOffsTbl2,
+
+ kEoBBaseInvSlotX,
+ kEoBBaseInvSlotY,
+ kEoBBaseSlotValidationFlags,
+
+ kEoBBaseProjectileWeaponTypes,
+ kEoBBaseWandTypes,
+
+ kEoBBaseDrawObjPosIndex,
+ kEoBBaseFlightObjFlipIndex,
+ kEoBBaseFlightObjShpMap,
+ kEoBBaseFlightObjSclIndex,
+
+ kEoBBaseDscTelptrShpCoords,
+
+ kEoBBasePortalSeqData,
+ kEoBBaseManDef,
+ kEoBBaseManWord,
+ kEoBBaseManPrompt,
+
+ kEoBBaseBookNumbers,
+ kEoBBaseMageSpellsList,
+ kEoBBaseClericSpellsList,
+ kEoBBaseSpellNames,
+ kEoBBaseMagicStrings1,
+ kEoBBaseMagicStrings2,
+ kEoBBaseMagicStrings3,
+ kEoBBaseMagicStrings4,
+ kEoBBaseMagicStrings6,
+ kEoBBaseMagicStrings7,
+ kEoBBaseMagicStrings8,
+
+ kEoBBaseExpObjectTlMode,
+ kEoBBaseExpObjectTblIndex,
+ kEoBBaseExpObjectShpStart,
+ kEoBBaseExpObjectTbl1,
+ kEoBBaseExpObjectTbl2,
+ kEoBBaseExpObjectTbl3,
+ kEoBBaseExpObjectY,
+
+ kEoBBaseSparkDefSteps,
+ kEoBBaseSparkDefSubSteps,
+ kEoBBaseSparkDefShift,
+ kEoBBaseSparkDefAdd,
+ kEoBBaseSparkDefX,
+ kEoBBaseSparkDefY,
+ kEoBBaseSparkOfFlags1,
+ kEoBBaseSparkOfFlags2,
+ kEoBBaseSparkOfShift,
+ kEoBBaseSparkOfX,
+ kEoBBaseSparkOfY,
+
+ kEoBBaseSpellProperties,
+ kEoBBaseMagicFlightProps,
+ kEoBBaseTurnUndeadEffect,
+ kEoBBaseBurningHandsDest,
+ kEoBBaseConeOfColdDest1,
+ kEoBBaseConeOfColdDest2,
+ kEoBBaseConeOfColdDest3,
+ kEoBBaseConeOfColdDest4,
+ kEoBBaseConeOfColdGfxTbl,
+
+ kEoB1MainMenuStrings,
+ kEoB1BonusStrings,
+
+ kEoB1IntroFilesOpening,
+ kEoB1IntroFilesTower,
+ kEoB1IntroFilesOrb,
+ kEoB1IntroFilesWdEntry,
+ kEoB1IntroFilesKing,
+ kEoB1IntroFilesHands,
+ kEoB1IntroFilesWdExit,
+ kEoB1IntroFilesTunnel,
+ kEoB1IntroOpeningFrmDelay,
+ kEoB1IntroWdEncodeX,
+ kEoB1IntroWdEncodeY,
+ kEoB1IntroWdEncodeWH,
+ kEoB1IntroWdDsX,
+ kEoB1IntroWdDsY,
+ kEoB1IntroTvlX1,
+ kEoB1IntroTvlY1,
+ kEoB1IntroTvlX2,
+ kEoB1IntroTvlY2,
+ kEoB1IntroTvlW,
+ kEoB1IntroTvlH,
+
+ kEoB1DoorShapeDefs,
+ kEoB1DoorSwitchShapeDefs,
+ kEoB1DoorSwitchCoords,
+ kEoB1MonsterProperties,
+
+ kEoB1EnemyMageSpellList,
+ kEoB1EnemyMageSfx,
+ kEoB1BeholderSpellList,
+ kEoB1BeholderSfx,
+ kEoB1TurnUndeadString,
+
+ kEoB1CgaMappingDefault,
+ kEoB1CgaMappingAlt,
+ kEoB1CgaMappingInv,
+ kEoB1CgaMappingItemsL,
+ kEoB1CgaMappingItemsS,
+ kEoB1CgaMappingThrown,
+ kEoB1CgaMappingIcons,
+ kEoB1CgaMappingDeco,
+ kEoB1CgaLevelMappingIndex,
+ kEoB1CgaMappingLevel0,
+ kEoB1CgaMappingLevel1,
+ kEoB1CgaMappingLevel2,
+ kEoB1CgaMappingLevel3,
+ kEoB1CgaMappingLevel4,
+
+ kEoB1NpcShpData,
+ kEoB1NpcSubShpIndex1,
+ kEoB1NpcSubShpIndex2,
+ kEoB1NpcSubShpY,
+ kEoB1Npc0Strings,
+ kEoB1Npc11Strings,
+ kEoB1Npc12Strings,
+ kEoB1Npc21Strings,
+ kEoB1Npc22Strings,
+ kEoB1Npc31Strings,
+ kEoB1Npc32Strings,
+ kEoB1Npc4Strings,
+ kEoB1Npc5Strings,
+ kEoB1Npc6Strings,
+ kEoB1Npc7Strings,
+
+ kEoB2MainMenuStrings,
+
+ kEoB2TransferPortraitFrames,
+ kEoB2TransferConvertTable,
+ kEoB2TransferItemTable,
+ kEoB2TransferExpTable,
+ kEoB2TransferStrings1,
+ kEoB2TransferStrings2,
+ kEoB2TransferLabels,
+
+ kEoB2IntroStrings,
+ kEoB2IntroCPSFiles,
+ kEob2IntroAnimData00,
+ kEob2IntroAnimData01,
+ kEob2IntroAnimData02,
+ kEob2IntroAnimData03,
+ kEob2IntroAnimData04,
+ kEob2IntroAnimData05,
+ kEob2IntroAnimData06,
+ kEob2IntroAnimData07,
+ kEob2IntroAnimData08,
+ kEob2IntroAnimData09,
+ kEob2IntroAnimData10,
+ kEob2IntroAnimData11,
+ kEob2IntroAnimData12,
+ kEob2IntroAnimData13,
+ kEob2IntroAnimData14,
+ kEob2IntroAnimData15,
+ kEob2IntroAnimData16,
+ kEob2IntroAnimData17,
+ kEob2IntroAnimData18,
+ kEob2IntroAnimData19,
+ kEob2IntroAnimData20,
+ kEob2IntroAnimData21,
+ kEob2IntroAnimData22,
+ kEob2IntroAnimData23,
+ kEob2IntroAnimData24,
+ kEob2IntroAnimData25,
+ kEob2IntroAnimData26,
+ kEob2IntroAnimData27,
+ kEob2IntroAnimData28,
+ kEob2IntroAnimData29,
+ kEob2IntroAnimData30,
+ kEob2IntroAnimData31,
+ kEob2IntroAnimData32,
+ kEob2IntroAnimData33,
+ kEob2IntroAnimData34,
+ kEob2IntroAnimData35,
+ kEob2IntroAnimData36,
+ kEob2IntroAnimData37,
+ kEob2IntroAnimData38,
+ kEob2IntroAnimData39,
+ kEob2IntroAnimData40,
+ kEob2IntroAnimData41,
+ kEob2IntroAnimData42,
+ kEob2IntroAnimData43,
+ kEoB2IntroShapes00,
+ kEoB2IntroShapes01,
+ kEoB2IntroShapes04,
+ kEoB2IntroShapes07,
+
+ kEoB2FinaleStrings,
+ kEoB2CreditsData,
+ kEoB2FinaleCPSFiles,
+ kEob2FinaleAnimData00,
+ kEob2FinaleAnimData01,
+ kEob2FinaleAnimData02,
+ kEob2FinaleAnimData03,
+ kEob2FinaleAnimData04,
+ kEob2FinaleAnimData05,
+ kEob2FinaleAnimData06,
+ kEob2FinaleAnimData07,
+ kEob2FinaleAnimData08,
+ kEob2FinaleAnimData09,
+ kEob2FinaleAnimData10,
+ kEob2FinaleAnimData11,
+ kEob2FinaleAnimData12,
+ kEob2FinaleAnimData13,
+ kEob2FinaleAnimData14,
+ kEob2FinaleAnimData15,
+ kEob2FinaleAnimData16,
+ kEob2FinaleAnimData17,
+ kEob2FinaleAnimData18,
+ kEob2FinaleAnimData19,
+ kEob2FinaleAnimData20,
+ kEoB2FinaleShapes00,
+ kEoB2FinaleShapes03,
+ kEoB2FinaleShapes07,
+ kEoB2FinaleShapes09,
+ kEoB2FinaleShapes10,
+
+ kEoB2NpcShapeData,
+ kEoB2Npc1Strings,
+ kEoB2Npc2Strings,
+ kEoB2MonsterDustStrings,
+
+ kEoB2DreamSteps,
+ kEoB2KheldranStrings,
+ kEoB2HornStrings,
+ kEoB2HornSounds,
+
+ kEoB2WallOfForceDsX,
+ kEoB2WallOfForceDsY,
+ kEoB2WallOfForceNumW,
+ kEoB2WallOfForceNumH,
+ kEoB2WallOfForceShpId,
+
+ kLoLIngamePakFiles,
+ kLoLCharacterDefs,
+ kLoLIngameSfxFiles,
+ kLoLIngameSfxIndex,
+ kLoLMusicTrackMap,
+ kLoLIngameGMSfxIndex,
+ kLoLIngameMT32SfxIndex,
+ kLoLIngamePcSpkSfxIndex,
+ kLoLSpellProperties,
+ kLoLGameShapeMap,
+ kLoLSceneItemOffs,
+ kLoLCharInvIndex,
+ kLoLCharInvDefs,
+ kLoLCharDefsMan,
+ kLoLCharDefsWoman,
+ kLoLCharDefsKieran,
+ kLoLCharDefsAkshel,
+ kLoLExpRequirements,
+ kLoLMonsterModifiers,
+ kLoLMonsterShiftOffsets,
+ kLoLMonsterDirFlags,
+ kLoLMonsterScaleY,
+ kLoLMonsterScaleX,
+ kLoLMonsterScaleWH,
+ kLoLFlyingObjectShp,
+ kLoLInventoryDesc,
+
+ kLoLLevelShpList,
+ kLoLLevelDatList,
+ kLoLCompassDefs,
+ kLoLItemPrices,
+ kLoLStashSetup,
+
+ kLoLDscWalls,
+ kLoLDscOvlMap,
+ kLoLDscScaleWidthData,
+ kLoLDscScaleHeightData,
+ kLoLDscY,
+
+ kLoLDscDoorScale,
+ kLoLDscDoor4,
+ kLoLDscDoorX,
+ kLoLDscDoorY,
+ kLoLDscOvlIndex,
+
+ kLoLScrollXTop,
+ kLoLScrollYTop,
+ kLoLScrollXBottom,
+ kLoLScrollYBottom,
+
+ kLoLButtonDefs,
+ kLoLButtonList1,
+ kLoLButtonList2,
+ kLoLButtonList3,
+ kLoLButtonList4,
+ kLoLButtonList5,
+ kLoLButtonList6,
+ kLoLButtonList7,
+ kLoLButtonList8,
+
+ kLoLLegendData,
+ kLoLMapCursorOvl,
+ kLoLMapStringId,
+
+ kLoLSpellbookAnim,
+ kLoLSpellbookCoords,
+ kLoLHealShapeFrames,
+ kLoLLightningDefs,
+ kLoLFireballCoords,
+
+ kLoLCredits,
+
+ kLoLHistory,
kMaxResIDs
};
@@ -284,7 +683,9 @@ enum kGame {
kKyra1 = 0,
kKyra2,
kKyra3,
- kLol
+ kLoL,
+ kEoB1,
+ kEoB2
};
struct Game {
diff --git a/devtools/create_kyradat/extract.cpp b/devtools/create_kyradat/extract.cpp
index 371f2f4e2b..34308f1b5b 100644
--- a/devtools/create_kyradat/extract.cpp
+++ b/devtools/create_kyradat/extract.cpp
@@ -50,8 +50,11 @@ bool extractRaw16to8(PAKFile &out, const ExtractInformation *info, const byte *d
bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractRaw16(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractLolButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
+bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
+bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
+bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
+bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
// Extraction type table
const ExtractType extractTypeTable[] = {
@@ -73,13 +76,17 @@ const ExtractType extractTypeTable[] = {
{ k3TypeRaw16to8, extractRaw16to8 },
{ k3TypeShpData, extractMrShapeAnimData },
- { kLolTypeCharData, extractRaw },
- { kLolTypeSpellData, extractRaw },
- { kLolTypeCompassData, extractRaw16to8 },
- { kLolTypeFlightShpData, extractRaw16to8 },
- { kLolTypeRaw16, extractRaw16 },
- { kLolTypeRaw32, extractRaw32 },
- { kLolTypeButtonDef, extractLolButtonDefs },
+ { kLoLTypeCharData, extractRaw },
+ { kLoLTypeSpellData, extractRaw },
+ { kLoLTypeCompassData, extractRaw16to8 },
+ { kLoLTypeFlightShpData, extractRaw16to8 },
+ { kLoLTypeRaw16, extractRaw16 },
+ { kLoLTypeRaw32, extractRaw32 },
+ { kLoLTypeButtonDef, extractLoLButtonDefs },
+
+ { kEoB2TypeSeqData, extractEoB2SeqData },
+ { kEoB2TypeShapeData, extractEoB2ShapeData },
+ { kEoBTypeNpcData, extractEoBNpcData },
{ -1, 0 }
};
@@ -104,13 +111,16 @@ const TypeTable typeTable[] = {
{ k2TypeSfxList, 0 },
{ k3TypeRaw16to8, 1 },
{ k3TypeShpData, 7 },
- { kLolTypeRaw16, 13 },
- { kLolTypeRaw32, 14 },
- { kLolTypeButtonDef, 12 },
- { kLolTypeCharData, 8 },
- { kLolTypeSpellData, 9 },
- { kLolTypeCompassData, 10 },
- { kLolTypeFlightShpData, 11 },
+ { kLoLTypeRaw16, 13 },
+ { kLoLTypeRaw32, 14 },
+ { kLoLTypeButtonDef, 12 },
+ { kLoLTypeCharData, 8 },
+ { kLoLTypeSpellData, 9 },
+ { kLoLTypeCompassData, 10 },
+ { kLoLTypeFlightShpData, 11 },
+ { kEoB2TypeSeqData, 15 },
+ { kEoB2TypeShapeData, 16 },
+ { kEoBTypeNpcData, 17},
{ -1, 1 }
};
@@ -151,7 +161,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
static const uint8 rusFanSkip_k1GUIStrings[] = { 1, 3, 6, 8, 11, 13, 18 };
uint32 rusFanSkipIdLen = 0;
const uint8 *rusFanSkipId = 0;
- int rusFanEmptyId = 10000;
+ uint rusFanEmptyId = 10000;
uint32 skipCount = 0;
int patch = 0;
@@ -168,7 +178,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
if (id == k2IngamePakFiles)
patch = 4;
- if (info->lang == Common::RU_RUS) {
+ if (info->lang == Common::RU_RUS && info->special == kNoSpecial) {
patch = 5;
if (id == k2SeqplayStrings) {
rusFanSkipId = rusFanSkip_k2SeqplayStrings;
@@ -194,7 +204,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
}
// HACK
- if (id == k2SeqplayIntroTracks && info->game == kLol)
+ if (id == k2SeqplayIntroTracks && info->game == kLoL)
return extractStringsWoSuffix(out, info, data, size, filename, id);
}
@@ -304,7 +314,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
input += 0x11; output += 0x0F;
}
- strcpy((char*) output, (const char*) input);
+ strcpy((char *) output, (const char*) input);
uint32 stringsize = strlen((const char*)output) + 1;
input += stringsize; output += stringsize;
// skip empty entries
@@ -360,7 +370,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
} else if (patch == 5) {
const byte *c = data + size;
do {
- strcpy((char*) output, (const char*) input);
+ strcpy((char *) output, (const char*) input);
uint32 stringsize = strlen((const char*)output) + 1;
input += stringsize; output += stringsize;
@@ -384,7 +394,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
}
}
}
-
+
} while (input < c);
} else {
uint32 copySize = size;
@@ -393,7 +403,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
output += 44;
data += 44;
for (int t = 1; t != 10; t++) {
- sprintf((char*) output, "COST%d_SH.PAK", t);
+ sprintf((char *) output, "COST%d_SH.PAK", t);
output += 13;
}
data += 126;
@@ -566,7 +576,7 @@ bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte
byte *buffer = new byte[bufferSize];
assert(buffer);
memset(buffer, 0, bufferSize );
- uint16 *header = (uint16*) buffer;
+ uint16 *header = (uint16 *) buffer;
byte *output = buffer + headerSize;
uint16 *hdout = header;
@@ -741,7 +751,7 @@ bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte
byte *finBuffer = new byte[finBufferSize];
assert(finBuffer);
uint16 diff = headerSize - finHeaderSize;
- uint16 *finHeader = (uint16*) finBuffer;
+ uint16 *finHeader = (uint16 *) finBuffer;
for (int i = 1; i < finHeaderSize; i++)
WRITE_BE_UINT16(&finHeader[i], (READ_BE_UINT16(&header[i]) - diff));
@@ -750,7 +760,7 @@ bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte
memcpy (finBuffer + finHeaderSize, buffer + headerSize, finBufferSize - finHeaderSize);
delete[] buffer;
- finHeader = (uint16*) (finBuffer + ((numSequences + 2) * sizeof(uint16)));
+ finHeader = (uint16 *) (finBuffer + ((numSequences + 2) * sizeof(uint16)));
for (int i = 0; i < numNestedSequences; i++) {
uint8 * offs = finBuffer + READ_BE_UINT16(finHeader++) + 26;
uint16 ctrl = READ_BE_UINT16(offs);
@@ -1006,7 +1016,7 @@ bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data
return out.addFile(filename, buffer, size);
}
-bool extractLolButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
+bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
int num = size / 22;
uint8 *buffer = new uint8[size];
uint32 outsize = num * 18;
@@ -1037,6 +1047,124 @@ bool extractLolButtonDefs(PAKFile &out, const ExtractInformation *info, const by
return out.addFile(filename, buffer, outsize);
}
+bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
+ int num = size / 11;
+ uint8 *buffer = new uint8[size];
+ const uint8 *src = data;
+ uint8 *dst = buffer;
+
+ for (int i = 0; i < num; i++) {
+ memcpy(dst, src, 2);
+ src += 2; dst += 2;
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ memcpy(dst, src, 7);
+ src += 7; dst += 7;
+ }
+
+ return out.addFile(filename, buffer, size);
+}
+
+bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
+ int num = size / 6;
+ uint8 *buffer = new uint8[size];
+ const uint8 *src = data;
+ uint8 *dst = buffer;
+
+ for (int i = 0; i < num; i++) {
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ memcpy(dst, src, 4);
+ src += 4; dst += 4;
+ }
+
+ return out.addFile(filename, buffer, size);
+}
+
+bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
+ // We use one extraction routine for both EOB 1 and EOB 2 (in spite of the data format differences)
+ // since it is easy enough to generate a common output usable by both engines
+
+ uint8 *buffer = 0;
+ uint32 outsize = 0;
+
+ if (info->game == kEoB1) {
+ uint16 num = size / 243;
+ outsize = num * 111 + 2;
+ buffer = new uint8[outsize];
+ const uint8 *src = data;
+ uint8 *dst = buffer;
+
+ WRITE_BE_UINT16(dst, num);
+ dst += 2;
+
+ for (int i = 0; i < num; i++) {
+ memcpy(dst, src, 27);
+ src += 27; dst += 27;
+ WRITE_BE_UINT16(dst, *src++);
+ dst += 2;
+ WRITE_BE_UINT16(dst, *src++);
+ dst += 2;
+ memcpy(dst, src, 10);
+ src += 10; dst += 10;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ // skipping lots of zero space
+ src += 64;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ for (int ii = 0; ii < 27; ii++) {
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ }
+ // skipping more zero space
+ src += 70;
+ }
+ } else {
+ uint16 num = size / 345;
+ outsize = num * 111 + 2;
+ buffer = new uint8[outsize];
+ const uint8 *src = data;
+ uint8 *dst = buffer;
+
+ WRITE_BE_UINT16(dst, num);
+ dst += 2;
+
+ for (int i = 0; i < num; i++) {
+ memcpy(dst, src, 27);
+ src += 27; dst += 27;
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ memcpy(dst, src, 10);
+ src += 10; dst += 10;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ // skipping lots of zero space
+ src += 164;
+ WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
+ src += 4; dst += 4;
+ for (int ii = 0; ii < 27; ii++) {
+ WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
+ src += 2; dst += 2;
+ }
+ // skipping more zero space
+ src += 70;
+ }
+ }
+
+ return out.addFile(filename, buffer, outsize);
+}
+
bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
int outsize = 1;
uint8 *buffer = new uint8[size + 1];
diff --git a/devtools/create_kyradat/extract.h b/devtools/create_kyradat/extract.h
index a44927427f..4af9a146f4 100644
--- a/devtools/create_kyradat/extract.h
+++ b/devtools/create_kyradat/extract.h
@@ -47,13 +47,17 @@ enum kExtractType {
k3TypeRaw16to8,
k3TypeShpData,
- kLolTypeRaw16,
- kLolTypeRaw32,
- kLolTypeButtonDef,
- kLolTypeCharData,
- kLolTypeSpellData,
- kLolTypeCompassData,
- kLolTypeFlightShpData
+ kLoLTypeRaw16,
+ kLoLTypeRaw32,
+ kLoLTypeButtonDef,
+ kLoLTypeCharData,
+ kLoLTypeSpellData,
+ kLoLTypeCompassData,
+ kLoLTypeFlightShpData,
+
+ kEoB2TypeSeqData,
+ kEoB2TypeShapeData,
+ kEoBTypeNpcData
};
struct ExtractInformation {
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index 86f3535f10..258d2dd50d 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -77,6 +77,7 @@ const Game kyra2Games[] = {
// talkie games
{ kKyra2, { EN_ANY, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "85bbc1cc6c4cef6ad31fc6ee79518efb", "e20d0d2e500f01e399ec588247a7e213" } },
{ kKyra2, { IT_ITA, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "130795aa8f2333250c895dae9028b9bb", "e20d0d2e500f01e399ec588247a7e213" } }, // Italian Fan Translation
+ { kKyra2, { RU_RUS, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "c3afd22959f515355b2a33cde950f418", "e20d0d2e500f01e399ec588247a7e213" } }, // Russian Fan Translation
// FM-TOWNS games
{ kKyra2, { EN_ANY, JA_JPN, -1 }, kPlatformFMTowns, kNoSpecial, { "74f50d79c919cc8e7196c24942ce43d7", "a9a7fd4f05d00090e9e8bda073e6d431" } },
@@ -96,22 +97,34 @@ const Game kyra3Games[] = {
GAME_DUMMY_ENTRY
};
+const Game eob1Games[] = {
+ { kEoB1, { EN_ANY, -1, -1 }, kPlatformPC, kNoSpecial, { "1bde1dd37b40ab6de8ad11be33a44c5a", "d760a605d1a1302d06975a1f209fdd72" } },
+ { kEoB1, { DE_DEU, -1, -1 }, kPlatformPC, kNoSpecial, { "0fa3c6e00a81171b9f2adb3fdeb8eea3", "756f300c62aabf1dbd3c26b3b04f8c00" } },
+ GAME_DUMMY_ENTRY
+};
+
+const Game eob2Games[] = {
+ { kEoB2, { EN_ANY, -1, -1 }, kPlatformPC, kNoSpecial, { "e006d031c2d854f748947f777e0c59b0", 0 } },
+ { kEoB2, { DE_DEU, -1, -1 }, kPlatformPC, kNoSpecial, { "6c6c4168deb2a4cb3dee3f1be2d39746", 0 } },
+ GAME_DUMMY_ENTRY
+};
+
const Game lolGames[] = {
// DOS demo
- { kLol, { EN_ANY, -1, -1 }, kPlatformPC, kDemoVersion, { "30bb5af87d38adb47d3e6ce06b1cb042", 0 } },
+ { kLoL, { EN_ANY, -1, -1 }, kPlatformPC, kDemoVersion, { "30bb5af87d38adb47d3e6ce06b1cb042", 0 } },
// DOS floppy (no language specifc strings except character presets)
- { kLol, { EN_ANY, -1, -1 }, kPlatformPC, kNoSpecial, { "0cc764a204f7ba8cefe1a5f14c479619", 0 } },
- { kLol, { RU_RUS, -1, -1 }, kPlatformPC, kNoSpecial, { "80a9f9bf243bc6ed36d98584fc6988c4", 0 } },
- { kLol, { DE_DEU, -1, -1 }, kPlatformPC, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
+ { kLoL, { EN_ANY, -1, -1 }, kPlatformPC, kNoSpecial, { "0cc764a204f7ba8cefe1a5f14c479619", 0 } },
+ { kLoL, { RU_RUS, -1, -1 }, kPlatformPC, kNoSpecial, { "80a9f9bf243bc6ed36d98584fc6988c4", 0 } },
+ { kLoL, { DE_DEU, -1, -1 }, kPlatformPC, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
// PC98 (no language specifc strings)
- { kLol, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "6d5bd4a2f5ce433365734ca6b7a8d984", "1b0a457c48ae6908da301b656fe0aab4" } },
+ { kLoL, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "6d5bd4a2f5ce433365734ca6b7a8d984", "1b0a457c48ae6908da301b656fe0aab4" } },
// DOS CD (multi language version, with no language specific strings)
- { kLol, { EN_ANY, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "263998ec600afca1cc7b935c473df670" } },
- { kLol, { IT_ITA, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "f2af366e00f79dbf832fa19701d71ed9" } }, // Italian fan translation
- { kLol, { EN_ANY, FR_FRA, RU_RUS }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "5b33478718968676343803911dd5e3e4" } }, // Russian fan translation
+ { kLoL, { EN_ANY, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "263998ec600afca1cc7b935c473df670" } },
+ { kLoL, { IT_ITA, FR_FRA, DE_DEU }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "f2af366e00f79dbf832fa19701d71ed9" } }, // Italian fan translation
+ { kLoL, { EN_ANY, FR_FRA, RU_RUS }, kPlatformPC, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "5b33478718968676343803911dd5e3e4" } }, // Russian fan translation
GAME_DUMMY_ENTRY
};
@@ -122,6 +135,8 @@ const Game * const gameDescs[] = {
kyra2Games,
kyra3Games,
lolGames,
+ eob1Games,
+ eob2Games,
0
};
@@ -505,7 +520,6 @@ const int kyra1TownsNeed[] = {
k1ConfigStrings,
k1TownsMusicFadeTable,
- k1TownsMusicFadeTable,
k1TownsSFXwdTable,
k1TownsSFXbtTable,
k1TownsCDATable,
@@ -764,250 +778,256 @@ const int kyra3Need[] = {
};
const int lolFloppyNeed[] = {
- kLolIngamePakFiles,
-
- kLolCharacterDefs,
- kLolIngameSfxFiles,
- kLolIngameSfxIndex,
- kLolMusicTrackMap,
- kLolIngameGMSfxIndex,
- kLolIngameMT32SfxIndex,
- kLolIngamePcSpkSfxIndex,
- kLolSpellProperties,
- kLolGameShapeMap,
- kLolSceneItemOffs,
- kLolCharInvIndex,
- kLolCharInvDefs,
- kLolCharDefsMan,
- kLolCharDefsWoman,
- kLolCharDefsKieran,
- kLolCharDefsAkshel,
- kLolExpRequirements,
- kLolMonsterModifiers,
- kLolMonsterShiftOffsets,
- kLolMonsterDirFlags,
- kLolMonsterScaleY,
- kLolMonsterScaleX,
- kLolMonsterScaleWH,
- kLolFlyingObjectShp,
- kLolInventoryDesc,
-
- kLolLevelShpList,
- kLolLevelDatList,
- kLolCompassDefs,
- kLolStashSetup,
- kLolDscUnk1,
- kLolDscShapeIndex,
- kLolDscOvlMap,
- kLolDscScaleWidthData,
- kLolDscScaleHeightData,
- kLolDscX,
- kLolDscY,
- kLolDscTileIndex,
- kLolDscUnk2,
- kLolDscDoorShapeIndex,
- kLolDscDimData1,
- kLolDscDimData2,
- kLolDscBlockMap,
- kLolDscDimMap,
- kLolDscOvlIndex,
- kLolDscBlockIndex,
- kLolDscDoor1,
- kLolDscDoorScale,
- kLolDscDoor4,
- kLolDscDoorX,
- kLolDscDoorY,
-
- kLolScrollXTop,
- kLolScrollYTop,
- kLolScrollXBottom,
- kLolScrollYBottom,
-
- kLolButtonDefs,
- kLolButtonList1,
- kLolButtonList1,
- kLolButtonList2,
- kLolButtonList3,
- kLolButtonList4,
- kLolButtonList5,
- kLolButtonList6,
- kLolButtonList7,
- kLolButtonList8,
-
- kLolLegendData,
- kLolMapCursorOvl,
- kLolMapStringId,
-
- kLolSpellbookAnim,
- kLolSpellbookCoords,
- kLolHealShapeFrames,
- kLolLightningDefs,
- kLolFireballCoords,
+ kLoLIngamePakFiles,
+
+ kLoLCharacterDefs,
+ kLoLIngameSfxFiles,
+ kLoLIngameSfxIndex,
+ kLoLMusicTrackMap,
+ kLoLIngameGMSfxIndex,
+ kLoLIngameMT32SfxIndex,
+ kLoLIngamePcSpkSfxIndex,
+ kLoLSpellProperties,
+ kLoLGameShapeMap,
+ kLoLSceneItemOffs,
+ kLoLCharInvIndex,
+ kLoLCharInvDefs,
+ kLoLCharDefsMan,
+ kLoLCharDefsWoman,
+ kLoLCharDefsKieran,
+ kLoLCharDefsAkshel,
+ kLoLExpRequirements,
+ kLoLMonsterModifiers,
+ kLoLMonsterShiftOffsets,
+ kLoLMonsterDirFlags,
+ kLoLMonsterScaleY,
+ kLoLMonsterScaleX,
+ kLoLMonsterScaleWH,
+ kLoLFlyingObjectShp,
+ kLoLInventoryDesc,
+
+ kLoLLevelShpList,
+ kLoLLevelDatList,
+ kLoLCompassDefs,
+ kLoLStashSetup,
+ kLoLDscWalls,
+ kRpgCommonDscShapeIndex,
+ kLoLDscOvlMap,
+ kLoLDscScaleWidthData,
+ kLoLDscScaleHeightData,
+ kRpgCommonDscX,
+ kLoLDscY,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDoorShapeIndex,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kLoLDscOvlIndex,
+ kRpgCommonDscBlockIndex,
+ kRpgCommonDscDoorY2,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+ kLoLDscDoorScale,
+ kLoLDscDoor4,
+ kLoLDscDoorX,
+ kLoLDscDoorY,
+
+ kLoLScrollXTop,
+ kLoLScrollYTop,
+ kLoLScrollXBottom,
+ kLoLScrollYBottom,
+
+ kLoLButtonDefs,
+ kLoLButtonList1,
+ kLoLButtonList1,
+ kLoLButtonList2,
+ kLoLButtonList3,
+ kLoLButtonList4,
+ kLoLButtonList5,
+ kLoLButtonList6,
+ kLoLButtonList7,
+ kLoLButtonList8,
+
+ kLoLLegendData,
+ kLoLMapCursorOvl,
+ kLoLMapStringId,
+
+ kLoLSpellbookAnim,
+ kLoLSpellbookCoords,
+ kLoLHealShapeFrames,
+ kLoLLightningDefs,
+ kLoLFireballCoords,
-1
};
const int lolPC98Need[] = {
- kLolIngamePakFiles,
-
- kLolCharacterDefs,
- kLolIngameSfxFiles,
- kLolIngameSfxIndex,
- kLolSpellProperties,
- kLolGameShapeMap,
- kLolSceneItemOffs,
- kLolCharInvIndex,
- kLolCharInvDefs,
- kLolCharDefsMan,
- kLolCharDefsWoman,
- kLolCharDefsKieran,
- kLolCharDefsAkshel,
- kLolExpRequirements,
- kLolMonsterModifiers,
- kLolMonsterShiftOffsets,
- kLolMonsterDirFlags,
- kLolMonsterScaleY,
- kLolMonsterScaleX,
- kLolMonsterScaleWH,
- kLolFlyingObjectShp,
- kLolInventoryDesc,
-
- kLolLevelShpList,
- kLolLevelDatList,
- kLolCompassDefs,
- kLolStashSetup,
- kLolDscUnk1,
- kLolDscShapeIndex,
- kLolDscOvlMap,
- kLolDscScaleWidthData,
- kLolDscScaleHeightData,
- kLolDscX,
- kLolDscY,
- kLolDscTileIndex,
- kLolDscUnk2,
- kLolDscDoorShapeIndex,
- kLolDscDimData1,
- kLolDscDimData2,
- kLolDscBlockMap,
- kLolDscDimMap,
- kLolDscOvlIndex,
- kLolDscBlockIndex,
- kLolDscDoor1,
- kLolDscDoorScale,
- kLolDscDoor4,
- kLolDscDoorX,
- kLolDscDoorY,
-
- kLolScrollXTop,
- kLolScrollYTop,
- kLolScrollXBottom,
- kLolScrollYBottom,
-
- kLolButtonDefs,
- kLolButtonList1,
- kLolButtonList1,
- kLolButtonList2,
- kLolButtonList3,
- kLolButtonList4,
- kLolButtonList5,
- kLolButtonList6,
- kLolButtonList7,
- kLolButtonList8,
-
- kLolLegendData,
- kLolMapStringId,
-
- kLolSpellbookAnim,
- kLolSpellbookCoords,
- kLolHealShapeFrames,
- kLolLightningDefs,
- kLolFireballCoords,
-
- kLolCredits,
+ kLoLIngamePakFiles,
+
+ kLoLCharacterDefs,
+ kLoLIngameSfxFiles,
+ kLoLIngameSfxIndex,
+ kLoLSpellProperties,
+ kLoLGameShapeMap,
+ kLoLSceneItemOffs,
+ kLoLCharInvIndex,
+ kLoLCharInvDefs,
+ kLoLCharDefsMan,
+ kLoLCharDefsWoman,
+ kLoLCharDefsKieran,
+ kLoLCharDefsAkshel,
+ kLoLExpRequirements,
+ kLoLMonsterModifiers,
+ kLoLMonsterShiftOffsets,
+ kLoLMonsterDirFlags,
+ kLoLMonsterScaleY,
+ kLoLMonsterScaleX,
+ kLoLMonsterScaleWH,
+ kLoLFlyingObjectShp,
+ kLoLInventoryDesc,
+
+ kLoLLevelShpList,
+ kLoLLevelDatList,
+ kLoLCompassDefs,
+ kLoLStashSetup,
+ kLoLDscWalls,
+ kRpgCommonDscShapeIndex,
+ kLoLDscOvlMap,
+ kLoLDscScaleWidthData,
+ kLoLDscScaleHeightData,
+ kRpgCommonDscX,
+ kLoLDscY,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDoorShapeIndex,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kLoLDscOvlIndex,
+ kRpgCommonDscBlockIndex,
+ kRpgCommonDscDoorY2,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+ kLoLDscDoorScale,
+ kLoLDscDoor4,
+ kLoLDscDoorX,
+ kLoLDscDoorY,
+
+ kLoLScrollXTop,
+ kLoLScrollYTop,
+ kLoLScrollXBottom,
+ kLoLScrollYBottom,
+
+ kLoLButtonDefs,
+ kLoLButtonList1,
+ kLoLButtonList1,
+ kLoLButtonList2,
+ kLoLButtonList3,
+ kLoLButtonList4,
+ kLoLButtonList5,
+ kLoLButtonList6,
+ kLoLButtonList7,
+ kLoLButtonList8,
+
+ kLoLLegendData,
+ kLoLMapStringId,
+
+ kLoLSpellbookAnim,
+ kLoLSpellbookCoords,
+ kLoLHealShapeFrames,
+ kLoLLightningDefs,
+ kLoLFireballCoords,
+
+ kLoLCredits,
-1
};
const int lolCDNeed[] = {
- kLolHistory,
- kLolCharacterDefs,
- kLolIngameSfxFiles,
- kLolIngameSfxIndex,
- kLolMusicTrackMap,
- kLolIngameGMSfxIndex,
- kLolIngameMT32SfxIndex,
- kLolIngamePcSpkSfxIndex,
- kLolSpellProperties,
- kLolGameShapeMap,
- kLolSceneItemOffs,
- kLolCharInvIndex,
- kLolCharInvDefs,
- kLolCharDefsMan,
- kLolCharDefsWoman,
- kLolCharDefsKieran,
- kLolCharDefsAkshel,
- kLolExpRequirements,
- kLolMonsterModifiers,
- kLolMonsterShiftOffsets,
- kLolMonsterDirFlags,
- kLolMonsterScaleY,
- kLolMonsterScaleX,
- kLolMonsterScaleWH,
- kLolFlyingObjectShp,
- kLolInventoryDesc,
-
- kLolLevelShpList,
- kLolLevelDatList,
- kLolCompassDefs,
- kLolItemPrices,
- kLolStashSetup,
- kLolDscUnk1,
- kLolDscShapeIndex,
- kLolDscOvlMap,
- kLolDscScaleWidthData,
- kLolDscScaleHeightData,
- kLolDscX,
- kLolDscY,
- kLolDscTileIndex,
- kLolDscUnk2,
- kLolDscDoorShapeIndex,
- kLolDscDimData1,
- kLolDscDimData2,
- kLolDscBlockMap,
- kLolDscDimMap,
- kLolDscOvlIndex,
- kLolDscBlockIndex,
- kLolDscDoor1,
- kLolDscDoorScale,
- kLolDscDoor4,
- kLolDscDoorX,
- kLolDscDoorY,
-
- kLolScrollXTop,
- kLolScrollYTop,
- kLolScrollXBottom,
- kLolScrollYBottom,
-
- kLolButtonDefs,
- kLolButtonList1,
- kLolButtonList1,
- kLolButtonList2,
- kLolButtonList3,
- kLolButtonList4,
- kLolButtonList5,
- kLolButtonList6,
- kLolButtonList7,
- kLolButtonList8,
-
- kLolLegendData,
- kLolMapCursorOvl,
- kLolMapStringId,
-
- kLolSpellbookAnim,
- kLolSpellbookCoords,
- kLolHealShapeFrames,
- kLolLightningDefs,
- kLolFireballCoords,
+ kLoLHistory,
+ kLoLCharacterDefs,
+ kLoLIngameSfxFiles,
+ kLoLIngameSfxIndex,
+ kLoLMusicTrackMap,
+ kLoLIngameGMSfxIndex,
+ kLoLIngameMT32SfxIndex,
+ kLoLIngamePcSpkSfxIndex,
+ kLoLSpellProperties,
+ kLoLGameShapeMap,
+ kLoLSceneItemOffs,
+ kLoLCharInvIndex,
+ kLoLCharInvDefs,
+ kLoLCharDefsMan,
+ kLoLCharDefsWoman,
+ kLoLCharDefsKieran,
+ kLoLCharDefsAkshel,
+ kLoLExpRequirements,
+ kLoLMonsterModifiers,
+ kLoLMonsterShiftOffsets,
+ kLoLMonsterDirFlags,
+ kLoLMonsterScaleY,
+ kLoLMonsterScaleX,
+ kLoLMonsterScaleWH,
+ kLoLFlyingObjectShp,
+ kLoLInventoryDesc,
+
+ kLoLLevelShpList,
+ kLoLLevelDatList,
+ kLoLCompassDefs,
+ kLoLItemPrices,
+ kLoLStashSetup,
+ kLoLDscWalls,
+ kRpgCommonDscShapeIndex,
+ kLoLDscOvlMap,
+ kLoLDscScaleWidthData,
+ kLoLDscScaleHeightData,
+ kRpgCommonDscX,
+ kLoLDscY,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDoorShapeIndex,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kLoLDscOvlIndex,
+ kRpgCommonDscBlockIndex,
+ kRpgCommonDscDoorY2,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+ kLoLDscDoorScale,
+ kLoLDscDoor4,
+ kLoLDscDoorX,
+ kLoLDscDoorY,
+
+ kLoLScrollXTop,
+ kLoLScrollYTop,
+ kLoLScrollXBottom,
+ kLoLScrollYBottom,
+
+ kLoLButtonDefs,
+ kLoLButtonList1,
+ kLoLButtonList1,
+ kLoLButtonList2,
+ kLoLButtonList3,
+ kLoLButtonList4,
+ kLoLButtonList5,
+ kLoLButtonList6,
+ kLoLButtonList7,
+ kLoLButtonList8,
+
+ kLoLLegendData,
+ kLoLMapCursorOvl,
+ kLoLMapStringId,
+
+ kLoLSpellbookAnim,
+ kLoLSpellbookCoords,
+ kLoLHealShapeFrames,
+ kLoLLightningDefs,
+ kLoLFireballCoords,
-1
};
@@ -1020,6 +1040,617 @@ const int lolDemoNeed[] = {
-1
};
+const int eob1FloppyNeed[] = {
+ kEoBBaseChargenStrings1,
+ kEoBBaseChargenStrings2,
+ kEoBBaseChargenStartLevels,
+ kEoBBaseChargenStatStrings,
+ kEoBBaseChargenRaceSexStrings,
+ kEoBBaseChargenClassStrings,
+ kEoBBaseChargenAlignmentStrings,
+ kEoBBaseChargenEnterGameStrings,
+ kEoBBaseChargenClassMinStats,
+ kEoBBaseChargenRaceMinStats,
+ kEoBBaseChargenRaceMaxStats,
+
+ kEoBBaseSaveThrowTable1,
+ kEoBBaseSaveThrowTable2,
+ kEoBBaseSaveThrowTable3,
+ kEoBBaseSaveThrowTable4,
+ kEoBBaseSaveThrwLvlIndex,
+ kEoBBaseSaveThrwModDiv,
+ kEoBBaseSaveThrwModExt,
+
+ kEoB1MainMenuStrings,
+ kEoB1BonusStrings,
+
+ kEoB1IntroFilesOpening,
+ kEoB1IntroFilesTower,
+ kEoB1IntroFilesOrb,
+ kEoB1IntroFilesWdEntry,
+ kEoB1IntroFilesKing,
+ kEoB1IntroFilesHands,
+ kEoB1IntroFilesWdExit,
+ kEoB1IntroFilesTunnel,
+ kEoB1IntroOpeningFrmDelay,
+ kEoB1IntroWdEncodeX,
+ kEoB1IntroWdEncodeY,
+ kEoB1IntroWdEncodeWH,
+ kEoB1IntroWdDsX,
+ kEoB1IntroWdDsY,
+ kEoB1IntroTvlX1,
+ kEoB1IntroTvlY1,
+ kEoB1IntroTvlX2,
+ kEoB1IntroTvlY2,
+ kEoB1IntroTvlW,
+ kEoB1IntroTvlH,
+
+ kEoB1DoorShapeDefs,
+ kEoB1DoorSwitchShapeDefs,
+ kEoB1DoorSwitchCoords,
+ kEoB1MonsterProperties,
+ kEoB1EnemyMageSpellList,
+ kEoB1EnemyMageSfx,
+ kEoB1BeholderSpellList,
+ kEoB1BeholderSfx,
+ kEoB1TurnUndeadString,
+
+ kEoB1CgaMappingDefault,
+ kEoB1CgaMappingAlt,
+ kEoB1CgaMappingInv,
+ kEoB1CgaMappingItemsL,
+ kEoB1CgaMappingItemsS,
+ kEoB1CgaMappingThrown,
+ kEoB1CgaMappingIcons,
+ kEoB1CgaMappingDeco,
+ kEoB1CgaLevelMappingIndex,
+ kEoB1CgaMappingLevel0,
+ kEoB1CgaMappingLevel1,
+ kEoB1CgaMappingLevel2,
+ kEoB1CgaMappingLevel3,
+ kEoB1CgaMappingLevel4,
+
+ kEoB1NpcShpData,
+ kEoB1NpcSubShpIndex1,
+ kEoB1NpcSubShpIndex2,
+ kEoB1NpcSubShpY,
+ kEoB1Npc0Strings,
+ kEoB1Npc11Strings,
+ kEoB1Npc12Strings,
+ kEoB1Npc21Strings,
+ kEoB1Npc22Strings,
+ kEoB1Npc31Strings,
+ kEoB1Npc32Strings,
+ kEoB1Npc4Strings,
+ kEoB1Npc5Strings,
+ kEoB1Npc6Strings,
+ kEoB1Npc7Strings,
+
+ kEoBBasePryDoorStrings,
+ kEoBBaseWarningStrings,
+
+ kEoBBaseItemSuffixStringsRings,
+ kEoBBaseItemSuffixStringsPotions,
+ kEoBBaseItemSuffixStringsWands,
+
+ kEoBBaseRipItemStrings,
+ kEoBBaseCursedString,
+ kEoBBaseEnchantedString,
+ kEoBBaseMagicObjectStrings,
+ kEoBBaseMagicObject5String,
+ kEoBBasePatternSuffix,
+ kEoBBasePatternGrFix1,
+ kEoBBasePatternGrFix2,
+ kEoBBaseValidateArmorString,
+ kEoBBaseValidateNoDropString,
+ kEoBBasePotionStrings,
+ kEoBBaseWandString,
+ kEoBBaseItemMisuseStrings,
+
+ kEoBBaseTakenStrings,
+ kEoBBasePotionEffectStrings,
+
+ kEoBBaseYesNoStrings,
+ kRpgCommonMoreStrings,
+ kEoBBaseNpcMaxStrings,
+ kEoBBaseNpcJoinStrings,
+ kEoBBaseCancelStrings,
+
+ kEoBBaseMenuStringsMain,
+ kEoBBaseMenuStringsSaveLoad,
+ kEoBBaseMenuStringsOnOff,
+ kEoBBaseMenuStringsSpells,
+ kEoBBaseMenuStringsRest,
+ kEoBBaseMenuStringsDrop,
+ kEoBBaseMenuStringsExit,
+ kEoBBaseMenuStringsStarve,
+ kEoBBaseMenuStringsScribe,
+ kEoBBaseMenuStringsDrop2,
+ kEoBBaseMenuStringsHead,
+ kEoBBaseMenuStringsPoison,
+ kEoBBaseMenuStringsMgc,
+ kEoBBaseMenuStringsPrefs,
+ kEoBBaseMenuStringsRest2,
+ kEoBBaseMenuStringsRest4,
+ kEoBBaseMenuStringsDefeat,
+ kEoBBaseMenuYesNoStrings,
+
+ kEoBBaseSpellLevelsMage,
+ kEoBBaseSpellLevelsCleric,
+ kEoBBaseNumSpellsCleric,
+ kEoBBaseNumSpellsWisAdj,
+ kEoBBaseNumSpellsPal,
+ kEoBBaseNumSpellsMage,
+
+ kEoBBaseCharGuiStringsHp,
+ kEoBBaseCharGuiStringsWp1,
+ kEoBBaseCharGuiStringsWr,
+ kEoBBaseCharGuiStringsSt1,
+ kEoBBaseCharGuiStringsIn,
+
+ kEoBBaseCharStatusStrings7,
+ kEoBBaseCharStatusStrings81,
+ kEoBBaseCharStatusStrings9,
+ kEoBBaseCharStatusStrings131,
+
+ kEoBBaseLevelGainStrings,
+ kEoBBaseExperienceTable0,
+ kEoBBaseExperienceTable1,
+ kEoBBaseExperienceTable2,
+ kEoBBaseExperienceTable3,
+ kEoBBaseExperienceTable4,
+
+ kEoBBaseBookNumbers,
+ kEoBBaseMageSpellsList,
+ kEoBBaseClericSpellsList,
+ kEoBBaseSpellNames,
+ kEoBBaseMagicStrings1,
+ kEoBBaseMagicStrings2,
+ kEoBBaseMagicStrings3,
+ kEoBBaseMagicStrings4,
+ kEoBBaseMagicStrings6,
+ kEoBBaseMagicStrings7,
+ kEoBBaseMagicStrings8,
+
+ kEoBBaseExpObjectTblIndex,
+ kEoBBaseExpObjectShpStart,
+ kEoBBaseExpObjectTbl1,
+ kEoBBaseExpObjectTbl2,
+ kEoBBaseExpObjectTbl3,
+ kEoBBaseExpObjectY,
+
+ kEoBBaseSparkDefSteps,
+ kEoBBaseSparkDefSubSteps,
+ kEoBBaseSparkDefShift,
+ kEoBBaseSparkDefAdd,
+ kEoBBaseSparkDefX,
+ kEoBBaseSparkDefY,
+ kEoBBaseSparkOfFlags1,
+ kEoBBaseSparkOfFlags2,
+ kEoBBaseSparkOfShift,
+ kEoBBaseSparkOfX,
+ kEoBBaseSparkOfY,
+
+ kEoBBaseSpellProperties,
+ kEoBBaseMagicFlightProps,
+ kEoBBaseTurnUndeadEffect,
+ kEoBBaseBurningHandsDest,
+ kEoBBaseConeOfColdDest1,
+ kEoBBaseConeOfColdDest2,
+ kEoBBaseConeOfColdDest3,
+ kEoBBaseConeOfColdDest4,
+ kEoBBaseConeOfColdGfxTbl,
+
+ kRpgCommonDscDoorShapeIndex,
+ kEoBBaseWllFlagPreset,
+ kEoBBaseDscShapeCoords,
+ kEoBBaseDscDoorScaleOffs,
+ kEoBBaseDscDoorScaleMult1,
+ kEoBBaseDscDoorScaleMult2,
+ kEoBBaseDscDoorScaleMult3,
+ kEoBBaseDscDoorScaleMult4,
+ kEoBBaseDscDoorScaleMult5,
+ kEoBBaseDscDoorScaleMult6,
+ kEoBBaseDscDoorXE,
+ kEoBBaseDscDoorY1,
+ kEoBBaseDscDoorY3,
+ kEoBBaseDscDoorY4,
+ kEoBBaseDscDoorY5,
+ kEoBBaseDscDoorY6,
+ kEoBBaseDscDoorY7,
+ kEoBBaseDscDoorCoordsExt,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+ kRpgCommonDscDoorFrameIndex1,
+ kRpgCommonDscDoorFrameIndex2,
+
+ kEoBBaseDscItemPosIndex,
+ kEoBBaseDscItemShpX,
+ kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemTileIndex,
+ kEoBBaseDscItemShapeMap,
+ kEoBBaseDscTelptrShpCoords,
+
+ kEoBBasePortalSeqData,
+ kEoBBaseManDef,
+ kEoBBaseManWord,
+ kEoBBaseManPrompt,
+
+ kEoBBaseDscMonsterFrmOffsTbl1,
+ kEoBBaseDscMonsterFrmOffsTbl2,
+
+ kEoBBaseInvSlotX,
+ kEoBBaseInvSlotY,
+ kEoBBaseSlotValidationFlags,
+
+ kEoBBaseProjectileWeaponTypes,
+ kEoBBaseWandTypes,
+
+ kEoBBaseDrawObjPosIndex,
+ kEoBBaseFlightObjFlipIndex,
+ kEoBBaseFlightObjShpMap,
+ kEoBBaseFlightObjSclIndex,
+
+ kRpgCommonDscShapeIndex,
+ kRpgCommonDscX,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kRpgCommonDscBlockIndex,
+
+ kEoBBaseClassModifierFlags,
+
+ kEoBBaseMonsterStepTable01,
+ //kEoBBaseMonsterStepTable1,
+ kEoBBaseMonsterStepTable2,
+ kEoBBaseMonsterStepTable3,
+ kEoBBaseMonsterCloseAttPosTable1,
+ kEoBBaseMonsterCloseAttPosTable21,
+ //kEoBBaseMonsterCloseAttUnkTable,
+ kEoBBaseMonsterCloseAttChkTable1,
+ kEoBBaseMonsterCloseAttChkTable2,
+ kEoBBaseMonsterCloseAttDstTable1,
+ kEoBBaseMonsterCloseAttDstTable2,
+
+ kEoBBaseMonsterProximityTable,
+ kEoBBaseFindBlockMonstersTable,
+ kEoBBaseMonsterDirChangeTable,
+ kEoBBaseMonsterDistAttStrings,
+ kEoBBaseEncodeMonsterDefs,
+ kEoBBaseNpcPresets,
+ //kEoB1Npc1Strings,
+ //kEoB1Npc2Strings,
+ -1
+};
+
+const int eob2FloppyNeed[] = {
+ kEoBBaseChargenStrings1,
+ kEoBBaseChargenStrings2,
+ kEoBBaseChargenStartLevels,
+ kEoBBaseChargenStatStrings,
+ kEoBBaseChargenRaceSexStrings,
+ kEoBBaseChargenClassStrings,
+ kEoBBaseChargenAlignmentStrings,
+ kEoBBaseChargenEnterGameStrings,
+ kEoBBaseChargenClassMinStats,
+ kEoBBaseChargenRaceMinStats,
+ kEoBBaseChargenRaceMaxStats,
+
+ kEoBBaseSaveThrowTable1,
+ kEoBBaseSaveThrowTable2,
+ kEoBBaseSaveThrowTable3,
+ kEoBBaseSaveThrowTable4,
+ kEoBBaseSaveThrwLvlIndex,
+ kEoBBaseSaveThrwModDiv,
+ kEoBBaseSaveThrwModExt,
+
+ kEoBBasePryDoorStrings,
+ kEoBBaseWarningStrings,
+
+ kEoBBaseItemSuffixStringsRings,
+ kEoBBaseItemSuffixStringsPotions,
+ kEoBBaseItemSuffixStringsWands,
+
+ kEoBBaseRipItemStrings,
+ kEoBBaseCursedString,
+ kEoBBaseEnchantedString,
+ kEoBBaseMagicObjectStrings,
+ kEoBBaseMagicObject5String,
+ kEoBBasePatternSuffix,
+ kEoBBasePatternGrFix1,
+ kEoBBasePatternGrFix2,
+ kEoBBaseValidateArmorString,
+ kEoBBaseValidateCursedString,
+ kEoBBaseValidateNoDropString,
+ kEoBBasePotionStrings,
+ kEoBBaseWandString,
+ kEoBBaseItemMisuseStrings,
+
+ kEoBBaseTakenStrings,
+ kEoBBasePotionEffectStrings,
+
+ kEoBBaseYesNoStrings,
+ kRpgCommonMoreStrings,
+ kEoBBaseNpcMaxStrings,
+ kEoBBaseOkStrings,
+ kEoBBaseNpcJoinStrings,
+ kEoBBaseCancelStrings,
+ kEoBBaseAbortStrings,
+
+ kEoBBaseMenuStringsMain,
+ kEoBBaseMenuStringsSaveLoad,
+ kEoBBaseMenuStringsOnOff,
+ kEoBBaseMenuStringsSpells,
+ kEoBBaseMenuStringsRest,
+ kEoBBaseMenuStringsDrop,
+ kEoBBaseMenuStringsExit,
+ kEoBBaseMenuStringsStarve,
+ kEoBBaseMenuStringsScribe,
+ kEoBBaseMenuStringsDrop2,
+ kEoBBaseMenuStringsHead,
+ kEoBBaseMenuStringsPoison,
+ kEoBBaseMenuStringsMgc,
+ kEoBBaseMenuStringsPrefs,
+ kEoBBaseMenuStringsRest2,
+ kEoBBaseMenuStringsRest3,
+ kEoBBaseMenuStringsRest4,
+ kEoBBaseMenuStringsDefeat,
+ kEoBBaseMenuStringsTransfer,
+ kEoBBaseMenuStringsSpec,
+ kEoBBaseMenuStringsSpellNo,
+ kEoBBaseMenuYesNoStrings,
+
+ kEoBBaseSpellLevelsMage,
+ kEoBBaseSpellLevelsCleric,
+ kEoBBaseNumSpellsCleric,
+ kEoBBaseNumSpellsWisAdj,
+ kEoBBaseNumSpellsPal,
+ kEoBBaseNumSpellsMage,
+
+ kEoBBaseCharGuiStringsHp,
+ kEoBBaseCharGuiStringsWp2,
+ kEoBBaseCharGuiStringsWr,
+ kEoBBaseCharGuiStringsSt2,
+ kEoBBaseCharGuiStringsIn,
+
+ kEoBBaseCharStatusStrings7,
+ kEoBBaseCharStatusStrings82,
+ kEoBBaseCharStatusStrings9,
+ kEoBBaseCharStatusStrings12,
+ kEoBBaseCharStatusStrings132,
+
+ kEoBBaseLevelGainStrings,
+ kEoBBaseExperienceTable0,
+ kEoBBaseExperienceTable1,
+ kEoBBaseExperienceTable2,
+ kEoBBaseExperienceTable3,
+ kEoBBaseExperienceTable4,
+
+ kEoBBaseBookNumbers,
+ kEoBBaseMageSpellsList,
+ kEoBBaseClericSpellsList,
+ kEoBBaseSpellNames,
+ kEoBBaseMagicStrings1,
+ kEoBBaseMagicStrings2,
+ kEoBBaseMagicStrings3,
+ kEoBBaseMagicStrings4,
+ kEoBBaseMagicStrings6,
+ kEoBBaseMagicStrings7,
+ kEoBBaseMagicStrings8,
+
+ kEoBBaseExpObjectTlMode,
+ kEoBBaseExpObjectTblIndex,
+ kEoBBaseExpObjectShpStart,
+ kEoBBaseExpObjectTbl1,
+ kEoBBaseExpObjectTbl2,
+ kEoBBaseExpObjectTbl3,
+ kEoBBaseExpObjectY,
+
+ kEoBBaseSparkDefSteps,
+ kEoBBaseSparkDefSubSteps,
+ kEoBBaseSparkDefShift,
+ kEoBBaseSparkDefAdd,
+ kEoBBaseSparkDefX,
+ kEoBBaseSparkDefY,
+ kEoBBaseSparkOfFlags1,
+ kEoBBaseSparkOfFlags2,
+ kEoBBaseSparkOfShift,
+ kEoBBaseSparkOfX,
+ kEoBBaseSparkOfY,
+
+ kEoBBaseSpellProperties,
+ kEoBBaseMagicFlightProps,
+ kEoBBaseTurnUndeadEffect,
+ kEoBBaseBurningHandsDest,
+ kEoBBaseConeOfColdDest1,
+ kEoBBaseConeOfColdDest2,
+ kEoBBaseConeOfColdDest3,
+ kEoBBaseConeOfColdDest4,
+ kEoBBaseConeOfColdGfxTbl,
+
+ kRpgCommonDscDoorShapeIndex,
+ kEoBBaseWllFlagPreset,
+ kEoBBaseDscShapeCoords,
+
+ kEoBBaseDscDoorScaleOffs,
+ kEoBBaseDscDoorScaleMult1,
+ kEoBBaseDscDoorScaleMult2,
+ kEoBBaseDscDoorScaleMult3,
+ kEoBBaseDscDoorType5Offs,
+ kEoBBaseDscDoorY1,
+ kRpgCommonDscDoorY2,
+ kRpgCommonDscDoorFrameY1,
+ kRpgCommonDscDoorFrameY2,
+
+ kEoBBaseDscItemPosIndex,
+ kEoBBaseDscItemShpX,
+ kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemTileIndex,
+ kEoBBaseDscItemShapeMap,
+ kEoBBaseDscTelptrShpCoords,
+
+ kEoBBasePortalSeqData,
+ kEoBBaseManDef,
+ kEoBBaseManWord,
+ kEoBBaseManPrompt,
+
+ kEoBBaseDscMonsterFrmOffsTbl1,
+ kEoBBaseDscMonsterFrmOffsTbl2,
+
+ kEoBBaseInvSlotX,
+ kEoBBaseInvSlotY,
+ kEoBBaseSlotValidationFlags,
+
+ kEoBBaseProjectileWeaponTypes,
+ kEoBBaseWandTypes,
+
+ kEoBBaseDrawObjPosIndex,
+ kEoBBaseFlightObjFlipIndex,
+ kEoBBaseFlightObjShpMap,
+ kEoBBaseFlightObjSclIndex,
+
+ kEoB2MainMenuStrings,
+
+ kEoB2TransferPortraitFrames,
+ kEoB2TransferConvertTable,
+ kEoB2TransferItemTable,
+ kEoB2TransferExpTable,
+ kEoB2TransferStrings1,
+ kEoB2TransferStrings2,
+ kEoB2TransferLabels,
+
+ kEoB2IntroStrings,
+ kEoB2IntroCPSFiles,
+ kEob2IntroAnimData00,
+ kEob2IntroAnimData01,
+ kEob2IntroAnimData02,
+ kEob2IntroAnimData03,
+ kEob2IntroAnimData04,
+ kEob2IntroAnimData05,
+ kEob2IntroAnimData06,
+ kEob2IntroAnimData07,
+ kEob2IntroAnimData08,
+ kEob2IntroAnimData09,
+ kEob2IntroAnimData10,
+ kEob2IntroAnimData11,
+ kEob2IntroAnimData12,
+ kEob2IntroAnimData13,
+ kEob2IntroAnimData14,
+ kEob2IntroAnimData15,
+ kEob2IntroAnimData16,
+ kEob2IntroAnimData17,
+ kEob2IntroAnimData18,
+ kEob2IntroAnimData19,
+ kEob2IntroAnimData20,
+ kEob2IntroAnimData21,
+ kEob2IntroAnimData22,
+ kEob2IntroAnimData23,
+ kEob2IntroAnimData24,
+ kEob2IntroAnimData25,
+ kEob2IntroAnimData26,
+ kEob2IntroAnimData27,
+ kEob2IntroAnimData28,
+ kEob2IntroAnimData29,
+ kEob2IntroAnimData30,
+ kEob2IntroAnimData31,
+ kEob2IntroAnimData32,
+ kEob2IntroAnimData33,
+ kEob2IntroAnimData34,
+ kEob2IntroAnimData35,
+ kEob2IntroAnimData36,
+ kEob2IntroAnimData37,
+ kEob2IntroAnimData38,
+ kEob2IntroAnimData39,
+ kEob2IntroAnimData40,
+ kEob2IntroAnimData41,
+ kEob2IntroAnimData42,
+ kEob2IntroAnimData43,
+
+ kEoB2IntroShapes00,
+ kEoB2IntroShapes01,
+ kEoB2IntroShapes04,
+ kEoB2IntroShapes07,
+
+ kEoB2FinaleStrings,
+ kEoB2CreditsData,
+ kEoB2FinaleCPSFiles,
+ kEob2FinaleAnimData00,
+ kEob2FinaleAnimData01,
+ kEob2FinaleAnimData02,
+ kEob2FinaleAnimData03,
+ kEob2FinaleAnimData04,
+ kEob2FinaleAnimData05,
+ kEob2FinaleAnimData06,
+ kEob2FinaleAnimData07,
+ kEob2FinaleAnimData08,
+ kEob2FinaleAnimData09,
+ kEob2FinaleAnimData10,
+ kEob2FinaleAnimData11,
+ kEob2FinaleAnimData12,
+ kEob2FinaleAnimData13,
+ kEob2FinaleAnimData14,
+ kEob2FinaleAnimData15,
+ kEob2FinaleAnimData16,
+ kEob2FinaleAnimData17,
+ kEob2FinaleAnimData18,
+ kEob2FinaleAnimData19,
+ kEob2FinaleAnimData20,
+ kEoB2FinaleShapes00,
+ kEoB2FinaleShapes03,
+ kEoB2FinaleShapes07,
+ kEoB2FinaleShapes09,
+ kEoB2FinaleShapes10,
+
+ kEoB2NpcShapeData,
+ kEoBBaseClassModifierFlags,
+
+ kEoBBaseMonsterStepTable02,
+ kEoBBaseMonsterStepTable1,
+ kEoBBaseMonsterStepTable2,
+ kEoBBaseMonsterStepTable3,
+ kEoBBaseMonsterCloseAttPosTable1,
+ kEoBBaseMonsterCloseAttPosTable22,
+ kEoBBaseMonsterCloseAttUnkTable,
+ kEoBBaseMonsterCloseAttChkTable1,
+ kEoBBaseMonsterCloseAttChkTable2,
+ kEoBBaseMonsterCloseAttDstTable1,
+ kEoBBaseMonsterCloseAttDstTable2,
+
+ kEoBBaseMonsterProximityTable,
+ kEoBBaseFindBlockMonstersTable,
+ kEoBBaseMonsterDirChangeTable,
+ kEoBBaseMonsterDistAttStrings,
+ kEoBBaseEncodeMonsterDefs,
+ kEoBBaseNpcPresets,
+ kEoB2Npc1Strings,
+ kEoB2Npc2Strings,
+ kEoB2MonsterDustStrings,
+ kEoB2DreamSteps,
+ kEoB2KheldranStrings,
+ kEoB2HornStrings,
+ kEoB2HornSounds,
+ kEoB2WallOfForceDsX,
+ kEoB2WallOfForceDsY,
+ kEoB2WallOfForceNumW,
+ kEoB2WallOfForceNumH,
+ kEoB2WallOfForceShpId,
+
+ kRpgCommonDscShapeIndex,
+ kRpgCommonDscX,
+ kRpgCommonDscTileIndex,
+ kRpgCommonDscUnk2,
+ kRpgCommonDscDimData1,
+ kRpgCommonDscDimData2,
+ kRpgCommonDscBlockMap,
+ kRpgCommonDscDimMap,
+ kRpgCommonDscBlockIndex,
+
+ -1
+};
+
struct GameNeed {
int game;
int platform;
@@ -1055,14 +1686,18 @@ const GameNeed gameNeedTable[] = {
{ kKyra2, kPlatformPC, kDemoVersion, kyra2DemoNeed },
- { kLol, kPlatformPC, kDemoVersion, lolDemoNeed },
+ { kLoL, kPlatformPC, kDemoVersion, lolDemoNeed },
{ kKyra3, kPlatformPC, kTalkieVersion, kyra3Need },
- { kLol, kPlatformPC, kNoSpecial, lolFloppyNeed },
- { kLol, kPlatformPC98, kNoSpecial, lolPC98Need },
+ { kLoL, kPlatformPC, kNoSpecial, lolFloppyNeed },
+ { kLoL, kPlatformPC98, kNoSpecial, lolPC98Need },
+
+ { kLoL, kPlatformPC, kTalkieVersion, lolCDNeed },
+
+ { kEoB1, kPlatformPC, kNoSpecial, eob1FloppyNeed },
- { kLol, kPlatformPC, kTalkieVersion, lolCDNeed },
+ { kEoB2, kPlatformPC, kNoSpecial, eob2FloppyNeed },
{ -1, -1, -1, 0 }
};
diff --git a/devtools/create_kyradat/module.mk b/devtools/create_kyradat/module.mk
index 4241f82e34..fb458b43ff 100644
--- a/devtools/create_kyradat/module.mk
+++ b/devtools/create_kyradat/module.mk
@@ -14,8 +14,5 @@ MODULE_OBJS := \
# Set the name of the executable
TOOL_EXECUTABLE := create_kyradat
-# Link against common code (for scumm_stricmp)
-TOOL_DEPS := common/libcommon.a
-
# Include common rules
include $(srcdir)/rules.mk
diff --git a/devtools/create_kyradat/tables.cpp b/devtools/create_kyradat/tables.cpp
index 8042dcac71..1b9ca45259 100644
--- a/devtools/create_kyradat/tables.cpp
+++ b/devtools/create_kyradat/tables.cpp
@@ -137,7 +137,7 @@ const ExtractEntrySearchData k1OutroReunionSeqProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x00000547, 0x0000781C, { { 0xCF, 0xD6, 0x1D, 0x3D, 0x14, 0x40, 0x88, 0x35, 0x36, 0x4F, 0x0B, 0x1F, 0x9A, 0x1C, 0x3D, 0xAC } } } }, // floppy
{ UNK_LANG, kPlatformPC, { 0x00000547, 0x000077E0, { { 0x80, 0xC4, 0xFC, 0xD5, 0xEB, 0xAA, 0xA5, 0x87, 0x58, 0x5E, 0xAA, 0xE7, 0x01, 0x8F, 0x59, 0x3F } } } }, // floppy
{ UNK_LANG, kPlatformPC, { 0x000005E5, 0x00008918, { { 0x6A, 0x33, 0x8C, 0xB0, 0x16, 0x57, 0x2D, 0xEB, 0xB2, 0xE1, 0x64, 0x80, 0x98, 0x99, 0x98, 0x19 } } } }, // CD
-
+
{ UNK_LANG, kPlatformAmiga, { 0x0000054A, 0x0000785F, { { 0x55, 0xEA, 0xB8, 0x7F, 0x3A, 0x86, 0xCD, 0xA6, 0xBC, 0xA7, 0x9A, 0x39, 0xED, 0xF5, 0x30, 0x0A } } } },
{ UNK_LANG, kPlatformUnknown, { 0x00000547, 0x00007876, { { 0x7A, 0xC7, 0x80, 0x34, 0x7A, 0x1B, 0xAB, 0xF8, 0xA7, 0x2F, 0x63, 0x3C, 0xDA, 0x89, 0x3F, 0x82 } } } }, // some floppy DOS + FM-TOWNS
@@ -342,9 +342,9 @@ const ExtractEntrySearchData k1PlacedStringsProvider[] = {
{ IT_ITA, kPlatformPC, { 0x0000000D, 0x0000040D, { { 0x9C, 0x71, 0x53, 0x35, 0xC3, 0xE8, 0x46, 0xB9, 0xD2, 0xFA, 0x1C, 0x8C, 0xC3, 0xFF, 0xBC, 0x1F } } } }, // floppy
{ IT_ITA, kPlatformPC, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } }, // (fan) CD
-
+
{ ES_ESP, kPlatformPC, { 0x0000000D, 0x00000439, { { 0x57, 0xAE, 0x1C, 0xC1, 0xF5, 0xE8, 0x5B, 0x9E, 0x90, 0x02, 0xB9, 0x8D, 0x86, 0x38, 0xFB, 0xA8 } } } },
-
+
{ RU_RUS, kPlatformPC, { 0x00000009, 0x00000203, { { 0x7D, 0xAE, 0x67, 0x94, 0x8E, 0x73, 0x35, 0xC1, 0x11, 0xB4, 0x55, 0x6E, 0x92, 0x25, 0x39, 0xE4 } } } },
EXTRACT_END_ENTRY
@@ -563,7 +563,7 @@ const ExtractEntrySearchData k1ThePoisonStringsProvider[] = {
{ ES_ESP, kPlatformPC, { 0x00000059, 0x00001DF7, { { 0x16, 0x7B, 0x5F, 0x91, 0x06, 0x5B, 0xFC, 0x9C, 0x88, 0x61, 0xCC, 0x1B, 0x52, 0x4F, 0x91, 0xC5 } } } },
{ RU_RUS, kPlatformPC, { 0x00000052, 0x0000136F, { { 0xEF, 0xD2, 0xA0, 0x5F, 0xD5, 0xE6, 0x77, 0x96, 0xFA, 0xC5, 0x60, 0x7C, 0xB7, 0xA8, 0x7C, 0x7A } } } },
-
+
{ EN_ANY, kPlatformAmiga, { 0x00000058, 0x00001C24, { { 0xBA, 0x1F, 0xBD, 0x5C, 0x85, 0x3D, 0x3C, 0x92, 0xD1, 0x13, 0xF3, 0x40, 0x2E, 0xBB, 0x1C, 0xE2 } } } },
{ DE_DEU, kPlatformAmiga, { 0x00000073, 0x00002690, { { 0x44, 0xAE, 0xC9, 0xFD, 0x9F, 0x8E, 0x1B, 0xDD, 0x3F, 0xE4, 0x4D, 0x4B, 0x5A, 0x13, 0xE5, 0x99 } } } },
@@ -1113,6 +1113,7 @@ const ExtractEntrySearchData k2SeqplayStringsProvider[] = {
{ IT_ITA, kPlatformPC, { 0x00000916, 0x0003188F, { { 0xDC, 0x46, 0x06, 0xE1, 0xB0, 0x66, 0xBC, 0x18, 0x2E, 0x6E, 0x9E, 0xC9, 0xA4, 0x14, 0x8D, 0x08 } } } }, // floppy
{ IT_ITA, kPlatformPC, { 0x000008C8, 0x00030947, { { 0x7F, 0x75, 0x5F, 0x99, 0x94, 0xFE, 0xA1, 0xE6, 0xEF, 0xB8, 0x93, 0x71, 0x83, 0x1B, 0xAC, 0x4A } } } }, // (fan) CD
+ { RU_RUS, kPlatformPC, { 0x00000916, 0x00032C49, { { 0xEA, 0x5C, 0xE5, 0x06, 0x05, 0x5F, 0x36, 0xE8, 0x31, 0x3E, 0xBF, 0x74, 0x73, 0xFB, 0xAB, 0xFF } } } }, // (fan) CD - intro and outro strings haven't been translated in this fan translation
{ RU_RUS, kPlatformPC, { 0x000008C8, 0x00028639, { { 0xF9, 0x1D, 0x6A, 0x85, 0x23, 0x5E, 0x2A, 0x64, 0xBC, 0x45, 0xB2, 0x48, 0x13, 0x49, 0xD4, 0xF7 } } } }, // (fan) floppy
{ EN_ANY, kPlatformFMTowns, { 0x00000990, 0x00030C61, { { 0x60, 0x51, 0x11, 0x83, 0x3F, 0x06, 0xC3, 0xA3, 0xE0, 0xC0, 0x2F, 0x41, 0x29, 0xDE, 0x65, 0xB1 } } } },
@@ -1142,6 +1143,7 @@ const ExtractEntrySearchData k2SeqplayTlkFilesProvider[] = {
{ FR_FRA, kPlatformPC, { 0x0000009D, 0x00002878, { { 0x28, 0x5D, 0x7F, 0x5B, 0x57, 0xC2, 0xFF, 0x73, 0xC1, 0x8E, 0xD6, 0xE0, 0x4D, 0x03, 0x99, 0x2C } } } },
{ DE_DEU, kPlatformPC, { 0x0000009D, 0x00002885, { { 0x87, 0x24, 0xB6, 0xE9, 0xD6, 0xAA, 0x68, 0x2D, 0x6B, 0x05, 0xDF, 0xE1, 0x2B, 0xA4, 0x79, 0xE5 } } } },
{ IT_ITA, kPlatformPC, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
+ { RU_RUS, kPlatformPC, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
EXTRACT_END_ENTRY
};
@@ -1222,7 +1224,7 @@ const ExtractEntrySearchData k2IngamePakFilesProvider[] = {
const ExtractEntrySearchData k2IngameSfxFilesProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
{ UNK_LANG, kPlatformFMTowns, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
- { UNK_LANG, kPlatformPC98, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
+ { UNK_LANG, kPlatformPC98, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
EXTRACT_END_ENTRY
};
@@ -1331,14 +1333,2017 @@ const ExtractEntrySearchData k3ItemStringMapProvider[] = {
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngamePakFilesProvider[] = {
+const ExtractEntrySearchData kEoBBaseChargenStrings1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000000CA, 0x00003BC8, { { 0x27, 0xEA, 0xE3, 0x0D, 0x55, 0xB3, 0x69, 0x3E, 0xC2, 0x66, 0x58, 0x64, 0xAA, 0xC2, 0x80, 0x58 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x000000C3, 0x000038F6, { { 0x20, 0x68, 0xAB, 0xD4, 0xBF, 0x49, 0x04, 0xC0, 0x91, 0xB4, 0x71, 0xB0, 0xB6, 0xC9, 0x11, 0xF0 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x000000C7, 0x00003ADB, { { 0x0D, 0x03, 0x7A, 0xE6, 0x7D, 0x41, 0x89, 0x49, 0x0C, 0xB6, 0xD0, 0x4F, 0xEA, 0x1E, 0x54, 0xFF } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenStrings2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000004B, 0x000011AE, { { 0x28, 0x98, 0x4C, 0xA3, 0x98, 0xB0, 0xA2, 0x17, 0x9C, 0x80, 0x4F, 0x3F, 0x58, 0x3B, 0x2C, 0xFB } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000004E, 0x0000129D, { { 0xED, 0xF3, 0x36, 0x16, 0xE2, 0x1B, 0x32, 0x95, 0xFE, 0xE8, 0x3E, 0x7D, 0xE6, 0x32, 0x34, 0xD4 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000004A, 0x00001267, { { 0xD6, 0xE2, 0x27, 0x6A, 0x6F, 0x7E, 0xB4, 0xCE, 0xA8, 0xE9, 0x79, 0x31, 0x5C, 0x13, 0xA1, 0x8F } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenStartLevelsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000054, { { 0xAB, 0x68, 0x74, 0x3E, 0x0D, 0x45, 0xA3, 0x50, 0xA7, 0x72, 0x6A, 0xDF, 0x9C, 0x23, 0x98, 0x74 } } } }, // EOB 1
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x000000B1, { { 0xFD, 0x3F, 0x6B, 0xB5, 0xE4, 0xEE, 0x32, 0x3B, 0xBD, 0x72, 0x37, 0x88, 0x52, 0x84, 0xBD, 0xC6 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenStatStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000055, 0x000015D6, { { 0xB8, 0x29, 0x4B, 0xA4, 0x4F, 0x45, 0x16, 0x1A, 0x07, 0x28, 0x14, 0x86, 0x1B, 0xDF, 0xAC, 0xDF } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000056, 0x000015F9, { { 0xBB, 0x5A, 0x7D, 0xCF, 0xC3, 0x90, 0x9A, 0xB3, 0x73, 0xB2, 0x4D, 0x46, 0xB8, 0x89, 0x7D, 0xAE } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000053, 0x0000159A, { { 0x1D, 0xA6, 0x84, 0xDB, 0xC5, 0x81, 0xC7, 0xF0, 0x1C, 0xA4, 0xE3, 0x10, 0x4F, 0x8A, 0xF3, 0xCE } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenRaceSexStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000098, 0x00002572, { { 0x8D, 0xF9, 0xDE, 0x92, 0xFC, 0xA8, 0xFC, 0xE9, 0x0A, 0x98, 0x6D, 0xA4, 0x6F, 0x21, 0xCD, 0xF4 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x000000AA, 0x00002A1E, { { 0x8E, 0xAF, 0x4B, 0x20, 0xEA, 0xFE, 0x71, 0x8E, 0x8B, 0x4B, 0x46, 0x62, 0x91, 0x48, 0x08, 0xAF } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000098, 0x00002502, { { 0xA4, 0x8B, 0x20, 0xF5, 0x97, 0xFE, 0x34, 0x6D, 0x9F, 0xF0, 0xA8, 0xE9, 0xE8, 0xFA, 0x23, 0x9B } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenClassStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000000D5, 0x000035A7, { { 0xAF, 0x89, 0x9A, 0x11, 0x9A, 0x8D, 0x39, 0x6F, 0x26, 0x41, 0x4E, 0x20, 0xAD, 0x91, 0xC5, 0xDA } } } },
+ { DE_DEU, kPlatformUnknown, { 0x000000FA, 0x00003FD8, { { 0xBD, 0x78, 0xF7, 0xEC, 0x9D, 0x9A, 0x3A, 0x22, 0xAB, 0xD9, 0x10, 0xAD, 0x8E, 0x1D, 0x4D, 0xDE } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x000000E4, 0x00003BE5, { { 0xDE, 0x1B, 0x25, 0x4F, 0xE6, 0xD0, 0xB5, 0x95, 0xD0, 0xA6, 0x69, 0xE6, 0x53, 0xB8, 0x20, 0x1E } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenAlignmentStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000078, 0x00001F44, { { 0xBB, 0x52, 0x3C, 0xA6, 0x79, 0x87, 0xDC, 0xB8, 0x21, 0x7A, 0xA0, 0x17, 0x45, 0xEA, 0xF2, 0x50 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000008A, 0x00002423, { { 0xA3, 0x36, 0x0D, 0x64, 0x33, 0xFD, 0x54, 0xA5, 0xA9, 0xD7, 0xFA, 0x34, 0x39, 0xAD, 0x6A, 0x98 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000007F, 0x000021F8, { { 0xBD, 0xB2, 0x06, 0xF9, 0xC9, 0x36, 0x5D, 0x91, 0x43, 0x08, 0x3A, 0x2C, 0x5F, 0x1C, 0xF3, 0x9C } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenEnterGameStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000A0E, { { 0x98, 0x7F, 0x2C, 0x2E, 0xBB, 0x5E, 0xAA, 0xD0, 0x72, 0xF5, 0xBC, 0x4A, 0x34, 0x5B, 0xB4, 0xF5 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000021, 0x00000AB6, { { 0x02, 0x7F, 0x19, 0x5A, 0xA9, 0xB7, 0x8C, 0xE2, 0xF7, 0x35, 0xB0, 0xD8, 0xA8, 0x0C, 0x24, 0x44 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x00000925, { { 0xDA, 0x83, 0x00, 0xD2, 0x94, 0xF0, 0xD8, 0xFC, 0x3D, 0xA8, 0xD2, 0x4E, 0xF2, 0xD7, 0x2B, 0x7E } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenClassMinStatsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000B4, 0x00000165, { { 0x83, 0x5E, 0x91, 0x10, 0x4D, 0x75, 0x6B, 0xF9, 0x45, 0x1B, 0x65, 0x13, 0x37, 0x3E, 0xC0, 0xAE } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenRaceMinStatsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000000B2, { { 0x08, 0xF0, 0x8F, 0x22, 0x9D, 0xD8, 0xBE, 0x52, 0x70, 0x7C, 0xCA, 0x8D, 0xB2, 0xF5, 0xC6, 0xB8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseChargenRaceMaxStatsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00000479, { { 0xBD, 0xA0, 0x8C, 0xC2, 0x05, 0xCA, 0x0D, 0x4B, 0x82, 0x9B, 0x3D, 0xB5, 0x4B, 0xDB, 0xD2, 0xC1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrowTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000032, 0x00000214, { { 0x3D, 0x89, 0x30, 0x0A, 0x5C, 0x4A, 0x0F, 0xC3, 0xC7, 0x6B, 0x72, 0x7C, 0x12, 0x51, 0x8D, 0x8E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrowTable2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x000000E7, { { 0xF4, 0x0D, 0xDF, 0xA3, 0x23, 0x71, 0x76, 0x2A, 0xC5, 0x6F, 0xF1, 0x59, 0x5F, 0x45, 0x73, 0x05 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrowTable3Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000155, { { 0x42, 0x98, 0x84, 0x00, 0x70, 0x8A, 0x7B, 0x26, 0xC0, 0x96, 0xA3, 0x28, 0x41, 0x36, 0x4B, 0x21 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrowTable4Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x0000013B, { { 0xAB, 0x84, 0x2B, 0x0A, 0xC2, 0x46, 0xFF, 0x83, 0x03, 0xF8, 0x3F, 0x32, 0x53, 0xA2, 0x95, 0x65 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrwLvlIndexProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000070, { { 0x57, 0x48, 0x5F, 0x75, 0x79, 0xD4, 0xAA, 0x7D, 0xB7, 0xEB, 0x19, 0x9F, 0xCF, 0x99, 0x29, 0x29 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrwModDivProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000012, { { 0x50, 0x29, 0x51, 0x65, 0x0B, 0xF1, 0xCC, 0xDA, 0x2C, 0xA4, 0x7E, 0xEE, 0x20, 0xB0, 0x29, 0xB1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSaveThrwModExtProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000030, { { 0x07, 0x7D, 0x61, 0x1C, 0x95, 0xEC, 0x9A, 0xCE, 0xA1, 0x29, 0x83, 0x2F, 0xCA, 0x95, 0x95, 0xF5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePryDoorStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000000E8, 0x00004D9F, { { 0xDE, 0x01, 0x69, 0x00, 0x0B, 0x32, 0xFA, 0x20, 0xB8, 0x11, 0xD6, 0xD9, 0xE2, 0xEA, 0xF5, 0xE8 } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x000000D2, 0x000043D2, { { 0x82, 0x3C, 0xF4, 0x4A, 0x87, 0x84, 0xFE, 0xF9, 0xBA, 0xC6, 0x67, 0x3A, 0x0D, 0x0F, 0x76, 0x78 } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x00000128, 0x0000657C, { { 0xA3, 0xC8, 0x48, 0xA7, 0x1F, 0x75, 0xDF, 0xB0, 0x37, 0xDA, 0x75, 0x2E, 0x9F, 0x4E, 0x45, 0xB0 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x000000D9, 0x00004769, { { 0x24, 0x59, 0x00, 0x8F, 0x9A, 0x3E, 0x95, 0xAB, 0x14, 0x9A, 0x3B, 0x19, 0x34, 0xDB, 0x9B, 0x18 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseWarningStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000052, 0x00001A7B, { { 0x81, 0x7A, 0xDF, 0xD2, 0x4F, 0xA7, 0x92, 0xA7, 0x44, 0xE5, 0x22, 0x73, 0xF6, 0xB3, 0x29, 0x5C } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x00000085, 0x00002B5C, { { 0xF1, 0xCE, 0x7C, 0x53, 0xEF, 0x5B, 0x59, 0x71, 0xA9, 0xEB, 0x00, 0xBA, 0xB7, 0x59, 0xC5, 0x2E } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x0000005F, 0x00001FD2, { { 0xBA, 0x85, 0x97, 0x63, 0x84, 0x80, 0x79, 0x44, 0x50, 0x99, 0x1A, 0x01, 0x37, 0x37, 0x0E, 0xD1 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000096, 0x000032BF, { { 0x07, 0x95, 0x91, 0x1A, 0x1B, 0xC8, 0xA3, 0xEE, 0x76, 0x0A, 0x48, 0x11, 0x37, 0x6F, 0xBA, 0x05 } } } }, // EOB 1
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseItemSuffixStringsRingsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000F7B, { { 0x8A, 0x27, 0x87, 0x81, 0x5F, 0x74, 0x27, 0xA9, 0x5E, 0x1B, 0xEE, 0xC0, 0xF7, 0x22, 0x8F, 0x57 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000022, 0x00000C02, { { 0x7D, 0x5F, 0x40, 0xEA, 0xAD, 0xDD, 0x1B, 0xA0, 0xA6, 0xE0, 0x57, 0x7D, 0x0D, 0x60, 0xF4, 0x2C } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000002E, 0x00000FF2, { { 0xE1, 0x50, 0xB7, 0xE2, 0xEF, 0xAD, 0x5B, 0x6D, 0x27, 0x35, 0x9C, 0xE7, 0x2D, 0xB2, 0x2E, 0xD0 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseItemSuffixStringsPotionsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000054, 0x00001DDB, { { 0xB6, 0x78, 0xD9, 0x09, 0x1D, 0x09, 0x63, 0xF8, 0x96, 0x74, 0xF0, 0x75, 0x23, 0xF5, 0xD4, 0xC4 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000064, 0x000024ED, { { 0x10, 0x5A, 0xB8, 0xCA, 0x0F, 0x0D, 0x44, 0x19, 0x9D, 0x3D, 0x76, 0x54, 0xA1, 0x69, 0x97, 0x8B } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000006F, 0x00002792, { { 0x1A, 0x71, 0x2B, 0xCC, 0xCA, 0xDA, 0xF6, 0xED, 0x5E, 0xF0, 0x24, 0x20, 0xD7, 0x2D, 0x18, 0x49 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseItemSuffixStringsWandsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000003C, 0x000014EB, { { 0xB5, 0x38, 0x35, 0x57, 0xF2, 0xF8, 0x0E, 0xBA, 0x75, 0x03, 0x1C, 0xCD, 0x46, 0x7D, 0x03, 0x83 } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x0000004A, 0x000019B2, { { 0x44, 0x10, 0xE4, 0xAF, 0xAB, 0x19, 0x25, 0x87, 0x2B, 0x15, 0x1C, 0x4C, 0x03, 0x50, 0x41, 0xC4 } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x00000040, 0x000016B5, { { 0xEC, 0xF4, 0x71, 0xC1, 0x69, 0x5C, 0xF9, 0xC1, 0xED, 0xC1, 0xED, 0x0C, 0x25, 0x3E, 0x13, 0xB1 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000069, 0x0000252B, { { 0x12, 0x06, 0xEA, 0x2F, 0xAF, 0x47, 0x55, 0x52, 0xB6, 0xD9, 0x11, 0xA4, 0x4F, 0x30, 0xCE, 0x9D } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseRipItemStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000025, 0x00000AEA, { { 0x7A, 0x2D, 0x03, 0xA5, 0x94, 0xD1, 0xA2, 0x2C, 0x41, 0x1F, 0xEB, 0x5C, 0xFB, 0xB2, 0xC6, 0x9E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000B1B, { { 0xD0, 0x26, 0x19, 0x0B, 0xA5, 0x8A, 0x38, 0x73, 0x14, 0x25, 0x40, 0x5D, 0x24, 0xB8, 0x4E, 0xC5 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000002E, 0x00000D38, { { 0xCE, 0xC5, 0x00, 0x63, 0xBB, 0xF0, 0xC4, 0x0D, 0x50, 0x2B, 0x82, 0x1C, 0xC0, 0xCD, 0xF1, 0xAF } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCursedStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x000003C7, { { 0x7F, 0x6B, 0x6A, 0xFE, 0x63, 0xF4, 0x17, 0xAF, 0xFD, 0x00, 0x31, 0x4A, 0x20, 0x9E, 0x8C, 0xEB } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x000003C7, { { 0x59, 0xD8, 0x84, 0x25, 0xE0, 0x06, 0x51, 0xA4, 0x70, 0xC5, 0x78, 0x22, 0xF0, 0x2D, 0xA0, 0x43 } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x00000010, 0x00000514, { { 0x97, 0x41, 0xA6, 0xAE, 0xF8, 0xA8, 0x3E, 0x85, 0xA8, 0x16, 0x01, 0x15, 0x0E, 0x46, 0x13, 0x45 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000013, 0x000005A5, { { 0xEC, 0xD3, 0xA5, 0xD2, 0xAD, 0x7C, 0x5E, 0x0F, 0x42, 0xBC, 0x6E, 0xDE, 0x7E, 0x36, 0x0B, 0x43 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseEnchantedStringProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000007, 0x0000016C, { { 0x98, 0x62, 0xD3, 0xA3, 0x11, 0xAE, 0x0A, 0xBA, 0x8F, 0xE8, 0x30, 0x0B, 0xDC, 0x12, 0x90, 0x3B } } } }, // EOB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000007, 0x0000016C, { { 0x01, 0x91, 0xBD, 0x89, 0xAE, 0x0E, 0x71, 0xEE, 0xBE, 0x31, 0xD9, 0x55, 0x21, 0x61, 0x19, 0xAE } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicObjectStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000E7D, { { 0x7E, 0x8F, 0x17, 0xEB, 0xE5, 0x5D, 0xEB, 0x9A, 0x84, 0xFF, 0x86, 0x6A, 0x01, 0x3E, 0x04, 0x84 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000003A, 0x000014E4, { { 0x3D, 0x34, 0x3C, 0xCA, 0xDC, 0xD1, 0xCF, 0x15, 0x69, 0x57, 0xC3, 0xB1, 0x58, 0xDF, 0xE9, 0x9D } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000002A, 0x00000EE4, { { 0x9C, 0x38, 0x4B, 0x9B, 0x67, 0x30, 0x4E, 0x88, 0xA9, 0xA2, 0xF8, 0x78, 0x8E, 0xC7, 0xC3, 0x86 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicObject5StringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000006, 0x000001FE, { { 0x74, 0x8D, 0xB9, 0x76, 0xD2, 0x2F, 0x60, 0xD2, 0x36, 0x45, 0x98, 0x4C, 0x0A, 0xE5, 0xE5, 0x0D } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000204, { { 0xE4, 0xC1, 0xAD, 0x71, 0x87, 0x80, 0x9D, 0x97, 0x91, 0x80, 0x3F, 0x71, 0xD3, 0x62, 0x06, 0xD5 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000007, 0x0000027A, { { 0x44, 0x47, 0x79, 0x46, 0x9B, 0xE5, 0xBD, 0x3C, 0xE8, 0x8D, 0xC6, 0xC5, 0x4E, 0x88, 0x13, 0xC0 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePatternSuffixProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000219, { { 0xCD, 0xDC, 0x7F, 0x8B, 0xBE, 0xD6, 0x05, 0x37, 0xDA, 0xDC, 0x11, 0xC3, 0x1E, 0x7A, 0xE7, 0x13 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePatternGrFix1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000007, 0x0000018A, { { 0x02, 0x5C, 0x86, 0xD9, 0x62, 0x0C, 0x71, 0xB3, 0x77, 0x9C, 0x7B, 0xBC, 0x4D, 0x5B, 0xDB, 0xE7 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePatternGrFix2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000150, { { 0x48, 0xBE, 0xED, 0xD3, 0xA5, 0x2E, 0xCD, 0xE0, 0x34, 0xBA, 0xA6, 0x8D, 0x7D, 0x00, 0xA2, 0xFF } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseValidateArmorStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000023, 0x00000B78, { { 0xC2, 0x33, 0x6B, 0xB9, 0xE1, 0x5E, 0x88, 0x5E, 0x22, 0xF2, 0x97, 0x83, 0xF8, 0xC8, 0x8C, 0xAB } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000026, 0x00000D19, { { 0xAD, 0x19, 0xE2, 0xDE, 0x04, 0xF9, 0x8F, 0x92, 0xAC, 0x1A, 0x05, 0xEA, 0x7B, 0xB5, 0x9F, 0x09 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000029, 0x00000E7A, { { 0xEC, 0xA8, 0x2E, 0x8D, 0xB1, 0xC8, 0x0F, 0xCD, 0x24, 0xBD, 0x4B, 0x39, 0x16, 0xC9, 0x53, 0x08 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseValidateCursedStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00000F35, { { 0xE7, 0x0E, 0xA1, 0xCE, 0xCC, 0x13, 0xBC, 0x4B, 0x2B, 0x19, 0xEB, 0xA4, 0x05, 0xCF, 0xCF, 0x65 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000037, 0x000012D8, { { 0x3C, 0x7F, 0x16, 0xCE, 0x40, 0x58, 0xF1, 0x3A, 0xAB, 0x4C, 0x37, 0x82, 0x32, 0x88, 0xA4, 0x2D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseValidateNoDropStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000001F, 0x00000A8F, { { 0x61, 0x99, 0x3E, 0x36, 0x49, 0x19, 0xB4, 0xE4, 0xBC, 0xFA, 0xB5, 0x71, 0x0E, 0xD6, 0x15, 0x3C } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000AB6, { { 0xAA, 0x0E, 0x64, 0xD1, 0xA2, 0xA6, 0x62, 0x76, 0x51, 0xDF, 0x9E, 0x76, 0x85, 0x42, 0xE1, 0x4A } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000C31, { { 0x10, 0xD9, 0x55, 0x69, 0xFE, 0x0A, 0x8C, 0xE5, 0xF7, 0x05, 0x5F, 0x09, 0x3B, 0xC9, 0x93, 0x38 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000027, 0x00000D9F, { { 0xA5, 0xF0, 0x8E, 0x78, 0x0A, 0x37, 0x31, 0xDC, 0xE0, 0xDF, 0xE5, 0xCB, 0x86, 0xDC, 0x21, 0x73 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePotionStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000017, 0x0000070E, { { 0xD9, 0xCB, 0x26, 0xB6, 0x6F, 0x17, 0x12, 0xB7, 0xB0, 0x95, 0x1B, 0x2A, 0xD8, 0x83, 0x0D, 0x2B } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x000009BD, { { 0xCA, 0xD0, 0x29, 0xB0, 0x7A, 0x2B, 0x0B, 0x69, 0xCA, 0xA4, 0xCA, 0x97, 0xCF, 0x8B, 0x03, 0xAD } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x00000964, { { 0x5D, 0xE2, 0xA5, 0x0D, 0x72, 0xE9, 0x8F, 0xC9, 0xFA, 0xF3, 0x41, 0x5A, 0x3F, 0x33, 0xAA, 0x15 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseWandStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000035, 0x000011EC, { { 0x7C, 0x3D, 0xF1, 0x28, 0x0C, 0x23, 0xD3, 0x18, 0xEE, 0xAD, 0xA7, 0xF4, 0x58, 0xD7, 0x1C, 0x8E } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x00000029, 0x00000E47, { { 0xED, 0x2E, 0xD4, 0x4D, 0xDB, 0x90, 0x3F, 0xD0, 0xFB, 0x95, 0xB8, 0xF2, 0xCF, 0x06, 0x08, 0xAF } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x00000046, 0x0000186E, { { 0x54, 0x8F, 0x53, 0x34, 0xE8, 0x81, 0x76, 0x71, 0x53, 0x3F, 0x99, 0xE7, 0xCF, 0xB7, 0xC9, 0xD9 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000002F, 0x00001070, { { 0x86, 0x18, 0x00, 0x54, 0x05, 0x3D, 0xC2, 0x26, 0xA7, 0xD9, 0x68, 0xE6, 0xC2, 0x0D, 0x26, 0x99 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseItemMisuseStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000066, 0x000022F6, { { 0xE8, 0xB9, 0x07, 0x61, 0x29, 0x90, 0xB0, 0x22, 0x30, 0xC5, 0x0F, 0xAD, 0xCA, 0x6C, 0x83, 0xC6 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000068, 0x00002472, { { 0xCA, 0xD7, 0xFD, 0x5B, 0x65, 0x72, 0xC7, 0x15, 0xB3, 0xFE, 0xFC, 0xEF, 0x53, 0xFB, 0x57, 0x6C } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000007E, 0x00002C87, { { 0x5E, 0x11, 0xC9, 0x93, 0xF4, 0xAB, 0x1A, 0x9D, 0xA7, 0x62, 0x71, 0x94, 0x37, 0xCA, 0xE2, 0x25 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseTakenStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000009, 0x0000026E, { { 0x3B, 0x73, 0x70, 0x2E, 0x22, 0x90, 0x0D, 0xC1, 0xDE, 0x32, 0x11, 0xCC, 0x97, 0xBA, 0xA3, 0x58 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000F, 0x000004ED, { { 0x8D, 0x12, 0x1E, 0x91, 0xD3, 0xF4, 0x34, 0x15, 0xC7, 0x4F, 0xE7, 0x23, 0x5B, 0xE8, 0x66, 0xB7 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePotionEffectStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000065, 0x0000248F, { { 0x4F, 0x60, 0x7F, 0xA7, 0x6F, 0x81, 0xD4, 0xAA, 0x68, 0xD5, 0xAA, 0xBE, 0xBC, 0xD4, 0x92, 0x3A } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x0000005D, 0x0000219D, { { 0x87, 0x60, 0x9F, 0xF3, 0x1B, 0x30, 0x4B, 0x2B, 0xE4, 0x94, 0xEF, 0x22, 0xEA, 0x36, 0xE4, 0x7F } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x0000006E, 0x00002840, { { 0x04, 0xF8, 0x53, 0x38, 0x09, 0xD8, 0x58, 0xFC, 0x5F, 0xE9, 0x69, 0xFB, 0x9C, 0x0D, 0x92, 0x2E } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000059, 0x000020D2, { { 0xB6, 0xA1, 0x57, 0xD6, 0x46, 0xE3, 0xCF, 0x04, 0x5A, 0xC8, 0xBB, 0x59, 0x8D, 0xE3, 0x6F, 0xBF } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseYesNoStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000007, 0x0000022E, { { 0xF1, 0x30, 0x61, 0xA7, 0x20, 0x71, 0x3B, 0x75, 0xBE, 0xA7, 0xD6, 0x78, 0x34, 0xF7, 0x19, 0x06 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000275, { { 0xAF, 0x3E, 0xC5, 0x5A, 0x60, 0x34, 0x9B, 0x39, 0x37, 0x9E, 0xE2, 0x17, 0x23, 0x8E, 0x23, 0x23 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kRpgCommonMoreStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000005, 0x00000133, { { 0xA6, 0x1A, 0x3A, 0xB8, 0xCC, 0x92, 0xB8, 0xBE, 0x28, 0xD6, 0x64, 0x8F, 0x0A, 0x2A, 0x39, 0xCD } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000005, 0x0000012C, { { 0x82, 0x30, 0x00, 0xD6, 0xFA, 0x53, 0x17, 0x69, 0x64, 0xCA, 0xFE, 0x0F, 0x92, 0xEF, 0x87, 0x7A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNpcMaxStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000052, 0x00001D23, { { 0x95, 0xB0, 0xBF, 0xF9, 0xE6, 0x8C, 0xCF, 0x9B, 0x36, 0xE3, 0x81, 0x22, 0x1E, 0x68, 0x9E, 0xBE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000064, 0x00002341, { { 0xC0, 0xA6, 0xCD, 0x5E, 0x8E, 0xFA, 0x89, 0xE4, 0x98, 0xE5, 0x3D, 0x13, 0x6B, 0xE7, 0x8F, 0x6E } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000003E, 0x00001613, { { 0x4E, 0x31, 0x7F, 0xC4, 0xC7, 0x9C, 0xB5, 0x7D, 0x36, 0x85, 0xD8, 0x81, 0xE2, 0x06, 0xF9, 0xAE } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseOkStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000003, 0x0000009A, { { 0x88, 0xD2, 0x76, 0x1C, 0x80, 0x02, 0xC5, 0x5B, 0x35, 0x57, 0x0E, 0xEB, 0xCA, 0xD6, 0xC9, 0x2E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000003, 0x0000009A, { { 0x88, 0xD2, 0x76, 0x1C, 0x80, 0x02, 0xC5, 0x5B, 0x35, 0x57, 0x0E, 0xEB, 0xCA, 0xD6, 0xC9, 0x2E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNpcJoinStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000015, 0x000006C7, { { 0x5A, 0xBF, 0xA2, 0x3E, 0x36, 0xC4, 0x23, 0xC8, 0xA8, 0x86, 0x06, 0x80, 0xAF, 0xB1, 0xDD, 0xAB } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000A93, { { 0x4A, 0xFD, 0x70, 0xB7, 0x7A, 0x0B, 0x7C, 0x32, 0x07, 0x5A, 0x4A, 0xC7, 0x84, 0x9D, 0x2D, 0xF3 } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000018, 0x00000848, { { 0xC9, 0xEE, 0x71, 0x04, 0xA2, 0xA5, 0x52, 0x87, 0x7C, 0x6D, 0x3C, 0x15, 0x7D, 0x41, 0xE0, 0xE7 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCancelStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000007, 0x000001A6, { { 0x21, 0xED, 0xF9, 0x71, 0xEF, 0x74, 0xD7, 0x9E, 0xF3, 0x02, 0xE5, 0x03, 0x06, 0xDE, 0xD5, 0x09 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x0000027A, { { 0xBD, 0x88, 0xB2, 0xA0, 0xAF, 0x8D, 0xFE, 0x5B, 0xAC, 0xDF, 0xB5, 0x9F, 0xA0, 0x23, 0x6E, 0xAE } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000145, { { 0x22, 0x45, 0x35, 0xC6, 0x28, 0x00, 0x22, 0xAA, 0xD1, 0x15, 0x48, 0xE6, 0xE5, 0x62, 0x73, 0x37 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseAbortStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000006, 0x00000178, { { 0xDD, 0xEC, 0x68, 0x6D, 0x2E, 0x10, 0x34, 0x94, 0x46, 0x25, 0xF9, 0xAB, 0x29, 0x27, 0x32, 0xA8 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000145, { { 0x22, 0x45, 0x35, 0xC6, 0x28, 0x00, 0x22, 0xAA, 0xD1, 0x15, 0x48, 0xE6, 0xE5, 0x62, 0x73, 0x37 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsMainProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000067, 0x0000245E, { { 0xD9, 0xE0, 0x74, 0x9D, 0x43, 0x96, 0xDC, 0x3B, 0xDF, 0x90, 0x03, 0xDE, 0x91, 0xE6, 0xA0, 0x1E } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000068, 0x000025D9, { { 0x17, 0xEB, 0xAB, 0x4F, 0x95, 0xD1, 0x7F, 0xEB, 0xF4, 0x92, 0x42, 0xD1, 0xD2, 0xA8, 0xC4, 0xA8 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000069, 0x0000265B, { { 0x4C, 0xA9, 0x38, 0x28, 0xE1, 0xD0, 0xE3, 0x35, 0xBB, 0xDC, 0xFB, 0x6B, 0xAB, 0xB1, 0x62, 0x88 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsSaveLoadProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000077, 0x00002513, { { 0x70, 0xD9, 0x48, 0xC2, 0x3A, 0x38, 0x1D, 0xD0, 0x8B, 0x90, 0x08, 0x8D, 0x80, 0xF5, 0x24, 0x59 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000086, 0x00002D2F, { { 0x2B, 0x48, 0x5C, 0x78, 0xF9, 0xB9, 0xD6, 0xA8, 0x1D, 0xF4, 0x97, 0xAC, 0xF1, 0x09, 0x26, 0xA7 } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x000000A9, 0x00003850, { { 0xC3, 0x09, 0x7B, 0x18, 0xD6, 0x08, 0x0E, 0x2A, 0xB6, 0x66, 0x43, 0x14, 0xD7, 0x59, 0x34, 0xF7 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x000000A2, 0x00003942, { { 0x6E, 0x10, 0x87, 0x4B, 0x80, 0xE8, 0x89, 0xC4, 0x31, 0xDC, 0xAC, 0xA9, 0xA3, 0x8D, 0x79, 0x41 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsOnOffProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000007, 0x00000178, { { 0x4D, 0xA7, 0x13, 0x00, 0x05, 0xF2, 0x44, 0xCB, 0xF7, 0x12, 0x72, 0x54, 0xDE, 0x35, 0x04, 0xEC } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000007, 0x00000178, { { 0xC7, 0x6F, 0x60, 0x72, 0x47, 0x89, 0x47, 0xF0, 0x29, 0x57, 0x45, 0x41, 0xD5, 0x80, 0x40, 0x7B } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsSpellsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000001EF, 0x0000A0D0, { { 0xBA, 0x80, 0x5C, 0xAB, 0x93, 0x19, 0x53, 0x45, 0x17, 0xBC, 0x86, 0x5B, 0x1B, 0x01, 0x3E, 0x98 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x000001EA, 0x00009DE0, { { 0x00, 0xB0, 0x1F, 0xE7, 0x16, 0x48, 0x51, 0x25, 0xE5, 0xD8, 0xA1, 0x31, 0x13, 0x81, 0x8D, 0xB6 } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x000001FB, 0x0000A658, { { 0xAD, 0x6A, 0xFE, 0x13, 0xE5, 0xEA, 0x6A, 0xD1, 0xC9, 0x80, 0x1C, 0xEE, 0xD7, 0x2A, 0xF8, 0xB2 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000222, 0x0000B1C9, { { 0x24, 0xC8, 0x9B, 0x51, 0xEE, 0x45, 0x14, 0xFC, 0x1B, 0xE4, 0x37, 0x8B, 0xEC, 0x94, 0xD9, 0x0B } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsRestProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000000B3, 0x00003CED, { { 0x82, 0xF9, 0xA1, 0x74, 0xE6, 0x95, 0xA4, 0xFC, 0xE6, 0x5E, 0xB4, 0x43, 0x7D, 0x10, 0xFD, 0x12 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x000000B3, 0x00003BE4, { { 0x7F, 0xE8, 0xFE, 0xA4, 0xD9, 0x5C, 0x49, 0x66, 0x38, 0x8F, 0x84, 0xB8, 0xF5, 0x03, 0xCD, 0x70 } } } }, // EOB
+ { DE_DEU, kPlatformUnknown, { 0x000000C0, 0x000040A6, { { 0x05, 0x97, 0x45, 0x72, 0xE2, 0x33, 0xBE, 0xDE, 0x56, 0x26, 0x26, 0x15, 0x3A, 0x56, 0x93, 0xFD } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsDropProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00000FCA, { { 0x88, 0xCB, 0xD2, 0xB3, 0xDA, 0x36, 0x97, 0x3D, 0xB8, 0x75, 0xFF, 0x36, 0xE1, 0x4E, 0xF4, 0x6D } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000039, 0x0000131E, { { 0x74, 0x0B, 0xE9, 0x04, 0x76, 0x26, 0xD2, 0xE8, 0x03, 0x48, 0x38, 0x18, 0xAC, 0x19, 0xBD, 0x7E } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000033, 0x0000119C, { { 0x8F, 0x2B, 0xC3, 0x01, 0xB2, 0xDE, 0x1F, 0xC6, 0x82, 0xC3, 0x58, 0x7C, 0x50, 0x23, 0x37, 0x65 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsExitProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000E3D, { { 0x1C, 0xD6, 0x39, 0xA9, 0xC7, 0x3D, 0x32, 0x4A, 0xF2, 0xAE, 0xEC, 0x08, 0x6F, 0xC7, 0xA6, 0x7B } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000002D, 0x00000E68, { { 0x4B, 0x2F, 0x65, 0x39, 0x69, 0xE7, 0x3D, 0x7B, 0x10, 0x15, 0x6F, 0x1F, 0xD8, 0x8E, 0xEA, 0x55 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000026, 0x00000CBD, { { 0x0C, 0x5D, 0xE4, 0xD2, 0x6F, 0xA3, 0x91, 0xDA, 0x5F, 0xE2, 0x57, 0x77, 0x74, 0x22, 0xE7, 0x85 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsStarveProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000003D, 0x0000150C, { { 0x40, 0xEB, 0x79, 0xC3, 0x99, 0x4C, 0xEA, 0xCD, 0x8A, 0xB4, 0x54, 0xB8, 0xAA, 0xEC, 0xAD, 0x4F } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000037, 0x00001296, { { 0x51, 0x3C, 0x90, 0x91, 0x4E, 0x1C, 0x73, 0x2F, 0x0C, 0x7A, 0x6D, 0x03, 0x1E, 0x54, 0x65, 0xF1 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000030, 0x00001057, { { 0xF3, 0x5E, 0xFC, 0xC3, 0x9D, 0xB5, 0xFE, 0x4E, 0x66, 0x9D, 0x6A, 0xC6, 0x61, 0xC8, 0x0A, 0x17 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsScribeProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000103, 0x000055E1, { { 0x1B, 0x56, 0xD2, 0x78, 0x3F, 0x67, 0x7A, 0x5B, 0xB6, 0x2B, 0x70, 0x3D, 0x6A, 0xBB, 0x08, 0x0A } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000010C, 0x00005B1C, { { 0xD7, 0xBF, 0x37, 0x21, 0xA2, 0x63, 0x8C, 0x6A, 0x02, 0x92, 0x13, 0x32, 0xD6, 0xA6, 0x1C, 0xDC } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000100, 0x0000560F, { { 0x69, 0x15, 0x2C, 0x2D, 0xE7, 0x40, 0x4A, 0xE0, 0x86, 0x0D, 0xC8, 0x66, 0x87, 0x1C, 0x27, 0x0B } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsDrop2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000084, 0x00002ACE, { { 0xAB, 0x78, 0x42, 0x29, 0xFB, 0xC5, 0x34, 0x96, 0x9D, 0x8A, 0x21, 0x46, 0xE7, 0x6B, 0x06, 0xBA } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000008C, 0x00002D02, { { 0x11, 0x3F, 0x0C, 0xB2, 0xBF, 0xA7, 0x39, 0x23, 0xDC, 0x00, 0xB4, 0xEA, 0x5E, 0xFE, 0x40, 0xB7 } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x0000008E, 0x00002FFB, { { 0xCE, 0x7A, 0xCC, 0xA4, 0x02, 0x54, 0x1A, 0x78, 0xF1, 0xFC, 0xE6, 0x6C, 0x76, 0xCD, 0xFD, 0x9E } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000090, 0x000031CE, { { 0x01, 0x72, 0x59, 0xBE, 0x62, 0x72, 0xD4, 0x99, 0x76, 0xC9, 0x92, 0x0E, 0xE9, 0x1A, 0xCD, 0x65 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsHeadProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000B27, { { 0x04, 0x06, 0x01, 0xF8, 0x50, 0x54, 0x11, 0x61, 0xFF, 0xB4, 0xE1, 0x97, 0xFA, 0x08, 0xAA, 0x1B } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000CF5, { { 0x96, 0xD6, 0xB5, 0xB0, 0x2E, 0x71, 0xA4, 0x0A, 0x34, 0x41, 0x94, 0x02, 0x2F, 0xB0, 0x4C, 0x36 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000025, 0x00000D92, { { 0xE4, 0x73, 0x2D, 0x29, 0xAD, 0x30, 0xE5, 0x8D, 0xAE, 0xC6, 0xD7, 0xF5, 0x35, 0xD8, 0xA4, 0x98 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsPoisonProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00001077, { { 0x14, 0x7E, 0xFC, 0xE0, 0x88, 0xFE, 0x86, 0xA8, 0x96, 0x94, 0xB1, 0x71, 0x90, 0x47, 0x2D, 0x78 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000036, 0x000013A2, { { 0x18, 0xD9, 0x1D, 0xE5, 0x3D, 0xFD, 0x52, 0xB6, 0x18, 0x17, 0x61, 0xE8, 0xA5, 0x32, 0x9F, 0xA8 } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x0000002D, 0x00001006, { { 0xD6, 0x0B, 0x11, 0x79, 0xAD, 0x61, 0x5B, 0x3A, 0x72, 0x7D, 0x53, 0x6F, 0xA9, 0x08, 0x73, 0xDC } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000035, 0x000013BE, { { 0x73, 0x38, 0x76, 0x2C, 0x42, 0x87, 0x43, 0x7E, 0x8E, 0x4C, 0x41, 0x57, 0x3F, 0x04, 0xBA, 0x11 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsMgcProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000857, { { 0xD1, 0x9E, 0xBF, 0xF7, 0xCF, 0xF7, 0xD0, 0x94, 0x14, 0x56, 0xD2, 0x4F, 0x59, 0x91, 0x57, 0x52 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000020, 0x0000086C, { { 0x12, 0x36, 0x84, 0x2F, 0x00, 0xAD, 0x12, 0x42, 0x3A, 0xA2, 0xC5, 0xC9, 0x59, 0x90, 0x64, 0x5F } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000021, 0x0000090B, { { 0x26, 0xA7, 0x58, 0x7C, 0x0C, 0x9E, 0x67, 0xB9, 0x05, 0xE6, 0x91, 0x59, 0xE3, 0xDF, 0x9C, 0x52 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsPrefsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000041, 0x00001392, { { 0xB1, 0x7E, 0xE3, 0x73, 0xB2, 0xA2, 0x63, 0x39, 0x20, 0xE8, 0xF3, 0x38, 0x45, 0xB6, 0xAC, 0xC8 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000045, 0x000015F6, { { 0x53, 0xBA, 0x7E, 0x6D, 0x24, 0x88, 0x2C, 0x19, 0x10, 0x71, 0x6F, 0xAB, 0x85, 0x8E, 0x97, 0xF6 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000003D, 0x00001246, { { 0x03, 0xFB, 0x7C, 0x80, 0x33, 0x45, 0x6C, 0x27, 0x89, 0x7B, 0x7C, 0xAC, 0x7A, 0xE1, 0xDE, 0x49 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsRest2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000004D, 0x00001744, { { 0x63, 0xA5, 0x6F, 0x09, 0x6F, 0x5E, 0x4B, 0x89, 0xFF, 0x33, 0x63, 0xCB, 0xAA, 0x04, 0x59, 0x63 } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000004D, 0x00001769, { { 0x2C, 0xA9, 0x7D, 0x4C, 0xC5, 0x13, 0xE2, 0xEB, 0x89, 0x6C, 0xAE, 0x25, 0xC3, 0x3E, 0x56, 0x7E } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x00000052, 0x000017F6, { { 0x7C, 0x49, 0xFC, 0x89, 0x90, 0x5D, 0xFF, 0x86, 0x86, 0xE9, 0xB2, 0x29, 0x60, 0xB2, 0x22, 0x7F } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x0000004C, 0x000014FF, { { 0x0C, 0x94, 0x6D, 0x5A, 0x42, 0x68, 0xE0, 0xDC, 0xCD, 0xB9, 0x1A, 0x4A, 0xC1, 0xCC, 0xE6, 0x91 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsRest3Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000DF4, { { 0x42, 0x90, 0x49, 0xA7, 0x2E, 0x61, 0x77, 0x7F, 0x9F, 0x53, 0xAD, 0x3C, 0x87, 0xE2, 0x0E, 0x36 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000027, 0x00000D45, { { 0x8D, 0xAB, 0xBF, 0x57, 0xF3, 0x2C, 0x3F, 0x93, 0xBF, 0x33, 0x58, 0x2D, 0x97, 0x78, 0x71, 0x7F } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsRest4Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000029, 0x00000DEC, { { 0x1C, 0x86, 0x3D, 0x40, 0x2C, 0x5E, 0xCA, 0xA0, 0xA1, 0xB8, 0x23, 0x42, 0x9C, 0x6B, 0xFA, 0xBB } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x00000034, 0x00001238, { { 0xE9, 0x95, 0x27, 0x79, 0x1C, 0x0D, 0xF5, 0x94, 0x92, 0xFC, 0xCA, 0x22, 0x17, 0xA8, 0x36, 0x96 } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x0000002A, 0x00000DEB, { { 0x0E, 0xD3, 0xC5, 0xA9, 0x8B, 0x06, 0x57, 0xB0, 0x20, 0x1A, 0xEE, 0x42, 0x49, 0x2E, 0xA1, 0x50 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000033, 0x00001189, { { 0x56, 0x1B, 0x6B, 0x00, 0x47, 0xFD, 0x56, 0xD3, 0x12, 0x03, 0x79, 0x7D, 0xFF, 0x83, 0xCF, 0xAA } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsDefeatProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000006D, 0x00002643, { { 0x94, 0xBA, 0xAC, 0xA4, 0x87, 0x6A, 0xEA, 0x7D, 0x98, 0x6E, 0x09, 0x82, 0xE0, 0x16, 0x65, 0x4F } } } }, // EOB1
+ { DE_DEU, kPlatformUnknown, { 0x0000006A, 0x00002456, { { 0xE0, 0x9A, 0x10, 0xE2, 0x73, 0x42, 0xF6, 0x79, 0xCB, 0x65, 0xA2, 0x50, 0xF0, 0x2B, 0xFD, 0x9B } } } }, // EOB1
+ { EN_ANY, kPlatformUnknown, { 0x00000056, 0x00001E4F, { { 0x97, 0x07, 0x5F, 0xA2, 0x0D, 0x58, 0xD2, 0xDF, 0xD6, 0x04, 0xA2, 0x16, 0x0B, 0x1F, 0x7E, 0x23 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000042, 0x000016B1, { { 0xCA, 0x57, 0xDC, 0x2B, 0xC6, 0xC7, 0x78, 0x1E, 0x84, 0x0A, 0x10, 0x88, 0xCA, 0xCD, 0xFF, 0x89 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsTransferProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000114, 0x00005E09, { { 0xBF, 0xCE, 0x7F, 0xE4, 0x17, 0x15, 0xC6, 0x10, 0xDF, 0x16, 0xF9, 0x3C, 0xDA, 0x29, 0xA0, 0xA6 } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x000000D1, 0x00004811, { { 0x2E, 0x00, 0xD1, 0xA6, 0x9F, 0x53, 0xC5, 0x4B, 0x25, 0x4A, 0xAC, 0x9E, 0x11, 0x6C, 0x58, 0x5E } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsSpecProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000006F, 0x00002785, { { 0xAE, 0xC7, 0x88, 0x89, 0x39, 0xB8, 0xF7, 0xB4, 0xD5, 0x82, 0xBC, 0x46, 0xA1, 0xCB, 0x04, 0x1F } } } }, // EOB2
+ { DE_DEU, kPlatformUnknown, { 0x00000075, 0x00002871, { { 0xB4, 0x38, 0x0F, 0x94, 0x8B, 0xB1, 0x8D, 0xA3, 0xF8, 0xDA, 0x37, 0x75, 0x6F, 0x39, 0x3E, 0xB5 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuStringsSpellNoProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x000000A5, { { 0x0D, 0x4A, 0x8B, 0x40, 0x70, 0x79, 0xCD, 0xB3, 0x0F, 0x5A, 0x5A, 0x3F, 0x6E, 0xE8, 0xF9, 0x74 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMenuYesNoStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000007, 0x000001EE, { { 0x8C, 0xF1, 0x35, 0x1F, 0xD6, 0x1F, 0xA4, 0xA1, 0xD6, 0xD6, 0x0A, 0x27, 0xB9, 0xFC, 0x9E, 0x62 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000235, { { 0xC7, 0x06, 0xCF, 0xA8, 0xC0, 0xDE, 0xD4, 0x8C, 0x7F, 0xA2, 0x3A, 0xD3, 0x48, 0x51, 0x36, 0x89 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSpellLevelsMageProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000001A, 0x00000042, { { 0x4F, 0xA3, 0x70, 0x0F, 0x6D, 0xB4, 0xC2, 0xAF, 0x12, 0xB4, 0x2E, 0x26, 0xEF, 0x0B, 0x37, 0x92 } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000074, { { 0xBE, 0x10, 0xFA, 0xD9, 0xB3, 0xB0, 0x4E, 0x73, 0xC9, 0xA1, 0xE2, 0xCE, 0xE8, 0xEC, 0x85, 0x0F } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSpellLevelsClericProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000045, { { 0x9E, 0xDA, 0xF2, 0x94, 0x3E, 0x0B, 0xA0, 0x23, 0x08, 0x41, 0xD5, 0x3C, 0x61, 0x77, 0xFD, 0x78 } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x0000001D, 0x00000066, { { 0xDB, 0x7F, 0x93, 0xE2, 0x2E, 0xCF, 0x69, 0xCC, 0x2A, 0xEF, 0x7C, 0x1E, 0x92, 0x6B, 0x51, 0x4E } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNumSpellsClericProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000032, 0x0000004C, { { 0x87, 0xDD, 0xD0, 0xF8, 0x52, 0x84, 0x26, 0xC4, 0x9C, 0x5D, 0x0E, 0x46, 0x1A, 0xE8, 0x19, 0xD6 } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x00000088, 0x00000114, { { 0xA0, 0xB7, 0x2F, 0xED, 0x50, 0xE7, 0xC6, 0x11, 0xC9, 0x25, 0xB2, 0xB9, 0x81, 0xFB, 0xD8, 0x59 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNumSpellsWisAdjProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000028, 0x0000001D, { { 0xA5, 0xCA, 0x1D, 0x96, 0xAE, 0x89, 0xBC, 0x7A, 0x32, 0x50, 0xCE, 0x44, 0x5D, 0x93, 0x25, 0x4B } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x0000001D, { { 0x07, 0x31, 0x0D, 0x12, 0x55, 0x11, 0x11, 0xB6, 0x68, 0xC7, 0xEE, 0xDE, 0xC6, 0xED, 0x82, 0x5A } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNumSpellsPalProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000012, { { 0x96, 0x7E, 0x17, 0x9E, 0xFD, 0x39, 0xC9, 0x3A, 0xB7, 0x3E, 0x8D, 0xA8, 0xED, 0xA3, 0x07, 0xEB } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x00000088, 0x0000002F, { { 0x19, 0x1A, 0x9B, 0x42, 0xA0, 0x67, 0x10, 0x1A, 0xAC, 0x00, 0x0F, 0xF7, 0xBE, 0x04, 0x61, 0x36 } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNumSpellsMageProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x0000005E, { { 0x61, 0x30, 0x1A, 0x74, 0x9B, 0x4C, 0x8C, 0x83, 0xD5, 0xE6, 0x39, 0x6E, 0xCA, 0x18, 0x16, 0x63 } } } }, // EOB1
+ { UNK_LANG, kPlatformUnknown, { 0x00000114, 0x00000102, { { 0x33, 0xEE, 0x32, 0x9C, 0xB2, 0xB3, 0x60, 0x66, 0x91, 0xE0, 0x90, 0x0E, 0x8F, 0xE1, 0xA5, 0x4A } } } }, // EOB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsHpProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000352, { { 0x9C, 0x13, 0x3D, 0x2A, 0x68, 0x11, 0x81, 0xA4, 0x77, 0x54, 0x47, 0x43, 0xA1, 0xDA, 0x55, 0x50 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002AC, { { 0xBB, 0xD5, 0x36, 0xB2, 0x8A, 0x60, 0x78, 0x04, 0x46, 0x2D, 0x35, 0x59, 0x3E, 0x42, 0xB9, 0x83 } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002B8, { { 0x77, 0x76, 0xA0, 0x38, 0xE9, 0xB6, 0x0C, 0x43, 0xFE, 0x5A, 0x51, 0xC7, 0x1B, 0x59, 0xD3, 0x63 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsWp1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x00000253, { { 0x1D, 0xF4, 0xB9, 0x56, 0xE6, 0x16, 0x7D, 0x08, 0xA4, 0x00, 0x1E, 0x1A, 0x60, 0x49, 0xE9, 0x29 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x00000236, { { 0x17, 0xEC, 0x54, 0xA0, 0x43, 0xFB, 0x52, 0x66, 0xC5, 0x44, 0x1B, 0xDF, 0x95, 0x47, 0x62, 0xB3 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsWp2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000371, { { 0x42, 0xF4, 0x52, 0x60, 0x20, 0xFC, 0x34, 0x94, 0x49, 0x1E, 0x67, 0x54, 0xB5, 0x6A, 0x97, 0x2A } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000010, 0x000003D6, { { 0x10, 0xD1, 0x77, 0x6C, 0xCD, 0x00, 0x94, 0xC7, 0xD0, 0x53, 0x47, 0x9F, 0x70, 0x77, 0x50, 0xD1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsWrProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000014, 0x00000477, { { 0xAA, 0x26, 0xD5, 0xFD, 0xE6, 0x16, 0x53, 0x19, 0x39, 0x46, 0xEB, 0xCD, 0x88, 0xEC, 0x5E, 0xCB } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000015, 0x000004A4, { { 0x53, 0x54, 0x37, 0x35, 0x27, 0x1F, 0xB9, 0x09, 0x9C, 0xE9, 0x5E, 0x11, 0xBD, 0x8F, 0x15, 0xAE } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000011, 0x00000402, { { 0xE0, 0x92, 0xF4, 0x49, 0xB7, 0x74, 0xBB, 0xEB, 0x90, 0x0D, 0x75, 0x65, 0xBB, 0xF6, 0xB6, 0xE9 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsSt1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000003B, 0x0000104B, { { 0xC0, 0xD9, 0x0F, 0x7B, 0x6D, 0x17, 0x02, 0xBD, 0x7B, 0xB1, 0x76, 0x72, 0xA1, 0xEE, 0x5E, 0xAD } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000039, 0x00000F69, { { 0x09, 0x42, 0x35, 0x47, 0x48, 0x50, 0x05, 0x09, 0x3B, 0x81, 0x14, 0x01, 0xF9, 0xB5, 0x04, 0xB2 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsSt2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000045, 0x000012E7, { { 0x49, 0x48, 0x30, 0x73, 0xDA, 0x42, 0xDB, 0xB9, 0xF4, 0x07, 0x00, 0x26, 0x96, 0x1F, 0x02, 0x4E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000042, 0x0000114D, { { 0x88, 0x6E, 0x45, 0xF9, 0xAE, 0xEF, 0xE8, 0x54, 0x9C, 0xEF, 0xD2, 0x73, 0x78, 0x41, 0xD9, 0xAF } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharGuiStringsInProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000023, 0x000008CB, { { 0xF0, 0xE9, 0xF1, 0x05, 0x47, 0x3A, 0x5D, 0xCA, 0x9F, 0x75, 0x9D, 0x51, 0x9E, 0xEC, 0x9B, 0x67 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000810, { { 0xF5, 0x39, 0x1E, 0x0E, 0x65, 0xEF, 0x09, 0xF2, 0x8D, 0x90, 0xC4, 0xF6, 0x8A, 0xED, 0xAD, 0xDF } } } }, // EoB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000023, 0x00000940, { { 0xAB, 0xF6, 0xE4, 0xD4, 0x07, 0x07, 0xDA, 0x92, 0x71, 0xE2, 0x73, 0x1F, 0x06, 0xE3, 0x12, 0xEB } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings7Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000022, 0x00000B95, { { 0xCB, 0xB7, 0x16, 0x77, 0x9C, 0xEB, 0x70, 0x83, 0xB2, 0xBE, 0xF7, 0x67, 0xB1, 0xE9, 0xD0, 0x5E } } } }, // EOB 1 + 2
+ { DE_DEU, kPlatformUnknown, { 0x0000002B, 0x00000EE3, { { 0xC8, 0x81, 0x23, 0xC3, 0x03, 0xBD, 0x4C, 0xF5, 0x41, 0x47, 0xFA, 0x32, 0xA0, 0x98, 0x0A, 0x8E } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000023, 0x00000C68, { { 0xF5, 0x55, 0x09, 0xD8, 0x73, 0xF8, 0xF0, 0xE3, 0x14, 0xCD, 0x78, 0x84, 0x58, 0xB0, 0x64, 0x5B } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings81Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000B03, { { 0x44, 0xFC, 0xC2, 0x23, 0x4B, 0x78, 0xA8, 0xF8, 0xA5, 0x46, 0x5B, 0x89, 0x1F, 0x9D, 0x4E, 0xFA } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000A52, { { 0x81, 0xDA, 0x22, 0x8A, 0xD3, 0x7D, 0xE7, 0xF5, 0x39, 0x6A, 0x62, 0x41, 0xE5, 0x8D, 0x45, 0x20 } } } }, // EOB 1
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings82Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000023, 0x00000B0F, { { 0xBD, 0xED, 0xFE, 0xFD, 0x40, 0x95, 0x42, 0x21, 0x1F, 0x55, 0x67, 0x65, 0xA8, 0xC3, 0x99, 0xA1 } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x0000001A, 0x00000789, { { 0x8C, 0xF3, 0xB8, 0x3C, 0x6E, 0x85, 0xED, 0xD6, 0x2B, 0xD7, 0xAE, 0x8A, 0xFC, 0x25, 0x5E, 0x8F } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings9Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000001C, 0x00000952, { { 0x2F, 0x41, 0x17, 0x95, 0xF8, 0xC8, 0x4E, 0x88, 0xC6, 0x83, 0x38, 0x9B, 0xAB, 0x23, 0x48, 0xB9 } } } }, // EOB 1 + 2
+ { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x0000099F, { { 0x5E, 0xB4, 0xBE, 0xA9, 0x0C, 0xB2, 0xF2, 0x4E, 0x63, 0xF8, 0x7B, 0x98, 0x67, 0x2D, 0xC9, 0xBF } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x00000A52, { { 0xD4, 0x65, 0x3F, 0x35, 0xDD, 0x8A, 0x33, 0x44, 0x2F, 0x8C, 0xAC, 0x2F, 0xEC, 0x96, 0x5B, 0x02 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings12Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000010, 0x00000503, { { 0x81, 0x22, 0xE9, 0x0F, 0xA5, 0xEA, 0xFE, 0xB5, 0xB6, 0x43, 0x36, 0x22, 0x87, 0x24, 0x2C, 0x40 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000014, 0x00000683, { { 0x5A, 0xF8, 0xAA, 0x16, 0x97, 0xBE, 0xD5, 0x22, 0xCE, 0x3F, 0xBC, 0x00, 0x44, 0xC1, 0x27, 0xD3 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings131Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000B, 0x0000027A, { { 0x70, 0x1A, 0x83, 0x35, 0x0A, 0x51, 0xEA, 0x27, 0x6E, 0xCD, 0xEB, 0xAD, 0x20, 0x74, 0x28, 0x7D } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000C, 0x000002EE, { { 0xFE, 0xF9, 0x45, 0xE7, 0x89, 0x7B, 0xA4, 0x82, 0x90, 0x63, 0x91, 0x5B, 0x9E, 0x83, 0x80, 0x10 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseCharStatusStrings132Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x00000286, { { 0x00, 0x1E, 0x11, 0xCC, 0x57, 0xFA, 0xEF, 0x2A, 0x0A, 0xFF, 0xFF, 0xE9, 0x3E, 0xA3, 0x62, 0x21 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x0000018A, { { 0x10, 0x54, 0x6F, 0xC3, 0x08, 0xC4, 0xD2, 0xBB, 0x34, 0x0A, 0x04, 0x65, 0x49, 0xFC, 0x5E, 0x15 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseLevelGainStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000002A, 0x00000CC9, { { 0xF2, 0x1F, 0xDF, 0xE0, 0xA5, 0x86, 0x46, 0xF4, 0xFC, 0x71, 0xB0, 0x22, 0x32, 0x46, 0x71, 0xB6 } } } }, // EOB 1
+ { DE_DEU, kPlatformUnknown, { 0x00000029, 0x00000D38, { { 0x18, 0xA3, 0xFD, 0xCC, 0xF2, 0x68, 0x18, 0x9E, 0x80, 0x5A, 0xC0, 0x22, 0xFD, 0x15, 0x83, 0x84 } } } }, // EOB 1
+ { EN_ANY, kPlatformUnknown, { 0x0000001C, 0x0000078C, { { 0x15, 0x70, 0x37, 0xE4, 0x0B, 0x50, 0x32, 0xCA, 0xAE, 0xF6, 0x81, 0xD0, 0x98, 0x9B, 0x36, 0x8A } } } }, // EOB 2
+ { DE_DEU, kPlatformUnknown, { 0x0000001F, 0x000008E3, { { 0x07, 0x2C, 0x51, 0x5E, 0x47, 0xAA, 0xCC, 0x27, 0x77, 0xD8, 0x17, 0x59, 0x6B, 0xBE, 0xF5, 0x87 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExperienceTable0Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000C9E, { { 0xDB, 0x47, 0xD9, 0x0D, 0x6E, 0x68, 0x04, 0xE4, 0x17, 0xCB, 0x60, 0x89, 0x35, 0x3E, 0xA9, 0xEE } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000E24, { { 0xBC, 0xF3, 0x96, 0x8A, 0xD5, 0x0C, 0xAA, 0x94, 0xBB, 0xB5, 0x08, 0x73, 0xF8, 0x5C, 0xF0, 0xA9 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExperienceTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000C80, { { 0x35, 0x45, 0x0D, 0x4F, 0xE0, 0x84, 0xA2, 0x1B, 0xB0, 0x0D, 0x60, 0x4D, 0x1D, 0xD5, 0x6C, 0x72 } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000E6F, { { 0xBD, 0x3F, 0x42, 0x54, 0x75, 0x41, 0xAA, 0x58, 0x0D, 0xD8, 0xC0, 0x07, 0x63, 0x35, 0x83, 0x6B } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExperienceTable2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000E10, { { 0xA5, 0x4D, 0xCB, 0xF3, 0x5F, 0x89, 0x71, 0x24, 0x6F, 0x70, 0xCA, 0x51, 0xAA, 0x1C, 0x0A, 0x97 } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00001149, { { 0xF9, 0xF1, 0x7E, 0x6B, 0xB2, 0xFE, 0x04, 0xC4, 0x29, 0x3D, 0xE3, 0x42, 0x5D, 0x92, 0x77, 0x53 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExperienceTable3Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000ADC, { { 0x42, 0x2E, 0x2E, 0xF5, 0xF8, 0x65, 0x69, 0x28, 0x50, 0x67, 0x43, 0xDF, 0x91, 0x67, 0x9B, 0x09 } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000C94, { { 0x67, 0x09, 0x98, 0x19, 0x1F, 0x6B, 0x4D, 0xEB, 0x1D, 0x4D, 0x55, 0xA8, 0xFF, 0xD1, 0xAB, 0xE1 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExperienceTable4Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000DA7, { { 0x45, 0x58, 0x34, 0xC9, 0x09, 0x61, 0xD7, 0xE1, 0xF8, 0x68, 0x80, 0xBC, 0xEF, 0x7A, 0x24, 0x03 } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000FE1, { { 0x26, 0x7F, 0x83, 0x53, 0x4A, 0xC6, 0xA2, 0x7B, 0xD2, 0xFB, 0x73, 0xB2, 0x08, 0x0A, 0xF7, 0xFD } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseWllFlagPresetProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000BD9, { { 0xBE, 0x5A, 0xA6, 0xC8, 0xE4, 0x04, 0x4C, 0x32, 0x35, 0x61, 0x48, 0x73, 0x29, 0xA9, 0x99, 0x54 } } } }, // EoB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000BC9, { { 0x56, 0xC0, 0x66, 0x4D, 0xE1, 0x3A, 0x27, 0x89, 0x9D, 0x73, 0x63, 0x93, 0x08, 0x2B, 0x13, 0xBC } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscShapeCoordsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000168, 0x0000F206, { { 0xB8, 0xDF, 0x10, 0xBB, 0x06, 0xA1, 0x46, 0xC6, 0xD2, 0xE3, 0xD7, 0x64, 0x4A, 0xC6, 0x40, 0xC0 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleOffsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000010F, { { 0x7B, 0x7D, 0x03, 0xDE, 0x33, 0x95, 0xB8, 0xFD, 0xAD, 0x72, 0x44, 0x7D, 0x47, 0xFE, 0x04, 0x3D } } } }, // EoB1
+ { UNK_LANG, kPlatformPC, { 0x00000035, 0x00000139, { { 0x74, 0x63, 0x18, 0xE7, 0xAB, 0xA4, 0x22, 0xCF, 0x32, 0x19, 0x28, 0x9E, 0x7F, 0x97, 0xA7, 0x37 } } } }, // EoB2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000026, { { 0x5D, 0x17, 0xFB, 0x6A, 0x7F, 0x51, 0x55, 0xFB, 0x55, 0xB9, 0x50, 0xB0, 0x7F, 0xE4, 0xDF, 0x67 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult3Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000013, { { 0xEE, 0xB6, 0xA5, 0x6E, 0x0C, 0x8E, 0xAB, 0x38, 0xD9, 0x23, 0xC6, 0x21, 0xB3, 0x7E, 0x97, 0x78 } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000019, { { 0x86, 0xD8, 0x04, 0xD2, 0x66, 0x6F, 0x43, 0x24, 0x2E, 0x93, 0xB9, 0xAE, 0xEB, 0x44, 0xCA, 0x48 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult4Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult5Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000020, { { 0x37, 0xA1, 0x0D, 0x64, 0xD6, 0x1E, 0xBA, 0xA3, 0xD9, 0x0A, 0x6C, 0xAB, 0x6B, 0xA3, 0x59, 0x24 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorScaleMult6Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorType5OffsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000012, { { 0x73, 0xBB, 0x61, 0xD6, 0xA7, 0x75, 0xC8, 0x7B, 0xD6, 0xA4, 0x53, 0x1B, 0x54, 0xE9, 0x30, 0x3F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorXEProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000010F, { { 0x7B, 0x7D, 0x03, 0xDE, 0x33, 0x95, 0xB8, 0xFD, 0xAD, 0x72, 0x44, 0x7D, 0x47, 0xFE, 0x04, 0x3D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000D7, { { 0x25, 0xAE, 0xF4, 0x99, 0xE8, 0x97, 0x47, 0xAE, 0x75, 0xF3, 0xA9, 0x70, 0x4C, 0x70, 0xF3, 0x11 } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000D8, { { 0xB4, 0xAA, 0x0D, 0x91, 0x58, 0x22, 0x16, 0xCF, 0xC5, 0x9D, 0x8D, 0xA1, 0xB4, 0x40, 0x83, 0x0E } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY3Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000058, { { 0xF0, 0x3C, 0x3B, 0x97, 0x10, 0x95, 0x89, 0x18, 0x3B, 0xA9, 0xE8, 0x77, 0x9B, 0x10, 0xDC, 0xF1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY4Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000076, { { 0x84, 0xB6, 0x8F, 0x7E, 0x9A, 0x17, 0xAC, 0x59, 0xB1, 0x4C, 0xDE, 0x11, 0xA6, 0x95, 0xE3, 0x76 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY5Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000D9, { { 0x5D, 0x27, 0x1D, 0xD6, 0x5F, 0x98, 0xF9, 0x7D, 0x65, 0x7B, 0xE0, 0x67, 0x34, 0xA0, 0xE8, 0x30 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY6Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000D9, { { 0x4D, 0x15, 0x4A, 0xF1, 0x17, 0x09, 0xC1, 0xA6, 0x08, 0x4A, 0xCD, 0xB2, 0x68, 0xC2, 0x59, 0x52 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorY7Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000DA, { { 0xA9, 0x24, 0x71, 0x8A, 0x18, 0x24, 0x6D, 0x0A, 0x65, 0x12, 0xBB, 0x1F, 0xE7, 0x95, 0xC5, 0xA4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscDoorCoordsExtProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000048, 0x00000C8E, { { 0x2E, 0x0E, 0xB2, 0xAC, 0xE7, 0x0F, 0xDF, 0x38, 0xDF, 0x92, 0xB7, 0xB5, 0xA2, 0xFD, 0x40, 0x2D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscItemPosIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x00000018, { { 0x74, 0x90, 0x47, 0xE6, 0xFB, 0xC0, 0x34, 0xDF, 0x92, 0x5B, 0xA1, 0xCB, 0x06, 0x33, 0xCA, 0x6B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscItemShpXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000024, 0x00000F2C, { { 0x9E, 0x22, 0x3F, 0x8F, 0x31, 0x83, 0xF7, 0x7C, 0x59, 0x60, 0x7C, 0x0A, 0xEB, 0xD2, 0x18, 0x85 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscItemPosUnkProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000012, 0x00000433, { { 0xA4, 0x7B, 0x08, 0x07, 0x81, 0xEA, 0x4F, 0x99, 0x77, 0x74, 0x93, 0x65, 0xBF, 0x0C, 0x3B, 0x94 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscItemTileIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000012, 0x00000D23, { { 0x0E, 0x17, 0xE1, 0x1F, 0x34, 0x7D, 0x30, 0xF6, 0xAE, 0x0B, 0xAC, 0x9D, 0x21, 0xB6, 0x97, 0xCC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscItemShapeMapProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000005A, 0x00000B23, { { 0x41, 0x4A, 0x95, 0x7F, 0x82, 0x85, 0x28, 0x55, 0xD4, 0xD5, 0xD6, 0xD8, 0xA9, 0xAE, 0xF4, 0xC0 } } } }, // EoB 1
+ { UNK_LANG, kPlatformPC, { 0x00000071, 0x00000860, { { 0xEA, 0x5D, 0x33, 0xB6, 0x38, 0x30, 0x65, 0x29, 0x7F, 0x08, 0x89, 0x04, 0xC5, 0x97, 0x76, 0xCB } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscTelptrShpCoordsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000009C, 0x00000EBE, { { 0x2D, 0x1D, 0x74, 0x39, 0x29, 0xC3, 0x6F, 0x53, 0xD9, 0xA5, 0x4B, 0x9F, 0xD6, 0xDD, 0x73, 0xE9 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBasePortalSeqDataProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000007E, 0x000002D0, { { 0x18, 0x7E, 0x65, 0x17, 0x4C, 0xD2, 0xB5, 0x2E, 0x81, 0xF8, 0x1C, 0xAC, 0x37, 0x21, 0x62, 0x2A } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseManDefProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000078, 0x000002CD, { { 0x33, 0x9B, 0x0C, 0x6A, 0x2E, 0x4F, 0xE9, 0x02, 0x7B, 0xEE, 0xF1, 0x04, 0xA3, 0xBA, 0xD4, 0xF3 } } } }, // EoB 1
+ { DE_DEU, kPlatformPC, { 0x00000078, 0x000002C4, { { 0x92, 0x20, 0x58, 0x5F, 0x44, 0x09, 0x0B, 0xF0, 0xDA, 0x09, 0xE2, 0x44, 0x0B, 0xB7, 0x95, 0x96 } } } }, // EoB 1
+ { EN_ANY, kPlatformPC, { 0x000000C8, 0x00000834, { { 0x18, 0xEA, 0x33, 0xB7, 0x4B, 0x72, 0x23, 0x8D, 0x0E, 0x9F, 0x4E, 0xF5, 0x09, 0xA3, 0x9C, 0xEA } } } }, // EoB 2
+ { DE_DEU, kPlatformPC, { 0x000000C8, 0x00000622, { { 0xFE, 0x1D, 0x94, 0x3A, 0x0B, 0x17, 0x89, 0xEF, 0x60, 0x18, 0xB2, 0x43, 0x7A, 0x02, 0xDB, 0x61 } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseManWordProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x000000E0, 0x00005134, { { 0x68, 0x9C, 0x19, 0x2B, 0x5F, 0x38, 0x36, 0x41, 0xA7, 0x7E, 0xB7, 0x51, 0x41, 0x60, 0x1D, 0x67 } } } }, // EoB 1
+ { DE_DEU, kPlatformPC, { 0x000000EA, 0x00005458, { { 0xEC, 0x14, 0x11, 0xE9, 0x19, 0xFD, 0xF8, 0xFC, 0xA8, 0x46, 0x3D, 0xCD, 0x56, 0x08, 0xC3, 0x4A } } } }, // EoB 1
+ { EN_ANY, kPlatformPC, { 0x0000017E, 0x00008B64, { { 0x66, 0x38, 0x09, 0x5B, 0x2E, 0x50, 0x54, 0x43, 0x1C, 0xEC, 0x56, 0x3B, 0x72, 0x39, 0xF9, 0xC3 } } } }, // EoB 2
+ { DE_DEU, kPlatformPC, { 0x0000015B, 0x00007C37, { { 0x44, 0xA3, 0x32, 0x88, 0x9F, 0x63, 0x28, 0xA0, 0xBD, 0x00, 0xF1, 0x08, 0xCA, 0xE5, 0xFE, 0x5F } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseManPromptProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000041, 0x000013AC, { { 0x40, 0x2B, 0xB5, 0x99, 0xEF, 0x8F, 0x3C, 0x9F, 0xB1, 0x5A, 0xBE, 0xE4, 0x80, 0x8E, 0xBB, 0x96 } } } }, // EoB 1
+ { DE_DEU, kPlatformPC, { 0x00000048, 0x000015A5, { { 0x0B, 0xB4, 0x9E, 0xAD, 0xB3, 0x56, 0x75, 0xC1, 0xAE, 0x29, 0xF7, 0xB5, 0x82, 0x14, 0xD1, 0x27 } } } }, // EoB 1
+ { EN_ANY, kPlatformPC, { 0x00000041, 0x000013AC, { { 0x40, 0x2B, 0xB5, 0x99, 0xEF, 0x8F, 0x3C, 0x9F, 0xB1, 0x5A, 0xBE, 0xE4, 0x80, 0x8E, 0xBB, 0x96 } } } }, // EoB 2
+ { DE_DEU, kPlatformPC, { 0x0000005C, 0x00001D08, { { 0x10, 0xCE, 0x2D, 0xED, 0xA9, 0xA0, 0x7C, 0xA1, 0x91, 0x3F, 0xD8, 0x43, 0x03, 0x53, 0x97, 0xCA } } } }, // EoB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscMonsterFrmOffsTbl1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00001000, { { 0x98, 0x27, 0x57, 0x25, 0x3B, 0x04, 0x7D, 0x14, 0x3A, 0xD4, 0xA2, 0x5D, 0xBA, 0x04, 0x45, 0xAC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDscMonsterFrmOffsTbl2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000828, { { 0x7E, 0x8A, 0x0C, 0xEB, 0x5C, 0xBC, 0x6C, 0xBD, 0xD2, 0x48, 0x08, 0xCC, 0xF7, 0x7B, 0x81, 0x03 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseInvSlotXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000036, 0x000010BF, { { 0x50, 0x6E, 0x67, 0x2B, 0x7D, 0x6C, 0xF2, 0x21, 0x73, 0xA2, 0xD5, 0xBB, 0xCE, 0x3B, 0x71, 0xAA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseInvSlotYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001B, 0x00000A5B, { { 0x47, 0x55, 0x7D, 0x84, 0x45, 0x91, 0xC4, 0x44, 0x10, 0xD5, 0x39, 0xC4, 0xC8, 0x4F, 0x01, 0xA4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSlotValidationFlagsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000036, 0x00001F6B, { { 0x87, 0x4F, 0x9A, 0x97, 0x20, 0x20, 0xB2, 0xA6, 0xF7, 0xC2, 0x5F, 0xAA, 0x17, 0xEA, 0xB4, 0x50 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseProjectileWeaponTypesProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x0000061C, { { 0x05, 0x55, 0xA6, 0xD1, 0x3C, 0x12, 0x84, 0xDA, 0xA9, 0x33, 0xCF, 0x07, 0x05, 0x2A, 0xB2, 0x29 } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x0000000F, 0x00000829, { { 0x9F, 0x6A, 0x13, 0x8A, 0xA7, 0x40, 0xE8, 0x40, 0x2E, 0x87, 0x49, 0x6B, 0x67, 0xED, 0xE8, 0xCE } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseWandTypesProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000007, 0x00000162, { { 0xDB, 0x5D, 0x34, 0x70, 0x41, 0xAB, 0x8F, 0x75, 0xC8, 0x61, 0x8E, 0x44, 0x82, 0xCF, 0x28, 0x03 } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x00000175, { { 0x01, 0xC2, 0xF0, 0xC6, 0x1C, 0xD0, 0x14, 0xD9, 0xB8, 0xF5, 0x9C, 0xFC, 0x22, 0xE4, 0xA0, 0xA7 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseDrawObjPosIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000014, 0x00000028, { { 0x44, 0x46, 0x8C, 0x94, 0x76, 0x24, 0x08, 0xC7, 0x1F, 0x1B, 0x10, 0xD7, 0xDF, 0x18, 0x6C, 0x0D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseFlightObjFlipIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x00000008, { { 0xEB, 0xF0, 0x27, 0x7E, 0xA8, 0x09, 0x3A, 0x95, 0x3B, 0x71, 0x2A, 0x43, 0x2E, 0xCF, 0x22, 0x0B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseFlightObjShpMapProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000058, 0x000051BD, { { 0xC3, 0xD2, 0xD1, 0xE5, 0x78, 0xEE, 0xA7, 0xAA, 0x71, 0xD1, 0xDD, 0xDF, 0x40, 0xBB, 0xAF, 0x66 } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x0000002D, 0x000025E6, { { 0x64, 0x26, 0x3D, 0xDC, 0x6C, 0x1A, 0xFC, 0x36, 0x9E, 0x5A, 0xBF, 0x64, 0xAD, 0xF4, 0xA3, 0x5D } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseFlightObjSclIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000048, 0x00002A0E, { { 0xAC, 0xBB, 0x7D, 0x73, 0x98, 0xF4, 0x1E, 0x4A, 0x77, 0xF0, 0x98, 0x75, 0x11, 0xBF, 0xF7, 0xD5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseBookNumbersProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000020, 0x00000AC8, { { 0x35, 0x05, 0x37, 0x4C, 0x05, 0x74, 0x04, 0x08, 0xAD, 0xA3, 0x64, 0xBF, 0xC0, 0x67, 0xF2, 0xF7 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000028, 0x00000E5D, { { 0x80, 0x98, 0x05, 0x54, 0x84, 0x90, 0xD3, 0xB3, 0x9B, 0xFB, 0x8F, 0xB9, 0xA0, 0x43, 0xAA, 0xFD } } } },
+ { EN_ANY, kPlatformPC, { 0x00000020, 0x00000AC8, { { 0x35, 0x05, 0x37, 0x4C, 0x05, 0x74, 0x04, 0x08, 0xAD, 0xA3, 0x64, 0xBF, 0xC0, 0x67, 0xF2, 0xF7 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000022, 0x00000BCA, { { 0x93, 0x0E, 0xE0, 0x6D, 0xDD, 0x40, 0xBC, 0x89, 0x67, 0xBD, 0x8A, 0xCB, 0xD2, 0xCF, 0x78, 0x8D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMageSpellsListProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000122, 0x00006304, { { 0xD7, 0x14, 0x28, 0x83, 0x04, 0xC3, 0x42, 0x5A, 0x15, 0x49, 0x91, 0x12, 0x1D, 0x49, 0x17, 0x5B } } } },
+ { DE_DEU, kPlatformPC, { 0x0000013A, 0x00007155, { { 0x94, 0x45, 0xB9, 0x15, 0x57, 0x6E, 0xC6, 0x70, 0x66, 0x5F, 0xA7, 0x90, 0xA0, 0xC7, 0xC9, 0xE9 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000195, 0x00008AC0, { { 0x55, 0xB8, 0x75, 0x35, 0x09, 0x23, 0x83, 0x11, 0x22, 0xF8, 0x23, 0x1E, 0x8F, 0x08, 0x57, 0x66 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000019A, 0x0000929F, { { 0xB3, 0xA0, 0x2D, 0x3B, 0xF3, 0x72, 0x9B, 0x75, 0xA3, 0xC4, 0xD8, 0x72, 0x4B, 0xDE, 0x69, 0x82 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseClericSpellsListProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x0000013B, 0x00006BE6, { { 0x34, 0x63, 0x0B, 0xBA, 0xED, 0xC2, 0x9B, 0x31, 0xC3, 0x65, 0x51, 0xFF, 0xEF, 0xD8, 0x25, 0x92 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000016D, 0x00007E74, { { 0x6E, 0xDE, 0x28, 0xE6, 0x13, 0x3D, 0xA6, 0x42, 0x80, 0xAB, 0xE7, 0xED, 0xAD, 0xC8, 0x62, 0x48 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000164, 0x000079B3, { { 0x93, 0x16, 0x25, 0xFB, 0x76, 0xFF, 0xBC, 0x70, 0x9A, 0xB7, 0x93, 0xFC, 0x2E, 0xC3, 0x61, 0x7F } } } },
+ { DE_DEU, kPlatformPC, { 0x0000018B, 0x00008BB1, { { 0x8C, 0x21, 0xED, 0xE0, 0x1F, 0xF1, 0xDB, 0x72, 0xC4, 0x46, 0x36, 0x50, 0x16, 0xD5, 0xA8, 0x68 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSpellNamesProvider[] = {
+ { EN_ANY, kPlatformPC, { 0x0000029A, 0x0000F1C8, { { 0xCA, 0xE1, 0x30, 0xDC, 0xAB, 0xD1, 0x87, 0xE8, 0x51, 0xA2, 0xA2, 0x1C, 0x23, 0x4A, 0x34, 0x58 } } } },
+ { DE_DEU, kPlatformPC, { 0x000002D3, 0x0001080D, { { 0x5F, 0xDB, 0x9E, 0x48, 0x30, 0x03, 0xE1, 0x8E, 0xC7, 0xDC, 0x98, 0x10, 0xCE, 0xA1, 0x28, 0x31 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000366, 0x00013B1A, { { 0x15, 0xCB, 0x0E, 0xA9, 0x4E, 0x78, 0x30, 0x99, 0xA1, 0xCF, 0xF7, 0x05, 0xAB, 0x00, 0x66, 0x82 } } } },
+ { DE_DEU, kPlatformPC, { 0x000003BA, 0x0001626B, { { 0x0E, 0x4F, 0xF6, 0xFB, 0x78, 0x5E, 0x03, 0xE7, 0x82, 0xC4, 0xE2, 0x7B, 0xD9, 0xB2, 0xD7, 0xB2 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings1Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000084, 0x000029B0, { { 0xC6, 0x90, 0x19, 0x61, 0xA1, 0x66, 0xF6, 0x03, 0x7A, 0x1F, 0x10, 0x00, 0xCA, 0x8F, 0x69, 0x3B } } } },
+ { DE_DEU, kPlatformPC, { 0x0000009D, 0x000033E4, { { 0x4B, 0xCF, 0x40, 0xCE, 0x0F, 0x86, 0x98, 0x36, 0x03, 0x59, 0xFE, 0x32, 0xFA, 0x4C, 0x14, 0x75 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000085, 0x000029BD, { { 0xAB, 0x22, 0x4A, 0x70, 0xBB, 0x29, 0xB8, 0xBD, 0xAF, 0xC5, 0x0D, 0x1F, 0x23, 0x38, 0xBD, 0x06 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000008C, 0x00002D68, { { 0x4B, 0x0A, 0x09, 0x22, 0xF7, 0x77, 0x82, 0x4B, 0xFE, 0x0B, 0xF1, 0x8F, 0x1C, 0xEA, 0x1A, 0x0C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings2Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000051, 0x00001AD6, { { 0x28, 0x18, 0x2B, 0xF0, 0x0E, 0xC6, 0xEB, 0x01, 0xB0, 0x9A, 0x0A, 0x65, 0x05, 0xCB, 0x8F, 0x41 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000004F, 0x00001A82, { { 0x77, 0x85, 0x17, 0x25, 0x07, 0x72, 0x4A, 0x7F, 0x4F, 0x39, 0x6C, 0xDD, 0xB6, 0x70, 0x11, 0x02 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000090, 0x00002E35, { { 0x39, 0xD7, 0xA3, 0x21, 0xF0, 0xB7, 0x93, 0x9D, 0xDD, 0xEE, 0x33, 0xC2, 0x05, 0xE6, 0xE3, 0x63 } } } },
+ { DE_DEU, kPlatformPC, { 0x000000A1, 0x0000365C, { { 0x9A, 0x2D, 0xDB, 0x38, 0xB3, 0xF4, 0x0E, 0xF4, 0x36, 0x87, 0x60, 0xAE, 0xF8, 0x7E, 0xCA, 0x8A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings3Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x0000008D, 0x00002DC8, { { 0x35, 0x5E, 0xDD, 0x32, 0x2D, 0x55, 0x1E, 0xBC, 0x93, 0x49, 0x55, 0x48, 0x8F, 0xCD, 0x87, 0xEB } } } },
+ { DE_DEU, kPlatformPC, { 0x000000A8, 0x0000381C, { { 0x12, 0x95, 0x55, 0x57, 0x2B, 0xA0, 0x1A, 0x75, 0xD3, 0x43, 0xFF, 0x3E, 0x00, 0xB6, 0xEC, 0x35 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000088, 0x00002CD4, { { 0xD8, 0xBA, 0x5D, 0x14, 0x92, 0x84, 0x5A, 0x07, 0xC6, 0x76, 0xDF, 0x11, 0x1D, 0x84, 0x7A, 0x98 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000081, 0x00002B14, { { 0xC8, 0xB7, 0x77, 0xBC, 0x3A, 0xB6, 0xDC, 0xB7, 0x00, 0xF3, 0x06, 0xEB, 0x77, 0x10, 0x7C, 0x7E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings4Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000017, 0x0000071C, { { 0x96, 0x50, 0xA8, 0x08, 0x1B, 0x2D, 0x0C, 0xF6, 0x90, 0x6A, 0xE7, 0x9F, 0x65, 0xCC, 0x71, 0xA0 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000001B, 0x00000840, { { 0xA2, 0xCF, 0x81, 0x3E, 0x87, 0xA8, 0x10, 0x1B, 0x44, 0x8D, 0x5B, 0x8B, 0xAE, 0x23, 0x30, 0xD3 } } } },
+ { EN_ANY, kPlatformPC, { 0x0000000C, 0x000003A5, { { 0x72, 0x64, 0xBD, 0x1C, 0xED, 0x05, 0x28, 0xFC, 0x94, 0x4B, 0x8F, 0x3C, 0x38, 0x08, 0x77, 0xED } } } },
+ { DE_DEU, kPlatformPC, { 0x00000010, 0x0000054E, { { 0xD9, 0x97, 0xA8, 0x24, 0x27, 0x7B, 0x01, 0x3F, 0x03, 0xBA, 0x2A, 0x43, 0x81, 0x8F, 0x97, 0x03 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings6Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000029, 0x00000DA4, { { 0x5C, 0x6F, 0xA1, 0xC2, 0x56, 0xDE, 0xFE, 0xD5, 0x01, 0xFB, 0x65, 0x00, 0x24, 0xD1, 0x49, 0x7B } } } },
+ { DE_DEU, kPlatformPC, { 0x00000032, 0x00001211, { { 0x13, 0xBC, 0xF1, 0x03, 0x49, 0xDB, 0x16, 0xA5, 0xC3, 0x7C, 0xBF, 0x14, 0x8F, 0x40, 0x07, 0x8E } } } },
+ { EN_ANY, kPlatformPC, { 0x00000030, 0x00000FF5, { { 0xE4, 0x2B, 0xB9, 0xF0, 0x26, 0x3D, 0x30, 0xCD, 0xEF, 0xCD, 0xF5, 0xC0, 0x4E, 0xA4, 0xC4, 0x92 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000029, 0x00000E6D, { { 0xE1, 0xBD, 0x4B, 0x42, 0x17, 0xA2, 0xB6, 0x6C, 0xF2, 0x7F, 0xEB, 0x41, 0x2C, 0x82, 0x8C, 0x76 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings7Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000014, 0x00000406, { { 0xBD, 0xE1, 0x0A, 0x75, 0xD1, 0x18, 0xF7, 0x08, 0x2D, 0x2B, 0x65, 0x36, 0xA7, 0x59, 0x2E, 0x13 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000000F, 0x000001E5, { { 0x1F, 0xC9, 0x46, 0x8B, 0x41, 0xAD, 0xAD, 0x2B, 0x5A, 0xA9, 0xAB, 0x94, 0x9A, 0x1E, 0x36, 0xAC } } } },
+ { EN_ANY, kPlatformPC, { 0x00000065, 0x000021AF, { { 0x76, 0x35, 0xAE, 0x1D, 0xC2, 0x54, 0x36, 0x11, 0x4D, 0x3E, 0x96, 0x11, 0xB2, 0xDC, 0x15, 0x20 } } } },
+ { DE_DEU, kPlatformPC, { 0x0000006F, 0x000026BA, { { 0xC9, 0x46, 0xD7, 0xF3, 0xF2, 0x5F, 0xF4, 0xB1, 0x22, 0xC8, 0x30, 0x16, 0x8E, 0x75, 0x4D, 0xA8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicStrings8Provider[] = {
+ { EN_ANY, kPlatformPC, { 0x00000056, 0x00001C95, { { 0x7E, 0x43, 0x73, 0xEC, 0x94, 0x0D, 0xF8, 0x1B, 0xF3, 0x1A, 0x62, 0x19, 0x96, 0x6A, 0x2C, 0xB5 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000061, 0x0000213B, { { 0xE2, 0x3B, 0xA7, 0xB7, 0xE6, 0xA5, 0x0D, 0x0F, 0xE0, 0x94, 0x9B, 0xAE, 0xE1, 0x11, 0x97, 0x93 } } } },
+ { EN_ANY, kPlatformPC, { 0x00000085, 0x00002C0E, { { 0x6A, 0xEC, 0xF2, 0x5F, 0xA6, 0x3F, 0xB1, 0x1A, 0x74, 0x49, 0x5A, 0x47, 0xB0, 0x7A, 0xE6, 0x99 } } } },
+ { DE_DEU, kPlatformPC, { 0x00000096, 0x0000342E, { { 0x83, 0x48, 0x3B, 0xED, 0x73, 0x02, 0x03, 0xCA, 0xA9, 0x4D, 0x40, 0x0F, 0xDE, 0x17, 0x7D, 0x40 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExpObjectTlModeProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000012, 0x0000000C, { { 0x98, 0x29, 0x54, 0xCD, 0xED, 0xAC, 0x7B, 0x61, 0x8D, 0x4F, 0x19, 0xE8, 0xA6, 0xB1, 0x51, 0x80 } } } },
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kEoBBaseExpObjectTblIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000009, 0x00000005, { { 0xFE, 0xEA, 0xC4, 0x54, 0x62, 0x7E, 0x43, 0x6E, 0x89, 0x48, 0x03, 0xE7, 0x47, 0xBF, 0x7D, 0x9D } } } }, // EOB 1
+ { UNK_LANG, kPlatformPC, { 0x0000000E, 0x00000004, { { 0x63, 0x27, 0x19, 0x17, 0xBD, 0xC3, 0x8A, 0xA7, 0x1E, 0xF7, 0xD1, 0x78, 0x39, 0x3B, 0xD4, 0x4F } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kEoBBaseExpObjectShpStartProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000034, { { 0x27, 0xC5, 0x09, 0x97, 0x8E, 0xD4, 0xF1, 0x8D, 0x77, 0xEB, 0x1D, 0x34, 0x55, 0xB2, 0x48, 0x38 } } } },
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kEoBBaseExpObjectTbl1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000D, 0x0000005D, { { 0x49, 0xC4, 0x47, 0x55, 0xDC, 0x25, 0x08, 0x03, 0x3D, 0x23, 0xAD, 0x09, 0x5F, 0x9C, 0x34, 0x06 } } } },
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kEoBBaseExpObjectTbl2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000A, 0x0000005C, { { 0xAB, 0x6A, 0x97, 0x35, 0xCC, 0x13, 0xC4, 0x17, 0x0B, 0xF2, 0xD3, 0xFD, 0xA2, 0x1C, 0x6C, 0xA8 } } } },
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kEoBBaseExpObjectTbl3Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000B, 0x00000032, { { 0x59, 0x23, 0xB9, 0xBE, 0x0E, 0xFA, 0xEB, 0xDD, 0x82, 0x68, 0x5B, 0xB0, 0xBE, 0x9B, 0x1D, 0x8E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseExpObjectYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x0000016C, { { 0xCF, 0x5B, 0x04, 0xAB, 0x1A, 0xAF, 0xDD, 0x56, 0xAC, 0xF6, 0x23, 0x86, 0x33, 0x06, 0x5A, 0xC6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefStepsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x000002FD, { { 0xB5, 0x6F, 0x31, 0x5F, 0xC6, 0x47, 0xE9, 0x23, 0x0E, 0x73, 0xBF, 0x77, 0xC7, 0xEE, 0xDB, 0x27 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefSubStepsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000FF, { { 0x18, 0x27, 0x73, 0x45, 0x26, 0x58, 0x81, 0x82, 0x70, 0x86, 0x7A, 0x0D, 0xDE, 0xC1, 0x08, 0x52 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefShiftProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x0000000C, { { 0xCC, 0xDC, 0x78, 0xF9, 0xFE, 0x88, 0xF3, 0x87, 0xFD, 0x08, 0xE8, 0x8A, 0x38, 0xD5, 0x4C, 0x53 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefAddProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x0000007F, { { 0x7F, 0x86, 0x2E, 0x14, 0xDB, 0x36, 0xED, 0x99, 0xD9, 0xCE, 0xAF, 0x11, 0xC2, 0x89, 0x21, 0x6B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000C, 0x000000A5, { { 0x77, 0xD7, 0xE0, 0x2D, 0xD4, 0x25, 0x94, 0x6E, 0x59, 0x3B, 0xAF, 0x9B, 0x16, 0x4F, 0x6D, 0x4C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkDefYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000138, { { 0xB9, 0xA2, 0x72, 0x01, 0x2A, 0xD7, 0x61, 0xAB, 0x02, 0x57, 0x87, 0xC8, 0x86, 0x83, 0xDF, 0xB3 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkOfFlags1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000002C, 0x00000BF4, { { 0x94, 0x8C, 0x1B, 0x77, 0xBF, 0x3A, 0x51, 0x17, 0x89, 0x16, 0xD0, 0x74, 0x95, 0xBD, 0x85, 0x98 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkOfFlags2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000040, 0x000003FC, { { 0x40, 0x13, 0x5A, 0x9D, 0xBD, 0x29, 0x2E, 0x9C, 0xC1, 0xE7, 0xD4, 0xC9, 0x26, 0xFA, 0xF2, 0x70 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkOfShiftProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x000000F0, { { 0xC5, 0xC8, 0x91, 0x7E, 0x78, 0x2F, 0xF1, 0xE5, 0xE0, 0x06, 0xB2, 0x39, 0xDC, 0x0D, 0x7A, 0x5F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkOfXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x00000528, { { 0x58, 0xE6, 0x24, 0x6A, 0xD3, 0xA4, 0xEF, 0x58, 0x4A, 0x9C, 0x32, 0x31, 0x4C, 0x61, 0xBC, 0x1C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSparkOfYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x000002D4, { { 0x74, 0x31, 0xFE, 0x7C, 0x38, 0x16, 0x0C, 0x05, 0x64, 0xAB, 0x8A, 0x69, 0xEA, 0x66, 0x29, 0x2F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseSpellPropertiesProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x000003EF, 0x0000BE7A, { { 0x10, 0xEA, 0x14, 0x26, 0xE2, 0xFC, 0xA1, 0xCB, 0xD9, 0x80, 0xFE, 0x9F, 0x69, 0x58, 0x4A, 0xCA } } } },
+ { UNK_LANG, kPlatformPC, { 0x000003EF, 0x00008FCE, { { 0xC9, 0x36, 0xDD, 0x7B, 0x05, 0x6E, 0x92, 0xBA, 0x2B, 0x39, 0x87, 0xA7, 0x3A, 0x7E, 0xB0, 0xAD } } } },
+ { UNK_LANG, kPlatformPC, { 0x000006D6, 0x0000CA78, { { 0xEB, 0x3B, 0x9F, 0xFD, 0x4E, 0x3F, 0x5C, 0xDE, 0xC6, 0xBA, 0xFE, 0x83, 0xB4, 0x10, 0x6D, 0x95 } } } },
+ { UNK_LANG, kPlatformPC, { 0x000006D6, 0x0000EC32, { { 0x52, 0xAE, 0x4D, 0xC2, 0x24, 0xC8, 0xD3, 0xBE, 0x09, 0x45, 0x98, 0x38, 0x17, 0x7D, 0xFF, 0xE4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMagicFlightPropsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000060, 0x0000166F, { { 0x38, 0x30, 0xCA, 0x07, 0x64, 0xBA, 0xC4, 0xA4, 0x4F, 0x75, 0xB4, 0x84, 0x3A, 0x92, 0xFD, 0xE3 } } } },
+ { UNK_LANG, kPlatformPC, { 0x00000038, 0x00000DDC, { { 0x23, 0x32, 0x8D, 0x34, 0x4F, 0x72, 0x37, 0xE1, 0x0C, 0x1B, 0x47, 0x17, 0x5D, 0xDF, 0xDB, 0xF5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseTurnUndeadEffectProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000008C, 0x00002E8B, { { 0x96, 0x15, 0x61, 0x12, 0x43, 0xCF, 0x3A, 0x84, 0x1A, 0x89, 0xB5, 0x32, 0x0D, 0xB3, 0x20, 0x67 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseBurningHandsDestProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000008, 0x0000000C, { { 0x61, 0xD7, 0xAB, 0xE1, 0x56, 0x54, 0x51, 0x5B, 0xD9, 0x59, 0x2D, 0x3D, 0xAE, 0xA4, 0x49, 0x31 } } } }, // EOB1
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000003E, { { 0xA5, 0x8C, 0xCA, 0x13, 0xED, 0x0F, 0xB7, 0xA2, 0xD7, 0x9C, 0xCD, 0x11, 0x65, 0x11, 0x4B, 0xD8 } } } }, // EOB2
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseConeOfColdDest1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000007, 0x00000500, { { 0x48, 0xF1, 0xFE, 0x48, 0xEC, 0x64, 0x17, 0x51, 0x5C, 0x9A, 0x91, 0x35, 0x95, 0xC3, 0x73, 0x8E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseConeOfColdDest2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000007, 0x00000210, { { 0xBA, 0x62, 0xA0, 0x4F, 0x50, 0x0C, 0x02, 0xC3, 0xAD, 0x7C, 0x39, 0x63, 0x5F, 0x41, 0xB4, 0xFB } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseConeOfColdDest3Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000007, 0x00000200, { { 0xA0, 0x1F, 0xAC, 0x3A, 0x2D, 0x25, 0x1F, 0x5C, 0xD2, 0x04, 0xAC, 0xAB, 0x97, 0x8B, 0x61, 0xD7 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseConeOfColdDest4Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000007, 0x000004F0, { { 0xB3, 0x9A, 0x2B, 0x3A, 0x51, 0x24, 0x95, 0xBE, 0xDE, 0x0F, 0xD5, 0xE9, 0xE9, 0x21, 0x96, 0x04 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseConeOfColdGfxTblProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000010, 0x0000003E, { { 0x0A, 0xBA, 0xFD, 0x3F, 0xD8, 0x49, 0x3F, 0xD2, 0x26, 0x1B, 0x19, 0x53, 0x4F, 0x84, 0xB9, 0x4F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1MainMenuStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000037, 0x00000D79, { { 0x1D, 0x72, 0x7F, 0x8F, 0xEB, 0x4A, 0xBF, 0x82, 0xB7, 0xB5, 0x9D, 0xB0, 0x7B, 0xDA, 0xEC, 0xEE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000034, 0x00000C6F, { { 0xF2, 0x5F, 0xBE, 0xFB, 0x27, 0x1C, 0x91, 0x33, 0x25, 0x09, 0xC1, 0xA0, 0x27, 0x89, 0xD7, 0xD5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1BonusStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000093, 0x000031B6, { { 0xC1, 0x54, 0x1D, 0x02, 0x4A, 0x35, 0x7F, 0x5D, 0x84, 0x2D, 0x2C, 0x9C, 0x06, 0x97, 0x29, 0x8D } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000093, 0x000031CD, { { 0x3E, 0x0F, 0x52, 0x02, 0xC7, 0x9E, 0x83, 0xB3, 0xB1, 0xAB, 0x03, 0x3A, 0x18, 0xE2, 0x87, 0x2E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesOpeningProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000003F, 0x00001044, { { 0xF5, 0x8C, 0xC8, 0x39, 0x38, 0xBB, 0x0B, 0xCA, 0x34, 0x38, 0x1D, 0x11, 0x46, 0x91, 0xEF, 0x7E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesTowerProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001A, 0x000006E6, { { 0xBD, 0x06, 0x3B, 0x7D, 0x24, 0x79, 0xD6, 0xC2, 0xFA, 0xDA, 0x31, 0x15, 0x3E, 0xE2, 0x75, 0xF8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesOrbProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000015, 0x00000565, { { 0xA7, 0x91, 0x97, 0x5B, 0x29, 0xE8, 0x27, 0x90, 0xB3, 0x8F, 0xD5, 0x13, 0x77, 0x4A, 0x93, 0x37 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesWdEntryProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000002C, 0x00000B42, { { 0x5C, 0xDF, 0xB1, 0x2A, 0x83, 0x03, 0x73, 0x47, 0x1E, 0x29, 0x7C, 0x16, 0x2E, 0x5D, 0x0F, 0xA4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesKingProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000016, 0x000005AE, { { 0xB5, 0xB5, 0x80, 0xD3, 0xC0, 0xF4, 0x9F, 0xE1, 0x12, 0x3C, 0xCB, 0xD6, 0xF2, 0x7F, 0x15, 0x5B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesHandsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000A, 0x0000027C, { { 0x90, 0xC7, 0x36, 0xE6, 0x7D, 0x6D, 0xCB, 0x77, 0xA0, 0x03, 0x45, 0x48, 0x46, 0xF3, 0x80, 0xC8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesWdExitProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000033, 0x00000D2A, { { 0xA8, 0xF0, 0x36, 0x0E, 0x37, 0xC6, 0xCC, 0xDB, 0x9B, 0xB8, 0x52, 0x64, 0x02, 0x1E, 0x9D, 0x1C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroFilesTunnelProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001A, 0x000006E2, { { 0xA1, 0xDD, 0x20, 0x50, 0x7A, 0xB6, 0x89, 0x67, 0x13, 0xAA, 0x47, 0x6B, 0xC0, 0xA0, 0x8A, 0xFD } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroOpeningFrmDelayProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000A, 0x000001E0, { { 0xDA, 0xE3, 0x06, 0xA2, 0x41, 0xF6, 0x5A, 0x6A, 0xBD, 0x0B, 0xA6, 0x09, 0x69, 0x03, 0x1D, 0x2C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroWdEncodeXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001F, 0x000001BB, { { 0x00, 0x50, 0x8E, 0xF5, 0x51, 0xA6, 0xF5, 0x57, 0x0D, 0x55, 0x6C, 0x14, 0x62, 0xCD, 0xD0, 0x7E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroWdEncodeYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001F, 0x0000000B, { { 0x39, 0x38, 0x02, 0xCE, 0x9D, 0x89, 0x1E, 0xBF, 0x32, 0x86, 0xA0, 0x79, 0xA4, 0xBE, 0xC5, 0x81 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroWdEncodeWHProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001F, 0x00000027, { { 0xA8, 0x6C, 0x13, 0x2B, 0x4C, 0x26, 0x38, 0x3D, 0xDA, 0xC2, 0x90, 0xB3, 0x97, 0xA9, 0x45, 0x84 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroWdDsXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000003E, 0x0000104A, { { 0xAC, 0x1F, 0xA6, 0x20, 0xD0, 0x02, 0xF0, 0x9D, 0x75, 0x93, 0x6C, 0x12, 0x0A, 0x76, 0x1B, 0x3F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroWdDsYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000001F, 0x00000655, { { 0xF3, 0xF7, 0x65, 0xEC, 0xEA, 0x5C, 0x08, 0xCF, 0xAD, 0x48, 0x35, 0xA2, 0x5B, 0x82, 0xB0, 0xC5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlX1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000027, { { 0x7F, 0x14, 0x7D, 0x8C, 0x20, 0x49, 0xDB, 0xC3, 0x31, 0x1A, 0xC3, 0x95, 0xA4, 0x8C, 0x96, 0xDC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlY1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x000000EC, { { 0x29, 0xB4, 0x8D, 0xE1, 0xDF, 0x36, 0x39, 0x27, 0xC8, 0xF6, 0x32, 0x1A, 0x3B, 0x74, 0xA1, 0x4F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlX2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000051, { { 0x51, 0x33, 0x0A, 0x55, 0x76, 0xA2, 0x91, 0xDA, 0x59, 0xD6, 0x09, 0xD9, 0x3D, 0xD4, 0xB8, 0xFE } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlY2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x0000016A, { { 0xD5, 0xA3, 0xF6, 0x12, 0x90, 0x87, 0xF2, 0xC7, 0x6A, 0x22, 0x77, 0xB5, 0x48, 0xB2, 0xCB, 0xCA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlWProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x0000004E, { { 0xCF, 0xC7, 0xA8, 0x59, 0x6A, 0x5B, 0x35, 0x7F, 0xC9, 0xEC, 0x59, 0x7E, 0x88, 0x31, 0x32, 0xA6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1IntroTvlHProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x0000013D, { { 0x26, 0x7B, 0x3D, 0x5F, 0x64, 0x97, 0xF9, 0x1B, 0xB6, 0x65, 0x99, 0x95, 0x0A, 0x98, 0x38, 0x92 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1DoorShapeDefsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000060, 0x00000F8A, { { 0x95, 0x53, 0x1B, 0x07, 0x64, 0x81, 0x0E, 0x04, 0xC0, 0xDA, 0xB5, 0x74, 0x57, 0x04, 0x10, 0xE2 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1DoorSwitchShapeDefsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000060, 0x0000119E, { { 0xA4, 0xE6, 0x96, 0x36, 0x59, 0x05, 0xB8, 0x57, 0xF4, 0x6D, 0x79, 0x1D, 0x29, 0x52, 0xA0, 0xEE } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1DoorSwitchCoordsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000030, 0x000007F7, { { 0x85, 0x20, 0x98, 0x20, 0xE1, 0xD6, 0xA5, 0xBD, 0x9E, 0x59, 0x63, 0x6A, 0xEF, 0xEF, 0x80, 0x19 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1MonsterPropertiesProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000252, 0x000038E5, { { 0x5E, 0xD7, 0xEF, 0x3B, 0xD5, 0xDA, 0x2A, 0x09, 0x78, 0xF6, 0xD8, 0x57, 0x68, 0xB4, 0x90, 0xCA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1EnemyMageSpellListProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000A, 0x0000000F, { { 0x01, 0x1B, 0x9C, 0x51, 0xC9, 0xA2, 0x10, 0xBB, 0xA7, 0x82, 0xD4, 0x91, 0x7E, 0x84, 0x54, 0x93 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1EnemyMageSfxProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000A, 0x0000029B, { { 0xA2, 0x9F, 0x2E, 0xDE, 0x15, 0x23, 0x78, 0xDD, 0x26, 0x98, 0x6E, 0xA3, 0x77, 0xEA, 0xB5, 0x80 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1BeholderSpellListProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000079, { { 0x8E, 0x13, 0x54, 0x9D, 0x54, 0xF6, 0xC9, 0x6E, 0x10, 0xF1, 0xC0, 0xE9, 0x66, 0xDD, 0x95, 0xED } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1BeholderSfxProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x000000F5, { { 0xA9, 0x90, 0x41, 0x0D, 0xB5, 0xE0, 0x28, 0xFD, 0x0A, 0xC3, 0xF9, 0xEC, 0xC8, 0x47, 0xC1, 0x57 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1TurnUndeadStringProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000027, 0x00000BF2, { { 0x43, 0x0A, 0x1E, 0xEE, 0x84, 0xD6, 0xD6, 0x87, 0x20, 0x9F, 0x15, 0x22, 0x9B, 0x65, 0x24, 0xDB } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000030, 0x00000F48, { { 0xDA, 0x59, 0xEC, 0xC1, 0x9B, 0xCF, 0x90, 0x4A, 0x93, 0x3E, 0xE5, 0x26, 0x20, 0x8B, 0x74, 0x92 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingDefaultProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002C, { { 0x7E, 0x1C, 0x75, 0xC3, 0x8E, 0xF7, 0x56, 0x62, 0x9B, 0xB6, 0xF4, 0x3A, 0x21, 0x03, 0xFA, 0xF5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingAltProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x2A, 0x8C, 0xF6, 0xD7, 0x87, 0xFA, 0x7B, 0x22, 0x28, 0x2A, 0x50, 0xE2, 0x26, 0x7B, 0xC7, 0x44 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingInvProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002E, { { 0x3A, 0x06, 0xBF, 0x0C, 0xD4, 0xD0, 0x15, 0x1F, 0xB5, 0xC5, 0x49, 0xFD, 0x21, 0xE1, 0xE1, 0x66 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingItemsLProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002A, { { 0xE0, 0x85, 0xA1, 0x3A, 0x3D, 0xC9, 0xF8, 0x56, 0x17, 0x0A, 0xD8, 0x44, 0x56, 0xDF, 0x3C, 0x57 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingItemsSProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000036, { { 0x2E, 0x6F, 0xD4, 0x2E, 0xB2, 0x84, 0xB2, 0xC3, 0x36, 0x88, 0x80, 0xC1, 0x67, 0x5A, 0xEB, 0x60 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingThrownProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x0C, 0x3D, 0x1E, 0xAB, 0x0B, 0x25, 0x9F, 0x78, 0xE6, 0xB1, 0x52, 0x79, 0x0F, 0x96, 0x33, 0x97 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingIconsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000039, { { 0x99, 0x50, 0x1A, 0xE1, 0xF3, 0x52, 0xC3, 0x5A, 0x4E, 0xBD, 0x03, 0x74, 0x2C, 0x39, 0xCA, 0x71 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingDecoProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000035, { { 0xA5, 0x17, 0xED, 0xEE, 0x02, 0x87, 0x8C, 0x9D, 0xAC, 0x96, 0xC6, 0x07, 0xB0, 0x8E, 0x5D, 0xE3 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaLevelMappingIndexProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000000C, 0x00000013, { { 0x48, 0x5D, 0xDF, 0x8F, 0xFD, 0x5D, 0xA0, 0xB0, 0x00, 0xD8, 0xB3, 0x09, 0x90, 0x5D, 0x13, 0x3F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingLevel0Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000035, { { 0xC2, 0x4D, 0x2F, 0x0A, 0xB0, 0x3E, 0x46, 0x80, 0xD1, 0xEE, 0x32, 0x5F, 0xBA, 0x5C, 0xCC, 0x7A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingLevel1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x94, 0x8E, 0xAE, 0x12, 0xB5, 0x68, 0xCD, 0x43, 0x95, 0xD2, 0x01, 0x21, 0x0C, 0xA1, 0x34, 0xF5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingLevel2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x20, 0x6F, 0x9F, 0x57, 0x0C, 0xFD, 0xDA, 0x5C, 0xA0, 0x1D, 0x28, 0xB4, 0x88, 0x24, 0x68, 0x68 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingLevel3Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x44, 0x95, 0x9A, 0x69, 0x70, 0xB2, 0x63, 0xB6, 0xFB, 0xD0, 0xFF, 0xD9, 0xF0, 0xCD, 0xD4, 0x75 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1CgaMappingLevel4Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000020, 0x00000031, { { 0xEA, 0xC4, 0x01, 0xC0, 0x21, 0xFE, 0x66, 0xDD, 0xD4, 0x83, 0xC1, 0x2C, 0x09, 0xD3, 0xD0, 0x97 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1NpcShpDataProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x0000004C, 0x00000A42, { { 0x70, 0x21, 0x85, 0x8C, 0xD4, 0x04, 0xAA, 0x20, 0x1D, 0x0E, 0x9D, 0xB7, 0x74, 0x58, 0xCC, 0x0C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1NpcSubShpIndex1Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000035, { { 0x9A, 0x83, 0xF9, 0xA4, 0x27, 0xBA, 0xFC, 0xD2, 0xDE, 0x03, 0x65, 0xF2, 0xFA, 0x37, 0xDA, 0xF1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1NpcSubShpIndex2Provider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000051, { { 0x7E, 0xAC, 0x0E, 0x54, 0x59, 0x5D, 0xF6, 0x53, 0x03, 0x22, 0x1D, 0xC7, 0xFC, 0x16, 0xC8, 0x88 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1NpcSubShpYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000006, 0x00000143, { { 0xC1, 0xED, 0x93, 0x5E, 0x84, 0xCE, 0x48, 0xCF, 0x4C, 0xF3, 0x9C, 0x93, 0xBF, 0xFE, 0xB8, 0x6F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc0StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000044, 0x000016E2, { { 0x7C, 0x28, 0x72, 0xC9, 0x57, 0xF5, 0xAB, 0x02, 0xD1, 0x42, 0xE8, 0xA3, 0xF9, 0x33, 0x70, 0xEE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000050, 0x00001B13, { { 0x69, 0x05, 0xEB, 0xB6, 0x86, 0x81, 0xAC, 0x09, 0x53, 0x35, 0x4D, 0x55, 0xF3, 0x13, 0x6F, 0xC0 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc11StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000001B, 0x00000928, { { 0x86, 0x08, 0x95, 0x6B, 0xBF, 0x12, 0x2D, 0xF9, 0x62, 0x25, 0xD9, 0xAE, 0x25, 0x10, 0xDF, 0xDC } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000001A, 0x000008DB, { { 0xBD, 0xBB, 0x48, 0x8E, 0x04, 0x7D, 0xE4, 0x78, 0xBB, 0x59, 0x6E, 0x86, 0xE1, 0x06, 0x27, 0x50 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc12StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000016, 0x0000079C, { { 0x22, 0x57, 0x3A, 0x9C, 0x7C, 0xDB, 0x55, 0xD0, 0x9C, 0x84, 0x28, 0xA6, 0x9D, 0x40, 0x38, 0x6E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000014, 0x000006ED, { { 0x88, 0x1C, 0x09, 0x61, 0x5D, 0x9D, 0xDE, 0x8A, 0x54, 0x1C, 0x40, 0xCF, 0x28, 0x2B, 0x52, 0x9D } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc21StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000014, 0x000006FD, { { 0x55, 0x77, 0x2F, 0xB0, 0xB3, 0x2D, 0x81, 0x29, 0xDE, 0x71, 0x83, 0x41, 0x06, 0x5B, 0x72, 0x21 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000015, 0x00000748, { { 0x3E, 0x15, 0x27, 0xFD, 0x76, 0xFB, 0x14, 0x8C, 0xF6, 0x14, 0x3E, 0x20, 0x0A, 0x04, 0xF5, 0x32 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc22StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x000004D4, { { 0xE5, 0x97, 0x06, 0x45, 0x6A, 0xAC, 0x96, 0x6D, 0x0A, 0xC9, 0xDF, 0x8F, 0x96, 0x2D, 0x01, 0x5D } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000D, 0x00000439, { { 0x87, 0xCB, 0x17, 0xD2, 0xC8, 0x7F, 0x34, 0xDA, 0x82, 0x30, 0xB2, 0x68, 0xB0, 0x10, 0xD9, 0x52 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc31StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000011, 0x00000597, { { 0x5C, 0xEB, 0x0A, 0xE6, 0xB1, 0x37, 0x0E, 0x8F, 0x14, 0xB4, 0x68, 0x86, 0xE5, 0xD2, 0xDE, 0xC7 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000603, { { 0x8E, 0x68, 0x55, 0xCD, 0x29, 0x1E, 0x3C, 0x06, 0x7B, 0x97, 0xE1, 0x07, 0x49, 0x09, 0xF0, 0x57 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc32StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000AE4, { { 0xED, 0x09, 0x04, 0xEC, 0xE3, 0x43, 0xDA, 0xEE, 0x5D, 0x78, 0x32, 0x63, 0x68, 0xFC, 0x4F, 0x9E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000B13, { { 0x87, 0x40, 0x88, 0xA5, 0xE2, 0x6F, 0x83, 0xBC, 0x99, 0x2B, 0xD3, 0xF5, 0x8D, 0x6B, 0x6E, 0x7D } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc4StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x0000043C, { { 0x2C, 0xE7, 0xE5, 0xAA, 0xF3, 0x50, 0xA8, 0x6D, 0xC2, 0xC6, 0x88, 0xFE, 0x12, 0x96, 0xFE, 0x54 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000014, 0x00000720, { { 0xF8, 0x58, 0x9A, 0xDB, 0xE5, 0x3F, 0x67, 0x53, 0x1F, 0x27, 0x2E, 0x8D, 0x6E, 0xAD, 0x45, 0xF5 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc5StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000ABC, { { 0xF1, 0xB5, 0x9E, 0x51, 0x9E, 0xF8, 0x84, 0x95, 0x55, 0x55, 0xE7, 0xDF, 0x36, 0xE1, 0x78, 0x9A } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x00000A8C, { { 0x4A, 0xAE, 0x5B, 0x3B, 0xAD, 0x18, 0x91, 0x3F, 0xC9, 0x5A, 0x82, 0x5D, 0xA7, 0x06, 0x1A, 0xAE } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc6StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000011, 0x00000612, { { 0x1B, 0xE2, 0x23, 0xD9, 0x00, 0x5C, 0xB9, 0x54, 0xCE, 0xA7, 0x6A, 0x51, 0xF6, 0xBB, 0x8A, 0xC9 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000647, { { 0x6C, 0x3F, 0xE2, 0xD0, 0xB0, 0x75, 0x2D, 0x73, 0xEE, 0x6F, 0x17, 0x74, 0xAA, 0x7D, 0xA2, 0x21 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB1Npc7StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000018, 0x00000777, { { 0x60, 0xB4, 0x17, 0x72, 0x89, 0x87, 0x47, 0xE3, 0xD9, 0xC3, 0x59, 0x16, 0xFD, 0x03, 0x31, 0xD4 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000016, 0x000007B6, { { 0xAE, 0xB6, 0x3C, 0x14, 0x2B, 0x34, 0xB8, 0x7C, 0xCF, 0x87, 0xDA, 0x70, 0xBF, 0x0D, 0xAB, 0xE2 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2MainMenuStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000005F, 0x000017BE, { { 0x77, 0x8A, 0x50, 0x9F, 0x42, 0xD8, 0x00, 0x05, 0x60, 0x2A, 0x80, 0x25, 0x00, 0xDC, 0x7C, 0x92 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000005E, 0x000017F3, { { 0xD0, 0x93, 0x2E, 0x5F, 0x9D, 0xDB, 0xC4, 0xFB, 0x9E, 0x9F, 0x14, 0xD6, 0xB4, 0xBE, 0x3D, 0x0C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferPortraitFramesProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x00000B25, { { 0x13, 0x25, 0x69, 0xC6, 0xE4, 0x9D, 0x35, 0x11, 0xAB, 0xE2, 0xC1, 0xEF, 0x21, 0x8B, 0xB8, 0x28 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferConvertTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000031, 0x000004BC, { { 0x96, 0x53, 0xA2, 0xF1, 0x26, 0xFE, 0x1B, 0x5E, 0xDF, 0x62, 0x2C, 0x8C, 0xBD, 0x62, 0x5A, 0xF9 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferItemTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000025, { { 0xD0, 0xA4, 0xB3, 0x7D, 0x74, 0x4D, 0x16, 0x43, 0x56, 0x07, 0x84, 0xAA, 0x96, 0xBD, 0x82, 0x25 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferExpTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000076B, { { 0x91, 0x65, 0x5B, 0x8D, 0xE8, 0x5B, 0x28, 0x32, 0x4D, 0x7A, 0x57, 0x8E, 0x18, 0x5B, 0x1A, 0xE9 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferStrings1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000010, 0x000003D3, { { 0x31, 0xE4, 0x65, 0x69, 0x0A, 0xA1, 0x1D, 0xD1, 0xFE, 0xF8, 0x5C, 0x29, 0xB1, 0x46, 0xBD, 0xBE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000010, 0x000003E2, { { 0xF0, 0x10, 0xF8, 0x9F, 0x05, 0x1E, 0x31, 0x33, 0x4E, 0xC8, 0x49, 0xBC, 0x9E, 0xAD, 0xD4, 0x99 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferStrings2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000006A, 0x00002681, { { 0x12, 0x4D, 0x29, 0x9D, 0xD3, 0xFC, 0x39, 0x22, 0x73, 0x1E, 0x5C, 0xAF, 0x1F, 0xD1, 0xAA, 0x87 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000057, 0x00001F8E, { { 0x85, 0xD8, 0x39, 0x1E, 0x6D, 0x97, 0xBD, 0x0E, 0xDD, 0xCF, 0x19, 0x47, 0x31, 0xDC, 0x7C, 0x1A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferLabelsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x00000240, { { 0x2A, 0x8B, 0x54, 0x99, 0x94, 0x35, 0x2B, 0xAB, 0x7F, 0x7F, 0x98, 0xA3, 0xFD, 0x57, 0x20, 0xDE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000009, 0x000001DF, { { 0x47, 0x6B, 0xBA, 0xCD, 0x99, 0x74, 0xCA, 0x3C, 0xAA, 0xC6, 0xB4, 0x50, 0x38, 0x90, 0x25, 0xB8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000321, 0x0000DBC3, { { 0x11, 0x9B, 0x54, 0xB3, 0x34, 0xF0, 0xB5, 0xE1, 0xFA, 0x6A, 0x31, 0x02, 0x59, 0x29, 0xCA, 0x94 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000038E, 0x0001119C, { { 0x92, 0x63, 0x18, 0xDD, 0x9F, 0x62, 0xF5, 0xBC, 0x3D, 0x93, 0xDC, 0x6E, 0xE5, 0xBE, 0x8C, 0x0B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroCPSFilesProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x000000A2, 0x0000296A, { { 0xE9, 0x28, 0x4A, 0x6E, 0xAA, 0x44, 0xF4, 0xD7, 0xD1, 0x29, 0xBF, 0x90, 0x6B, 0x82, 0xD1, 0x77 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x000000A2, 0x0000296B, { { 0x03, 0xA2, 0x0A, 0xAB, 0x76, 0x78, 0x04, 0x88, 0x6A, 0xE0, 0x36, 0x8B, 0x3A, 0x87, 0x44, 0xC8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData00Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003E1, { { 0x38, 0xC2, 0x0F, 0xE1, 0x43, 0x6A, 0xE8, 0x7C, 0x82, 0x65, 0x9B, 0x4A, 0x9F, 0x83, 0xCD, 0xC8 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData01Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003A3, { { 0x84, 0x44, 0xF4, 0x46, 0x4E, 0x2B, 0xD7, 0xC6, 0xAD, 0x14, 0xF1, 0x9E, 0x8A, 0xBE, 0x7B, 0x42 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData02Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000446, { { 0x0C, 0xCA, 0x41, 0x0C, 0x89, 0x59, 0xD5, 0x28, 0x9A, 0xDC, 0x51, 0x1C, 0x0B, 0x8C, 0xD2, 0xDB } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData03Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0xAB, 0x48, 0x64, 0x02, 0xB3, 0xF3, 0x6C, 0x82, 0x9D, 0x37, 0x5F, 0x52, 0x0F, 0x5B, 0xDF, 0x96 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData04Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000149, { { 0x3B, 0xAC, 0x14, 0x51, 0xDF, 0x5D, 0x22, 0x15, 0x46, 0x4E, 0xCD, 0xF3, 0xD4, 0x61, 0x29, 0x4A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData05Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0x28, 0x29, 0x5F, 0x31, 0x23, 0x53, 0xBA, 0xD7, 0x24, 0xB9, 0x21, 0x70, 0x84, 0x8A, 0x1C, 0x2E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData06Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x00001365, { { 0x91, 0x28, 0x2F, 0x10, 0x45, 0x4D, 0xCF, 0x3E, 0x70, 0x1E, 0xD4, 0xBA, 0x0E, 0x70, 0xDE, 0xD0 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData07Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003C4, { { 0x8C, 0x72, 0xDE, 0x4F, 0x92, 0x52, 0x0A, 0xED, 0xF4, 0x79, 0xD6, 0x3D, 0x8F, 0x59, 0x9D, 0x69 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData08Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000442, { { 0xD2, 0x91, 0x51, 0xEB, 0x91, 0x13, 0x43, 0xCE, 0x7E, 0x60, 0xB8, 0xFF, 0xA7, 0xE2, 0x4C, 0x11 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData09Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000004BC, { { 0xD6, 0xC7, 0x44, 0x2E, 0xE7, 0x2A, 0x44, 0x09, 0x39, 0xC3, 0xD3, 0xA8, 0x02, 0xC8, 0xA0, 0x19 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData10Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000006E, 0x00000C12, { { 0x91, 0xDB, 0x41, 0x7A, 0x4F, 0x7C, 0x7B, 0x83, 0x32, 0x13, 0x68, 0xF6, 0x58, 0x79, 0xDA, 0x99 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData11Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x0000073C, { { 0x17, 0x1F, 0x4D, 0x05, 0x3F, 0x14, 0x2E, 0x77, 0xD3, 0xDB, 0x78, 0x67, 0xBB, 0x18, 0xDC, 0x85 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData12Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000228, { { 0xC9, 0x50, 0x68, 0x51, 0xD0, 0xC1, 0x5D, 0xD4, 0xFF, 0x08, 0x28, 0xDE, 0xC4, 0x41, 0x8C, 0xDB } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData13Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000340, { { 0x03, 0xCA, 0x5D, 0xD1, 0x15, 0xFA, 0x60, 0xD7, 0x70, 0x64, 0x3D, 0x44, 0x08, 0xB8, 0xDB, 0xAD } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData14Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x000007C0, { { 0x82, 0xA9, 0x0B, 0x90, 0x9D, 0x65, 0x1E, 0xC7, 0x03, 0x5E, 0xB7, 0xDF, 0x6E, 0x1F, 0xED, 0xD6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData15Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000504, { { 0xA7, 0x91, 0x4F, 0xAD, 0xB1, 0x77, 0x80, 0x3A, 0xC7, 0xDE, 0x35, 0x7A, 0x96, 0x16, 0xD2, 0x13 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData16Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B3D, { { 0xCC, 0x63, 0x5A, 0x11, 0xEE, 0x8A, 0xAE, 0x3A, 0x14, 0xC3, 0xBC, 0xDA, 0xAF, 0x1D, 0xD4, 0x2C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData17Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000084, 0x00000911, { { 0x09, 0x1C, 0x4B, 0xD9, 0x0B, 0x2A, 0xD6, 0xC1, 0xE3, 0x8D, 0xFE, 0x43, 0x8F, 0x2E, 0x21, 0x51 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData18Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000008FA, { { 0xFE, 0x58, 0xD9, 0x67, 0x78, 0x97, 0xE2, 0xCD, 0x82, 0xB8, 0xC9, 0xC0, 0x1F, 0xCA, 0x7C, 0xF5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData19Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6B, { { 0xA1, 0xDD, 0x7B, 0x8B, 0x25, 0xA5, 0x96, 0x5A, 0x33, 0x5E, 0x80, 0x5F, 0xA5, 0xBB, 0xAC, 0x11 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData20Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6C, { { 0x19, 0xF9, 0x93, 0x1D, 0x01, 0xEE, 0x7C, 0x8B, 0x6C, 0x3E, 0x35, 0x2C, 0x5C, 0x88, 0xCD, 0xB6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData21Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D83, { { 0xCB, 0x4F, 0x21, 0x29, 0x63, 0x5B, 0x8C, 0xF2, 0xBA, 0x03, 0x49, 0xD1, 0xAF, 0x22, 0xB0, 0xD5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData22Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000200, { { 0x66, 0xEE, 0x45, 0xB1, 0x87, 0x66, 0xC4, 0x55, 0xCE, 0x60, 0x0C, 0x5B, 0xBB, 0x3C, 0x7D, 0x33 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData23Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000020D, { { 0xC4, 0x49, 0xE2, 0x5B, 0x2E, 0x17, 0x68, 0xC4, 0xBA, 0x20, 0xEC, 0xB1, 0xEB, 0x1A, 0xFB, 0xE0 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData24Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000214, { { 0xF1, 0x46, 0x82, 0xEF, 0x6D, 0xCA, 0x68, 0xA2, 0xF3, 0x55, 0x63, 0xD2, 0x13, 0x25, 0x19, 0xF7 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData25Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000256, { { 0x8F, 0xB9, 0xCD, 0xB8, 0x58, 0xCB, 0x90, 0x03, 0xFC, 0xB6, 0x95, 0x6F, 0x52, 0xF8, 0x7D, 0x19 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData26Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000263, { { 0x7A, 0x37, 0x07, 0xC4, 0x67, 0x72, 0x1F, 0xCB, 0xAC, 0x98, 0x46, 0x9A, 0xF3, 0x5F, 0xBA, 0x78 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData27Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000026A, { { 0x80, 0x11, 0xEE, 0x44, 0xDA, 0xE1, 0x26, 0x1F, 0x14, 0x7E, 0x93, 0x99, 0x44, 0x44, 0x9F, 0x85 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData28Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F6, { { 0x45, 0xA1, 0xA5, 0xEC, 0x85, 0x06, 0xE2, 0x91, 0x28, 0xE0, 0xBB, 0x53, 0x74, 0x44, 0xD9, 0xA6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData29Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F9, { { 0x3F, 0x03, 0x2F, 0x8B, 0xFB, 0x6A, 0x97, 0x05, 0xED, 0xBB, 0xD6, 0xA0, 0xF5, 0x7A, 0x6D, 0x08 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData30Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000204, { { 0xA1, 0x37, 0x57, 0xC3, 0x72, 0x08, 0x98, 0xA6, 0xF4, 0x5E, 0x58, 0x9E, 0xF3, 0x11, 0x88, 0x1E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData31Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000212, { { 0x19, 0xCC, 0x6F, 0xA8, 0x29, 0xB5, 0x3B, 0x15, 0x2F, 0x2C, 0x43, 0xED, 0x7A, 0xF5, 0xC5, 0x69 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData32Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000006C9, { { 0xBF, 0x65, 0xBA, 0x3F, 0x44, 0xEE, 0xB0, 0x5C, 0x8B, 0xBD, 0x15, 0xAB, 0x03, 0xD1, 0x55, 0x21 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData33Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00001585, { { 0xB5, 0x44, 0x06, 0xC9, 0xE8, 0x27, 0x75, 0x6E, 0x63, 0x77, 0xE9, 0xA9, 0x68, 0x73, 0xF5, 0x78 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData34Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x00000B43, { { 0x52, 0xB4, 0x1E, 0x14, 0x88, 0xBD, 0x8A, 0xD7, 0x38, 0xDF, 0x25, 0xB0, 0xAF, 0xAE, 0x76, 0xE1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData35Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000005A4, { { 0xFB, 0x82, 0xE7, 0xB2, 0x54, 0xDB, 0xB5, 0xE1, 0xCE, 0xFB, 0xD1, 0x23, 0x39, 0x8F, 0xA1, 0x0D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData36Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000572, { { 0x2C, 0x16, 0xD9, 0xBE, 0xDB, 0xBA, 0x04, 0xCA, 0x97, 0xB5, 0x88, 0x43, 0xA8, 0x62, 0xE2, 0x04 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData37Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000024E, { { 0xFF, 0x28, 0xD8, 0x62, 0xC6, 0xAD, 0x48, 0xC7, 0x31, 0x84, 0x6C, 0xBA, 0x9F, 0x4D, 0x15, 0xDA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData38Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000001D9, 0x00001FB1, { { 0x16, 0xB0, 0xDF, 0x86, 0x8C, 0xB3, 0x52, 0xEF, 0x21, 0x04, 0x22, 0x6D, 0xC0, 0x03, 0xB8, 0xC6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData39Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000582, { { 0x11, 0x6C, 0xBB, 0xF6, 0x1B, 0x3C, 0xAE, 0xAA, 0x40, 0x27, 0x3F, 0x86, 0x33, 0x92, 0xCB, 0xA9 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData40Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000160, 0x000010A2, { { 0xD9, 0x9D, 0xF1, 0x7D, 0xE1, 0x7C, 0x61, 0xC0, 0xD4, 0xD3, 0x05, 0x0C, 0x79, 0xDD, 0xDB, 0xD1 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData41Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000355, { { 0x92, 0x85, 0xBE, 0x5A, 0x38, 0x08, 0xF3, 0xDF, 0xC6, 0x56, 0x74, 0xC3, 0x0B, 0x3F, 0x72, 0x4D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData42Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x0000010B, { { 0x68, 0xF8, 0x1D, 0x74, 0x6D, 0x32, 0x1E, 0x3A, 0x1C, 0xD1, 0x1D, 0x4B, 0x89, 0x3D, 0x5F, 0x2B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2IntroAnimData43Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000116, { { 0xD5, 0x46, 0xCB, 0x3F, 0x27, 0xBD, 0x2B, 0xD6, 0x35, 0x69, 0x9E, 0x0A, 0x28, 0xDA, 0xC9, 0x84 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroShapes00Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000005A, 0x00000A86, { { 0xF9, 0xD5, 0xD2, 0x93, 0xBC, 0xC4, 0x86, 0x3F, 0x83, 0x0D, 0xDB, 0x38, 0x60, 0x6E, 0xA7, 0xDA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroShapes01Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x0000009B, { { 0xAA, 0xDD, 0x25, 0x21, 0x57, 0x6A, 0xB7, 0xEB, 0xDA, 0xFD, 0x72, 0x3B, 0xCA, 0x68, 0xDB, 0x34 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroShapes04Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000417, { { 0x13, 0x95, 0x81, 0x46, 0x84, 0x36, 0xF2, 0xFC, 0xDE, 0x15, 0x85, 0x81, 0xB3, 0x9A, 0x9D, 0x20 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2IntroShapes07Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000006C, 0x000021F1, { { 0x6F, 0x7C, 0x28, 0xBB, 0xC3, 0x52, 0xE4, 0x13, 0xB4, 0xE9, 0xA4, 0x47, 0x9A, 0xBE, 0x19, 0xDA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000031C, 0x0000E287, { { 0x1E, 0x73, 0x93, 0x79, 0xB7, 0xF8, 0x17, 0xEE, 0xE4, 0xFC, 0xF0, 0x34, 0x9D, 0x06, 0x4F, 0x55 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000039F, 0x00011660, { { 0xBC, 0x1D, 0x95, 0x20, 0x32, 0xF5, 0x83, 0xCF, 0xF7, 0x11, 0xE4, 0x1D, 0x89, 0x47, 0xF0, 0x65 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2CreditsDataProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000090C, 0x00023464, { { 0x55, 0x31, 0x9D, 0x60, 0x2C, 0xA1, 0x0B, 0xF9, 0xED, 0x46, 0xDF, 0x44, 0x1A, 0x9F, 0xB1, 0xB0 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000B11, 0x0002BBD7, { { 0x46, 0x24, 0x78, 0xE9, 0xCE, 0x75, 0x45, 0x7B, 0x3B, 0xAA, 0x15, 0xD8, 0x5B, 0xCB, 0x06, 0x3A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleCPSFilesProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000009C, 0x00002853, { { 0x1F, 0xB9, 0x3D, 0x48, 0x47, 0x31, 0x0D, 0xA8, 0x92, 0x52, 0xD1, 0x54, 0x48, 0x42, 0x47, 0xBD } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000009C, 0x00002878, { { 0x48, 0x3B, 0x7A, 0xC2, 0x9C, 0xEC, 0x10, 0x07, 0xD1, 0xB6, 0x9E, 0x89, 0xE9, 0xE1, 0xBF, 0xBF } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData00Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B66, { { 0x9B, 0x8C, 0x17, 0xFA, 0xD2, 0x4F, 0x4B, 0x0E, 0x3A, 0x43, 0xB1, 0x86, 0x0C, 0xDC, 0x73, 0xAB } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData01Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000063, 0x00000A03, { { 0xBB, 0x31, 0xEA, 0x35, 0xFB, 0x99, 0x4C, 0x3E, 0x72, 0xBD, 0x36, 0x6B, 0x5C, 0x03, 0x19, 0x7F } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData02Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000007C2, { { 0xF6, 0x83, 0x37, 0x58, 0x3C, 0x59, 0x84, 0x8F, 0x97, 0x80, 0xE2, 0xD8, 0xFD, 0x77, 0xA9, 0x54 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData03Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x0000092B, { { 0x47, 0xE4, 0x34, 0xE8, 0x72, 0xCC, 0xA4, 0x4A, 0xA4, 0x8F, 0xBA, 0xBC, 0x0C, 0x04, 0x18, 0xAF } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData04Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x0000080B, { { 0x16, 0xDB, 0x77, 0x4C, 0x8E, 0xFD, 0x44, 0xF6, 0x5E, 0x28, 0x0B, 0x74, 0x93, 0x45, 0x8F, 0xD9 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData05Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000C72, { { 0x6C, 0x57, 0x56, 0x7E, 0x87, 0x10, 0x9C, 0xE7, 0x69, 0xAC, 0x3B, 0x3F, 0xF6, 0x43, 0x5C, 0xD4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData06Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000264, { { 0x48, 0x49, 0x5D, 0x78, 0xE2, 0xF1, 0x0D, 0x87, 0xEE, 0xEE, 0xD1, 0xA1, 0xC6, 0x64, 0xCA, 0x13 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData07Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000ABE, { { 0xFE, 0xA9, 0x5D, 0x87, 0xAF, 0x55, 0x04, 0x92, 0x41, 0xD3, 0xAD, 0x1D, 0xFF, 0x03, 0x81, 0x3C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData08Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000004D8, { { 0x4E, 0xA7, 0xCC, 0x0B, 0x1B, 0x48, 0x22, 0x09, 0x33, 0xF7, 0x23, 0xF1, 0xF5, 0x9F, 0xA5, 0x7B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData09Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000004BE, { { 0xF6, 0xEA, 0xA0, 0x7F, 0x54, 0x61, 0x79, 0x4C, 0x71, 0xD7, 0x9B, 0xA6, 0xC3, 0x45, 0xEE, 0x3E } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData10Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000FC4, { { 0xA9, 0xFB, 0x31, 0x55, 0xB8, 0x28, 0x63, 0xC3, 0x4B, 0x9E, 0x7D, 0x41, 0xC7, 0x1F, 0x2F, 0xBD } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData11Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000C6, 0x0000166B, { { 0xCC, 0x16, 0x50, 0xFF, 0xFF, 0xD5, 0xAE, 0x03, 0x40, 0xA3, 0x9A, 0x1F, 0xF8, 0x8E, 0x23, 0x7A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData12Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001A69, { { 0x6A, 0x80, 0x89, 0x7E, 0xFC, 0xE4, 0x01, 0xF5, 0xA2, 0x11, 0xE7, 0x26, 0x20, 0x96, 0x62, 0x7B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData13Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001886, { { 0xF9, 0x5B, 0x62, 0xDD, 0xAB, 0x14, 0x35, 0x77, 0x53, 0x05, 0xDB, 0xC5, 0xFD, 0x4D, 0x4F, 0x12 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData14Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000108, 0x00001895, { { 0x22, 0xA1, 0x88, 0x69, 0xF9, 0x1C, 0xA2, 0x64, 0x44, 0xCD, 0x00, 0xFA, 0xB1, 0x94, 0xEB, 0x3A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData15Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000D1, 0x000016E5, { { 0xD8, 0xE9, 0xA5, 0xEE, 0x54, 0x1B, 0x3E, 0x32, 0xDA, 0x78, 0x90, 0xC2, 0x54, 0xFC, 0xD5, 0x39 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData16Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000008F, 0x00000C69, { { 0xBC, 0x41, 0xE5, 0xAF, 0x89, 0xE2, 0x54, 0x12, 0x9E, 0xB0, 0x5F, 0x28, 0xFF, 0x92, 0x9D, 0x89 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData17Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x000000DC, 0x0000170D, { { 0x7A, 0x7B, 0x74, 0xCB, 0x68, 0xC2, 0xFF, 0xC7, 0xBE, 0x47, 0xE9, 0x43, 0xF7, 0x15, 0x8D, 0x59 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData18Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000134, 0x00002651, { { 0x71, 0x26, 0x47, 0x0D, 0x7C, 0x96, 0x45, 0x0B, 0x82, 0xD0, 0x37, 0xB9, 0xD4, 0xD0, 0x84, 0xFC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData19Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x000009C3, { { 0xDA, 0x96, 0xDF, 0x16, 0xEB, 0x5D, 0x49, 0xA4, 0x3F, 0xD3, 0x31, 0xBE, 0x49, 0x72, 0xF2, 0x71 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEob2FinaleAnimData20Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000003D8, { { 0xD9, 0xC8, 0x58, 0x4B, 0x7D, 0x79, 0x86, 0xCB, 0xEB, 0x77, 0xC2, 0xD4, 0xB7, 0xB4, 0xE9, 0x6A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleShapes00Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000071C, { { 0xE8, 0x67, 0xCB, 0x76, 0x6D, 0x49, 0xC2, 0x05, 0x0D, 0xAD, 0xB6, 0x83, 0x35, 0xB3, 0xBE, 0xE5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleShapes03Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000571, { { 0x91, 0xEC, 0xAC, 0x12, 0x08, 0x33, 0xDA, 0x7C, 0xBD, 0x51, 0x64, 0xE3, 0xAE, 0x43, 0x75, 0x14 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleShapes07Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x00000166, { { 0xED, 0x6E, 0x0C, 0x85, 0x13, 0x6F, 0xAC, 0xEB, 0xCA, 0x74, 0x2E, 0x2D, 0x0E, 0xCE, 0x17, 0xD6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleShapes09Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000036, 0x00000898, { { 0xEB, 0xB0, 0xD9, 0xC4, 0xB6, 0xBC, 0xE3, 0xAF, 0xB2, 0x5D, 0xE3, 0xCE, 0xF7, 0x26, 0x07, 0xE5 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2FinaleShapes10Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000017F, { { 0x0F, 0x37, 0x94, 0xA6, 0xCE, 0x23, 0xE3, 0x2E, 0x5E, 0x2B, 0x78, 0x5B, 0x66, 0xC8, 0xE5, 0x96 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2NpcShapeDataProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000045D, { { 0x69, 0xE0, 0x5E, 0x86, 0xEB, 0x7D, 0x25, 0x95, 0xC2, 0xA0, 0xE9, 0xD5, 0x3A, 0x4A, 0x65, 0xBC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseClassModifierFlagsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000000F, 0x00000059, { { 0x17, 0x2B, 0x23, 0x14, 0x0F, 0x9D, 0x94, 0xD3, 0xBF, 0x94, 0x83, 0x0B, 0x79, 0xDB, 0xC0, 0xA9 } } } }, // EOB 1
+ { UNK_LANG, kPlatformUnknown, { 0x0000000F, 0x00000083, { { 0x54, 0x68, 0xF4, 0x07, 0x3E, 0x2A, 0xD4, 0x06, 0xF3, 0x10, 0x88, 0x6C, 0xE3, 0x34, 0x08, 0x30 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterStepTable01Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000200, { { 0x26, 0x86, 0x10, 0x04, 0xC1, 0x48, 0xDD, 0xC0, 0x9F, 0x92, 0xD6, 0x20, 0x38, 0x36, 0xE2, 0xDD } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterStepTable02Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000400, { { 0x6E, 0x53, 0x3C, 0x7A, 0x11, 0x46, 0x8B, 0xDC, 0x73, 0x24, 0xF8, 0x13, 0xCB, 0x6C, 0x9B, 0xE6 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterStepTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000400, { { 0x8B, 0x4C, 0x6B, 0x86, 0x93, 0xDA, 0x82, 0x1B, 0x04, 0x23, 0x92, 0x5B, 0x79, 0xB9, 0xFB, 0x06 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterStepTable2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000601, { { 0xE4, 0x36, 0x12, 0x93, 0x44, 0xDE, 0x6E, 0xA0, 0x4B, 0x98, 0x4B, 0x47, 0x87, 0xE3, 0x40, 0xD4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterStepTable3Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x000007F8, { { 0x00, 0x0C, 0xB0, 0xDA, 0xE1, 0xC8, 0x45, 0x11, 0x57, 0xE4, 0x72, 0xD2, 0x32, 0xC6, 0x16, 0x2B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000006, { { 0x4F, 0x9D, 0x50, 0xDA, 0xA1, 0x75, 0xB0, 0xD5, 0x90, 0xCA, 0xFF, 0x3E, 0xB5, 0xE8, 0x0D, 0xAA } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable21Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x0000000C, { { 0x6A, 0xED, 0x15, 0xCE, 0x69, 0x54, 0x7D, 0x7B, 0x6D, 0xCE, 0xC7, 0x2A, 0x01, 0xD7, 0xDC, 0xB0 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable22Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000018, { { 0x6D, 0xB9, 0x69, 0x4A, 0xE3, 0x72, 0x03, 0x5B, 0x5A, 0xBB, 0x15, 0x4A, 0xDA, 0xFB, 0x99, 0x87 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttUnkTableProvider[] = {////
+ { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x000007FE, { { 0xF0, 0xCB, 0x3A, 0x53, 0xDD, 0x59, 0x04, 0x87, 0x6F, 0x1B, 0x5A, 0x13, 0xBA, 0x78, 0x62, 0xEC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttChkTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000008, { { 0x93, 0x27, 0x19, 0xA7, 0xA7, 0x49, 0x0E, 0xC9, 0xED, 0x5C, 0x8F, 0x9F, 0xC2, 0x34, 0x62, 0x07 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttChkTable2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000008, { { 0xEB, 0xF0, 0x27, 0x7E, 0xA8, 0x09, 0x3A, 0x95, 0x3B, 0x71, 0x2A, 0x43, 0x2E, 0xCF, 0x22, 0x0B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttDstTable1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000018, { { 0x1E, 0xC9, 0x6C, 0x5D, 0xDF, 0xD4, 0xC0, 0x87, 0xAD, 0xEE, 0x86, 0x29, 0xD5, 0x3E, 0x8D, 0xB4 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterCloseAttDstTable2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000078, { { 0x4C, 0xA8, 0x2A, 0x53, 0xB3, 0xAA, 0x52, 0x96, 0x1D, 0xE8, 0x37, 0xDB, 0x4A, 0x77, 0xD8, 0x5B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterProximityTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000030, { { 0x25, 0xFC, 0xA3, 0xEB, 0x44, 0x93, 0x9B, 0x33, 0xB5, 0x86, 0xC4, 0xCB, 0x17, 0xEF, 0x2D, 0x47 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseFindBlockMonstersTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x00000088, { { 0x6F, 0xEE, 0x8B, 0x4C, 0x21, 0xF0, 0xC6, 0x4F, 0x1D, 0x05, 0x95, 0x41, 0xD7, 0xD6, 0x52, 0x66 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterDirChangeTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x0000180C, { { 0xCD, 0xBB, 0xFD, 0xAB, 0xFB, 0x1D, 0x5C, 0x0F, 0xA2, 0xAC, 0x32, 0xA9, 0xA1, 0x93, 0x2D, 0x1C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseMonsterDistAttStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000076, 0x00002965, { { 0x1A, 0x22, 0x50, 0x04, 0x27, 0x05, 0xE9, 0x61, 0xF9, 0x0A, 0xF0, 0x50, 0x01, 0x0E, 0x65, 0xB4 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000008C, 0x00003274, { { 0xE7, 0x24, 0x17, 0x13, 0x4F, 0xB3, 0xF9, 0xB7, 0x90, 0xFA, 0x3D, 0xFF, 0xA7, 0xFB, 0x3F, 0x1F } } } },
+ { EN_ANY, kPlatformUnknown, { 0x00000054, 0x00001D03, { { 0xEB, 0x07, 0xD4, 0x22, 0xFD, 0xA0, 0x77, 0x80, 0x22, 0x04, 0x2E, 0x27, 0x7F, 0x64, 0x99, 0x4E } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000062, 0x000023E0, { { 0xB8, 0x03, 0x5C, 0x31, 0xCC, 0x18, 0xCD, 0x8D, 0x60, 0xD1, 0xFB, 0x5B, 0x66, 0xC2, 0x9A, 0x4C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseEncodeMonsterDefsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000150, 0x00001ACB, { { 0x73, 0x67, 0x5B, 0x64, 0x22, 0xDB, 0x08, 0x3A, 0xCD, 0xEB, 0x30, 0x28, 0xBD, 0xAD, 0xF8, 0x9B } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoBBaseNpcPresetsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000088B, 0x000038D0, { { 0x2E, 0xAE, 0xF0, 0x2A, 0x71, 0x6F, 0x7C, 0x5C, 0xF5, 0xAF, 0xB8, 0xBB, 0x47, 0xE5, 0xB6, 0xC3 } } } }, // EOB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000816, 0x00002C8E, { { 0xAB, 0xEE, 0x18, 0x0E, 0x59, 0xF6, 0xE0, 0x26, 0x93, 0xAB, 0x3B, 0x23, 0x29, 0x7A, 0x2C, 0x97 } } } }, // EOB 2
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2Npc1StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000B, 0x000003B9, { { 0xB1, 0x67, 0x80, 0x21, 0x92, 0xDD, 0xFA, 0x4C, 0x4D, 0x64, 0x7C, 0x05, 0x08, 0xDC, 0x55, 0xFD } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000000D, 0x0000049E, { { 0x2D, 0x78, 0xF6, 0x20, 0x30, 0xEC, 0x62, 0x6E, 0x58, 0xF7, 0xC7, 0x6D, 0xD7, 0xBD, 0x70, 0x76 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2Npc2StringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000012, 0x0000064C, { { 0xB0, 0x66, 0x0D, 0xDE, 0x16, 0xEB, 0x5E, 0x51, 0xAF, 0x4D, 0x19, 0xD1, 0x1E, 0x0B, 0xCB, 0xD6 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000018, 0x000008FF, { { 0x59, 0x29, 0x01, 0x6F, 0xF0, 0x49, 0xC8, 0x57, 0x3E, 0x70, 0x01, 0x7E, 0x5E, 0xF2, 0xEB, 0x35 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2MonsterDustStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000001F, 0x00000AD7, { { 0x2B, 0x66, 0x27, 0xFD, 0xC6, 0x17, 0x0B, 0x6B, 0xFC, 0x7D, 0x7F, 0xD2, 0xC4, 0x12, 0x8F, 0x33 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x0000001F, 0x00000A91, { { 0x1D, 0x7D, 0xEE, 0xB8, 0x9B, 0x37, 0x2E, 0x64, 0x13, 0xB6, 0x39, 0xED, 0x88, 0xB6, 0x8B, 0xD7 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2DreamStepsProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000000E, 0x00000114, { { 0x27, 0x32, 0xCB, 0x89, 0x27, 0xC5, 0xDD, 0x91, 0xBE, 0x97, 0x62, 0xF5, 0x76, 0xF7, 0xCD, 0x25 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2KheldranStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000001A, 0x00000887, { { 0xA6, 0xB4, 0x45, 0x1B, 0x33, 0x54, 0x36, 0xAD, 0x1D, 0xB1, 0xDA, 0xC3, 0x12, 0x85, 0x3C, 0x58 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000511, { { 0xEE, 0x21, 0xA8, 0x6E, 0xF7, 0xEC, 0x9A, 0x8D, 0xBA, 0x8D, 0xE3, 0x4A, 0x17, 0x15, 0xCA, 0x8C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2HornStringsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000009A, 0x00003541, { { 0xA5, 0x4D, 0x88, 0xAC, 0x1C, 0xCD, 0x57, 0xD4, 0x1E, 0x9F, 0xAE, 0x13, 0x46, 0xAD, 0xA0, 0x22 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x000000AB, 0x00003B6C, { { 0x36, 0x34, 0xB3, 0xB1, 0x55, 0x66, 0x7A, 0x90, 0x97, 0x01, 0xDC, 0x4A, 0xAF, 0x17, 0x6B, 0x5A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2HornSoundsProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000004, 0x00000106, { { 0x3E, 0x7B, 0x96, 0xFD, 0xCA, 0x4E, 0xA7, 0xA6, 0xB8, 0x82, 0x67, 0xCF, 0x93, 0x86, 0xE4, 0x45 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2WallOfForceDsXProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000024, 0x00000D67, { { 0x51, 0xCF, 0xAB, 0x1E, 0xB4, 0xE0, 0xE3, 0x44, 0x29, 0xD1, 0xDC, 0x82, 0xCD, 0x08, 0x50, 0xF5 } } } },
+
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2WallOfForceDsYProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000003, 0x00000048, { { 0x45, 0xFC, 0xEA, 0x8C, 0x34, 0xD7, 0xBE, 0x74, 0x05, 0x03, 0xE6, 0x94, 0x34, 0xB5, 0x45, 0x4D } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2WallOfForceNumWProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000003, 0x00000006, { { 0x52, 0x89, 0xDF, 0x73, 0x7D, 0xF5, 0x73, 0x26, 0xFC, 0xDD, 0x22, 0x59, 0x7A, 0xFB, 0x1F, 0xAC } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2WallOfForceNumHProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000003, 0x00000011, { { 0x33, 0x86, 0x06, 0xBE, 0x8D, 0xC8, 0x37, 0x2D, 0x0F, 0x61, 0x97, 0xA4, 0x26, 0xA9, 0xBC, 0x60 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2WallOfForceShpIdProvider[] = {
+ { UNK_LANG, kPlatformPC, { 0x00000003, 0x00000006, { { 0x77, 0xAE, 0x9B, 0x52, 0x9E, 0xF7, 0xEB, 0x48, 0xA8, 0x5E, 0xED, 0xC2, 0x08, 0x53, 0xCE, 0x3C } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kLoLIngamePakFilesProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x00000088, 0x0000224F, { { 0xDA, 0x24, 0x18, 0xA3, 0xEF, 0x16, 0x70, 0x8F, 0xA8, 0xC2, 0x2E, 0xC2, 0xED, 0x39, 0x03, 0xD1 } } } },
{ UNK_LANG, kPlatformPC98, { 0x00000084, 0x00002125, { { 0x7A, 0x89, 0xE2, 0x36, 0xEC, 0x6F, 0x52, 0x2B, 0xEF, 0xBA, 0x3D, 0x28, 0x54, 0xDA, 0xFB, 0x72 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharacterDefsProvider[] = {
+const ExtractEntrySearchData kLoLCharacterDefsProvider[] = {
{ RU_RUS, kPlatformPC, { 0x00000492, 0x000052BA, { { 0x52, 0x29, 0x0D, 0x49, 0xFD, 0x17, 0xD7, 0x70, 0x6D, 0xCA, 0xEB, 0xB6, 0x7E, 0xFA, 0xBE, 0x08 } } } }, // floppy
{ EN_ANY, kPlatformPC, { 0x00000492, 0x000046B0, { { 0x7A, 0x94, 0x8B, 0xC6, 0xF7, 0xF1, 0x2F, 0xF3, 0xBC, 0x1B, 0x0B, 0x4E, 0x00, 0xC9, 0x44, 0x58 } } } }, // floppy
{ DE_DEU, kPlatformPC, { 0x00000492, 0x000047FD, { { 0x8C, 0x0B, 0x8B, 0xCE, 0xE0, 0xB0, 0x8F, 0xA9, 0x06, 0xC3, 0x98, 0xE6, 0x2E, 0x09, 0xB6, 0x93 } } } }, // floppy
@@ -1352,7 +3357,7 @@ const ExtractEntrySearchData kLolCharacterDefsProvider[] = {
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngameSfxFilesProvider[] = {
+const ExtractEntrySearchData kLoLIngameSfxFilesProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000008F2, 0x0001E5B6, { { 0x63, 0x5E, 0x37, 0xAA, 0x27, 0x80, 0x4C, 0x85, 0xB1, 0x9D, 0x7B, 0x1D, 0x64, 0xA3, 0xEB, 0x97 } } } }, // floppy
{ UNK_LANG, kPlatformPC, { 0x000008F2, 0x0001E5B7, { { 0x9E, 0xC8, 0xE8, 0x19, 0x2F, 0x58, 0x0B, 0xC7, 0x2D, 0x41, 0x72, 0xE7, 0xF4, 0x80, 0x03, 0xCB } } } }, // CD
{ UNK_LANG, kPlatformPC98, { 0x000008EF, 0x0001E585, { { 0x85, 0x81, 0x5C, 0xA4, 0x34, 0x44, 0xF4, 0x58, 0xF9, 0x82, 0xEE, 0x0F, 0x6A, 0x0D, 0xA2, 0x7F } } } },
@@ -1360,329 +3365,359 @@ const ExtractEntrySearchData kLolIngameSfxFilesProvider[] = {
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngameSfxIndexProvider[] = {
+const ExtractEntrySearchData kLoLIngameSfxIndexProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x000003E8, 0x0000E8D2, { { 0x19, 0x39, 0x17, 0xED, 0xAE, 0xDC, 0x7A, 0xAC, 0x45, 0x5F, 0x2D, 0xCD, 0x65, 0x8D, 0xAD, 0xAE } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMusicTrackMapProvider[] = {
+const ExtractEntrySearchData kLoLMusicTrackMapProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000000F0, 0x0000210D, { { 0x55, 0x25, 0x3E, 0x35, 0xD2, 0xD8, 0x13, 0xE3, 0x1D, 0xB1, 0xB3, 0x00, 0x2E, 0x17, 0x91, 0x2F } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngameGMSfxIndexProvider[] = {
+const ExtractEntrySearchData kLoLIngameGMSfxIndexProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00006281, { { 0x25, 0x89, 0xB0, 0x3B, 0x12, 0x09, 0x02, 0xF6, 0xFE, 0x76, 0xD5, 0xC9, 0x5B, 0x88, 0xAC, 0xAA } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngameMT32SfxIndexProvider[] = {
+const ExtractEntrySearchData kLoLIngameMT32SfxIndexProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00006579, { { 0x16, 0x40, 0x1C, 0x09, 0x69, 0xA9, 0x0D, 0x6D, 0x4B, 0x0C, 0x99, 0xF0, 0x40, 0x5D, 0xBB, 0x6E } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolIngamePcSpkSfxIndexProvider[] = {
+const ExtractEntrySearchData kLoLIngamePcSpkSfxIndexProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000000FA, 0x00005EFC, { { 0xA3, 0x5C, 0x69, 0xED, 0x13, 0xEC, 0x08, 0x0E, 0xFA, 0x72, 0x83, 0x0D, 0xD7, 0x8D, 0x9C, 0x70 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolSpellPropertiesProvider[] = {
+const ExtractEntrySearchData kLoLSpellPropertiesProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000118, 0x00000B06, { { 0x27, 0x69, 0x53, 0x01, 0xA0, 0xE3, 0x76, 0xAA, 0x33, 0xA4, 0x52, 0x11, 0x52, 0xB1, 0x0E, 0xDA } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolGameShapeMapProvider[] = {
+const ExtractEntrySearchData kLoLGameShapeMapProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000114, 0x000038D3, { { 0xB2, 0x8A, 0x5D, 0x9A, 0x51, 0x63, 0x4D, 0x65, 0xE4, 0xF5, 0xBA, 0x88, 0x70, 0x6C, 0xA6, 0xF8 } } } }, // floppy + PC98
{ UNK_LANG, kPlatformPC, { 0x00000114, 0x00003B97, { { 0x29, 0xE5, 0x0F, 0x51, 0xF0, 0x10, 0x35, 0x3E, 0x70, 0x3A, 0xAA, 0xFE, 0xD7, 0xD5, 0xAA, 0x9F } } } }, // CD
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolSceneItemOffsProvider[] = {
+const ExtractEntrySearchData kLoLSceneItemOffsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000300, { { 0x69, 0x80, 0x5A, 0x3E, 0x63, 0xC1, 0x04, 0x60, 0x09, 0x2F, 0x49, 0xD7, 0x26, 0x32, 0xAA, 0xE2 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharInvIndexProvider[] = {
+const ExtractEntrySearchData kLoLCharInvIndexProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x00000006, { { 0x19, 0x79, 0x4E, 0xFC, 0x05, 0x14, 0x89, 0x23, 0xEB, 0xCA, 0x94, 0x50, 0xE8, 0xD3, 0x81, 0x24 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharInvDefsProvider[] = {
+const ExtractEntrySearchData kLoLCharInvDefsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000058, 0x00001D7A, { { 0x25, 0xE4, 0xEB, 0x6D, 0xBE, 0xEA, 0xBD, 0x9A, 0x9F, 0xA5, 0x9E, 0xEB, 0x3D, 0x03, 0x1D, 0x72 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharDefsManProvider[] = {
+const ExtractEntrySearchData kLoLCharDefsManProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharDefsWomanProvider[] = {
+const ExtractEntrySearchData kLoLCharDefsWomanProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharDefsKieranProvider[] = {
+const ExtractEntrySearchData kLoLCharDefsKieranProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x000002E3, { { 0xBF, 0xB1, 0x0F, 0x40, 0xBF, 0xA1, 0xD0, 0x2B, 0xC9, 0x80, 0x35, 0x40, 0xA9, 0xA3, 0x01, 0xC8 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCharDefsAkshelProvider[] = {
+const ExtractEntrySearchData kLoLCharDefsAkshelProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x000002FB, { { 0x47, 0x3C, 0x07, 0x15, 0x20, 0xE6, 0x90, 0x59, 0x55, 0xF2, 0xA7, 0xC3, 0x27, 0x22, 0xAB, 0xDC } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolExpRequirementsProvider[] = {
+const ExtractEntrySearchData kLoLExpRequirementsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000C0A, { { 0x3F, 0x36, 0xFA, 0xE3, 0xB0, 0x76, 0x5E, 0xFF, 0xE9, 0xBA, 0xDF, 0xD0, 0x9D, 0xFF, 0xDD, 0x27 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterModifiersProvider[] = {
+const ExtractEntrySearchData kLoLMonsterModifiersProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000018, 0x000002C6, { { 0x38, 0x9A, 0x8B, 0x50, 0xD2, 0x9B, 0x95, 0x38, 0x91, 0x02, 0xA9, 0xBE, 0x78, 0xE5, 0x89, 0x65 } } } }, // floppy + PC98
{ UNK_LANG, kPlatformPC, { 0x00000018, 0x000002EE, { { 0x4E, 0x37, 0x56, 0xE3, 0x42, 0xB3, 0x15, 0x2C, 0x7E, 0x9B, 0x7E, 0x50, 0x32, 0x91, 0x55, 0xBE } } } }, // CD
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterShiftOffsetsProvider[] = {
+const ExtractEntrySearchData kLoLMonsterShiftOffsetsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000803, { { 0x30, 0x55, 0x74, 0x0D, 0xC7, 0x3B, 0xD9, 0x5C, 0x26, 0xF0, 0x4E, 0x8F, 0xE4, 0x4D, 0xCB, 0x2A } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterDirFlagsProvider[] = {
+const ExtractEntrySearchData kLoLMonsterDirFlagsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000080, { { 0xE5, 0xA1, 0xE3, 0xCE, 0xA0, 0x5F, 0x15, 0xE9, 0x5B, 0x28, 0x90, 0xC0, 0xDF, 0x21, 0xEC, 0x24 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterScaleYProvider[] = {
+const ExtractEntrySearchData kLoLMonsterScaleYProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x00000982, { { 0xE2, 0x71, 0x5F, 0x57, 0x4A, 0x8F, 0x50, 0xDB, 0x3E, 0xDA, 0xAB, 0x10, 0xEB, 0xDB, 0x0D, 0x14 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterScaleXProvider[] = {
+const ExtractEntrySearchData kLoLMonsterScaleXProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000918, { { 0xF6, 0x14, 0xE6, 0x48, 0x4E, 0x5B, 0x43, 0xCC, 0xCE, 0x4E, 0x98, 0x71, 0x5A, 0xC2, 0x00, 0x1E } } } },
{ UNK_LANG, kPlatformPC98, { 0x0000001D, 0x000008D2, { { 0x1C, 0x25, 0x38, 0xE2, 0xBB, 0xB2, 0xDB, 0x93, 0x1B, 0x25, 0xB6, 0x89, 0xA9, 0x9B, 0x0A, 0xFE } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMonsterScaleWHProvider[] = {
+const ExtractEntrySearchData kLoLMonsterScaleWHProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000082, 0x00001D2A, { { 0x85, 0x7E, 0x18, 0xDD, 0x74, 0x1C, 0x62, 0x6F, 0xF4, 0xE5, 0xAF, 0x65, 0xEC, 0x6A, 0x90, 0xAD } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolFlyingObjectShpProvider[] = {
+const ExtractEntrySearchData kLoLFlyingObjectShpProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000082, 0x00000252, { { 0xDE, 0x9D, 0x89, 0xAF, 0x0F, 0x50, 0x14, 0x60, 0x68, 0xAF, 0x19, 0xD8, 0x54, 0x8A, 0x36, 0x27 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolInventoryDescProvider[] = {
+const ExtractEntrySearchData kLoLInventoryDescProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000082D, { { 0x86, 0xB4, 0xB9, 0x50, 0xB6, 0xDA, 0x29, 0xB2, 0xC0, 0x0D, 0x34, 0x3F, 0x8D, 0x88, 0xAA, 0xE4 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolLevelShpListProvider[] = {
+const ExtractEntrySearchData kLoLLevelShpListProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000007F, 0x00002090, { { 0x17, 0x31, 0x8A, 0xB5, 0x9B, 0x3A, 0xDA, 0x16, 0x9E, 0xE3, 0xD1, 0x5F, 0xB4, 0x7B, 0xB2, 0x25 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolLevelDatListProvider[] = {
+const ExtractEntrySearchData kLoLLevelDatListProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000007F, 0x00001FB8, { { 0xF6, 0xE9, 0x98, 0x79, 0x51, 0xCA, 0xA0, 0x35, 0xE4, 0xD0, 0xA1, 0xCD, 0x23, 0x89, 0x7D, 0x11 } } } }, // floppy + PC98
{ UNK_LANG, kPlatformPC, { 0x000000FF, 0x000047EC, { { 0x0D, 0xA5, 0xFD, 0x8A, 0x33, 0xDB, 0x93, 0x43, 0xE2, 0x57, 0x35, 0xEC, 0xA6, 0xCF, 0x7A, 0xA1 } } } }, // CD
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCompassDefsProvider[] = {
+const ExtractEntrySearchData kLoLCompassDefsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000100, 0x000030EF, { { 0x6F, 0xF0, 0x46, 0x6E, 0xB3, 0x72, 0xCF, 0xC7, 0xE3, 0xAF, 0xBE, 0x63, 0xA1, 0x1C, 0x33, 0x20 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolItemPricesProvider[] = {
+const ExtractEntrySearchData kLoLItemPricesProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x0000005C, 0x00001251, { { 0x18, 0x62, 0x5E, 0xE2, 0xE4, 0x2A, 0xB0, 0xA0, 0x8B, 0x8D, 0x9D, 0x07, 0x5F, 0x83, 0x53, 0xF7 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolStashSetupProvider[] = {
+const ExtractEntrySearchData kLoLStashSetupProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x0000001E, { { 0x1C, 0x93, 0x66, 0x56, 0xDB, 0xD7, 0xA4, 0xB3, 0xE7, 0x2F, 0xEA, 0x88, 0xE2, 0xC8, 0x79, 0xD0 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscUnk1Provider[] = {
+const ExtractEntrySearchData kLoLDscWallsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000A2A, { { 0xAC, 0x4E, 0x73, 0x2C, 0xB0, 0xEE, 0x24, 0x0E, 0x66, 0x8D, 0x48, 0xE5, 0xCA, 0x6B, 0x7F, 0x7F } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscShapeIndexProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscShapeIndexProvider[] = {
+ // LOL:
{ UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000728, { { 0x14, 0xBA, 0x6D, 0x5C, 0x7D, 0x20, 0x0D, 0x35, 0xA7, 0xB0, 0x8D, 0x2F, 0x1D, 0x2A, 0x49, 0xA4 } } } },
+ // EOB:
+ { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000632, { { 0xBE, 0x3E, 0x84, 0x71, 0x89, 0x04, 0xC9, 0x1D, 0xCF, 0xE4, 0x3B, 0xD8, 0x2A, 0xF4, 0x0F, 0x54 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscOvlMapProvider[] = {
+const ExtractEntrySearchData kLoLDscOvlMapProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000001F, { { 0x9C, 0xF2, 0xCC, 0x48, 0x42, 0xC6, 0x76, 0x83, 0xD3, 0x1A, 0x43, 0x42, 0x7F, 0xEF, 0x19, 0x0F } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscScaleWidthDataProvider[] = {
+const ExtractEntrySearchData kLoLDscScaleWidthDataProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00000ABE, { { 0x28, 0x9A, 0xAA, 0x16, 0xC4, 0xFD, 0x52, 0xA9, 0x76, 0x98, 0x72, 0x0C, 0x2D, 0xE4, 0xB0, 0x57 } } } },
-
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscScaleHeightDataProvider[] = {
+const ExtractEntrySearchData kLoLDscScaleHeightDataProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000009E8, { { 0x25, 0x35, 0x07, 0xBC, 0xF9, 0x82, 0x8B, 0x5B, 0x67, 0x7C, 0x38, 0xD1, 0xF8, 0x35, 0x81, 0xC7 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscXProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscXProvider[] = {
+ // LOL
{ UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00001468, { { 0x55, 0xC5, 0x30, 0x76, 0x0A, 0xDC, 0xEC, 0xAB, 0x68, 0x9B, 0x61, 0xF0, 0x58, 0x78, 0x56, 0xA6 } } } },
+ // EOB
+ { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000BFA, { { 0x5F, 0x86, 0x9B, 0xDA, 0x5D, 0x6E, 0xC0, 0xB9, 0x29, 0x82, 0xA5, 0xD7, 0xC9, 0x34, 0x90, 0x63 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscYProvider[] = {
+const ExtractEntrySearchData kLoLDscYProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000282, { { 0x09, 0x98, 0x3A, 0x33, 0x15, 0xA1, 0x4A, 0xFF, 0x76, 0x19, 0x2B, 0xB1, 0x74, 0x89, 0xF4, 0x37 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscTileIndexProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscTileIndexProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000099, { { 0x18, 0xD9, 0x39, 0x27, 0x5B, 0x34, 0xAE, 0x7C, 0xA9, 0xA9, 0xDB, 0x42, 0x49, 0x61, 0x6B, 0x37 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscUnk2Provider[] = {
+const ExtractEntrySearchData kRpgCommonDscUnk2Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000017, 0x000000D2, { { 0xDE, 0xDA, 0x75, 0x15, 0x2B, 0xDC, 0x90, 0x3F, 0xC9, 0x92, 0x04, 0x01, 0x23, 0x7A, 0xDA, 0x2E } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoorShapeIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000017, 0x0000000A, { { 0x2E, 0xC4, 0xA1, 0x47, 0x7C, 0xAE, 0xAD, 0xD8, 0x8A, 0x72, 0x95, 0x2F, 0x18, 0xC5, 0x08, 0x19 } } } },
-
+const ExtractEntrySearchData kRpgCommonDscDoorShapeIndexProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000017, 0x0000000A, { { 0x2E, 0xC4, 0xA1, 0x47, 0x7C, 0xAE, 0xAD, 0xD8, 0x8A, 0x72, 0x95, 0x2F, 0x18, 0xC5, 0x08, 0x19 } } } }, // LOL
+ { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000021, { { 0xE3, 0x00, 0x85, 0x1C, 0x13, 0xCE, 0x5D, 0xA7, 0xA2, 0x93, 0x9B, 0x56, 0x1A, 0x0C, 0x43, 0x3E } } } }, // EOB 1
+ { UNK_LANG, kPlatformUnknown, { 0x00000035, 0x0000000B, { { 0xC2, 0xBC, 0xCA, 0x95, 0x69, 0xE8, 0x3F, 0x1F, 0xC2, 0x1C, 0x37, 0x90, 0x63, 0x8F, 0xE6, 0x1D } } } }, // EOB 2
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDimData1Provider[] = {
+const ExtractEntrySearchData kRpgCommonDscDimData1Provider[] = {
+ // LOL
{ UNK_LANG, kPlatformUnknown, { 0x00000144, 0x0001007D, { { 0x18, 0x3D, 0xA5, 0xF7, 0x1A, 0x5A, 0x90, 0xA7, 0x4E, 0x66, 0x1A, 0x4E, 0x0C, 0x69, 0x58, 0x31 } } } },
-
+ // EOB
+ { UNK_LANG, kPlatformUnknown, { 0x00000144, 0x00010115, { { 0x89, 0x37, 0x1C, 0x85, 0x53, 0xEE, 0xC0, 0xEC, 0x17, 0x26, 0x0B, 0xE5, 0xCC, 0x9C, 0x30, 0x58 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDimData2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000289, 0x00001BC2, { { 0x7F, 0x9D, 0xD3, 0x5A, 0x57, 0x73, 0xEA, 0x37, 0x44, 0x5E, 0x1A, 0x88, 0xFB, 0xE8, 0xE8, 0x8F } } } },
+const ExtractEntrySearchData kRpgCommonDscDimData2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000288, 0x00001BC2, { { 0x30, 0xD1, 0xD1, 0x35, 0x74, 0x2C, 0x86, 0x81, 0x23, 0xE2, 0x05, 0xCE, 0x75, 0x60, 0x3C, 0x55 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscBlockMapProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscBlockMapProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x00000012, { { 0x01, 0xEE, 0x32, 0xA6, 0x71, 0x15, 0x8D, 0xFB, 0x33, 0xF2, 0xD6, 0x8A, 0x30, 0x00, 0x10, 0x4B } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDimMapProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscDimMapProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000014, { { 0x4D, 0x53, 0x2E, 0xF2, 0xA3, 0xF9, 0xE2, 0xEC, 0x44, 0xBE, 0x5F, 0x04, 0x91, 0xF8, 0xE1, 0x04 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscOvlIndexProvider[] = {
+const ExtractEntrySearchData kLoLDscOvlIndexProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000028, 0x00000048, { { 0x3E, 0x8E, 0x62, 0xAF, 0xD1, 0x28, 0x39, 0x73, 0x0D, 0xD8, 0x4A, 0xA7, 0xF4, 0xD7, 0x32, 0x25 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscBlockIndexProvider[] = {
+const ExtractEntrySearchData kRpgCommonDscBlockIndexProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00002200, { { 0xF4, 0x8B, 0x32, 0xC3, 0xD3, 0xFB, 0x46, 0xF2, 0xB8, 0x3A, 0x58, 0x39, 0x94, 0x57, 0x97, 0x4B } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoor1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000080, 0x00000348, { { 0xC6, 0x58, 0x8B, 0xFE, 0x18, 0x72, 0x47, 0xF1, 0xB6, 0x3A, 0x0F, 0xFB, 0x3D, 0x99, 0x74, 0xD0 } } } },
+const ExtractEntrySearchData kRpgCommonDscDoorY2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000080, 0x00000348, { { 0xC6, 0x58, 0x8B, 0xFE, 0x18, 0x72, 0x47, 0xF1, 0xB6, 0x3A, 0x0F, 0xFB, 0x3D, 0x99, 0x74, 0xD0 } } } }, // LOL
+ { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000046, { { 0x35, 0x36, 0xBC, 0xD8, 0x63, 0x25, 0x31, 0xA9, 0x61, 0x8E, 0xF6, 0x54, 0x4A, 0x79, 0x17, 0xF8 } } } }, // EOB
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kRpgCommonDscDoorFrameY1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000053B, { { 0xF0, 0x9E, 0xC5, 0xB1, 0xEA, 0x5A, 0x58, 0xBD, 0xAC, 0x7B, 0xB2, 0xD4, 0xFE, 0x3F, 0x4F, 0x51 } } } }, // EOB I
+ { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000046, { { 0xD4, 0xA4, 0xEC, 0xA2, 0x99, 0xB6, 0x5E, 0x12, 0x98, 0xFF, 0xF2, 0x55, 0xC8, 0xBD, 0xC5, 0x8F } } } }, // EOB II
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kRpgCommonDscDoorFrameY2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000053B, { { 0xF0, 0x9E, 0xC5, 0xB1, 0xEA, 0x5A, 0x58, 0xBD, 0xAC, 0x7B, 0xB2, 0xD4, 0xFE, 0x3F, 0x4F, 0x51 } } } }, // EOB I
+ { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000150, { { 0x49, 0x7E, 0xF4, 0xDF, 0x8D, 0x04, 0x0A, 0xCE, 0x49, 0xBB, 0xA2, 0x1D, 0x8D, 0xC2, 0x14, 0x9E } } } }, // EOB II
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kRpgCommonDscDoorFrameIndex1Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x00000058, { { 0xC9, 0xAF, 0x1F, 0x68, 0xF1, 0xDE, 0x96, 0x9B, 0x3B, 0xCB, 0x56, 0xEC, 0x2E, 0x62, 0x9A, 0x0A } } } },
+ EXTRACT_END_ENTRY
+};
+const ExtractEntrySearchData kRpgCommonDscDoorFrameIndex2Provider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x000000E8, { { 0x8C, 0x10, 0x56, 0xEA, 0x4D, 0x1A, 0x9C, 0xB2, 0x55, 0x54, 0xA5, 0x61, 0x1D, 0x19, 0x4E, 0x50 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoorScaleProvider[] = {
+const ExtractEntrySearchData kLoLDscDoorScaleProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000010, 0x0000024C, { { 0x8D, 0x83, 0x26, 0xEE, 0xDC, 0xF7, 0x13, 0xC0, 0xAA, 0x88, 0xC2, 0xAA, 0x66, 0xA7, 0x59, 0x41 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoor4Provider[] = {
+const ExtractEntrySearchData kLoLDscDoor4Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000103, { { 0x29, 0xC0, 0x4B, 0x7F, 0x36, 0x23, 0xBB, 0x38, 0x4C, 0x83, 0xC6, 0x9D, 0xB4, 0x8F, 0x29, 0x2E } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoorXProvider[] = {
+const ExtractEntrySearchData kLoLDscDoorXProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000480, 0x0001654D, { { 0x2A, 0x1F, 0xBF, 0xE3, 0xC4, 0xEF, 0x7E, 0xD1, 0x61, 0x51, 0xFE, 0x88, 0x8D, 0x1F, 0x59, 0x70 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolDscDoorYProvider[] = {
+const ExtractEntrySearchData kLoLDscDoorYProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000480, 0x00026666, { { 0x06, 0xBF, 0xA4, 0xD4, 0x6E, 0x29, 0x42, 0xA2, 0xA0, 0x8E, 0x3C, 0x14, 0xF3, 0xD6, 0x3F, 0x87 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolScrollXTopProvider[] = {
+const ExtractEntrySearchData kLoLScrollXTopProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolScrollYTopProvider[] = {
+const ExtractEntrySearchData kLoLScrollYTopProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x00000022, { { 0xF3, 0x20, 0x5A, 0xC1, 0xBB, 0x0C, 0x79, 0x52, 0x23, 0xC1, 0x36, 0x81, 0x70, 0x2F, 0x92, 0xFC } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolScrollXBottomProvider[] = {
+const ExtractEntrySearchData kLoLScrollXBottomProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolScrollYBottomProvider[] = {
+const ExtractEntrySearchData kLoLScrollYBottomProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000003C, { { 0x5B, 0x4F, 0xB7, 0xB5, 0x55, 0xA2, 0x9A, 0x21, 0xEF, 0xB4, 0x98, 0x47, 0x05, 0x57, 0x49, 0x55 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonDefsProvider[] = {
+const ExtractEntrySearchData kLoLButtonDefsProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x0000082A, 0x0000CAAE, { { 0xC1, 0x83, 0x0D, 0xA0, 0x66, 0x16, 0x3D, 0x31, 0xCE, 0x30, 0x9F, 0x4E, 0x00, 0x65, 0x5A, 0xC8 } } } }, // floppy
{ UNK_LANG, kPlatformPC, { 0x0000082A, 0x0000C34E, { { 0x7F, 0x9A, 0x0F, 0x28, 0x1A, 0x8F, 0x03, 0x46, 0x48, 0xEB, 0xC9, 0xB9, 0x23, 0x29, 0x5E, 0x50 } } } }, // floppy
{ UNK_LANG, kPlatformPC, { 0x0000082A, 0x0000C47B, { { 0xDF, 0x1A, 0x18, 0x1F, 0x58, 0x05, 0x1F, 0x56, 0xD8, 0x6D, 0xBB, 0x93, 0xEC, 0x35, 0x9D, 0xA5 } } } }, // CD
@@ -1691,110 +3726,110 @@ const ExtractEntrySearchData kLolButtonDefsProvider[] = {
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList1Provider[] = {
+const ExtractEntrySearchData kLoLButtonList1Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000050, 0x00000A37, { { 0x0F, 0x73, 0xEC, 0xDD, 0xAB, 0xFF, 0x49, 0x46, 0x5E, 0x8F, 0x0D, 0xC3, 0xE7, 0x1B, 0x89, 0x51 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList2Provider[] = {
+const ExtractEntrySearchData kLoLButtonList2Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x00000522, { { 0xEA, 0x41, 0x46, 0xE2, 0xFE, 0xAA, 0x7D, 0x5E, 0x89, 0x7F, 0xBF, 0x9B, 0x30, 0x60, 0x74, 0xF3 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList3Provider[] = {
+const ExtractEntrySearchData kLoLButtonList3Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000004, 0x0000023E, { { 0x70, 0xAA, 0xCA, 0xAC, 0x5C, 0x21, 0xCF, 0xA5, 0xBF, 0x7F, 0x5F, 0xBC, 0xF1, 0x24, 0x8A, 0xAF } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList4Provider[] = {
+const ExtractEntrySearchData kLoLButtonList4Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x0000054D, { { 0x19, 0x2A, 0xBE, 0x7F, 0x94, 0x10, 0xA0, 0x60, 0x2A, 0x33, 0xD6, 0x11, 0x85, 0xF0, 0xA4, 0xA9 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList5Provider[] = {
+const ExtractEntrySearchData kLoLButtonList5Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000045D, { { 0xE3, 0x7C, 0xC2, 0x36, 0x21, 0x46, 0xDB, 0xF3, 0xDD, 0x38, 0x4B, 0x40, 0xE0, 0x35, 0x09, 0xC3 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList6Provider[] = {
+const ExtractEntrySearchData kLoLButtonList6Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000001C, 0x000004C4, { { 0x21, 0x7C, 0x29, 0x3F, 0x95, 0x6F, 0x91, 0x8C, 0xB2, 0x30, 0x09, 0xA6, 0x7B, 0x48, 0x44, 0x8F } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList7Provider[] = {
+const ExtractEntrySearchData kLoLButtonList7Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000006, 0x0000021D, { { 0xDC, 0xCE, 0x1B, 0xEB, 0x11, 0x6D, 0xDE, 0x37, 0x17, 0xC8, 0x06, 0x51, 0xC3, 0x0C, 0xCB, 0xA6 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolButtonList8Provider[] = {
+const ExtractEntrySearchData kLoLButtonList8Provider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000253, { { 0x0C, 0x7B, 0x10, 0x99, 0x93, 0xD0, 0x33, 0xCA, 0xAB, 0x8D, 0x7E, 0x24, 0xE5, 0x7E, 0x6C, 0x91 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolLegendDataProvider[] = {
+const ExtractEntrySearchData kLoLLegendDataProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000858, { { 0x63, 0x5E, 0x60, 0xC7, 0x62, 0x2C, 0x5D, 0x8F, 0x74, 0x71, 0x98, 0xB7, 0x09, 0xD2, 0x51, 0xC7 } } } },
{ UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000A52, { { 0x81, 0xC5, 0xA4, 0xE7, 0x60, 0xDA, 0xD6, 0x5E, 0x19, 0xAB, 0xF3, 0xC7, 0xDD, 0xDB, 0x92, 0x5E } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMapCursorOvlProvider[] = {
+const ExtractEntrySearchData kLoLMapCursorOvlProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x00000019, 0x000009CD, { { 0xF6, 0xD2, 0xFA, 0x36, 0x62, 0x95, 0x1D, 0x99, 0x7F, 0x11, 0x5F, 0xA8, 0x4D, 0x47, 0x72, 0x40 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolMapStringIdProvider[] = {
+const ExtractEntrySearchData kLoLMapStringIdProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000CFB, { { 0xE3, 0xC3, 0x41, 0x06, 0xD1, 0x71, 0x77, 0x78, 0xAD, 0x39, 0xAE, 0x2C, 0x16, 0x21, 0x45, 0xB7 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolSpellbookAnimProvider[] = {
+const ExtractEntrySearchData kLoLSpellbookAnimProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000038, 0x000003A1, { { 0x50, 0xA0, 0xF6, 0xA7, 0x53, 0x96, 0x86, 0x49, 0xB0, 0x8D, 0xA8, 0xB2, 0x2D, 0x9A, 0xE2, 0x1F } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolSpellbookCoordsProvider[] = {
+const ExtractEntrySearchData kLoLSpellbookCoordsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000018F, { { 0xA5, 0xF6, 0x8A, 0x58, 0x9A, 0xC7, 0x3C, 0x3A, 0xB5, 0x87, 0x89, 0x87, 0x73, 0x51, 0x9B, 0x1B } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolHealShapeFramesProvider[] = {
+const ExtractEntrySearchData kLoLHealShapeFramesProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000050, 0x000000F4, { { 0xC9, 0x6E, 0x39, 0xE1, 0xD7, 0xAD, 0x10, 0x4F, 0xE2, 0xFE, 0xDC, 0xAD, 0x00, 0x9D, 0x41, 0xEF } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolLightningDefsProvider[] = {
+const ExtractEntrySearchData kLoLLightningDefsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000014, 0x00000385, { { 0x68, 0x39, 0x65, 0xCB, 0xA9, 0x80, 0x90, 0xFB, 0xDD, 0x77, 0x0C, 0x76, 0x5A, 0xB5, 0x05, 0x03 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolFireballCoordsProvider[] = {
+const ExtractEntrySearchData kLoLFireballCoordsProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000200, 0x0000FD81, { { 0xB3, 0xE0, 0x6F, 0x89, 0xCD, 0xE5, 0xA9, 0x6A, 0x4B, 0x61, 0x7A, 0x3F, 0x47, 0x26, 0x73, 0x58 } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolCreditsProvider[] = {
+const ExtractEntrySearchData kLoLCreditsProvider[] = {
{ JA_JPN , kPlatformPC98, { 0x000005E7, 0x0001A1B0, { { 0x2A, 0xD0, 0x38, 0x84, 0x0C, 0x38, 0xCB, 0x52, 0x5D, 0x82, 0xBE, 0x03, 0x76, 0xFA, 0x0A, 0x4A } } } },
EXTRACT_END_ENTRY
};
-const ExtractEntrySearchData kLolHistoryProvider[] = {
+const ExtractEntrySearchData kLoLHistoryProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000001D1, 0x00007F9B, { { 0x25, 0x10, 0x86, 0x40, 0xAC, 0x53, 0xFE, 0x11, 0x4D, 0xE2, 0xD9, 0x35, 0xD6, 0x89, 0xBB, 0x09 } } } },
EXTRACT_END_ENTRY
@@ -1934,81 +3969,472 @@ const ExtractEntry extractProviders[] = {
{ k3ItemAnimData, k3ItemAnimDataProvider },
{ k3ItemMagicTable, k3ItemMagicTableProvider },
{ k3ItemStringMap, k3ItemStringMapProvider },
- { kLolIngamePakFiles, kLolIngamePakFilesProvider },
- { kLolCharacterDefs, kLolCharacterDefsProvider },
- { kLolIngameSfxFiles, kLolIngameSfxFilesProvider },
- { kLolIngameSfxIndex, kLolIngameSfxIndexProvider },
- { kLolMusicTrackMap, kLolMusicTrackMapProvider },
- { kLolIngameGMSfxIndex, kLolIngameGMSfxIndexProvider },
- { kLolIngameMT32SfxIndex, kLolIngameMT32SfxIndexProvider },
- { kLolIngamePcSpkSfxIndex, kLolIngamePcSpkSfxIndexProvider },
- { kLolSpellProperties, kLolSpellPropertiesProvider },
- { kLolGameShapeMap, kLolGameShapeMapProvider },
- { kLolSceneItemOffs, kLolSceneItemOffsProvider },
- { kLolCharInvIndex, kLolCharInvIndexProvider },
- { kLolCharInvDefs, kLolCharInvDefsProvider },
- { kLolCharDefsMan, kLolCharDefsManProvider },
- { kLolCharDefsWoman, kLolCharDefsWomanProvider },
- { kLolCharDefsKieran, kLolCharDefsKieranProvider },
- { kLolCharDefsAkshel, kLolCharDefsAkshelProvider },
- { kLolExpRequirements, kLolExpRequirementsProvider },
- { kLolMonsterModifiers, kLolMonsterModifiersProvider },
- { kLolMonsterShiftOffsets, kLolMonsterShiftOffsetsProvider },
- { kLolMonsterDirFlags, kLolMonsterDirFlagsProvider },
- { kLolMonsterScaleY, kLolMonsterScaleYProvider },
- { kLolMonsterScaleX, kLolMonsterScaleXProvider },
- { kLolMonsterScaleWH, kLolMonsterScaleWHProvider },
- { kLolFlyingObjectShp, kLolFlyingObjectShpProvider },
- { kLolInventoryDesc, kLolInventoryDescProvider },
- { kLolLevelShpList, kLolLevelShpListProvider },
- { kLolLevelDatList, kLolLevelDatListProvider },
- { kLolCompassDefs, kLolCompassDefsProvider },
- { kLolItemPrices, kLolItemPricesProvider },
- { kLolStashSetup, kLolStashSetupProvider },
- { kLolDscUnk1, kLolDscUnk1Provider },
- { kLolDscShapeIndex, kLolDscShapeIndexProvider },
- { kLolDscOvlMap, kLolDscOvlMapProvider },
- { kLolDscScaleWidthData, kLolDscScaleWidthDataProvider },
- { kLolDscScaleHeightData, kLolDscScaleHeightDataProvider },
- { kLolDscX, kLolDscXProvider },
- { kLolDscY, kLolDscYProvider },
- { kLolDscTileIndex, kLolDscTileIndexProvider },
- { kLolDscUnk2, kLolDscUnk2Provider },
- { kLolDscDoorShapeIndex, kLolDscDoorShapeIndexProvider },
- { kLolDscDimData1, kLolDscDimData1Provider },
- { kLolDscDimData2, kLolDscDimData2Provider },
- { kLolDscBlockMap, kLolDscBlockMapProvider },
- { kLolDscDimMap, kLolDscDimMapProvider },
- { kLolDscOvlIndex, kLolDscOvlIndexProvider },
- { kLolDscBlockIndex, kLolDscBlockIndexProvider },
- { kLolDscDoor1, kLolDscDoor1Provider },
- { kLolDscDoorScale, kLolDscDoorScaleProvider },
- { kLolDscDoor4, kLolDscDoor4Provider },
- { kLolDscDoorX, kLolDscDoorXProvider },
- { kLolDscDoorY, kLolDscDoorYProvider },
- { kLolScrollXTop, kLolScrollXTopProvider },
- { kLolScrollYTop, kLolScrollYTopProvider },
- { kLolScrollXBottom, kLolScrollXBottomProvider },
- { kLolScrollYBottom, kLolScrollYBottomProvider },
- { kLolButtonDefs, kLolButtonDefsProvider },
- { kLolButtonList1, kLolButtonList1Provider },
- { kLolButtonList2, kLolButtonList2Provider },
- { kLolButtonList3, kLolButtonList3Provider },
- { kLolButtonList4, kLolButtonList4Provider },
- { kLolButtonList5, kLolButtonList5Provider },
- { kLolButtonList6, kLolButtonList6Provider },
- { kLolButtonList7, kLolButtonList7Provider },
- { kLolButtonList8, kLolButtonList8Provider },
- { kLolLegendData, kLolLegendDataProvider },
- { kLolMapCursorOvl, kLolMapCursorOvlProvider },
- { kLolMapStringId, kLolMapStringIdProvider },
- { kLolSpellbookAnim, kLolSpellbookAnimProvider },
- { kLolSpellbookCoords, kLolSpellbookCoordsProvider },
- { kLolHealShapeFrames, kLolHealShapeFramesProvider },
- { kLolLightningDefs, kLolLightningDefsProvider },
- { kLolFireballCoords, kLolFireballCoordsProvider },
- { kLolCredits, kLolCreditsProvider },
- { kLolHistory, kLolHistoryProvider },
+
+ { kEoBBaseChargenStrings1, kEoBBaseChargenStrings1Provider },
+ { kEoBBaseChargenStrings2, kEoBBaseChargenStrings2Provider },
+ { kEoBBaseChargenStartLevels, kEoBBaseChargenStartLevelsProvider },
+ { kEoBBaseChargenStatStrings, kEoBBaseChargenStatStringsProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoBBaseChargenRaceSexStringsProvider },
+ { kEoBBaseChargenClassStrings, kEoBBaseChargenClassStringsProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoBBaseChargenAlignmentStringsProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoBBaseChargenEnterGameStringsProvider },
+ { kEoBBaseChargenClassMinStats, kEoBBaseChargenClassMinStatsProvider },
+ { kEoBBaseChargenRaceMinStats, kEoBBaseChargenRaceMinStatsProvider },
+ { kEoBBaseChargenRaceMaxStats, kEoBBaseChargenRaceMaxStatsProvider },
+
+ { kEoBBaseSaveThrowTable1, kEoBBaseSaveThrowTable1Provider },
+ { kEoBBaseSaveThrowTable2, kEoBBaseSaveThrowTable2Provider },
+ { kEoBBaseSaveThrowTable3, kEoBBaseSaveThrowTable3Provider },
+ { kEoBBaseSaveThrowTable4, kEoBBaseSaveThrowTable4Provider },
+ { kEoBBaseSaveThrwLvlIndex, kEoBBaseSaveThrwLvlIndexProvider },
+ { kEoBBaseSaveThrwModDiv, kEoBBaseSaveThrwModDivProvider },
+ { kEoBBaseSaveThrwModExt, kEoBBaseSaveThrwModExtProvider },
+
+ { kEoBBasePryDoorStrings, kEoBBasePryDoorStringsProvider },
+ { kEoBBaseWarningStrings, kEoBBaseWarningStringsProvider },
+
+ { kEoBBaseItemSuffixStringsRings, kEoBBaseItemSuffixStringsRingsProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoBBaseItemSuffixStringsPotionsProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoBBaseItemSuffixStringsWandsProvider },
+
+ { kEoBBaseRipItemStrings, kEoBBaseRipItemStringsProvider },
+ { kEoBBaseCursedString, kEoBBaseCursedStringProvider },
+ { kEoBBaseEnchantedString, kEoBBaseEnchantedStringProvider },
+ { kEoBBaseMagicObjectStrings, kEoBBaseMagicObjectStringsProvider },
+ { kEoBBaseMagicObject5String, kEoBBaseMagicObject5StringProvider },
+ { kEoBBasePatternSuffix, kEoBBasePatternSuffixProvider },
+ { kEoBBasePatternGrFix1, kEoBBasePatternGrFix1Provider },
+ { kEoBBasePatternGrFix2, kEoBBasePatternGrFix2Provider },
+ { kEoBBaseValidateArmorString, kEoBBaseValidateArmorStringProvider },
+ { kEoBBaseValidateCursedString, kEoBBaseValidateCursedStringProvider },
+ { kEoBBaseValidateNoDropString, kEoBBaseValidateNoDropStringProvider },
+ { kEoBBasePotionStrings, kEoBBasePotionStringsProvider },
+ { kEoBBaseWandString, kEoBBaseWandStringProvider },
+ { kEoBBaseItemMisuseStrings, kEoBBaseItemMisuseStringsProvider },
+
+ { kEoBBaseTakenStrings, kEoBBaseTakenStringsProvider },
+ { kEoBBasePotionEffectStrings, kEoBBasePotionEffectStringsProvider },
+
+ { kEoBBaseYesNoStrings, kEoBBaseYesNoStringsProvider },
+ { kRpgCommonMoreStrings, kRpgCommonMoreStringsProvider },
+ { kEoBBaseNpcMaxStrings, kEoBBaseNpcMaxStringsProvider },
+ { kEoBBaseOkStrings, kEoBBaseOkStringsProvider },
+ { kEoBBaseNpcJoinStrings, kEoBBaseNpcJoinStringsProvider },
+ { kEoBBaseCancelStrings, kEoBBaseCancelStringsProvider },
+ { kEoBBaseAbortStrings, kEoBBaseAbortStringsProvider },
+
+ { kEoBBaseMenuStringsMain, kEoBBaseMenuStringsMainProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoBBaseMenuStringsSaveLoadProvider },
+ { kEoBBaseMenuStringsOnOff, kEoBBaseMenuStringsOnOffProvider },
+ { kEoBBaseMenuStringsSpells, kEoBBaseMenuStringsSpellsProvider },
+ { kEoBBaseMenuStringsRest, kEoBBaseMenuStringsRestProvider },
+ { kEoBBaseMenuStringsDrop, kEoBBaseMenuStringsDropProvider },
+ { kEoBBaseMenuStringsExit, kEoBBaseMenuStringsExitProvider },
+ { kEoBBaseMenuStringsStarve, kEoBBaseMenuStringsStarveProvider },
+ { kEoBBaseMenuStringsScribe, kEoBBaseMenuStringsScribeProvider },
+ { kEoBBaseMenuStringsDrop2, kEoBBaseMenuStringsDrop2Provider },
+ { kEoBBaseMenuStringsHead, kEoBBaseMenuStringsHeadProvider },
+ { kEoBBaseMenuStringsPoison, kEoBBaseMenuStringsPoisonProvider },
+ { kEoBBaseMenuStringsMgc, kEoBBaseMenuStringsMgcProvider },
+ { kEoBBaseMenuStringsPrefs, kEoBBaseMenuStringsPrefsProvider },
+ { kEoBBaseMenuStringsRest2, kEoBBaseMenuStringsRest2Provider },
+ { kEoBBaseMenuStringsRest3, kEoBBaseMenuStringsRest3Provider },
+ { kEoBBaseMenuStringsRest4, kEoBBaseMenuStringsRest4Provider },
+ { kEoBBaseMenuStringsDefeat, kEoBBaseMenuStringsDefeatProvider },
+ { kEoBBaseMenuStringsTransfer, kEoBBaseMenuStringsTransferProvider },
+ { kEoBBaseMenuStringsSpec, kEoBBaseMenuStringsSpecProvider },
+ { kEoBBaseMenuStringsSpellNo, kEoBBaseMenuStringsSpellNoProvider },
+ { kEoBBaseMenuYesNoStrings, kEoBBaseMenuYesNoStringsProvider },
+
+ { kEoBBaseSpellLevelsMage, kEoBBaseSpellLevelsMageProvider },
+ { kEoBBaseSpellLevelsCleric, kEoBBaseSpellLevelsClericProvider },
+ { kEoBBaseNumSpellsCleric, kEoBBaseNumSpellsClericProvider },
+ { kEoBBaseNumSpellsWisAdj, kEoBBaseNumSpellsWisAdjProvider },
+ { kEoBBaseNumSpellsPal, kEoBBaseNumSpellsPalProvider },
+ { kEoBBaseNumSpellsMage, kEoBBaseNumSpellsMageProvider },
+
+ { kEoBBaseCharGuiStringsHp, kEoBBaseCharGuiStringsHpProvider },
+ { kEoBBaseCharGuiStringsWp1, kEoBBaseCharGuiStringsWp1Provider },
+ { kEoBBaseCharGuiStringsWp2, kEoBBaseCharGuiStringsWp2Provider },
+ { kEoBBaseCharGuiStringsWr, kEoBBaseCharGuiStringsWrProvider },
+ { kEoBBaseCharGuiStringsSt1, kEoBBaseCharGuiStringsSt1Provider },
+ { kEoBBaseCharGuiStringsSt2, kEoBBaseCharGuiStringsSt2Provider },
+ { kEoBBaseCharGuiStringsIn, kEoBBaseCharGuiStringsInProvider },
+
+ { kEoBBaseCharStatusStrings7, kEoBBaseCharStatusStrings7Provider },
+ { kEoBBaseCharStatusStrings81, kEoBBaseCharStatusStrings81Provider },
+ { kEoBBaseCharStatusStrings82, kEoBBaseCharStatusStrings82Provider },
+ { kEoBBaseCharStatusStrings9, kEoBBaseCharStatusStrings9Provider },
+ { kEoBBaseCharStatusStrings12, kEoBBaseCharStatusStrings12Provider },
+ { kEoBBaseCharStatusStrings131, kEoBBaseCharStatusStrings131Provider },
+ { kEoBBaseCharStatusStrings132, kEoBBaseCharStatusStrings132Provider },
+
+ { kEoBBaseLevelGainStrings, kEoBBaseLevelGainStringsProvider },
+ { kEoBBaseExperienceTable0, kEoBBaseExperienceTable0Provider },
+ { kEoBBaseExperienceTable1, kEoBBaseExperienceTable1Provider },
+ { kEoBBaseExperienceTable2, kEoBBaseExperienceTable2Provider },
+ { kEoBBaseExperienceTable3, kEoBBaseExperienceTable3Provider },
+ { kEoBBaseExperienceTable4, kEoBBaseExperienceTable4Provider },
+
+ { kEoBBaseWllFlagPreset, kEoBBaseWllFlagPresetProvider },
+ { kEoBBaseDscShapeCoords, kEoBBaseDscShapeCoordsProvider },
+ { kEoBBaseDscDoorScaleOffs, kEoBBaseDscDoorScaleOffsProvider },
+ { kEoBBaseDscDoorScaleMult1, kEoBBaseDscDoorScaleMult1Provider },
+ { kEoBBaseDscDoorScaleMult2, kEoBBaseDscDoorScaleMult2Provider },
+ { kEoBBaseDscDoorScaleMult3, kEoBBaseDscDoorScaleMult3Provider },
+ { kEoBBaseDscDoorScaleMult4, kEoBBaseDscDoorScaleMult4Provider },
+ { kEoBBaseDscDoorScaleMult5, kEoBBaseDscDoorScaleMult5Provider },
+ { kEoBBaseDscDoorScaleMult6, kEoBBaseDscDoorScaleMult6Provider },
+ { kEoBBaseDscDoorType5Offs, kEoBBaseDscDoorType5OffsProvider },
+ { kEoBBaseDscDoorXE, kEoBBaseDscDoorXEProvider },
+ { kEoBBaseDscDoorY1, kEoBBaseDscDoorY1Provider },
+ { kEoBBaseDscDoorY3, kEoBBaseDscDoorY3Provider },
+ { kEoBBaseDscDoorY4, kEoBBaseDscDoorY4Provider },
+ { kEoBBaseDscDoorY5, kEoBBaseDscDoorY5Provider },
+ { kEoBBaseDscDoorY6, kEoBBaseDscDoorY6Provider },
+ { kEoBBaseDscDoorY7, kEoBBaseDscDoorY7Provider },
+ { kEoBBaseDscDoorCoordsExt, kEoBBaseDscDoorCoordsExtProvider },
+ { kEoBBaseDscItemPosIndex, kEoBBaseDscItemPosIndexProvider },
+ { kEoBBaseDscItemShpX, kEoBBaseDscItemShpXProvider },
+ { kEoBBaseDscItemPosUnk, kEoBBaseDscItemPosUnkProvider },
+ { kEoBBaseDscItemTileIndex, kEoBBaseDscItemTileIndexProvider },
+ { kEoBBaseDscItemShapeMap, kEoBBaseDscItemShapeMapProvider },
+ { kEoBBaseDscTelptrShpCoords, kEoBBaseDscTelptrShpCoordsProvider },
+
+ { kEoBBasePortalSeqData, kEoBBasePortalSeqDataProvider },
+ { kEoBBaseManDef, kEoBBaseManDefProvider },
+ { kEoBBaseManWord, kEoBBaseManWordProvider },
+ { kEoBBaseManPrompt, kEoBBaseManPromptProvider },
+
+ { kEoBBaseDscMonsterFrmOffsTbl1, kEoBBaseDscMonsterFrmOffsTbl1Provider },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kEoBBaseDscMonsterFrmOffsTbl2Provider },
+
+ { kEoBBaseInvSlotX, kEoBBaseInvSlotXProvider },
+ { kEoBBaseInvSlotY, kEoBBaseInvSlotYProvider },
+ { kEoBBaseSlotValidationFlags, kEoBBaseSlotValidationFlagsProvider },
+
+ { kEoBBaseProjectileWeaponTypes, kEoBBaseProjectileWeaponTypesProvider },
+ { kEoBBaseWandTypes, kEoBBaseWandTypesProvider },
+
+ { kEoBBaseDrawObjPosIndex, kEoBBaseDrawObjPosIndexProvider },
+ { kEoBBaseFlightObjFlipIndex, kEoBBaseFlightObjFlipIndexProvider },
+ { kEoBBaseFlightObjShpMap, kEoBBaseFlightObjShpMapProvider },
+ { kEoBBaseFlightObjSclIndex, kEoBBaseFlightObjSclIndexProvider },
+
+ { kEoBBaseBookNumbers, kEoBBaseBookNumbersProvider },
+ { kEoBBaseMageSpellsList, kEoBBaseMageSpellsListProvider },
+ { kEoBBaseClericSpellsList, kEoBBaseClericSpellsListProvider },
+ { kEoBBaseSpellNames, kEoBBaseSpellNamesProvider },
+ { kEoBBaseMagicStrings1, kEoBBaseMagicStrings1Provider },
+ { kEoBBaseMagicStrings2, kEoBBaseMagicStrings2Provider },
+ { kEoBBaseMagicStrings3, kEoBBaseMagicStrings3Provider },
+ { kEoBBaseMagicStrings4, kEoBBaseMagicStrings4Provider },
+ { kEoBBaseMagicStrings6, kEoBBaseMagicStrings6Provider },
+ { kEoBBaseMagicStrings7, kEoBBaseMagicStrings7Provider },
+ { kEoBBaseMagicStrings8, kEoBBaseMagicStrings8Provider },
+
+ { kEoBBaseExpObjectTlMode, kEoBBaseExpObjectTlModeProvider },
+ { kEoBBaseExpObjectTblIndex, kEoBBaseExpObjectTblIndexProvider },
+ { kEoBBaseExpObjectShpStart, kEoBBaseExpObjectShpStartProvider },
+ { kEoBBaseExpObjectTbl1, kEoBBaseExpObjectTbl1Provider },
+ { kEoBBaseExpObjectTbl2, kEoBBaseExpObjectTbl2Provider },
+ { kEoBBaseExpObjectTbl3, kEoBBaseExpObjectTbl3Provider },
+ { kEoBBaseExpObjectY, kEoBBaseExpObjectYProvider },
+
+ { kEoBBaseSparkDefSteps, kEoBBaseSparkDefStepsProvider },
+ { kEoBBaseSparkDefSubSteps, kEoBBaseSparkDefSubStepsProvider },
+ { kEoBBaseSparkDefShift, kEoBBaseSparkDefShiftProvider },
+ { kEoBBaseSparkDefAdd, kEoBBaseSparkDefAddProvider },
+ { kEoBBaseSparkDefX, kEoBBaseSparkDefXProvider },
+ { kEoBBaseSparkDefY, kEoBBaseSparkDefYProvider },
+ { kEoBBaseSparkOfFlags1, kEoBBaseSparkOfFlags1Provider },
+ { kEoBBaseSparkOfFlags2, kEoBBaseSparkOfFlags2Provider },
+ { kEoBBaseSparkOfShift, kEoBBaseSparkOfShiftProvider },
+ { kEoBBaseSparkOfX, kEoBBaseSparkOfXProvider },
+ { kEoBBaseSparkOfY, kEoBBaseSparkOfYProvider },
+
+ { kEoBBaseSpellProperties, kEoBBaseSpellPropertiesProvider },
+ { kEoBBaseMagicFlightProps, kEoBBaseMagicFlightPropsProvider },
+ { kEoBBaseTurnUndeadEffect, kEoBBaseTurnUndeadEffectProvider },
+ { kEoBBaseBurningHandsDest, kEoBBaseBurningHandsDestProvider },
+ { kEoBBaseConeOfColdDest1, kEoBBaseConeOfColdDest1Provider },
+ { kEoBBaseConeOfColdDest2, kEoBBaseConeOfColdDest2Provider },
+ { kEoBBaseConeOfColdDest3, kEoBBaseConeOfColdDest3Provider },
+ { kEoBBaseConeOfColdDest4, kEoBBaseConeOfColdDest4Provider },
+ { kEoBBaseConeOfColdGfxTbl, kEoBBaseConeOfColdGfxTblProvider },
+
+ { kEoB1MainMenuStrings, kEoB1MainMenuStringsProvider },
+ { kEoB1BonusStrings, kEoB1BonusStringsProvider },
+
+ { kEoB1IntroFilesOpening, kEoB1IntroFilesOpeningProvider },
+ { kEoB1IntroFilesTower, kEoB1IntroFilesTowerProvider },
+ { kEoB1IntroFilesOrb, kEoB1IntroFilesOrbProvider },
+ { kEoB1IntroFilesWdEntry, kEoB1IntroFilesWdEntryProvider },
+ { kEoB1IntroFilesKing, kEoB1IntroFilesKingProvider },
+ { kEoB1IntroFilesHands, kEoB1IntroFilesHandsProvider },
+ { kEoB1IntroFilesWdExit, kEoB1IntroFilesWdExitProvider },
+ { kEoB1IntroFilesTunnel, kEoB1IntroFilesTunnelProvider },
+ { kEoB1IntroOpeningFrmDelay, kEoB1IntroOpeningFrmDelayProvider },
+ { kEoB1IntroWdEncodeX, kEoB1IntroWdEncodeXProvider },
+ { kEoB1IntroWdEncodeY, kEoB1IntroWdEncodeYProvider },
+ { kEoB1IntroWdEncodeWH, kEoB1IntroWdEncodeWHProvider },
+ { kEoB1IntroWdDsX, kEoB1IntroWdDsXProvider },
+ { kEoB1IntroWdDsY, kEoB1IntroWdDsYProvider },
+ { kEoB1IntroTvlX1, kEoB1IntroTvlX1Provider },
+ { kEoB1IntroTvlY1, kEoB1IntroTvlY1Provider },
+ { kEoB1IntroTvlX2, kEoB1IntroTvlX2Provider },
+ { kEoB1IntroTvlY2, kEoB1IntroTvlY2Provider },
+ { kEoB1IntroTvlW, kEoB1IntroTvlWProvider },
+ { kEoB1IntroTvlH, kEoB1IntroTvlHProvider },
+
+ { kEoB1DoorShapeDefs, kEoB1DoorShapeDefsProvider },
+ { kEoB1DoorSwitchShapeDefs, kEoB1DoorSwitchShapeDefsProvider },
+ { kEoB1DoorSwitchCoords, kEoB1DoorSwitchCoordsProvider },
+ { kEoB1MonsterProperties, kEoB1MonsterPropertiesProvider },
+
+ { kEoB1EnemyMageSpellList, kEoB1EnemyMageSpellListProvider },
+ { kEoB1EnemyMageSfx, kEoB1EnemyMageSfxProvider },
+ { kEoB1BeholderSpellList, kEoB1BeholderSpellListProvider },
+ { kEoB1BeholderSfx, kEoB1BeholderSfxProvider },
+ { kEoB1TurnUndeadString, kEoB1TurnUndeadStringProvider },
+
+ { kEoB1CgaMappingDefault, kEoB1CgaMappingDefaultProvider },
+ { kEoB1CgaMappingAlt, kEoB1CgaMappingAltProvider },
+ { kEoB1CgaMappingInv, kEoB1CgaMappingInvProvider },
+ { kEoB1CgaMappingItemsL, kEoB1CgaMappingItemsLProvider },
+ { kEoB1CgaMappingItemsS, kEoB1CgaMappingItemsSProvider },
+ { kEoB1CgaMappingThrown, kEoB1CgaMappingThrownProvider },
+ { kEoB1CgaMappingIcons, kEoB1CgaMappingIconsProvider },
+ { kEoB1CgaMappingDeco, kEoB1CgaMappingDecoProvider },
+ { kEoB1CgaLevelMappingIndex, kEoB1CgaLevelMappingIndexProvider },
+ { kEoB1CgaMappingLevel0, kEoB1CgaMappingLevel0Provider },
+ { kEoB1CgaMappingLevel1, kEoB1CgaMappingLevel1Provider },
+ { kEoB1CgaMappingLevel2, kEoB1CgaMappingLevel2Provider },
+ { kEoB1CgaMappingLevel3, kEoB1CgaMappingLevel3Provider },
+ { kEoB1CgaMappingLevel4, kEoB1CgaMappingLevel4Provider },
+
+ { kEoB1NpcShpData, kEoB1NpcShpDataProvider },
+ { kEoB1NpcSubShpIndex1, kEoB1NpcSubShpIndex1Provider },
+ { kEoB1NpcSubShpIndex2, kEoB1NpcSubShpIndex2Provider },
+ { kEoB1NpcSubShpY, kEoB1NpcSubShpYProvider },
+ { kEoB1Npc0Strings, kEoB1Npc0StringsProvider },
+ { kEoB1Npc11Strings, kEoB1Npc11StringsProvider },
+ { kEoB1Npc12Strings, kEoB1Npc12StringsProvider },
+ { kEoB1Npc21Strings, kEoB1Npc21StringsProvider },
+ { kEoB1Npc22Strings, kEoB1Npc22StringsProvider },
+ { kEoB1Npc31Strings, kEoB1Npc31StringsProvider },
+ { kEoB1Npc32Strings, kEoB1Npc32StringsProvider },
+ { kEoB1Npc4Strings, kEoB1Npc4StringsProvider },
+ { kEoB1Npc5Strings, kEoB1Npc5StringsProvider },
+ { kEoB1Npc6Strings, kEoB1Npc6StringsProvider },
+ { kEoB1Npc7Strings, kEoB1Npc7StringsProvider },
+
+ { kEoB2MainMenuStrings, kEoB2MainMenuStringsProvider },
+
+ { kEoB2TransferPortraitFrames, kEoB2TransferPortraitFramesProvider },
+ { kEoB2TransferConvertTable, kEoB2TransferConvertTableProvider },
+ { kEoB2TransferItemTable, kEoB2TransferItemTableProvider },
+ { kEoB2TransferExpTable, kEoB2TransferExpTableProvider },
+ { kEoB2TransferStrings1, kEoB2TransferStrings1Provider },
+ { kEoB2TransferStrings2, kEoB2TransferStrings2Provider },
+ { kEoB2TransferLabels, kEoB2TransferLabelsProvider },
+
+ { kEoB2IntroStrings, kEoB2IntroStringsProvider },
+ { kEoB2IntroCPSFiles, kEoB2IntroCPSFilesProvider },
+ { kEob2IntroAnimData00, kEob2IntroAnimData00Provider },
+ { kEob2IntroAnimData01, kEob2IntroAnimData01Provider },
+ { kEob2IntroAnimData02, kEob2IntroAnimData02Provider },
+ { kEob2IntroAnimData03, kEob2IntroAnimData03Provider },
+ { kEob2IntroAnimData04, kEob2IntroAnimData04Provider },
+ { kEob2IntroAnimData05, kEob2IntroAnimData05Provider },
+ { kEob2IntroAnimData06, kEob2IntroAnimData06Provider },
+ { kEob2IntroAnimData07, kEob2IntroAnimData07Provider },
+ { kEob2IntroAnimData08, kEob2IntroAnimData08Provider },
+ { kEob2IntroAnimData09, kEob2IntroAnimData09Provider },
+ { kEob2IntroAnimData10, kEob2IntroAnimData10Provider },
+ { kEob2IntroAnimData11, kEob2IntroAnimData11Provider },
+ { kEob2IntroAnimData12, kEob2IntroAnimData12Provider },
+ { kEob2IntroAnimData13, kEob2IntroAnimData13Provider },
+ { kEob2IntroAnimData14, kEob2IntroAnimData14Provider },
+ { kEob2IntroAnimData15, kEob2IntroAnimData15Provider },
+ { kEob2IntroAnimData16, kEob2IntroAnimData16Provider },
+ { kEob2IntroAnimData17, kEob2IntroAnimData17Provider },
+ { kEob2IntroAnimData18, kEob2IntroAnimData18Provider },
+ { kEob2IntroAnimData19, kEob2IntroAnimData19Provider },
+ { kEob2IntroAnimData20, kEob2IntroAnimData20Provider },
+ { kEob2IntroAnimData21, kEob2IntroAnimData21Provider },
+ { kEob2IntroAnimData22, kEob2IntroAnimData22Provider },
+ { kEob2IntroAnimData23, kEob2IntroAnimData23Provider },
+ { kEob2IntroAnimData24, kEob2IntroAnimData24Provider },
+ { kEob2IntroAnimData25, kEob2IntroAnimData25Provider },
+ { kEob2IntroAnimData26, kEob2IntroAnimData26Provider },
+ { kEob2IntroAnimData27, kEob2IntroAnimData27Provider },
+ { kEob2IntroAnimData28, kEob2IntroAnimData28Provider },
+ { kEob2IntroAnimData29, kEob2IntroAnimData29Provider },
+ { kEob2IntroAnimData30, kEob2IntroAnimData30Provider },
+ { kEob2IntroAnimData31, kEob2IntroAnimData31Provider },
+ { kEob2IntroAnimData32, kEob2IntroAnimData32Provider },
+ { kEob2IntroAnimData33, kEob2IntroAnimData33Provider },
+ { kEob2IntroAnimData34, kEob2IntroAnimData34Provider },
+ { kEob2IntroAnimData35, kEob2IntroAnimData35Provider },
+ { kEob2IntroAnimData36, kEob2IntroAnimData36Provider },
+ { kEob2IntroAnimData37, kEob2IntroAnimData37Provider },
+ { kEob2IntroAnimData38, kEob2IntroAnimData38Provider },
+ { kEob2IntroAnimData39, kEob2IntroAnimData39Provider },
+ { kEob2IntroAnimData40, kEob2IntroAnimData40Provider },
+ { kEob2IntroAnimData41, kEob2IntroAnimData41Provider },
+ { kEob2IntroAnimData42, kEob2IntroAnimData42Provider },
+ { kEob2IntroAnimData43, kEob2IntroAnimData43Provider },
+ { kEoB2IntroShapes00, kEoB2IntroShapes00Provider },
+ { kEoB2IntroShapes01, kEoB2IntroShapes01Provider },
+ { kEoB2IntroShapes04, kEoB2IntroShapes04Provider },
+ { kEoB2IntroShapes07, kEoB2IntroShapes07Provider },
+
+ { kEoB2FinaleStrings, kEoB2FinaleStringsProvider },
+ { kEoB2CreditsData, kEoB2CreditsDataProvider },
+ { kEoB2FinaleCPSFiles, kEoB2FinaleCPSFilesProvider },
+ { kEob2FinaleAnimData00, kEob2FinaleAnimData00Provider },
+ { kEob2FinaleAnimData01, kEob2FinaleAnimData01Provider },
+ { kEob2FinaleAnimData02, kEob2FinaleAnimData02Provider },
+ { kEob2FinaleAnimData03, kEob2FinaleAnimData03Provider },
+ { kEob2FinaleAnimData04, kEob2FinaleAnimData04Provider },
+ { kEob2FinaleAnimData05, kEob2FinaleAnimData05Provider },
+ { kEob2FinaleAnimData06, kEob2FinaleAnimData06Provider },
+ { kEob2FinaleAnimData07, kEob2FinaleAnimData07Provider },
+ { kEob2FinaleAnimData08, kEob2FinaleAnimData08Provider },
+ { kEob2FinaleAnimData09, kEob2FinaleAnimData09Provider },
+ { kEob2FinaleAnimData10, kEob2FinaleAnimData10Provider },
+ { kEob2FinaleAnimData11, kEob2FinaleAnimData11Provider },
+ { kEob2FinaleAnimData12, kEob2FinaleAnimData12Provider },
+ { kEob2FinaleAnimData13, kEob2FinaleAnimData13Provider },
+ { kEob2FinaleAnimData14, kEob2FinaleAnimData14Provider },
+ { kEob2FinaleAnimData15, kEob2FinaleAnimData15Provider },
+ { kEob2FinaleAnimData16, kEob2FinaleAnimData16Provider },
+ { kEob2FinaleAnimData17, kEob2FinaleAnimData17Provider },
+ { kEob2FinaleAnimData18, kEob2FinaleAnimData18Provider },
+ { kEob2FinaleAnimData19, kEob2FinaleAnimData19Provider },
+ { kEob2FinaleAnimData20, kEob2FinaleAnimData20Provider },
+ { kEoB2FinaleShapes00, kEoB2FinaleShapes00Provider },
+ { kEoB2FinaleShapes03, kEoB2FinaleShapes03Provider },
+ { kEoB2FinaleShapes07, kEoB2FinaleShapes07Provider },
+ { kEoB2FinaleShapes09, kEoB2FinaleShapes09Provider },
+ { kEoB2FinaleShapes10, kEoB2FinaleShapes10Provider },
+
+ { kEoB2NpcShapeData, kEoB2NpcShapeDataProvider },
+ { kEoBBaseClassModifierFlags, kEoBBaseClassModifierFlagsProvider },
+
+ { kEoBBaseMonsterStepTable01, kEoBBaseMonsterStepTable01Provider },
+ { kEoBBaseMonsterStepTable02, kEoBBaseMonsterStepTable02Provider },
+ { kEoBBaseMonsterStepTable1, kEoBBaseMonsterStepTable1Provider },
+ { kEoBBaseMonsterStepTable2, kEoBBaseMonsterStepTable2Provider },
+ { kEoBBaseMonsterStepTable3, kEoBBaseMonsterStepTable3Provider },
+ { kEoBBaseMonsterCloseAttPosTable1, kEoBBaseMonsterCloseAttPosTable1Provider },
+ { kEoBBaseMonsterCloseAttPosTable21, kEoBBaseMonsterCloseAttPosTable21Provider },
+ { kEoBBaseMonsterCloseAttPosTable22, kEoBBaseMonsterCloseAttPosTable22Provider },
+ { kEoBBaseMonsterCloseAttUnkTable, kEoBBaseMonsterCloseAttUnkTableProvider },
+ { kEoBBaseMonsterCloseAttChkTable1, kEoBBaseMonsterCloseAttChkTable1Provider },
+ { kEoBBaseMonsterCloseAttChkTable2, kEoBBaseMonsterCloseAttChkTable2Provider },
+ { kEoBBaseMonsterCloseAttDstTable1, kEoBBaseMonsterCloseAttDstTable1Provider },
+ { kEoBBaseMonsterCloseAttDstTable2, kEoBBaseMonsterCloseAttDstTable2Provider },
+
+ { kEoBBaseMonsterProximityTable, kEoBBaseMonsterProximityTableProvider },
+ { kEoBBaseFindBlockMonstersTable, kEoBBaseFindBlockMonstersTableProvider },
+ { kEoBBaseMonsterDirChangeTable, kEoBBaseMonsterDirChangeTableProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoBBaseMonsterDistAttStringsProvider },
+ { kEoBBaseEncodeMonsterDefs, kEoBBaseEncodeMonsterDefsProvider },
+ { kEoBBaseNpcPresets, kEoBBaseNpcPresetsProvider },
+ { kEoB2Npc1Strings, kEoB2Npc1StringsProvider },
+ { kEoB2Npc2Strings, kEoB2Npc2StringsProvider },
+ { kEoB2MonsterDustStrings, kEoB2MonsterDustStringsProvider },
+ { kEoB2DreamSteps, kEoB2DreamStepsProvider },
+ { kEoB2KheldranStrings, kEoB2KheldranStringsProvider },
+ { kEoB2HornStrings, kEoB2HornStringsProvider },
+ { kEoB2HornSounds, kEoB2HornSoundsProvider },
+ { kEoB2WallOfForceDsX, kEoB2WallOfForceDsXProvider },
+ { kEoB2WallOfForceDsY, kEoB2WallOfForceDsYProvider },
+ { kEoB2WallOfForceNumW, kEoB2WallOfForceNumWProvider },
+ { kEoB2WallOfForceNumH, kEoB2WallOfForceNumHProvider },
+ { kEoB2WallOfForceShpId, kEoB2WallOfForceShpIdProvider },
+
+ { kLoLIngamePakFiles, kLoLIngamePakFilesProvider },
+ { kLoLCharacterDefs, kLoLCharacterDefsProvider },
+ { kLoLIngameSfxFiles, kLoLIngameSfxFilesProvider },
+ { kLoLIngameSfxIndex, kLoLIngameSfxIndexProvider },
+ { kLoLMusicTrackMap, kLoLMusicTrackMapProvider },
+ { kLoLIngameGMSfxIndex, kLoLIngameGMSfxIndexProvider },
+ { kLoLIngameMT32SfxIndex, kLoLIngameMT32SfxIndexProvider },
+ { kLoLIngamePcSpkSfxIndex, kLoLIngamePcSpkSfxIndexProvider },
+ { kLoLSpellProperties, kLoLSpellPropertiesProvider },
+ { kLoLGameShapeMap, kLoLGameShapeMapProvider },
+ { kLoLSceneItemOffs, kLoLSceneItemOffsProvider },
+ { kLoLCharInvIndex, kLoLCharInvIndexProvider },
+ { kLoLCharInvDefs, kLoLCharInvDefsProvider },
+ { kLoLCharDefsMan, kLoLCharDefsManProvider },
+ { kLoLCharDefsWoman, kLoLCharDefsWomanProvider },
+ { kLoLCharDefsKieran, kLoLCharDefsKieranProvider },
+ { kLoLCharDefsAkshel, kLoLCharDefsAkshelProvider },
+ { kLoLExpRequirements, kLoLExpRequirementsProvider },
+ { kLoLMonsterModifiers, kLoLMonsterModifiersProvider },
+ { kLoLMonsterShiftOffsets, kLoLMonsterShiftOffsetsProvider },
+ { kLoLMonsterDirFlags, kLoLMonsterDirFlagsProvider },
+ { kLoLMonsterScaleY, kLoLMonsterScaleYProvider },
+ { kLoLMonsterScaleX, kLoLMonsterScaleXProvider },
+ { kLoLMonsterScaleWH, kLoLMonsterScaleWHProvider },
+ { kLoLFlyingObjectShp, kLoLFlyingObjectShpProvider },
+ { kLoLInventoryDesc, kLoLInventoryDescProvider },
+ { kLoLLevelShpList, kLoLLevelShpListProvider },
+ { kLoLLevelDatList, kLoLLevelDatListProvider },
+ { kLoLCompassDefs, kLoLCompassDefsProvider },
+ { kLoLItemPrices, kLoLItemPricesProvider },
+ { kLoLStashSetup, kLoLStashSetupProvider },
+ { kLoLDscWalls, kLoLDscWallsProvider },
+ { kRpgCommonDscShapeIndex, kRpgCommonDscShapeIndexProvider },
+ { kLoLDscOvlMap, kLoLDscOvlMapProvider },
+ { kLoLDscScaleWidthData, kLoLDscScaleWidthDataProvider },
+ { kLoLDscScaleHeightData, kLoLDscScaleHeightDataProvider },
+ { kRpgCommonDscX, kRpgCommonDscXProvider },
+ { kLoLDscY, kLoLDscYProvider },
+ { kRpgCommonDscTileIndex, kRpgCommonDscTileIndexProvider },
+ { kRpgCommonDscUnk2, kRpgCommonDscUnk2Provider },
+ { kRpgCommonDscDoorShapeIndex, kRpgCommonDscDoorShapeIndexProvider },
+ { kRpgCommonDscDimData1, kRpgCommonDscDimData1Provider },
+ { kRpgCommonDscDimData2, kRpgCommonDscDimData2Provider },
+ { kRpgCommonDscBlockMap, kRpgCommonDscBlockMapProvider },
+ { kRpgCommonDscDimMap, kRpgCommonDscDimMapProvider },
+ { kLoLDscOvlIndex, kLoLDscOvlIndexProvider },
+ { kRpgCommonDscBlockIndex, kRpgCommonDscBlockIndexProvider },
+ { kRpgCommonDscDoorY2, kRpgCommonDscDoorY2Provider },
+ { kRpgCommonDscDoorFrameY1, kRpgCommonDscDoorFrameY1Provider },
+ { kRpgCommonDscDoorFrameY2, kRpgCommonDscDoorFrameY2Provider },
+ { kRpgCommonDscDoorFrameIndex1, kRpgCommonDscDoorFrameIndex1Provider },
+ { kRpgCommonDscDoorFrameIndex2, kRpgCommonDscDoorFrameIndex2Provider },
+ { kLoLDscDoorScale, kLoLDscDoorScaleProvider },
+ { kLoLDscDoor4, kLoLDscDoor4Provider },
+ { kLoLDscDoorX, kLoLDscDoorXProvider },
+ { kLoLDscDoorY, kLoLDscDoorYProvider },
+ { kLoLScrollXTop, kLoLScrollXTopProvider },
+ { kLoLScrollYTop, kLoLScrollYTopProvider },
+ { kLoLScrollXBottom, kLoLScrollXBottomProvider },
+ { kLoLScrollYBottom, kLoLScrollYBottomProvider },
+ { kLoLButtonDefs, kLoLButtonDefsProvider },
+ { kLoLButtonList1, kLoLButtonList1Provider },
+ { kLoLButtonList2, kLoLButtonList2Provider },
+ { kLoLButtonList3, kLoLButtonList3Provider },
+ { kLoLButtonList4, kLoLButtonList4Provider },
+ { kLoLButtonList5, kLoLButtonList5Provider },
+ { kLoLButtonList6, kLoLButtonList6Provider },
+ { kLoLButtonList7, kLoLButtonList7Provider },
+ { kLoLButtonList8, kLoLButtonList8Provider },
+ { kLoLLegendData, kLoLLegendDataProvider },
+ { kLoLMapCursorOvl, kLoLMapCursorOvlProvider },
+ { kLoLMapStringId, kLoLMapStringIdProvider },
+ { kLoLSpellbookAnim, kLoLSpellbookAnimProvider },
+ { kLoLSpellbookCoords, kLoLSpellbookCoordsProvider },
+ { kLoLHealShapeFrames, kLoLHealShapeFramesProvider },
+ { kLoLLightningDefs, kLoLLightningDefsProvider },
+ { kLoLFireballCoords, kLoLFireballCoordsProvider },
+ { kLoLCredits, kLoLCreditsProvider },
+ { kLoLHistory, kLoLHistoryProvider },
{ -1, NULL }
};
diff --git a/devtools/create_kyradat/util.cpp b/devtools/create_kyradat/util.cpp
index 2420f44168..5ce8237b85 100644
--- a/devtools/create_kyradat/util.cpp
+++ b/devtools/create_kyradat/util.cpp
@@ -54,6 +54,19 @@ void warning(const char *s, ...) {
fprintf(stderr, "WARNING: %s!\n", buf);
}
+int scumm_stricmp(const char *s1, const char *s2) {
+ byte l1, l2;
+ do {
+ // Don't use ++ inside tolower, in case the macro uses its
+ // arguments more than once.
+ l1 = (byte)*s1++;
+ l1 = tolower(l1);
+ l2 = (byte)*s2++;
+ l2 = tolower(l2);
+ } while (l1 == l2 && l1 != 0);
+ return l1 - l2;
+}
+
void debug(int level, const char *s, ...) {
char buf[1024];
va_list va;
diff --git a/devtools/create_kyradat/util.h b/devtools/create_kyradat/util.h
index 0d8e15cc37..a2783cca71 100644
--- a/devtools/create_kyradat/util.h
+++ b/devtools/create_kyradat/util.h
@@ -50,6 +50,7 @@ uint32 fileSize(FILE *fp);
void NORETURN_PRE error(const char *s, ...) NORETURN_POST;
void warning(const char *s, ...);
void debug(int level, const char *s, ...);
+int scumm_stricmp(const char *s1, const char *s2);
using namespace Common;
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/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..15830bd467 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,10 +533,14 @@ 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");
projectWarnings["kyra"].push_back("4355");
+ projectWarnings["kyra"].push_back("4510");
+ projectWarnings["kyra"].push_back("4610");
projectWarnings["m4"].push_back("4355");
@@ -611,26 +672,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 +801,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 +815,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;
@@ -811,6 +855,7 @@ const Feature s_features[] = {
{ "taskbar", "USE_TASKBAR", "", true, "Taskbar integration support" },
{ "translation", "USE_TRANSLATION", "", true, "Translation support" },
{ "vkeybd", "ENABLE_VKEYBD", "", false, "Virtual keyboard support"},
+ { "keymapper","ENABLE_KEYMAPPER", "", false, "Keymapper support"},
{ "langdetect", "USE_DETECTLANG", "", true, "System language detection support" } // This feature actually depends on "translation", there
// is just no current way of properly detecting this...
};
@@ -820,7 +865,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},
@@ -1301,6 +1345,8 @@ void ProjectProvider::createModuleList(const std::string &moduleDir, const Strin
std::stack<bool> shouldInclude;
shouldInclude.push(true);
+ StringList filesInVariableList;
+
bool hadModule = false;
std::string line;
for (;;) {
@@ -1354,6 +1400,30 @@ void ProjectProvider::createModuleList(const std::string &moduleDir, const Strin
std::getline(moduleMk, line);
tokens = tokenize(line);
i = tokens.begin();
+ } else if (*i == "$(KYRARPG_COMMON_OBJ)") {
+ // HACK to fix EOB/LOL compilation in the kyra engine:
+ // replace the variable name with the stored files.
+ // This assumes that the file list has already been defined.
+ if (filesInVariableList.size() == 0)
+ error("$(KYRARPG_COMMON_OBJ) found, but the variable hasn't been set before it");
+ // Construct file list and replace the variable
+ for (StringList::iterator j = filesInVariableList.begin(); j != filesInVariableList.end(); ++j) {
+ const std::string filename = *j;
+
+ if (shouldInclude.top()) {
+ // In case we should include a file, we need to make
+ // sure it is not in the exclude list already. If it
+ // is we just drop it from the exclude list.
+ excludeList.remove(filename);
+
+ includeList.push_back(filename);
+ } else if (std::find(includeList.begin(), includeList.end(), filename) == includeList.end()) {
+ // We only add the file to the exclude list in case it
+ // has not yet been added to the include list.
+ excludeList.push_back(filename);
+ }
+ }
+ ++i;
} else {
const std::string filename = moduleDir + "/" + unifyPath(*i);
@@ -1372,6 +1442,29 @@ void ProjectProvider::createModuleList(const std::string &moduleDir, const Strin
++i;
}
}
+ } else if (*i == "KYRARPG_COMMON_OBJ") {
+ // HACK to fix EOB/LOL compilation in the kyra engine: add the
+ // files defined in the KYRARPG_COMMON_OBJ variable in a list
+ if (tokens.size() < 3)
+ error("Malformed KYRARPG_COMMON_OBJ definition in " + moduleMkFile);
+ ++i;
+
+ if (*i != ":=" && *i != "+=" && *i != "=")
+ error("Malformed KYRARPG_COMMON_OBJ definition in " + moduleMkFile);
+
+ ++i;
+
+ while (i != tokens.end()) {
+ if (*i == "\\") {
+ std::getline(moduleMk, line);
+ tokens = tokenize(line);
+ i = tokens.begin();
+ } else {
+ const std::string filename = moduleDir + "/" + unifyPath(*i);
+ filesInVariableList.push_back(filename);
+ ++i;
+ }
+ }
} else if (*i == "ifdef") {
if (tokens.size() < 2)
error("Malformed ifdef in " + moduleMkFile);
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/create_translations/cp_parser.cpp b/devtools/create_translations/cp_parser.cpp
new file mode 100644
index 0000000000..a4202bf153
--- /dev/null
+++ b/devtools/create_translations/cp_parser.cpp
@@ -0,0 +1,104 @@
+/* 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.
+ *
+ * This is a utility for create the translations.dat file from all the po files.
+ * The generated files is used by ScummVM to propose translation of its GUI.
+ */
+
+#include "cp_parser.h"
+
+#include <fstream>
+#include <stdio.h>
+
+Codepage::Codepage(const std::string &name, const uint32 *mapping) : _name(name) {
+ if (!mapping) {
+ // Default to a ISO-8859-1 mapping
+ for (unsigned int i = 0; i < 256; ++i)
+ _mapping[i] = i;
+ } else {
+ for (unsigned int i = 0; i < 256; ++i)
+ _mapping[i] = *mapping++;
+ }
+}
+
+Codepage *parseCodepageMapping(const std::string &filename) {
+ size_t start = filename.find_last_of("/\\");
+ if (start == std::string::npos)
+ start = 0;
+ // Strip off the filename extension
+ const size_t pos = filename.find_last_of('.');
+ const std::string charset(filename.substr(start + 1, pos != std::string::npos ? (pos - start - 1) : std::string::npos));
+
+ std::ifstream in(filename.c_str());
+ if (!in) {
+ fprintf(stderr, "ERROR: Could not open file \"%s\"!", filename.c_str());
+ return 0;
+ }
+
+ uint32 mapping[256];
+
+ int processedMappings = 0;
+ std::string line;
+ while (processedMappings < 256) {
+ std::getline(in, line);
+ if (in.eof())
+ break;
+ if (in.fail()) {
+ fprintf(stderr, "ERROR: Reading from file \"%s\" failed!", filename.c_str());
+ return 0;
+ }
+
+ // In case the line starts with a "#" it is a comment. We also ignore
+ // empty lines.
+ if (line.empty() || line[0] == '#')
+ continue;
+
+ // Read the unicode number, we thereby ignore everything else on the line
+ int unicode, required;
+ const int parsed = sscanf(line.c_str(), "%d %d", &unicode, &required);
+ if (parsed < 1 || parsed > 2) {
+ fprintf(stderr, "ERROR: Line \"%s\" is malformed!", filename.c_str());
+ return 0;
+ }
+ // In case no required integer was given, we assume the character is
+ // required
+ if (parsed == 1)
+ required = 1;
+
+ // -1 means default mapping
+ if (unicode == -1)
+ unicode = processedMappings;
+
+ uint32 unicodeValue = unicode;
+ if (required)
+ unicodeValue |= 0x80000000;
+
+ mapping[processedMappings++] = (uint32)unicodeValue;
+ }
+
+ // Check whether all character encodings are mapped, if not error out
+ if (processedMappings != 256) {
+ fprintf(stderr, "ERROR: File \"%s\" does not contain mappings for exactly 256 characters!", filename.c_str());
+ return 0;
+ }
+
+ // Return the codepage
+ return new Codepage(charset, mapping);
+}
diff --git a/devtools/create_mads/parser.h b/devtools/create_translations/cp_parser.h
index a7141c497a..b748430ca0 100644
--- a/devtools/create_mads/parser.h
+++ b/devtools/create_translations/cp_parser.h
@@ -8,21 +8,47 @@
* 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.
*
+ * This is a utility for create the translations.dat file from all the po files.
+ * The generated files is used by ScummVM to propose translation of its GUI.
+ */
+
+#ifndef CP_PARSER_H
+#define CP_PARSER_H
+
+#include "create_translations.h"
+
+#include <string>
+
+/**
+ * Codepage description.
+ *
+ * This includes a name, and the codepage -> unicode mapping.
*/
+class Codepage {
+public:
+ Codepage(const std::string &name, const uint32 *mapping);
+
+ const std::string &getName() const { return _name; }
-#ifndef CREATE_MADS_PARSER
-#define CREATE_MADS_PARSER
+ uint32 getMapping(unsigned char src) const { return _mapping[src]; }
+private:
+ std::string _name;
+ uint32 _mapping[256];
+};
-bool Compile(const char *srcFilename, const char *destFilename);
+/**
+ * Parse the codepage file and create a codepage.
+ */
+Codepage *parseCodepageMapping(const std::string &filename);
#endif
diff --git a/devtools/create_translations/create_translations.cpp b/devtools/create_translations/create_translations.cpp
index 9fcf3b4a31..a153632c47 100644
--- a/devtools/create_translations/create_translations.cpp
+++ b/devtools/create_translations/create_translations.cpp
@@ -25,6 +25,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
+#include <vector>
// HACK to allow building with the SDL backend on MinGW
// see bug #1800764 "TOOLS: MinGW tools building broken"
@@ -34,8 +36,23 @@
#include "create_translations.h"
#include "po_parser.h"
+#include "cp_parser.h"
-#define TRANSLATIONS_DAT_VER 2 // 1 byte
+#define TRANSLATIONS_DAT_VER 3 // 1 byte
+
+// Portable implementation of stricmp / strcasecmp / strcmpi.
+int scumm_stricmp(const char *s1, const char *s2) {
+ uint8 l1, l2;
+ do {
+ // Don't use ++ inside tolower, in case the macro uses its
+ // arguments more than once.
+ l1 = (uint8)*s1++;
+ l1 = tolower(l1);
+ l2 = (uint8)*s2++;
+ l2 = tolower(l2);
+ } while (l1 == l2 && l1 != 0);
+ return l1 - l2;
+}
// Padding buffer (filled with 0) used if we want to aligned writes
// static uint8 padBuf[DATAALIGNMENT];
@@ -52,6 +69,13 @@ void writeUint16BE(FILE *fp, uint16 value) {
writeByte(fp, (uint8)(value & 0xFF));
}
+void writeUint32BE(FILE *fp, uint32 value) {
+ writeByte(fp, (uint8)(value >> 24));
+ writeByte(fp, (uint8)(value >> 16));
+ writeByte(fp, (uint8)(value >> 8));
+ writeByte(fp, (uint8)(value & 0xFF));
+}
+
int stringSize(const char *string) {
// Each string is preceded by its size coded on 2 bytes
if (string == NULL)
@@ -82,14 +106,51 @@ void writeString(FILE *fp, const char *string) {
// Main
int main(int argc, char *argv[]) {
- // Build the translation list
+ std::vector<Codepage *> codepages;
+ // Add default codepages, we won't store them in the output later on
+ codepages.push_back(new Codepage("ascii", 0));
+ codepages.push_back(new Codepage("iso-8859-1", 0));
+
+ // Build the translation and codepage list
PoMessageList messageIds;
- PoMessageEntryList **translations = new PoMessageEntryList*[argc - 1];
+ std::vector<PoMessageEntryList *> translations;
int numLangs = 0;
for (int i = 1; i < argc; ++i) {
- translations[numLangs] = parsePoFile(argv[i], messageIds);
- if (translations[numLangs] != NULL)
- ++numLangs;
+ // Check file extension
+ int len = strlen(argv[i]);
+ if (scumm_stricmp(argv[i] + len - 2, "po") == 0) {
+ PoMessageEntryList *po = parsePoFile(argv[i], messageIds);
+ if (po != NULL) {
+ translations.push_back(po);
+ ++numLangs;
+ }
+ } else if (scumm_stricmp(argv[i] + len - 2, "cp") == 0) {
+ // Else try to parse an codepage
+ Codepage *co = parseCodepageMapping(argv[i]);
+ if (co)
+ codepages.push_back(co);
+ }
+ }
+
+ // Parse all charset mappings
+ for (int i = 0; i < numLangs; ++i) {
+ bool found = false;
+ for (size_t j = 0; j < codepages.size(); ++j) {
+ if (scumm_stricmp(codepages[j]->getName().c_str(), translations[i]->charset()) == 0) {
+ found = true;
+ break;
+ }
+ }
+
+ // In case the codepage was not found error out
+ if (!found) {
+ fprintf(stderr, "ERROR: No codepage mapping for codepage \"%s\" present!\n", translations[i]->charset());
+ for (size_t j = 0; j < translations.size(); ++j)
+ delete translations[j];
+ for (size_t j = 0; j < codepages.size(); ++j)
+ delete codepages[j];
+ return -1;
+ }
}
FILE *outFile;
@@ -110,6 +171,8 @@ int main(int argc, char *argv[]) {
// Write number of translations
writeUint16BE(outFile, numLangs);
+ // Write number of codepages, we don't save ascii and iso-8859-1
+ writeUint16BE(outFile, codepages.size() - 2);
// Write the length of each data block here.
// We could write it at the start of each block but that would mean that
@@ -119,9 +182,14 @@ int main(int argc, char *argv[]) {
// file and can then skip to the block we want.
// Blocks are:
// 1. List of languages with the language name
- // 2. Original messages (i.e. english)
- // 3. First translation
- // 4. Second translation
+ // 2. List of codepages
+ // 3. Original messages (i.e. english)
+ // 4. First translation
+ // 5. Second translation
+ // ...
+ // n. First codepage (These don't have any data size, since they are all
+ // 256 * 4 bytes long)
+ // n+1. Second codepage
// ...
// Write length for translation description
@@ -132,6 +200,12 @@ int main(int argc, char *argv[]) {
}
writeUint16BE(outFile, len);
+ // Write length for the codepage names
+ len = 0;
+ for (size_t j = 2; j < codepages.size(); ++j)
+ len += stringSize(codepages[j]->getName().c_str());
+ writeUint16BE(outFile, len);
+
// Write size for the original language (english) block
// It starts with the number of strings coded on 2 bytes followed by each
// string (two bytes for the number of chars and the string itself).
@@ -159,6 +233,11 @@ int main(int argc, char *argv[]) {
writeString(outFile, translations[lang]->languageName());
}
+ // Write list of codepages
+ for (size_t j = 2; j < codepages.size(); ++j) {
+ writeString(outFile, codepages[j]->getName().c_str());
+ }
+
// Write original messages
writeUint16BE(outFile, messageIds.size());
for (i = 0; i < messageIds.size(); ++i) {
@@ -176,12 +255,18 @@ int main(int argc, char *argv[]) {
}
}
+ // Write codepages
+ for (size_t j = 2; j < codepages.size(); ++j) {
+ const Codepage *cp = codepages[j];
+ for (i = 0; i < 256; ++i)
+ writeUint32BE(outFile, cp->getMapping(i));
+ }
+
fclose(outFile);
// Clean the memory
for (i = 0; i < numLangs; ++i)
delete translations[i];
- delete[] translations;
return 0;
}
diff --git a/devtools/create_translations/create_translations.h b/devtools/create_translations/create_translations.h
index 0ece8102f0..9ccbd39b2b 100644
--- a/devtools/create_translations/create_translations.h
+++ b/devtools/create_translations/create_translations.h
@@ -25,6 +25,7 @@
typedef unsigned char uint8;
typedef unsigned short uint16;
+typedef unsigned int uint32;
typedef signed short int16;
#endif /* CREATE_TRANSLATIONS_H */
diff --git a/devtools/create_translations/module.mk b/devtools/create_translations/module.mk
index 430cf91976..9a2b302aef 100644
--- a/devtools/create_translations/module.mk
+++ b/devtools/create_translations/module.mk
@@ -1,6 +1,7 @@
MODULE := devtools/create_translations
MODULE_OBJS := \
+ cp_parser.o \
po_parser.o \
create_translations.o
diff --git a/devtools/credits.pl b/devtools/credits.pl
index 5daf232b2b..8330450984 100755
--- a/devtools/credits.pl
+++ b/devtools/credits.pl
@@ -484,7 +484,7 @@ begin_credits("Credits");
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("Gregory Montoir", "cyx", "(retired)");
add_person("Eugene Sandulenko", "sev", "FT INSANE, MM NES, MM C64, game detection, Herc/CGA");
add_person("Ludvig Strigeus", "ludde", "(retired)");
end_section();
@@ -492,7 +492,7 @@ begin_credits("Credits");
begin_section("HE");
add_person("Jonathan Gray", "khalek", "(retired)");
add_person("Travis Howell", "Kirben", "");
- add_person("Gregory Montoir", "cyx", "");
+ add_person("Gregory Montoir", "cyx", "(retired)");
add_person("Eugene Sandulenko", "sev", "");
end_section();
@@ -523,11 +523,15 @@ begin_credits("Credits");
begin_section("Cine");
add_person("Vincent Hamm", "yaz0r", "(retired)");
add_person("Pawe&#322; Ko&#322;odziejski", "aquadran", "");
- add_person("Gregory Montoir", "cyx", "");
+ add_person("Gregory Montoir", "cyx", "(retired)");
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)");
@@ -546,7 +550,7 @@ begin_credits("Credits");
begin_section("DreamWeb");
add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
add_person("Bertrand Augereau", "Tramb", "");
- add_person("Vladimir Menshakov", "whoozle", "");
+ add_person("Vladimir Menshakov", "whoozle", "(retired)");
end_section();
begin_section("Gob");
@@ -572,7 +576,7 @@ begin_credits("Credits");
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("Gregory Montoir", "cyx", "(retired)");
add_person("Johannes Schickel", "LordHoto", "");
end_section();
@@ -586,13 +590,6 @@ begin_credits("Credits");
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]", "");
@@ -613,12 +610,13 @@ begin_credits("Credits");
begin_section("Queen");
add_person("David Eriksson", "twogood", "(retired)");
- add_person("Gregory Montoir", "cyx", "");
+ add_person("Gregory Montoir", "cyx", "(retired)");
add_person("Joost Peters", "joostp", "");
end_section();
begin_section("SAGA");
add_person("Torbj&ouml;rn Andersson", "eriktorbjorn", "");
+ add_person("Daniel Balsom", "DanielFox", "Original engine reimplementation author (retired)");
add_person("Filippos Karapetis", "[md5]", "");
add_person("Andrew Kurushin", "ajax16384", "");
add_person("Eugene Sandulenko", "sev", "");
@@ -664,7 +662,7 @@ begin_credits("Credits");
begin_section("TeenAgent");
add_person("Robert Megone", "sanguine", "Help with callback rewriting");
- add_person("Vladimir Menshakov", "whoozle", "");
+ add_person("Vladimir Menshakov", "whoozle", "(retired)");
end_section();
begin_section("Tinsel");
@@ -682,7 +680,7 @@ begin_credits("Credits");
end_section();
begin_section("Touch&eacute;");
- add_person("Gregory Montoir", "cyx", "");
+ add_person("Gregory Montoir", "cyx", "(retired)");
end_section();
begin_section("TsAGE");
@@ -691,7 +689,7 @@ begin_credits("Credits");
end_section();
begin_section("Tucker");
- add_person("Gregory Montoir", "cyx", "");
+ add_person("Gregory Montoir", "cyx", "(retired)");
end_section();
end_section();
@@ -1003,6 +1001,7 @@ begin_credits("Credits");
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");
+ add_person("Tom Frost", "TomFrost", "WebOS port contributions");
end_persons();
end_section();
@@ -1061,6 +1060,7 @@ begin_credits("Credits");
begin_section("Special thanks to");
begin_persons();
+ add_person("Daniel Balsom", "DanielFox", "For the original Reinherit (SAGA) code");
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");
@@ -1079,6 +1079,8 @@ begin_credits("Credits");
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 ".
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/module.mk b/devtools/module.mk
index 1ff5ba6da9..95eca50d18 100644
--- a/devtools/module.mk
+++ b/devtools/module.mk
@@ -32,9 +32,9 @@ clean-devtools:
# Build rules for the devtools
#
-devtools/convbdf$(EXEEXT): $(srcdir)/devtools/convbdf.c
+devtools/convbdf$(EXEEXT): $(srcdir)/devtools/convbdf.cpp
$(QUIET)$(MKDIR) devtools/$(DEPDIR)
- $(QUIET_LINK)$(LD) $(CFLAGS) -Wall -o $@ $<
+ $(QUIET_LINK)$(LD) $(CXXFLAGS) -Wall -o $@ $<
devtools/md5table$(EXEEXT): $(srcdir)/devtools/md5table.c
$(QUIET)$(MKDIR) devtools/$(DEPDIR)
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..e48e99a698 100644
--- a/devtools/scumm-md5.txt
+++ b/devtools/scumm-md5.txt
@@ -235,11 +235,15 @@ monkey The Secret of Monkey Island
pass Passport to Adventure
e6cd81b25ab1453a8a6d3482118c391e 7857 en DOS - - v1.0 9/14/90 Fingolfin
-zak Misc FM-TOWNS demos
+indyloom Indiana Jones and the Last Crusade & Loom non-interactive demo
2d388339d6050d8ccaa757b64633954e 7520 en FM-TOWNS FM-TOWNS Demo indy/loom (non-interactive) khalek
- 77f5c9cc0986eb729c1a6b4c8823bbae 7520 en FM-TOWNS FM-TOWNS Demo zak/loom (non-interactive) khalek, Fingolfin
+
+indyzak Indiana Jones and the Last Crusade & Zak McKracken non-interactive demo
3938ee1aa4433fca9d9308c9891172b1 7520 en FM-TOWNS FM-TOWNS Demo indy/zak (non-interactive) khalek
+zakloom Zak McKracken & Loom non-interactive demo
+ 77f5c9cc0986eb729c1a6b4c8823bbae 7520 en FM-TOWNS FM-TOWNS Demo zak/loom (non-interactive) khalek, Fingolfin
+
monkey2 Monkey Island 2: LeChuck's Revenge
132bff65e6367c09cc69318ce1b59333 11155 en Amiga - - v1.0 4/8/92 Fingolfin
c30ef068add4277104243c31ce46c12b -1 fr Amiga - - - Andreas Bylund
@@ -513,7 +517,7 @@ freddi2 Freddi Fish 2: The Case of the Haunted Schoolhouse
8ee63cafb1fe9d62aa0d5a23117e70e7 -1 us All HE 100 Updated - Kirben
e41de1c2a15abbcdbf9977e2d7e8a340 -1 ru Windows HE 100 Updated - sev
- c20848f53c2d48bfacdc840993843765 -1 nl Windows HE 80 Demo - DarthBo
+ c20848f53c2d48bfacdc840993843765 -1 nl All HE 80 Demo - DarthBo
fc8d197a22146e74766e9cb0cfcaf1da 27298 en All HE 80 Demo - khalek, sev
d37c55388294b66e53e7ced3af88fa68 -1 en All HE 100 Updated Demo - khalek
@@ -526,10 +530,11 @@ freddi3 Freddi Fish 3: The Case of the Stolen Conch Shell
78c07ca088526d8d4446a4c2cb501203 -1 fr All HE 99 - - alamaz, gist974
83cedbe26aa8b58988e984e3d34cac8e -1 de All HE 99 - - Joachim Eberhard
75bff95816b84672b877d22a911ab811 -1 ru Windows HE 99 Updated - sev
+ 0ddf1174d0d097956ba10dd452ea65e6 -1 he Windows HE 99 - - Matan Bareket
cb1559e8405d17a5a278a6b5ad9338d1 22718 en All - Demo - khalek, sev
bbadf7309c4a2c2763e4bbba3c3be634 -1 fr All - Demo - Kirben
- 754feb59d3bf86b8a00840df74fd7b26 -1 nl Windows - Demo - adutchguy
+ 754feb59d3bf86b8a00840df74fd7b26 -1 nl All - Demo - adutchguy
ed2b074bc3166087a747acb2a3c6abb0 -1 de All HE 98.5 Demo - Joachim Eberhard
d73c851b942af44deb9b6d5f416a0972 -1 he Windows HE 99 Demo - Ori Avtalion
@@ -550,7 +555,7 @@ freddi4 Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch
ebd324dcf06a4c49e1ba5c231eee1060 -1 us All HE 99 Demo - sev
688328c5bdc4c8ec4145688dfa077bf2 -1 de All HE 99 Demo - Joachim Eberhard
03d3b18ee3fd68114e2a687c871e38d5 -1 us Windows HE 99 Mini Game - eriktorbjorn
- 16effd200aa6b8abe9c569c3e578814d -1 nl Windows HE 99 Demo - joostp
+ 16effd200aa6b8abe9c569c3e578814d -1 nl All HE 99 Demo - joostp
499c958affc394f2a3868f1eb568c3ee -1 nl Windows HE 99 Demo - adutchguy
5fdb2ac2483908b065c6e77988338a54 -1 nl Windows HE 99 Demo - Ben
e03ed1474ec14de78359970e0457a820 -1 gb Windows HE 99 Demo - eriktorbjorn
@@ -581,6 +586,7 @@ water Freddi Fish and Luther's Water Worries
FreddisFunShop Freddi Fish's One-Stop Fun Shop
16542a7342a918bfe4ba512007d36c47 -1 us All HE 99L - - Kirben
+ 4d3fbc888de4e6565013f61dc83da6b6 36245 nl All HE 99 - - Ben Castricum
catalog Humongous Interactive Catalog
11e6e244078ff09b0f3832e35420e0a7 -1 en Windows - Demo - khalek, sev
@@ -632,7 +638,7 @@ pajama Pajama Sam 1: No Need to Hide When It's Dark Outside
f237bf8a5ef9af78b2a6a4f3901da341 18354 en All - Demo - khalek, sev
7f945525abcd48015adf1632637a44a1 -1 fr All - Demo - Kirben
- 0305e850382b812fec6e5998ef88a966 -1 nl Windows - Demo - adutchguy
+ 0305e850382b812fec6e5998ef88a966 -1 nl All - Demo - adutchguy
87df3e0074624040407764b7c5e710b9 18354 nl Windows - Demo - George Kormendi
d7ab7cd6105546016e6a0d46fb36b964 -1 en All HE 100 Demo - khalek
@@ -645,6 +651,7 @@ pajama2 Pajama Sam 2: Thunder and Lightning Aren't so Frightening
c6907d44f1166941d982864cd42cdc89 -1 de All HE 99 - - nachbarnebenan
f8be685007a8b425ba2a455da732f59f -1 fr Mac HE 99 - - alamaz
32709cbeeb3044b34129950860a83f14 -1 ru Windows HE 99 - - sev
+ 1af4eb581a33d808707d66d50e084dca -1 he Windows HE 99 - - Matan Bareket
36a6750e03fb505fc19fc2bf3e4dbe91 58749 en All - Demo - sev
30ba1e825d4ad2b448143ae8df18482a -1 nl All HE 98.5 Demo - Kirben
@@ -729,6 +736,7 @@ puttcircus Putt-Putt Joins the Circus
db74136c20557eca6ed3411bff39f7a1 -1 gb Windows - - - Reckless
d0ad929def3e9cfe39dea55bd12098d4 -1 fr Windows - - - gist974
febf4a983ea5faea1c9dd6c710ebb09c -1 de Windows - - - andy482
+ c8253da0f4626d2236b5291b99e33408 -1 he Windows HE 99 - - Matan Bareket
a7cacad9c40c4dc9e1812abf6c8af9d5 -1 en All - Demo - Kirben, sev
1387d16aa620dc1c2d1fd87f8a9e7a09 -1 fr Windows - Demo - Mevi
@@ -759,6 +767,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
@@ -783,7 +792,7 @@ PuttTime Putt-Putt Travels Through Time
4e5867848ee61bc30d157e2c94eee9b4 18394 us All HE 90 Demo - khalek, sev
59d5cfcc5e672a6e07baae01328b918b -1 fr All HE 90 Demo - Kirben
fbb697d89d2beca87360a145f467bdae -1 de All HE 90 Demo - Joachim Eberhard
- 6b19d0e25cbf720d05822379b8b90ed9 -1 nl Windows HE 90 Demo - adutchguy
+ 6b19d0e25cbf720d05822379b8b90ed9 -1 nl All HE 90 Demo - adutchguy
0a6d7b81b850ed4a77811c60c9b5c555 -1 us Windows HE 99 Mini Game - eriktorbjorn
0ab19be9e2a3f6938226638b2a3744fe -1 us All HE 100 Demo - khalek
@@ -798,6 +807,7 @@ balloon Putt-Putt and Pep's Balloon-O-Rama
dog Putt-Putt and Pep's Dog on a Stick
bd5fd7835335dfce03064d5f77b7f0ae 19681 nl Windows - - - George Kormendi
+ 1b720def35ecfa07032ddf1efb34c368 19681 nl All - - - Ben Castricum
eae95b2b3546d8ba86ae1d397c383253 -1 en All - - - Kirben
839a658f7d22de00787ebc945348cdb6 19681 de Windows - - - George Kormendi
d4b8ee426b1afd3e53bc0cf020418cf6 -1 en Windows HE 99 - - sev
@@ -834,7 +844,8 @@ spyfox SPY Fox 1: Dry Cereal
fbdd947d21e8f5bac6d6f7a316af1c5a 15693 en All - Demo - sev
ba888e6831517597859e91aa173f945c -1 fr All - Demo - Kirben
73b8197e236da4bf49adc99fe8f5fa1b -1 de All - Demo - Joachim Eberhard
- 4edbf9d03550f7ba01e7f34d69b678dd -1 nl Windows HE 98.5 Demo - Kirben
+ 4edbf9d03550f7ba01e7f34d69b678dd -1 nl All HE 98.5 Demo - Kirben
+ f2ec78e50bdc63b70044e9758be10914 -1 nl Mac HE 98.5 Demo - Ben Castricum
9d4ab3e0e1d1ebc6ba8a6a4c470ed184 -1 en All HE 100 Demo - khalek
spyfox2 SPY Fox 2: Some Assembly Required
diff --git a/devtools/skycpt/AsciiCptCompile.cpp b/devtools/skycpt/AsciiCptCompile.cpp
index 154c13b8cd..f339f6816c 100644
--- a/devtools/skycpt/AsciiCptCompile.cpp
+++ b/devtools/skycpt/AsciiCptCompile.cpp
@@ -49,7 +49,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
int main(int argc, char* argv[])
{
uint8 testBuf[4] = { 0x11, 0x22, 0x33, 0x44 };
- if (*(uint32*)testBuf != 0x44332211) {
+ if (*(uint32 *)testBuf != 0x44332211) {
printf("Sorry, this program only works on little endian systems.\nGoodbye.\n");
return 0;
}
diff --git a/devtools/skycpt/TextFile.cpp b/devtools/skycpt/TextFile.cpp
index e9887dc87b..038b1b9329 100644
--- a/devtools/skycpt/TextFile.cpp
+++ b/devtools/skycpt/TextFile.cpp
@@ -60,7 +60,7 @@ char *TextFile::giveLine(uint32 num) {
}
void TextFile::read(FILE *inf) {
- char *line = (char*)malloc(4096);
+ char *line = (char *)malloc(4096);
_lines = (char**)malloc(4096 * sizeof(char *));
_numLines = 0;
uint32 linesMax = 4096;
@@ -78,7 +78,7 @@ void TextFile::read(FILE *inf) {
start++;
}
uint32 length = crop(start);
- _lines[_numLines] = (char*)malloc(length + 1);
+ _lines[_numLines] = (char *)malloc(length + 1);
memcpy(_lines[_numLines], start, length + 1);
_numLines++;
}
diff --git a/devtools/skycpt/cptcompiler.cpp b/devtools/skycpt/cptcompiler.cpp
index f6ee926075..2c7d33c73b 100644
--- a/devtools/skycpt/cptcompiler.cpp
+++ b/devtools/skycpt/cptcompiler.cpp
@@ -50,7 +50,7 @@ void processMainLists(FILE *inf, CptObj *destArr, uint16 *idList) {
char line[1024];
dofgets(line, 1024, inf);
assert(lineMatchSection(line, "MAINLISTS"));
- uint16 *resBuf = (uint16*)malloc(MAX_OBJ_SIZE);
+ uint16 *resBuf = (uint16 *)malloc(MAX_OBJ_SIZE);
uint32 idNum = 0;
do {
dofgets(line, 1024, inf);
@@ -60,7 +60,7 @@ void processMainLists(FILE *inf, CptObj *destArr, uint16 *idList) {
CptObj *dest = destArr + id;
assertEmpty(dest);
dest->type = MAINLIST;
- dest->dbgName = (char*)malloc(strlen(cptName) + 1);
+ dest->dbgName = (char *)malloc(strlen(cptName) + 1);
strcpy(dest->dbgName, cptName);
memset(resBuf, 0, MAX_OBJ_SIZE);
uint32 resPos = 0;
@@ -82,7 +82,7 @@ void processMainLists(FILE *inf, CptObj *destArr, uint16 *idList) {
} while (1);
assert(resPos < (MAX_OBJ_SIZE / 2));
dest->len = resPos;
- dest->data = (uint16*)malloc(resPos * 2);
+ dest->data = (uint16 *)malloc(resPos * 2);
memcpy(dest->data, resBuf, resPos * 2);
} else
break;
@@ -95,7 +95,7 @@ void processCpts(FILE *inf, CptObj *destArr) {
char line[1024];
dofgets(line, 1024, inf);
assert(lineMatchSection(line, "COMPACTS"));
- uint16 *resBuf = (uint16*)malloc(MAX_OBJ_SIZE);
+ uint16 *resBuf = (uint16 *)malloc(MAX_OBJ_SIZE);
do {
dofgets(line, 1024, inf);
if (!isEndOfSection(line)) {
@@ -103,7 +103,7 @@ void processCpts(FILE *inf, CptObj *destArr) {
uint16 id = getInfo(line, "COMPACT", cptName);
CptObj *dest = destArr + id;
assertEmpty(dest);
- dest->dbgName = (char*)malloc(strlen(cptName) + 1);
+ dest->dbgName = (char *)malloc(strlen(cptName) + 1);
dest->type = COMPACT;
strcpy(dest->dbgName, cptName);
memset(resBuf, 0, MAX_OBJ_SIZE);
@@ -134,7 +134,7 @@ void processCpts(FILE *inf, CptObj *destArr) {
} while (1);
assert(resPos < (MAX_OBJ_SIZE / 2));
dest->len = resPos;
- dest->data = (uint16*)malloc(resPos * 2);
+ dest->data = (uint16 *)malloc(resPos * 2);
memcpy(dest->data, resBuf, resPos * 2);
} else
break;
@@ -147,7 +147,7 @@ void processTurntabs(FILE *inf, CptObj *destArr) {
char line[1024];
dofgets(line, 1024, inf);
assert(lineMatchSection(line, "TURNTABS"));
- uint16 *resBuf = (uint16*)malloc(MAX_OBJ_SIZE);
+ uint16 *resBuf = (uint16 *)malloc(MAX_OBJ_SIZE);
do {
dofgets(line, 1024, inf);
if (!isEndOfSection(line)) {
@@ -155,7 +155,7 @@ void processTurntabs(FILE *inf, CptObj *destArr) {
uint16 id = getInfo(line, "TURNTAB", cptName);
CptObj *dest = destArr + id;
assertEmpty(dest);
- dest->dbgName = (char*)malloc(strlen(cptName) + 1);
+ dest->dbgName = (char *)malloc(strlen(cptName) + 1);
dest->type = TURNTAB;
strcpy(dest->dbgName, cptName);
memset(resBuf, 0, MAX_OBJ_SIZE);
@@ -176,7 +176,7 @@ void processTurntabs(FILE *inf, CptObj *destArr) {
} while (1);
assert(resPos < (MAX_OBJ_SIZE / 2));
dest->len = resPos;
- dest->data = (uint16*)malloc(resPos * 2);
+ dest->data = (uint16 *)malloc(resPos * 2);
memcpy(dest->data, resBuf, resPos * 2);
} else
break;
@@ -189,7 +189,7 @@ void processBins(FILE *inf, CptObj *destArr, const char *typeName, const char *o
char line[1024];
dofgets(line, 1024, inf);
assert(lineMatchSection(line, typeName));
- uint16 *resBuf = (uint16*)malloc(MAX_OBJ_SIZE);
+ uint16 *resBuf = (uint16 *)malloc(MAX_OBJ_SIZE);
do {
dofgets(line, 1024, inf);
if (!isEndOfSection(line)) {
@@ -197,7 +197,7 @@ void processBins(FILE *inf, CptObj *destArr, const char *typeName, const char *o
uint16 id = getInfo(line, objName, cptName);
CptObj *dest = destArr + id;
assertEmpty(dest);
- dest->dbgName = (char*)malloc(strlen(cptName) + 1);
+ dest->dbgName = (char *)malloc(strlen(cptName) + 1);
dest->type = cTypeId;
strcpy(dest->dbgName, cptName);
memset(resBuf, 0, MAX_OBJ_SIZE);
@@ -218,7 +218,7 @@ void processBins(FILE *inf, CptObj *destArr, const char *typeName, const char *o
} while (1);
assert(resPos < (MAX_OBJ_SIZE / 2));
dest->len = resPos;
- dest->data = (uint16*)malloc(resPos * 2);
+ dest->data = (uint16 *)malloc(resPos * 2);
memcpy(dest->data, resBuf, resPos * 2);
} else
break;
@@ -242,7 +242,7 @@ void processSymlinks(FILE *inf, CptObj *destArr, uint16 *baseLists) {
uint16 fromId = getInfo(line, "SYMLINK", cptName);
CptObj *from = destArr + fromId;
assertEmpty(from);
- dlinkNames[dlinkCount] = (char*)malloc(strlen(cptName) + 1);
+ dlinkNames[dlinkCount] = (char *)malloc(strlen(cptName) + 1);
strcpy(dlinkNames[dlinkCount], cptName);
dofgets(line, 1024, inf);
@@ -272,7 +272,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
CptObj *resCpts;
uint16 baseLists[NUM_DATA_LISTS];
memset(baseLists, 0, NUM_DATA_LISTS * 2);
- resCpts = (CptObj*)malloc(MAX_CPTS * sizeof(CptObj));
+ resCpts = (CptObj *)malloc(MAX_CPTS * sizeof(CptObj));
memset(resCpts, 0, MAX_CPTS * sizeof(CptObj));
printf(" MainLists...\n");
processMainLists(inf, resCpts, baseLists);
@@ -323,7 +323,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
fwrite(&binSize, 1, 4, debOutf);
fwrite(&binSize, 1, 4, resOutf);
- char *asciiBuf = (char*)malloc(ASCII_SIZE);
+ char *asciiBuf = (char *)malloc(ASCII_SIZE);
char *asciiPos = asciiBuf;
// now process all the compacts
@@ -491,7 +491,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
assert((ftell(res288) / 2) < 65536);
uint16 resSize = (uint16)(ftell(res288) / 2);
fseek(res288, 0, SEEK_SET);
- uint16 *buf288 = (uint16*)malloc(resSize * 2);
+ uint16 *buf288 = (uint16 *)malloc(resSize * 2);
fread(buf288, 2, resSize, res288);
fclose(res288);
fwrite(&resSize, 1, 2, debOutf);
@@ -514,7 +514,7 @@ void doCompile(FILE *inf, FILE *debOutf, FILE *resOutf, TextFile *cptDef, FILE *
fseek(resDiff, 0, SEEK_END);
assert(ftell(resDiff) == (resSize * 2));
fseek(resDiff, 0, SEEK_SET);
- uint16 *bufDif = (uint16*)malloc(resSize *2);
+ uint16 *bufDif = (uint16 *)malloc(resSize *2);
fread(bufDif, 2, resSize, resDiff);
fclose(resDiff);
for (uint16 eCnt = 0; eCnt < resSize; eCnt++)
diff --git a/devtools/tasmrecover/dreamweb/backdrop.asm b/devtools/tasmrecover/dreamweb/backdrop.asm
index ec0e4959b3..f588e7d02b 100644
--- a/devtools/tasmrecover/dreamweb/backdrop.asm
+++ b/devtools/tasmrecover/dreamweb/backdrop.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;----------------------------------------------Code to draw floor and panel----
diff --git a/devtools/tasmrecover/dreamweb/debug.asm b/devtools/tasmrecover/dreamweb/debug.asm
index 951da4fa3f..f4321de7bf 100644
--- a/devtools/tasmrecover/dreamweb/debug.asm
+++ b/devtools/tasmrecover/dreamweb/debug.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm
index 8a52435b0c..28165a51ab 100644
--- a/devtools/tasmrecover/dreamweb/dreamweb.asm
+++ b/devtools/tasmrecover/dreamweb/dreamweb.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
@@ -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/keypad.asm b/devtools/tasmrecover/dreamweb/keypad.asm
index 6eee2fa11c..29542937c1 100644
--- a/devtools/tasmrecover/dreamweb/keypad.asm
+++ b/devtools/tasmrecover/dreamweb/keypad.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Entercode proc near
diff --git a/devtools/tasmrecover/dreamweb/look.asm b/devtools/tasmrecover/dreamweb/look.asm
index a5a8b8055e..81fa663e19 100644
--- a/devtools/tasmrecover/dreamweb/look.asm
+++ b/devtools/tasmrecover/dreamweb/look.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;---------------------------------------------------------------Look-routine----
diff --git a/devtools/tasmrecover/dreamweb/monitor.asm b/devtools/tasmrecover/dreamweb/monitor.asm
index 5354e9f7d5..25075e7eb7 100644
--- a/devtools/tasmrecover/dreamweb/monitor.asm
+++ b/devtools/tasmrecover/dreamweb/monitor.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Usemon proc near
diff --git a/devtools/tasmrecover/dreamweb/newplace.asm b/devtools/tasmrecover/dreamweb/newplace.asm
index b06a351f5f..d2f54509dd 100644
--- a/devtools/tasmrecover/dreamweb/newplace.asm
+++ b/devtools/tasmrecover/dreamweb/newplace.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;----------------------------------------------------Choosing a new location----
diff --git a/devtools/tasmrecover/dreamweb/object.asm b/devtools/tasmrecover/dreamweb/object.asm
index 807a100052..f7068d2cb0 100644
--- a/devtools/tasmrecover/dreamweb/object.asm
+++ b/devtools/tasmrecover/dreamweb/object.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;---------------------------------------------------------Inventory printer----
@@ -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/print.asm b/devtools/tasmrecover/dreamweb/print.asm
index 7cbb45c08b..22ca61b8b1 100644
--- a/devtools/tasmrecover/dreamweb/print.asm
+++ b/devtools/tasmrecover/dreamweb/print.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Printchar proc near
diff --git a/devtools/tasmrecover/dreamweb/saveload.asm b/devtools/tasmrecover/dreamweb/saveload.asm
index 6c98774a0f..a49b527d01 100644
--- a/devtools/tasmrecover/dreamweb/saveload.asm
+++ b/devtools/tasmrecover/dreamweb/saveload.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
@@ -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/dreamweb/sblaster.asm b/devtools/tasmrecover/dreamweb/sblaster.asm
index 7a271e9c90..5eef2dbfd8 100644
--- a/devtools/tasmrecover/dreamweb/sblaster.asm
+++ b/devtools/tasmrecover/dreamweb/sblaster.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
; Creative Reality Sound Blaster Drivers . (C) 1994 Creative Reality
diff --git a/devtools/tasmrecover/dreamweb/sprite.asm b/devtools/tasmrecover/dreamweb/sprite.asm
index 06b06c76e3..c6a75063a0 100644
--- a/devtools/tasmrecover/dreamweb/sprite.asm
+++ b/devtools/tasmrecover/dreamweb/sprite.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;------------------------------------------------------------People Routines----
@@ -244,7 +244,7 @@ Reelroutines db 1,44,0 ;Room number and x,y
db 255
-Lenofreelrouts equ $-reelroutines
+Lenofreelrouts equ 457 ; $-reelroutines
Reelcalls dw gamer,sparkydrip,eden,edeninbath,sparky,smokebloke
diff --git a/devtools/tasmrecover/dreamweb/talk.asm b/devtools/tasmrecover/dreamweb/talk.asm
index 4d6b381881..91cbb96c6e 100644
--- a/devtools/tasmrecover/dreamweb/talk.asm
+++ b/devtools/tasmrecover/dreamweb/talk.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Talk proc near
diff --git a/devtools/tasmrecover/dreamweb/titles.asm b/devtools/tasmrecover/dreamweb/titles.asm
index 52f58867ed..f2e96f9c78 100644
--- a/devtools/tasmrecover/dreamweb/titles.asm
+++ b/devtools/tasmrecover/dreamweb/titles.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
diff --git a/devtools/tasmrecover/dreamweb/use.asm b/devtools/tasmrecover/dreamweb/use.asm
index 78917d50f4..f8c64f6f45 100644
--- a/devtools/tasmrecover/dreamweb/use.asm
+++ b/devtools/tasmrecover/dreamweb/use.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
diff --git a/devtools/tasmrecover/dreamweb/vars.asm b/devtools/tasmrecover/dreamweb/vars.asm
index 6d34074528..99592233d3 100644
--- a/devtools/tasmrecover/dreamweb/vars.asm
+++ b/devtools/tasmrecover/dreamweb/vars.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
;---------------------------------------------------Equates and definitions----
diff --git a/devtools/tasmrecover/dreamweb/vgafades.asm b/devtools/tasmrecover/dreamweb/vgafades.asm
index a1043d9cf5..a39ae5d297 100644
--- a/devtools/tasmrecover/dreamweb/vgafades.asm
+++ b/devtools/tasmrecover/dreamweb/vgafades.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Fadedos proc near
diff --git a/devtools/tasmrecover/dreamweb/vgagrafx.asm b/devtools/tasmrecover/dreamweb/vgagrafx.asm
index 4ba1b16ba1..368ad3c501 100644
--- a/devtools/tasmrecover/dreamweb/vgagrafx.asm
+++ b/devtools/tasmrecover/dreamweb/vgagrafx.asm
@@ -1,4 +1,4 @@
-;Copyright (c) 1990-2011 by Neil Dodwell
+;Copyright (c) 1990-2012 by Neil Dodwell
;Released with permission from Neil Dodwell under GPLv2
;See LICENSE file for full license text
Screenwidth equ 320 ;physical width of screen
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 2066ae9b3d..e46b2efaa8 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -24,191 +24,2118 @@
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',
+ 'foreignrelease',
+ 'extradata',
+ 'keybuffer',
+ 'spritename1',
+ 'subtitles',
+ 'icongraphics0',
+ 'icongraphics1',
+ 'savenames',
+ 'volumetabname',
+ 'commandline',
+ 'openchangesize',
+ 'roompics',
+ 'roomscango',
+ 'oplist',
+ 'presslist',
+ 'inputline',
+ 'flashmousetab',
+ 'id',
+ 'place',
+ 'blinktab',
+ 'quitrequested',
+ # keypad.asm
+ 'keypadlist',
+ 'symbollist',
+ 'diarylist',
+ # monitor.asm
+ 'comlist',
+ 'keys',
+ 'rootdir',
+ 'operand1',
+ 'currentfile',
+ # newplace.asm
+ 'destlist',
+ # object.asm
+ 'invlist1',
+ 'invlist1continued',
+ 'examlist',
+ 'withlist1',
+ # saveload.asm
+ 'loadlist',
+ 'savelist',
+ 'gameerror1',
+ 'gameerror2',
+ 'gameerror3',
+ 'gameerror4',
+ 'gameerror5',
+ 'gameerror6',
+ 'gameerror7',
+ 'gameerror8',
+ 'error2patch',
+ 'error6patch',
+ 'error8patch',
+ 'gameinfo',
+ 'endgametext1',
+ 'savefiles',
+ 'decidelist',
+ 'discopslist',
+ 'opslist',
+ # sblaster.asm
+ 'dmaaddresses',
+ 'speechfilename',
+ 'speechfile',
+ 'speechlength',
+ 'soundbufferwrite',
+ # sprite.asm
+ 'reelroutines',
+ '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',
+ 'money1poke',
+ 'money2poke',
+ # vars.asm
+ 'currentset',
+ 'currentsample',
+ 'ch0playing',
+ 'ch0repeat',
+ 'ch1playing',
+ 'icons1',
+ 'icons2',
+ 'tempcharset',
+ 'currentframe',
+ 'takeoff',
+ 'reelpointer',
+ 'roomssample',
+ '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',
+ 'speechloaded',
+ 'lineroutine',
+ 'increment1',
+ 'increment2',
+ 'keypadax',
+ 'keypadcx',
+ 'soundbuffer',
+ 'cursloc',
+ 'liftsoundcount',
+ 'playblock',
+ 'gotfrom',
+ 'flagx',
+ 'flagy',
+ 'lastflagex',
+ 'keynum',
+ 'newlogonum',
+ 'currentex',
+ 'currentfree',
+ 'frsegment',
+ 'dataad',
+ 'framesad',
+ 'objectx',
+ 'objecty',
+ 'savesize',
+ 'savesource',
+ 'savex',
+ 'savey',
+ 'persondata',
+ 'talknum',
+ 'saidno',
+ 'prioritydep',
+ 'currentkey2',
+ 'mustload',
+ 'answered',
+ 'slotdata',
+ 'thisslot',
+ 'slotflags',
+ 'numberinroom',
+ 'currentcel',
+ 'oldselection',
+ 'stopwalking',
+ 'mouseon',
+ 'played',
+ 'timer1',
+ 'timer2',
+ 'timer3',
+ 'volume',
+ 'volumeto',
+ 'volumedirection',
+ 'volumecount',
+ 'wholetimer',
+ 'wongame',
+ 'timer1to',
+ 'timer2to',
+ 'timer3to',
+ 'oldsubject',
+ 'buffers',
+ 'itemtotran',
+ 'symboltolight',
+ 'symbol1',
+ 'symbol2',
+ 'symbol3',
+ 'symbolnum',
+ 'monsource',
+ 'netseg',
+ 'netpoint',
+ 'cursorstate',
+ 'ch0blockstocopy',
+ 'ch1blockstocopy',
+ 'sounddata',
+ 'sounddata2',
+ 'mapstore',
+ 'mapdata',
+ 'backdrops',
+ 'textfile1',
+ 'textfile2',
+ 'textfile3',
+ 'puzzletext',
+ 'commandtext',
+ 'traveltext',
+ 'tempgraphics',
+ 'tempgraphics2',
+ 'tempgraphics3',
+ 'tempsprites',
+ 'charset1',
+ 'extras',
+ 'freeframes',
+ 'setframes',
+ 'reel1',
+ 'reel2',
+ 'reel3',
+ 'setdesc',
+ 'blockdesc',
+ 'roomdesc',
+ 'freedesc',
+ 'people',
+ 'reels',
+ 'setdat',
+ 'freedat',
+ 'speechcount',
+ 'charshift',
+ 'kerning',
+ 'brightness',
+ 'roomloaded',
+ 'didzoom',
+ 'linespacing',
+ 'textaddressx',
+ 'textaddressy',
+ 'textlen',
+ 'lastxpos',
+ 'icontop',
+ 'iconleft',
+ 'itemframe',
+ 'roomad',
+ 'withobject',
+ 'withtype',
+ 'lookcounter',
+ 'command',
+ 'commandtype',
+ 'oldcommandtype',
+ 'objecttype',
+ 'getback',
+ 'invopen',
+ 'mainmode',
+ 'pickup',
+ 'lastinvpos',
+ 'examagain',
+ 'newtextline',
+ 'openedob',
+ 'openedtype',
+ 'oldmapadx',
+ 'oldmapady',
+ 'mapadx',
+ 'mapady',
+ 'mapoffsetx',
+ 'mapoffsety',
+ 'mapxstart',
+ 'mapystart',
+ 'mapxsize',
+ 'mapysize',
+ 'havedoneobs',
+ 'manisoffscreen',
+ 'rainspace',
+ 'facing',
+ 'leavedirection',
+ 'turntoface',
+ 'turndirection',
+ 'maintimer',
+ 'introcount',
+ 'arrowad',
+ 'currentkey',
+ 'oldkey',
+ 'useddirection',
+ 'timercount',
+ 'oldtimercount',
+ 'mapx',
+ 'mapy',
+ 'newscreen',
+ 'ryanx',
+ 'ryany',
+ 'lastflag',
+ 'offsetx',
+ 'offsety',
+ 'currentob',
+ 'destpos',
+ 'reallocation',
+ 'roomnum',
+ 'nowinnewroom',
+ 'resetmanxy',
+ 'newlocation',
+ 'autolocation',
+ 'doorcheck1',
+ 'doorcheck2',
+ 'doorcheck3',
+ 'doorcheck4',
+ 'mousex',
+ 'mousey',
+ 'mousebutton',
+ 'mousebutton1',
+ 'mousebutton2',
+ 'mousebutton3',
+ 'mousebutton4',
+ 'oldbutton',
+ 'oldx',
+ 'oldy',
+ 'lastbutton',
+ 'oldpointerx',
+ 'oldpointery',
+ 'delherex',
+ 'delherey',
+ 'pointerxs',
+ 'pointerys',
+ 'delxs',
+ 'delys',
+ 'pointerframe',
+ 'pointerpower',
+ 'auxpointerframe',
+ 'pointermode',
+ 'pointerspeed',
+ 'pointercount',
+ 'inmaparea',
+ 'talkmode',
+ 'talkpos',
+ 'character',
+ 'watchdump',
+ 'logonum',
+ 'oldlogonum',
+ 'pressed',
+ 'presspointer',
+ 'graphicpress',
+ 'presscount',
+ 'lightcount',
+ 'folderpage',
+ 'diarypage',
+ 'menucount',
+ 'symboltopx',
+ 'symboltopnum',
+ 'symboltopdir',
+ 'symbolbotx',
+ 'symbolbotnum',
+ 'symbolbotdir',
+ 'dumpx',
+ 'dumpy',
+ 'walkandexam',
+ 'walkexamtype',
+ 'walkexamnum',
+ 'curslocx',
+ 'curslocy',
+ 'curpos',
+ 'monadx',
+ 'monady',
+ 'numtodo',
+ 'timecount',
+ 'counttotimed',
+ 'timedseg',
+ 'timedoffset',
+ 'timedy',
+ 'timedx',
+ 'needtodumptimed',
+ 'loadingorsave',
+ 'currentslot',
+ 'cursorpos',
+ 'colourpos',
+ 'fadedirection',
+ 'numtofade',
+ 'fadecount',
+ 'addtogreen',
+ 'addtored',
+ 'addtoblue',
+ 'lastsoundreel',
+ 'volume',
+ 'volumeto',
+ 'volumedirection',
+ 'volumecount',
+ 'lasthardkey',
+ 'bufferin',
+ 'bufferout',
+ 'workspace',
+ 'mainsprites',
+ 'backdrop',
+ 'recordspace',
+ 'blinkframe',
+ 'blinkcount',
+ 'reasseschanges',
+ 'pointerspath',
+ 'manspath',
+ 'pointerfirstpath',
+ 'finaldest',
+ 'destination',
+ 'linestartx',
+ 'linestarty',
+ 'lineendx',
+ 'lineendy',
+ 'linepointer',
+ 'linedirection',
+ 'linelength',
+ # vars.asm - saved vars
+ 'startvars',
+ 'progresspoints',
+ 'watchon',
+ 'shadeson',
+ 'secondcount',
+ 'minutecount',
+ 'hourcount',
+ 'zoomon',
+ 'location',
+ 'expos',
+ 'exframepos',
+ 'extextpos',
+ 'card1money',
+ 'listpos',
+ 'ryanpage',
+ 'watchingtime',
+ 'reeltowatch',
+ 'endwatchreel',
+ 'speedcount',
+ 'watchspeed',
+ 'reeltohold',
+ 'endofholdreel',
+ 'watchmode',
+ 'destafterhold',
+ 'newsitem',
+ 'liftflag',
+ 'liftpath',
+ 'lockstatus',
+ 'doorpath',
+ 'counttoopen',
+ 'counttoclose',
+ 'rockstardead',
+ 'generaldead',
+ 'sartaindead',
+ 'aidedead',
+ 'beenmugged',
+ 'gunpassflag',
+ 'canmovealtar',
+ 'talkedtoattendant',
+ 'talkedtosparky',
+ 'talkedtoboss',
+ 'talkedtorecep',
+ 'cardpassflag',
+ 'madmanflag',
+ 'keeperflag',
+ 'lasttrigger',
+ 'mandead',
+ 'seed',
+ 'seed',
+ 'seed',
+ 'needtotravel',
+ 'throughdoor',
+ 'newobs',
+ 'ryanon',
+ 'combatcount',
+ 'lastweapon',
+ 'dreamnumber',
+ 'roomafterdream',
+ 'shakecounter',
+ # vars.asm - constants
+ 'openinvlist',
+ 'ryaninvlist',
+ 'pointerback',
+ 'mapflags',
+ 'startpal',
+ 'endpal',
+ 'maingamepal',
+ 'spritetable',
+ 'setlist',
+ 'freelist',
+ 'exlist',
+ 'peoplelist',
+ 'zoomspace',
+ 'printedlist',
+ 'listofchanges',
+ 'undertimedtext',
+ 'rainlist',
+ 'initialreelrouts',
+ 'initialvars',
+ 'lengthofbuffer',
+ 'lenofreelrouts',
+ 'reellist',
+ 'intext',
+ 'lengthofmap',
+ 'blocktext',
+ 'blocks',
+ 'frframes',
+ 'frames',
+ 'persontxtdat',
+ 'persontext',
+ 'tablesize',
+ 'undertextsizex', # defined in dreambase.h
+ 'undertextsizey', # defined in dreambase.h
+ 'lengthofvars', # defined in dreambase.h
+ 'lenofmapstore', # defined in dreambase.h
+ 'keypadx',
+ 'keypady',
+ 'settext',
+ 'freetext',
+ 'setdatlen',
+ 'textstart',
+ 'maplen',
+ 'maplength',
+ 'undertimedysize',
+ 'blocktextdat',
+ 'personframes',
+ 'map',
+ 'settextdat',
+ 'textunder',
+ 'pathdata',
+ 'framedata',
+ 'flags',
+ 'intextdat',
+ 'freetextdat',
+ 'frframedata',
+ 'zoomx',
+ 'zoomy',
+ 'menux',
+ 'menuy',
+ 'headerlen',
+ 'freedatlen',
+ 'diaryx',
+ 'diaryy',
+ 'inventx',
+ 'inventy',
+ 'screenwidth',
+ 'mapwidth',
+ 'opsx',
+ 'opsy',
+ 'symbolx',
+ 'symboly',
+ 'numchanges',
+ # 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',
+ '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',
+ 'additionaltext',
+ 'addlength',
+ 'addtopeoplelist',
+ 'addtopresslist',
+ 'adjustdown',
+ 'adjustleft',
+ 'adjustlen',
+ 'adjustright',
+ 'adjustup',
+ 'advisor',
+ 'afterintroroom',
+ 'afternewroom',
+ 'aide',
+ 'alleybarksound',
+ 'allocatebuffers',
+ 'allocateload',
+ 'allocatemem',
'allocatework',
- 'lockmon',
+ 'allpalette',
+ 'allpointer',
+ 'animpointer',
+ 'atmospheres',
+ 'attendant',
+ 'autoappear',
+ 'autolook',
+ 'autosetwalk',
+ 'backobject',
+ 'bartender',
+ 'barwoman',
+ 'biblequote',
+ 'blank',
+ 'blockget',
+ 'blocknametext',
+ 'bossman',
+ 'bothchannels',
+ 'bresenhams',
+ 'businessman',
+ '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',
+ 'checkforexit',
+ 'checkforshake',
'checkifex',
- 'getreelstart',
- 'findobname',
- 'copyname',
+ 'checkiffree',
+ 'checkifpathison',
+ 'checkifperson',
+ 'checkifset',
+ 'checkinput',
+ 'checkinside',
+ 'checkobjectsize',
+ 'checkone',
+ 'checksoundint',
+ 'checkspeed',
+ 'chewy',
+ 'clearbeforeload',
+ 'clearbuffers',
+ 'clearchanges',
+ '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',
+ 'deleteexframe',
+ 'deleteextext',
+ 'deleteexobject',
+ 'deletetaken',
+ 'deleverything',
+ 'delpointer',
+ 'delsprite',
+ 'deltextline',
+ 'delthisone',
+ 'describeob',
+ 'destselect',
+ 'diarykeyp',
+ 'diarykeyn',
+ 'dircom',
+ 'dirfile',
+ 'disablepath',
+ 'disablesoundint',
+ 'discops',
+ 'dmaend',
+ 'doblocks',
+ 'dochange',
+ 'dodoor',
+ 'dofade',
+ 'doload',
+ 'dolook',
+ 'domix',
+ 'dontloadseg',
'doorway',
- 'widedoor',
- 'showallobs',
- 'addalong',
- 'addlength',
- 'getdimension',
- 'getxad',
- 'getyad',
- 'getmapad',
- 'calcmapad',
- 'calcfrframe',
+ 'dosaveload',
+ 'dosometalk',
+ 'dosreturn',
+ 'doshake',
+ 'drawflags',
+ 'drawfloor',
+ 'drawitall',
+ 'dreamweb',
+ 'drinker',
+ 'droperror',
+ 'dropobject',
+ 'drunk',
+ 'dumpblink',
+ 'dumpcurrent',
+ 'dumpdiarykeys',
+ 'dumpeverything',
+ 'dumpkeypad',
+ 'dumpmap',
+ 'dumpmenu',
+ 'dumppointer',
+ 'dumpsymbol',
+ 'dumpsymbox',
+ 'dumptextline',
+ 'dumptimedtext',
+ 'dumpwatch',
+ 'dumpzoom',
+ 'eden',
+ 'edeninbath',
+ 'edenscdplayer',
+ 'emergencypurge',
+ 'enablesoundint',
+ 'endgame',
+ 'endgameseq',
+ 'endpaltostart',
+ 'entercode',
+ 'entersymbol',
+ 'entryanims',
+ 'entrytexts',
+ 'eraseoldobs',
+ 'error',
+ 'errormessage1',
+ 'errormessage2',
+ 'errormessage3',
+ 'examicon',
+ 'examinventory',
+ 'examineob',
+ 'examineobtext',
+ 'execcommand',
+ 'facerightway',
+ 'fadecalculation',
+ 'fadedos',
+ 'fadedownmon',
+ 'fadefromwhite',
+ 'fadescreenup',
+ 'fadescreenups',
+ 'fadescreenuphalf',
+ 'fadescreendown',
+ 'fadescreendowns',
+ 'fadescreendownhalf',
+ 'fadetowhite',
+ 'fadeupmon',
+ 'fadeupmonfirst',
+ 'fadeupyellows',
+ 'femalefan',
+ 'fillopen',
+ 'fillryan',
+ 'fillspace',
'finalframe',
- 'commandonly',
- 'makename',
+ 'findallopen',
+ 'findallryan',
+ 'findexobject',
+ 'findfirstpath',
+ 'findinvpos',
'findlen',
- 'blocknametext',
- 'walktotext',
- 'personnametext',
- 'findxyfrompath',
+ 'findnextcolon',
+ 'findobname',
+ 'findopenpos',
'findormake',
- 'setallchanges',
- 'dochange',
- 'deletetaken',
- 'placesetobject',
- 'removesetobject',
- 'showallfree',
- 'showallex',
- 'adjustlen',
+ 'findpathofpoint',
+ 'findpuztext',
+ 'findroominloc',
+ 'findsetobject',
+ 'findsource',
+ 'findtext1',
+ 'findxyfrompath',
'finishedwalking',
- 'checkone',
+ 'folderexit',
+ 'folderhints',
+ 'foghornsound',
+ 'frameoutbh',
+ 'frameoutfx',
+ 'frameoutnm',
+ 'frameoutv',
+ 'gamer',
+ 'gates',
+ 'generalerror',
+ 'getanyad',
+ 'getanyaddir',
+ 'getback1',
+ 'getbackfromob',
+ 'getbackfromops',
+ 'getbacktoops',
'getblockofpixel',
+ 'getdestinfo',
+ 'getdimension',
+ 'geteitherad',
+ 'getexad',
+ 'getexpos',
'getflagunderp',
- 'walkandexamine',
+ 'getfreead',
+ 'getkeyandlogo',
+ 'getlocation',
+ 'getmapad',
+ 'getnamepos',
+ 'getnextword',
+ 'getnumber',
+ 'getobtextstart',
+ 'getopenedsize',
+ 'getpersframe',
+ 'getpersontext',
+ 'getreelframeax',
+ 'getreelstart',
+ 'getridofall',
+ 'getridofpit',
+ 'getridofreels',
+ 'getridoftemp',
+ 'getridoftemp2',
+ 'getridoftemp3',
+ 'getridoftempcharset',
+ 'getridoftempsp',
+ 'getridoftemptext',
+ 'getroomdata',
+ 'getroomspaths',
+ 'getsetad',
+ 'gettime',
+ 'gettingshot',
+ 'getundercentre',
+ 'getundermenu',
+ 'getundertimed',
+ 'getunderzoom',
+ 'getxad',
+ 'getyad',
+ 'grafittidoor',
+ 'greyscalesum',
+ 'handclap',
+ 'hangon',
+ 'hangoncurs',
+ 'hangone',
+ 'hangonp',
+ 'hangonpq',
+ 'hangonw',
+ 'heavy',
+ 'helicopter',
+ 'hotelbell',
+ 'hotelcontrol',
+ 'identifyob',
+ 'incryanpage',
+ 'initialinv',
+ 'initialmoncols',
+ 'initman',
+ 'initrain',
+ 'input',
+ 'interupttest',
+ 'interviewer',
+ 'intoinv',
+ 'intro',
+ 'intro1text',
+ 'intro2text',
+ 'intro3text',
+ 'intromagic1',
+ 'intromagic2',
+ 'intromagic3',
+ 'intromonks1',
+ 'intromonks2',
+ 'intromusic',
+ 'inventory',
+ 'isitdescribed',
+ 'isitright',
+ 'isitworn',
+ 'isryanholding',
+ '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',
+ 'locationpic',
+ 'lockeddoorway',
+ 'locklightoff',
+ 'locklighton',
+ 'lockmon',
+ 'look',
+ 'lookatcard',
+ 'lookatplace',
+ 'lookininterface',
+ 'loopchannel0',
+ 'louis',
+ 'louischair',
+ 'madman',
+ 'madmanrun',
+ 'madmanstelly',
+ 'madmantext',
+ 'madmode',
+ 'mainman',
+ 'mainscreen',
+ 'makebackob',
+ 'makecaps',
+ 'makeheader',
+ 'makemainscreen',
+ 'makename',
+ 'makenextblock',
+ 'makesprite',
+ 'makeworn',
+ 'malefan',
+ 'manasleep',
+ 'manasleep2',
+ 'mansatstill',
+ 'maptopanel',
+ 'middlepanel',
+ 'mode640x480',
+ 'modifychar',
+ 'moneypoke',
+ 'monitorlogo',
+ 'monkandryan',
+ 'monks2text',
+ 'monkspeaking',
+ 'monmessage',
+ 'monprint',
+ 'moretalk',
+ 'mousecall',
+ 'movemap',
+ 'mugger',
+ 'multidump',
+ 'multiget',
+ 'multiput',
+ 'namestoold',
+ 'neterror',
+ 'newgame',
+ 'newplace',
+ 'nextcolon',
+ 'nextdest',
+ 'nextfolder',
+ 'nextsymbol',
+ 'nothelderror',
+ 'obicons',
'obname',
- 'delpointer',
- 'showblink',
- 'dumpblink',
- 'dumppointer',
- 'showpointer',
- 'animpointer',
- 'checkcoords',
+ 'obpicture',
+ 'obsthatdothings',
+ 'obtoinv',
+ 'oldtonames',
+ 'onedigit',
+ 'openeden',
+ 'openfile',
+ 'openfilefromc',
+ 'openfilenocheck',
+ 'openforsave',
+ 'openhoteldoor',
+ 'openhoteldoor2',
+ 'openinv',
+ 'openlouis',
+ 'openob',
+ 'openpoolboss',
+ 'openryan',
+ 'opensarters',
+ 'opentomb',
+ 'opentvdoor',
+ 'openyourneighbour',
+ 'othersmoker',
+ 'out22c',
+ 'outofinv',
+ 'outofopen',
+ 'paltoendpal',
+ 'paltostartpal',
+ 'panelicons1',
+ 'paneltomap',
+ 'parseblaster',
+ 'parser',
+ 'personnametext',
+ 'pickupconts',
+ 'pickupob',
+ 'pitinterupt',
+ 'pixelcheckset',
+ 'placefreeobject',
+ 'placesetobject',
+ 'playchannel0',
+ 'playchannel1',
+ 'playguitar',
+ 'plotreel',
+ 'poolguard',
+ 'powerlightoff',
+ 'powerlighton',
+ 'priest',
+ 'priesttext',
+ 'printasprite',
+ 'printboth',
+ 'printchar',
+ 'printcurs',
+ 'printdirect',
+ 'printlogo',
+ 'printmessage',
+ 'printmessage2',
+ 'printoutermon',
+ 'printslow',
+ 'printsprites',
+ 'printundermon',
+ 'processtrigger',
+ 'purgealocation',
+ 'purgeanitem',
+ 'putbackobstuff',
+ 'putundercentre',
+ 'putundermenu',
+ 'putundertimed',
+ 'putunderzoom',
+ 'quickquit',
+ 'quickquit2',
+ 'quitkey',
+ 'quitsymbol',
+ 'random',
+ 'randomaccess',
+ 'randomnum1',
+ 'randomnum2',
+ 'randomnumber',
+ 'read',
+ 'readabyte',
+ 'readcitypic',
+ 'readdesticon',
+ 'readfromfile',
+ 'readheader',
+ 'readkey',
'readmouse',
'readmouse1',
'readmouse2',
'readmouse3',
'readmouse4',
- 'waitframes',
- 'drawflags',
- 'addtopeoplelist',
- 'getexpos',
- 'paneltomap',
- 'maptopanel',
- 'dumpmap',
- 'obpicture',
- 'delthisone',
+ 'readoneblock',
+ 'readsetdata',
+ 'realcredits',
+ 'receptionist',
+ 'reconstruct',
+ 'redes',
+ 'redrawmainscrn',
+ 'reelsonscreen',
+ 'reexfrominv',
+ 'reexfromopen',
+ 'reminders',
+ 'removeemm',
+ 'removefreeobject',
+ 'removesetobject',
+ 'removeobfrominv',
+ 'resetkeyboard',
+ 'resetlocation',
+ 'restoreall',
+ 'restoreems',
+ 'restorereels',
+ 'rockstar',
+ 'rollem',
+ 'rollendcredits',
+ 'rollendcredits2',
+ 'roomname',
+ 'runendseq',
+ 'runtap',
+ 'runintroseq',
+ 'saveems',
+ 'savefileread',
+ 'savefilewrite',
+ 'savegame',
+ 'saveload',
+ 'saveposition',
+ 'saveseg',
+ 'scanfornames',
+ 'screenupdate',
+ 'scrollmonitor',
+ 'searchforfiles',
+ 'searchforsame',
+ 'searchforstring',
+ 'security',
+ 'seecommandtail',
+ 'selectlocation',
+ 'selectob',
+ 'selectopenob',
+ 'selectslot',
+ 'selectslot2',
+ 'set16colpalette',
+ 'setallchanges',
+ 'setbotleft',
+ 'setbotright',
+ 'setkeyboardint',
+ 'setlocation',
+ 'setmode',
+ 'setmouse',
+ 'setpickup',
+ 'setsoundoff',
+ 'settopleft',
+ 'settopright',
+ 'setupemm',
+ 'setuppit',
+ 'setuptimedtemp',
+ 'setuptimeduse',
+ 'setwalk',
+ 'showallex',
+ 'showallfree',
+ 'showallobs',
+ 'showarrows',
+ 'showblink',
+ 'showbyte',
+ 'showcity',
+ 'showcurrentfile',
+ 'showdecisions',
+ 'showdiary',
+ 'showdiarykeys',
+ 'showdiarypage',
+ 'showdiscops',
+ 'showexit',
+ 'showfirstuse',
+ 'showfolder',
+ 'showframe',
+ 'showgamereel',
+ 'showgroup',
+ 'showgun',
+ 'showicon',
+ 'showkeypad',
+ 'showkeys',
+ 'showleftpage',
+ 'showloadops',
+ 'showmainops',
+ 'showman',
+ 'showmenu',
+ 'showmonk',
+ 'shownames',
+ 'showopbox',
+ 'showoutermenu',
+ 'showouterpad',
+ 'showpanel',
+ 'showpcx',
+ 'showpointer',
+ 'showpuztext',
+ 'showrain',
+ 'showreelframe',
+ 'showrightpage',
+ 'showryanpage',
+ 'showsaveops',
+ 'showseconduse',
+ 'showslots',
+ 'showsymbol',
+ 'showtime',
+ 'showwatch',
+ 'showword',
+ 'signon',
+ 'singlekey',
+ 'sitdowninbar',
+ 'slabdoora',
+ 'slabdoorb',
+ 'slabdoorc',
+ 'slabdoord',
+ 'slabdoore',
+ 'slabdoorf',
+ 'smallcandle',
+ 'smokebloke',
+ 'soldier1',
+ 'sortoutmap',
+ 'soundend',
+ 'soundonreels',
+ 'soundstartup',
+ 'sparky',
+ 'sparkydrip',
+ 'splitintolines',
+ 'spriteupdate',
+ 'standardload',
+ 'startdmablock',
+ 'startloading',
+ 'startpaltoend',
+ 'starttalk',
+ 'startup',
+ 'startup1',
+ 'steady',
+ 'storeit',
+ 'swapwithinv',
+ 'swapwithopen',
+ 'switchryanoff',
+ 'switchryanon',
+ 'talk',
+ 'tattooman',
+ 'textforend',
+ 'textformonk',
+ 'titles',
+ 'train',
+ 'transfercontoex',
'transferinv',
- 'obicons',
- 'compare',
- 'pixelcheckset',
- 'turnpathon',
- 'turnpathoff',
- 'turnanypathon',
+ 'transfermap',
+ 'transfertext',
+ 'transfertoex',
+ 'trapdoor',
+ 'triggermessage',
+ 'trysoundalloc',
'turnanypathoff',
- 'isitdescribed',
- 'checkifset',
- 'checkifpathison',
- 'delsprite',
- 'dumpeverything',
- 'isitworn',
- 'makeworn',
- 'obtoinv',
- 'showryanpage',
- 'findallryan',
- 'fillryan',
+ 'turnanypathon',
+ 'turnonpower',
+ 'turnpathoff',
+ 'turnpathon',
+ 'twodigitnum',
+ 'undertextline',
+ 'updatepeople',
+ 'updatesymboltop',
+ 'updatesymbolbot',
+ 'usealtar',
+ 'useaxe',
+ 'usebalcony',
+ 'usebuttona',
+ 'usecardreader1',
+ 'usecardreader2',
+ 'usecardreader3',
+ 'usecart',
+ 'usecashcard',
+ 'usecharset1',
+ 'usechurchgate',
+ 'usechurchhole',
+ 'useclearbox',
+ 'usecontrol',
+ 'usecooker',
+ 'usecoveredbox',
+ 'usediary',
+ 'usedryer',
+ 'useelevator1',
+ 'useelevator2',
+ 'useelevator3',
+ 'useelevator4',
+ 'useelevator5',
+ 'useelvdoor',
+ 'usefullcart',
+ 'usegun',
+ 'usehandle',
+ 'usehole',
+ 'usekey',
+ 'useladder',
+ 'useladderb',
+ 'uselighter',
+ 'usehatch',
+ 'usemenu',
+ 'usemon',
+ 'useobject',
+ 'useopenbox',
+ 'useopened',
+ 'usepipe',
+ 'useplate',
+ 'useplinth',
+ 'usepoolreader',
+ 'userailing',
'useroutine',
- 'hangon',
- 'hangonp',
- 'findnextcolon',
+ 'useshield',
+ 'useslab',
+ 'usestereo',
+ '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',
+ 'withwhat',
+ 'workoutframes',
+ 'worktoscreen',
+ 'worktoscreenm',
'wornerror',
+ 'zoom',
+ 'zoomicon',
+ 'zoomonoff',
], skip_output = [
# These functions are processed but not output
- 'dreamweb',
- 'backobject',
- 'mainman',
- 'madman',
- 'loadgame',
- 'savegame',
- 'zoomonoff',
- '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',
+ '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..e1f8228ab7 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,46 @@ 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);
+""")
+
+
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..0782fff22f 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])
@@ -245,16 +253,25 @@ class parser:
if len(cmd) >= 3:
cmd1 = cmd[1]
if cmd1 == 'equ':
- v = cmd[2]
- self.set_global(cmd0, op.const(self.fix_dollar(v)))
+ if not (cmd0.lower() in self.skip_binary_data):
+ v = cmd[2]
+ self.set_global(cmd0, op.const(self.fix_dollar(v)))
+ else:
+ print "skipping binary data for %s" % (cmd0.lower(),)
+ skipping_binary_data = True
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()
diff --git a/devtools/update-version.pl b/devtools/update-version.pl
index 169fba7788..b313846ab3 100755
--- a/devtools/update-version.pl
+++ b/devtools/update-version.pl
@@ -43,6 +43,12 @@ my @subs_files = qw(
dists/wii/meta.xml
dists/android/AndroidManifest.xml
dists/android/plugin-manifest.xml
+ dists/openpandora/PXML.xml
+ dists/openpandora/README-OPENPANDORA
+ dists/openpandora/README-PND.txt
+ dists/openpandora/index.html
+ dists/gph/README-GPH
+ dists/gph/scummvm.ini
backends/platform/psp/README.PSP
);