diff options
Diffstat (limited to 'devtools')
48 files changed, 6973 insertions, 1806 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_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp index 627b517c62..a87bde3e26 100644 --- a/devtools/create_kyradat/create_kyradat.cpp +++ b/devtools/create_kyradat/create_kyradat.cpp @@ -38,6 +38,8 @@ #include "extract.h" #include "md5.h" +#include "common/language.h" +#include "common/platform.h" #include <string> #include <map> @@ -45,7 +47,7 @@ #include <map> enum { - kKyraDatVersion = 78 + kKyraDatVersion = 82 }; const ExtractFilename extractFilenames[] = { @@ -215,92 +217,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 +718,9 @@ const TypeTable gameTable[] = { { kKyra1, 0 }, { kKyra2, 1 }, { kKyra3, 2 }, - { kLol, 3 }, + { kEoB1, 3 }, + { kEoB2, 4 }, + { kLoL, 5 }, { -1, -1 } }; @@ -980,154 +1374,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..86244fce42 100644 --- a/devtools/create_kyradat/extract.cpp +++ b/devtools/create_kyradat/extract.cpp @@ -24,6 +24,8 @@ #define FORBIDDEN_SYMBOL_ALLOW_ALL #include "extract.h" +#include "common/language.h" +#include "common/platform.h" #include <algorithm> @@ -50,8 +52,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 +78,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 +113,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 +163,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 +180,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 +206,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 +316,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 +372,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 +396,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da } } } - + } while (input < c); } else { uint32 copySize = size; @@ -393,7 +405,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 +578,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 +753,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 +762,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 +1018,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 +1049,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..a2759b1e53 100644 --- a/devtools/create_kyradat/games.cpp +++ b/devtools/create_kyradat/games.cpp @@ -24,6 +24,8 @@ #define FORBIDDEN_SYMBOL_ALLOW_ALL #include "create_kyradat.h" +#include "common/language.h" +#include "common/platform.h" // Game tables @@ -77,6 +79,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 +99,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 +137,8 @@ const Game * const gameDescs[] = { kyra2Games, kyra3Games, lolGames, + eob1Games, + eob2Games, 0 }; @@ -505,7 +522,6 @@ const int kyra1TownsNeed[] = { k1ConfigStrings, k1TownsMusicFadeTable, - k1TownsMusicFadeTable, k1TownsSFXwdTable, k1TownsSFXbtTable, k1TownsCDATable, @@ -764,250 +780,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 +1042,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 +1688,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..1b9f90f18f 100644 --- a/devtools/create_kyradat/tables.cpp +++ b/devtools/create_kyradat/tables.cpp @@ -25,6 +25,8 @@ #include "tables.h" #include "create_kyradat.h" +#include "common/language.h" +#include "common/platform.h" #define EXTRACT_END_ENTRY { UNK_LANG, kPlatformUnknown, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } @@ -137,7 +139,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 +344,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 +565,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 +1115,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 +1145,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 +1226,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 +1335,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 +3359,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 +3367,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 +3728,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 +3971,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/create_lure_dat.h b/devtools/create_lure/create_lure_dat.h index 9259a8dcc8..ad49878d43 100644 --- a/devtools/create_lure/create_lure_dat.h +++ b/devtools/create_lure/create_lure_dat.h @@ -24,6 +24,7 @@ #define CREATE_LURE_DAT_H #include "common/endian.h" +#include "common/language.h" #include "common/util.h" #define VERSION_MAJOR 1 diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp index 527136c7d4..15830bd467 100644 --- a/devtools/create_project/create_project.cpp +++ b/devtools/create_project/create_project.cpp @@ -539,6 +539,8 @@ int main(int argc, char *argv[]) { 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"); @@ -853,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... }; @@ -1342,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 (;;) { @@ -1395,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); @@ -1413,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/xcode.cpp b/devtools/create_project/xcode.cpp index eb51ab3da1..eb51ab3da1 100755..100644 --- a/devtools/create_project/xcode.cpp +++ b/devtools/create_project/xcode.cpp diff --git a/devtools/create_translations/cp_parser.cpp b/devtools/create_translations/cp_parser.cpp new file mode 100644 index 0000000000..f5e4c9d6bb --- /dev/null +++ b/devtools/create_translations/cp_parser.cpp @@ -0,0 +1,106 @@ +/* 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; + else + ++start; + // Strip off the filename extension + const size_t pos = filename.find_last_of('.'); + const std::string charset(filename.substr(start, pos != std::string::npos ? (pos - start) : 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_translations/cp_parser.h b/devtools/create_translations/cp_parser.h new file mode 100644 index 0000000000..b748430ca0 --- /dev/null +++ b/devtools/create_translations/cp_parser.h @@ -0,0 +1,54 @@ +/* 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. + */ + +#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; } + + uint32 getMapping(unsigned char src) const { return _mapping[src]; } +private: + std::string _name; + uint32 _mapping[256]; +}; + +/** + * 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/create_translations/po_parser.cpp b/devtools/create_translations/po_parser.cpp index bc49da40d4..e8d7d7a644 100644 --- a/devtools/create_translations/po_parser.cpp +++ b/devtools/create_translations/po_parser.cpp @@ -337,47 +337,34 @@ PoMessageEntryList *parsePoFile(const char *file, PoMessageList& messages) { return list; } -char *stripLine(char *line) { +char *stripLine(char *const line) { // This function modifies line in place and return it. // Keep only the text between the first two unprotected quotes. // It also look for literal special characters (e.g. preceded by '\n', '\\', '\"', '\'', '\t') // and replace them by the special character so that strcmp() can match them at run time. // Look for the first quote - int start = 0; - int len = strlen(line); - while (start < len && line[start++] != '"') {} + char const *src = line; + while (*src != '\0' && *src++ != '"') {} // shift characters until we reach the end of the string or an unprotected quote - int i = 0, j = 0; - while (start + i + j < len && line[start + i + j] != '"') { - if (line[start + i + j] == '\\') { - switch (line[start + i + j + 1]) { - case 'n': - line[i++] = '\n'; - break; - case 't': - line[i++] = '\t'; - break; - case '\"': - line[i++] = '\"'; - break; - case '\'': - line[i++] = '\''; - break; - case '\\': - line[i++] = '\\'; - break; + char *dst = line; + while (*src != '\0' && *src != '"') { + char c = *src++; + if (c == '\\') { + switch (c = *src++) { + case 'n': c = '\n'; break; + case 't': c = '\t'; break; + case '\"': c = '\"'; break; + case '\'': c = '\''; break; + case '\\': c = '\\'; break; default: // Just skip - fprintf(stdout, "Unsupported special character \"%c%c\" in string. Please contact ScummVM developers.\n", line[start + i + j], line[start + i + j + 1]); - ++j; + fprintf(stderr, "Unsupported special character \"\\%c\" in string. Please contact ScummVM developers.\n", c); + continue; } - ++j; - } else { - line[i] = line[start + i + j]; - ++i; } + *dst++ = c; } - line[i] = '\0'; + *dst = '\0'; return line; } diff --git a/devtools/credits.pl b/devtools/credits.pl index 2833236e75..b3a506125f 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,7 +523,7 @@ 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(); @@ -576,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(); @@ -610,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", ""); @@ -679,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"); @@ -688,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(); @@ -914,6 +915,9 @@ begin_credits("Credits"); begin_persons(); add_person("Thierry Crozat", "criezy", "Translation Lead"); end_persons(); + begin_section("Basque"); + add_person("Mikel Iturbe Urretxa", "", ""); + end_section(); begin_section("Catalan"); add_person("Jordi Vilalta Prat", "jvprat", ""); end_section(); @@ -1000,6 +1004,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(); @@ -1058,6 +1063,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"); 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/scumm-md5.txt b/devtools/scumm-md5.txt index 1682879385..8caf47722a 100644 --- a/devtools/scumm-md5.txt +++ b/devtools/scumm-md5.txt @@ -148,9 +148,8 @@ indy3 Indiana Jones and the Last Crusade loom Loom 4dc780f1bc587a193ce8a97652791438 -1 en Amiga EGA EGA - Antti Leimi, Andrea Petrucci - 39cb9dec16fa16f38d79acd80effb059 -1 fr Amiga EGA EGA same as IT?!? Gerald Vincent + 39cb9dec16fa16f38d79acd80effb059 -1 All Amiga EGA EGA IT and FR Gerald Vincent (IT), Andrea Petrucci (FR) 2fe369ad70f52a8cf7ad6077ee64f81a -1 de Amiga EGA EGA - Norbert Lange - 39cb9dec16fa16f38d79acd80effb059 -1 it Amiga EGA EGA same as FR?!? Andrea Petrucci 48b9f04b348bc5013327753f0d12a144 -1 es Amiga EGA EGA - VooD a0a7dea72003933b8b3f8b99b9f7ddeb -1 en Atari No AdLib EGA - 0e9b01430e31d9fcd94071d433bbc6bf -1 fr Atari No AdLib EGA - @@ -235,11 +234,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 +516,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 +529,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 +554,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 +585,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,19 +637,20 @@ 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 pajama2 Pajama Sam 2: Thunder and Lightning Aren't so Frightening d4e79c3d8645b8266cd78c325bc35154 60557 us All - - - Kirben 6a60d395b78b205c93a956100b1bf5ae -1 de All HE 98.5 - - EdDammer - 513f91a9dbe8d5490b39e56a3ac5bbdf -1 nl Mac HE 98.5 - - daniel9 + 513f91a9dbe8d5490b39e56a3ac5bbdf -1 nl All HE 98.5 - - daniel9 55f4e9402bec2bded383843123f37c5c -1 de Windows HE 98.5 - - WindlePoons e5563c8358443c4352fcddf7402a5e0a -1 fr Windows HE 98.5 - - gist974 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 +735,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 @@ -784,7 +791,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 @@ -793,12 +800,14 @@ balloon Putt-Putt and Pep's Balloon-O-Rama bab0fb81dcb12b8930c5d850b8f2a7de 12800 de Windows HE 80 - - George Kormendi 145bd3373574feb668cc2eea2ec6cf86 -1 ru Windows HE 80 - - sev 27b2ef1653089fe5b897d9cc89ce784f -1 ru Windows HE 80 - - George Kormendi - 2232b0b9411575b1f9961713ebc9de61 -1 es Windows HE 80 - - exiltd + 2232b0b9411575b1f9961713ebc9de61 -1 All Windows HE 80 - ES and NL exiltd (ES), Ben Castricum (NL) + a56a05c6b865b9956639f8c51269e5ab -1 nl Mac HE 80 - - Ben Castricum d7b247c26bf1f01f8f7daf142be84de3 -1 en Windows HE 99 Updated - iziku 8e3241ddd6c8dadf64305e8740d45e13 -1 en All HE 100 Updated - Kirben 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 @@ -835,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 fa3a4f7957..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 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 6a5f7c30a8..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---- 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 f3c92d36f6..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 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 7c89ab44f5..e46b2efaa8 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -41,17 +41,37 @@ p = parser(skip_binary_data = [ '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 @@ -72,6 +92,7 @@ p = parser(skip_binary_data = [ 'gameerror8', 'error2patch', 'error6patch', + 'error8patch', 'gameinfo', 'endgametext1', 'savefiles', @@ -82,7 +103,10 @@ p = parser(skip_binary_data = [ 'dmaaddresses', 'speechfilename', 'speechfile', + 'speechlength', + 'soundbufferwrite', # sprite.asm + 'reelroutines', 'reelcalls', 'facelist', 'rainlocations', @@ -104,14 +128,21 @@ p = parser(skip_binary_data = [ 'title6graphics', # use.asm 'uselist', + 'money1poke', + 'money2poke', # vars.asm 'currentset', + 'currentsample', + 'ch0playing', + 'ch0repeat', + 'ch1playing', 'icons1', 'icons2', 'tempcharset', 'currentframe', 'takeoff', 'reelpointer', + 'roomssample', 'needsoundbuff', 'oldint8seg', 'oldint8add', @@ -148,6 +179,415 @@ p = parser(skip_binary_data = [ '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', @@ -187,7 +627,7 @@ p = parser(skip_binary_data = [ 'diarytext', 'title7graphics', 'handle', - # 'basicsample', # This can't be removed due to tasm-recover limitations + 'basicsample', 'endtextname', 'gungraphic', 'monkface', @@ -204,10 +644,15 @@ generator = cpp(context, "DreamGen", blacklist = [ 'actualload', 'actualsave', 'addalong', + 'additionaltext', 'addlength', 'addtopeoplelist', 'addtopresslist', + 'adjustdown', + 'adjustleft', 'adjustlen', + 'adjustright', + 'adjustup', 'advisor', 'afterintroroom', 'afternewroom', @@ -226,6 +671,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'autolook', 'autosetwalk', 'backobject', + 'bartender', 'barwoman', 'biblequote', 'blank', @@ -234,6 +680,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'bossman', 'bothchannels', 'bresenhams', + 'businessman', 'buttoneight', 'buttonenter', 'buttonfive', @@ -265,6 +712,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'checkcoords', 'checkdest', 'checkforemm', + 'checkforexit', 'checkforshake', 'checkifex', 'checkiffree', @@ -272,11 +720,15 @@ generator = cpp(context, "DreamGen", blacklist = [ 'checkifperson', 'checkifset', 'checkinput', + 'checkinside', + 'checkobjectsize', 'checkone', 'checksoundint', 'checkspeed', 'chewy', 'clearbeforeload', + 'clearbuffers', + 'clearchanges', 'clearendpal', 'clearpalette', 'clearreels', @@ -306,15 +758,21 @@ generator = cpp(context, "DreamGen", blacklist = [ 'decide', 'delchar', 'delcurs', + 'deleteexframe', + 'deleteextext', + 'deleteexobject', 'deletetaken', 'deleverything', 'delpointer', 'delsprite', 'deltextline', 'delthisone', + 'describeob', 'destselect', 'diarykeyp', 'diarykeyn', + 'dircom', + 'dirfile', 'disablepath', 'disablesoundint', 'discops', @@ -329,15 +787,20 @@ generator = cpp(context, "DreamGen", blacklist = [ 'dontloadseg', 'doorway', 'dosaveload', + 'dosometalk', 'dosreturn', 'doshake', 'drawflags', 'drawfloor', + 'drawitall', + 'dreamweb', 'drinker', 'droperror', + 'dropobject', 'drunk', 'dumpblink', 'dumpcurrent', + 'dumpdiarykeys', 'dumpeverything', 'dumpkeypad', 'dumpmap', @@ -352,11 +815,15 @@ generator = cpp(context, "DreamGen", blacklist = [ 'eden', 'edeninbath', 'edenscdplayer', + 'emergencypurge', 'enablesoundint', 'endgame', + 'endgameseq', 'endpaltostart', 'entercode', 'entersymbol', + 'entryanims', + 'entrytexts', 'eraseoldobs', 'error', 'errormessage1', @@ -366,29 +833,43 @@ generator = cpp(context, "DreamGen", blacklist = [ 'examinventory', 'examineob', 'examineobtext', + 'execcommand', 'facerightway', 'fadecalculation', 'fadedos', + 'fadedownmon', 'fadefromwhite', 'fadescreenup', 'fadescreenups', 'fadescreenuphalf', 'fadescreendown', 'fadescreendowns', + 'fadescreendownhalf', 'fadetowhite', + 'fadeupmon', 'fadeupmonfirst', 'fadeupyellows', 'femalefan', + 'fillopen', 'fillryan', 'fillspace', 'finalframe', + 'findallopen', 'findallryan', + 'findexobject', + 'findfirstpath', + 'findinvpos', 'findlen', 'findnextcolon', 'findobname', + 'findopenpos', 'findormake', + 'findpathofpoint', + 'findpuztext', 'findroominloc', + 'findsetobject', 'findsource', + 'findtext1', 'findxyfrompath', 'finishedwalking', 'folderexit', @@ -401,21 +882,30 @@ generator = cpp(context, "DreamGen", blacklist = [ 'gamer', 'gates', 'generalerror', + 'getanyad', 'getanyaddir', 'getback1', 'getbackfromob', 'getbackfromops', 'getbacktoops', 'getblockofpixel', + 'getdestinfo', 'getdimension', + 'geteitherad', + 'getexad', 'getexpos', 'getflagunderp', + 'getfreead', + 'getkeyandlogo', 'getlocation', 'getmapad', 'getnamepos', 'getnextword', 'getnumber', + 'getobtextstart', + 'getopenedsize', 'getpersframe', + 'getpersontext', 'getreelframeax', 'getreelstart', 'getridofall', @@ -429,8 +919,10 @@ generator = cpp(context, "DreamGen", blacklist = [ 'getridoftemptext', 'getroomdata', 'getroomspaths', + 'getsetad', 'gettime', 'gettingshot', + 'getundercentre', 'getundermenu', 'getundertimed', 'getunderzoom', @@ -445,14 +937,20 @@ generator = cpp(context, "DreamGen", blacklist = [ 'hangonp', 'hangonpq', 'hangonw', + 'heavy', + 'helicopter', 'hotelbell', 'hotelcontrol', + 'identifyob', + 'incryanpage', 'initialinv', + 'initialmoncols', 'initman', 'initrain', 'input', 'interupttest', 'interviewer', + 'intoinv', 'intro', 'intro1text', 'intro2text', @@ -467,6 +965,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'isitdescribed', 'isitright', 'isitworn', + 'isryanholding', 'issetobonmap', 'keeper', 'kernchars', @@ -499,11 +998,15 @@ generator = cpp(context, "DreamGen", blacklist = [ 'loadtempcharset', 'loadtemptext', 'loadtraveltext', + 'locationpic', 'lockeddoorway', 'locklightoff', 'locklighton', 'lockmon', 'look', + 'lookatcard', + 'lookatplace', + 'lookininterface', 'loopchannel0', 'louis', 'louischair', @@ -515,6 +1018,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'mainman', 'mainscreen', 'makebackob', + 'makecaps', 'makeheader', 'makemainscreen', 'makename', @@ -529,6 +1033,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'middlepanel', 'mode640x480', 'modifychar', + 'moneypoke', 'monitorlogo', 'monkandryan', 'monks2text', @@ -538,6 +1043,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'moretalk', 'mousecall', 'movemap', + 'mugger', 'multidump', 'multiget', 'multiput', @@ -545,9 +1051,11 @@ generator = cpp(context, "DreamGen", blacklist = [ 'neterror', 'newgame', 'newplace', + 'nextcolon', 'nextdest', 'nextfolder', 'nextsymbol', + 'nothelderror', 'obicons', 'obname', 'obpicture', @@ -564,6 +1072,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'openhoteldoor2', 'openinv', 'openlouis', + 'openob', 'openpoolboss', 'openryan', 'opensarters', @@ -572,12 +1081,16 @@ generator = cpp(context, "DreamGen", blacklist = [ 'openyourneighbour', 'othersmoker', 'out22c', + 'outofinv', + 'outofopen', 'paltoendpal', 'paltostartpal', 'panelicons1', 'paneltomap', 'parseblaster', + 'parser', 'personnametext', + 'pickupconts', 'pickupob', 'pitinterupt', 'pixelcheckset', @@ -587,6 +1100,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'playchannel1', 'playguitar', 'plotreel', + 'poolguard', 'powerlightoff', 'powerlighton', 'priest', @@ -598,11 +1112,16 @@ generator = cpp(context, "DreamGen", blacklist = [ 'printdirect', 'printlogo', 'printmessage', + 'printmessage2', 'printoutermon', 'printslow', 'printsprites', 'printundermon', + 'processtrigger', + 'purgealocation', + 'purgeanitem', 'putbackobstuff', + 'putundercentre', 'putundermenu', 'putundertimed', 'putunderzoom', @@ -615,6 +1134,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'randomnum1', 'randomnum2', 'randomnumber', + 'read', 'readabyte', 'readcitypic', 'readdesticon', @@ -629,21 +1149,30 @@ generator = cpp(context, "DreamGen", blacklist = [ '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', @@ -655,9 +1184,15 @@ generator = cpp(context, "DreamGen", blacklist = [ 'scanfornames', 'screenupdate', 'scrollmonitor', + 'searchforfiles', + 'searchforsame', + 'searchforstring', 'security', 'seecommandtail', 'selectlocation', + 'selectob', + 'selectopenob', + 'selectslot', 'selectslot2', 'set16colpalette', 'setallchanges', @@ -667,12 +1202,14 @@ generator = cpp(context, "DreamGen", blacklist = [ 'setlocation', 'setmode', 'setmouse', + 'setpickup', 'setsoundoff', 'settopleft', 'settopright', 'setupemm', 'setuppit', 'setuptimedtemp', + 'setuptimeduse', 'setwalk', 'showallex', 'showallfree', @@ -684,6 +1221,8 @@ generator = cpp(context, "DreamGen", blacklist = [ 'showcurrentfile', 'showdecisions', 'showdiary', + 'showdiarykeys', + 'showdiarypage', 'showdiscops', 'showexit', 'showfirstuse', @@ -694,6 +1233,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'showgun', 'showicon', 'showkeypad', + 'showkeys', 'showleftpage', 'showloadops', 'showmainops', @@ -714,10 +1254,12 @@ generator = cpp(context, "DreamGen", blacklist = [ 'showryanpage', 'showsaveops', 'showseconduse', + 'showslots', 'showsymbol', 'showtime', 'showwatch', 'showword', + 'signon', 'singlekey', 'sitdowninbar', 'slabdoora', @@ -741,10 +1283,13 @@ generator = cpp(context, "DreamGen", blacklist = [ 'startdmablock', 'startloading', 'startpaltoend', + 'starttalk', 'startup', 'startup1', 'steady', 'storeit', + 'swapwithinv', + 'swapwithopen', 'switchryanoff', 'switchryanon', 'talk', @@ -753,9 +1298,13 @@ generator = cpp(context, "DreamGen", blacklist = [ 'textformonk', 'titles', 'train', + 'transfercontoex', 'transferinv', + 'transfermap', 'transfertext', + 'transfertoex', 'trapdoor', + 'triggermessage', 'trysoundalloc', 'turnanypathoff', 'turnanypathon', @@ -765,16 +1314,22 @@ generator = cpp(context, "DreamGen", blacklist = [ 'twodigitnum', 'undertextline', 'updatepeople', + 'updatesymboltop', + 'updatesymbolbot', + 'usealtar', + 'useaxe', 'usebalcony', 'usebuttona', 'usecardreader1', 'usecardreader2', 'usecardreader3', 'usecart', + 'usecashcard', 'usecharset1', 'usechurchgate', 'usechurchhole', 'useclearbox', + 'usecontrol', 'usecooker', 'usecoveredbox', 'usediary', @@ -786,7 +1341,10 @@ generator = cpp(context, "DreamGen", blacklist = [ 'useelevator5', 'useelvdoor', 'usefullcart', + 'usegun', + 'usehandle', 'usehole', + 'usekey', 'useladder', 'useladderb', 'uselighter', @@ -794,12 +1352,17 @@ generator = cpp(context, "DreamGen", blacklist = [ 'usemenu', 'usemon', 'useobject', + 'useopenbox', + 'useopened', + 'usepipe', 'useplate', 'useplinth', 'usepoolreader', 'userailing', 'useroutine', 'useshield', + 'useslab', + 'usestereo', 'usetempcharset', 'usetext', 'usetimedtext', @@ -823,6 +1386,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'wheelsound', 'widedoor', 'width160', + 'withwhat', 'workoutframes', 'worktoscreen', 'worktoscreenm', @@ -832,7 +1396,6 @@ generator = cpp(context, "DreamGen", blacklist = [ 'zoomonoff', ], skip_output = [ # These functions are processed but not output - 'dreamweb', ], skip_dispatch_call = True, skip_addr_constants = True, header_omit_blacklisted = True, function_name_remapping = { @@ -1244,7 +1807,6 @@ generator = cpp(context, "DreamGen", blacklist = [ 'nextdest' : 'nextDest', 'nextfolder' : 'nextFolder', 'nextsymbol' : 'nextSymbol', - 'nothelderror' : 'notHeldError', 'obicons' : 'obIcons', 'obname' : 'obName', 'obpicture' : 'obPicture', @@ -1301,7 +1863,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'printdirect' : 'printDirect', 'printlogo' : 'printLogo', 'printmessage' : 'printMessage', - 'printmessage2' : 'printmessage2', + 'printmessage2' : 'printMessage2', 'printoutermon' : 'printOuterMon', 'printslow' : 'printSlow', 'printsprites' : 'printSprites', @@ -1450,12 +2012,12 @@ generator = cpp(context, "DreamGen", blacklist = [ 'signon' : 'signOn', 'singlekey' : 'singleKey', 'sitdowninbar' : 'sitDownInBar', - 'slabdoora' : 'sLabDoorA', - 'slabdoorb' : 'sLabDoorB', - 'slabdoorc' : 'sLabDoorC', - 'slabdoord' : 'sLabDoorD', - 'slabdoore' : 'sLabDoorE', - 'slabdoorf' : 'sLabDoorF', + 'slabdoora' : 'slabDoorA', + 'slabdoorb' : 'slabDoorB', + 'slabdoorc' : 'slabDoorC', + 'slabdoord' : 'slabDoorD', + 'slabdoore' : 'slabDoorE', + 'slabdoorf' : 'slabDoorF', 'smallcandle' : 'smallCandle', 'smokebloke' : 'smokeBloke', 'soldier1' : 'soldier1', @@ -1547,7 +2109,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'userailing' : 'useRailing', 'useroutine' : 'useRoutine', 'useshield' : 'useShield', - 'useslab' : 'useSLab', + 'useslab' : 'useSlab', 'usestereo' : 'useStereo', 'usetempcharset' : 'useTempCharset', 'usetext' : 'useText', diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py index 686aea9ee9..e1f8228ab7 100644 --- a/devtools/tasmrecover/tasm/cpp.py +++ b/devtools/tasmrecover/tasm/cpp.py @@ -653,10 +653,6 @@ public: self.hd.write( """ void __dispatch_call(uint16 addr); """) - self.hd.write( -"""#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f() - -""") for p in set(self.methods): diff --git a/devtools/tasmrecover/tasm/parser.py b/devtools/tasmrecover/tasm/parser.py index 6fd3567b01..0782fff22f 100644 --- a/devtools/tasmrecover/tasm/parser.py +++ b/devtools/tasmrecover/tasm/parser.py @@ -253,8 +253,12 @@ 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': if not (cmd0.lower() in self.skip_binary_data): binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd1[1]] 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 ); |