diff options
Diffstat (limited to 'devtools')
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ł Koł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ł Koł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ö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ö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ö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ö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é"); - 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é 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 ); |