From 78d632b0eda3c7be13a265cfb9fa5d16c7b418eb Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 8 Jul 2011 18:20:07 +0000 Subject: NEVERHOOD: Commit of create_neverhood and neverhood.dat --- devtools/create_neverhood/create_neverhood.cpp | 257 +++++++++++++++++++++++++ devtools/create_neverhood/create_neverhood.h | 28 +++ devtools/create_neverhood/module.mk | 12 ++ devtools/create_neverhood/tables.h | 49 +++++ devtools/create_neverhood/util.cpp | 152 +++++++++++++++ devtools/create_neverhood/util.h | 57 ++++++ 6 files changed, 555 insertions(+) create mode 100644 devtools/create_neverhood/create_neverhood.cpp create mode 100644 devtools/create_neverhood/create_neverhood.h create mode 100644 devtools/create_neverhood/module.mk create mode 100644 devtools/create_neverhood/tables.h create mode 100644 devtools/create_neverhood/util.cpp create mode 100644 devtools/create_neverhood/util.h (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp new file mode 100644 index 0000000000..951a2f0ef1 --- /dev/null +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -0,0 +1,257 @@ +/* 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. + * + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + + +// HACK to allow building with the SDL backend on MinGW +// see bug #1800764 "TOOLS: MinGW tools building broken" +#ifdef main +#undef main +#endif // main + +#include +#include "create_neverhood.h" +#include "tables.h" + +const int DAT_VERSION = 0; + +uint32 dataSize; +byte *data; +uint32 dataStart = 0x004AE000; +uint32 fileStart = 0x000AC600; + +void loadExe(const char *filename) { + FILE *exe = fopen(filename, "rb"); + dataSize = fileSize(exe); + data = new byte[dataSize]; + fread(data, dataSize, 1, exe); + fclose(exe); +} + +struct HitRect { + int16 x1, y1, x2, y2; + uint16 messageNum; +}; + +typedef std::vector HitRects; + +struct SubRectItem { + int16 x1, y1, x2, y2; + uint32 messageListCount; + uint32 messageListOffset; +}; + +typedef std::vector SubRectItems; + +struct RectItem { + int16 x1, y1, x2, y2; + uint32 subRectListCount; + uint32 subRectListOffset; + SubRectItems subRectItems; +}; + +typedef std::vector RectItems; + +struct MessageItem { + uint16 messageNum; + uint32 messageParam; +}; + +typedef std::vector MessageItems; + +struct HitRectList { + uint32 id; + HitRects hitRects; +}; + +struct RectList { + uint32 id; + RectItems rectItems; +}; + +struct MessageList { + uint32 id; + MessageItems messageItems; +}; + +std::vector hitRectLists; +std::vector rectLists; +std::vector messageLists; + +byte *getData(uint32 offset) { + return data + offset - dataStart + fileStart; +} + +void addHitRect(uint32 offset) { + HitRectList *hitRectList = new HitRectList(); + hitRectList->id = offset; + byte *item = getData(offset); + uint32 count = READ_LE_UINT32(item); + //printf("count = %d\n", count); + // Align to 16 bytes + item = data + ((offset + 4 + 16) & 0xFFFFFFF0) - dataStart + fileStart; + for (uint32 i = 0; i < count; i++) { + HitRect hitRect; + hitRect.x1 = READ_LE_UINT16(item + 0); + hitRect.y1 = READ_LE_UINT16(item + 2); + hitRect.x2 = READ_LE_UINT16(item + 4); + hitRect.y2 = READ_LE_UINT16(item + 6); + hitRect.messageNum = READ_LE_UINT16(item + 8); + item += 10; + //printf("(%d, %d, %d, %d) -> %04X\n", hitRect.x1, hitRect.y1, hitRect.x2, hitRect.y2, hitRect.messageNum); + hitRectList->hitRects.push_back(hitRect); + } + hitRectLists.push_back(hitRectList); +} + +void addMessage(uint32 count, uint32 offset) { + MessageList *messageList = new MessageList(); + messageList->id = offset; + byte *item = getData(offset); + for (uint32 i = 0; i < count; i++) { + MessageItem messageItem; + messageItem.messageNum = READ_LE_UINT16(item + 0); + messageItem.messageParam = READ_LE_UINT32(item + 4); + //printf("%04X, %08X\n", messageItem.messageNum, messageItem.messageParam); + item += 8; + messageList->messageItems.push_back(messageItem); + } + messageLists.push_back(messageList); +} + +void addRect(uint32 count, uint32 offset) { + RectList *rectList = new RectList(); + rectList->id = offset; + byte *item = getData(offset); + for (uint32 i = 0; i < count; i++) { + RectItem rectItem; + byte *subItem; + rectItem.x1 = READ_LE_UINT16(item + 0); + rectItem.y1 = READ_LE_UINT16(item + 2); + rectItem.x2 = READ_LE_UINT16(item + 4); + rectItem.y2 = READ_LE_UINT16(item + 6); + rectItem.subRectListCount = READ_LE_UINT32(item + 8); + rectItem.subRectListOffset = READ_LE_UINT32(item + 12); + //printf("(%d, %d, %d, %d), %d, %08X\n", rectItem.x1, rectItem.y1, rectItem.x2, rectItem.y2, rectItem.subRectListCount, rectItem.subRectListOffset); + subItem = getData(rectItem.subRectListOffset); + for (uint32 j = 0; j < rectItem.subRectListCount; j++) { + SubRectItem subRectItem; + subRectItem.x1 = READ_LE_UINT16(subItem + 0); + subRectItem.y1 = READ_LE_UINT16(subItem + 2); + subRectItem.x2 = READ_LE_UINT16(subItem + 4); + subRectItem.y2 = READ_LE_UINT16(subItem + 6); + subRectItem.messageListCount = READ_LE_UINT32(subItem + 8); + subRectItem.messageListOffset = READ_LE_UINT32(subItem + 12); + subItem += 16; + //printf("(%d, %d, %d, %d), %d, %08X\n", subRectItem.x1, subRectItem.y1, subRectItem.x2, subRectItem.y2, subRectItem.messageListCount, subRectItem.messageListOffset); + addMessage(subRectItem.messageListCount, subRectItem.messageListOffset); + rectItem.subRectItems.push_back(subRectItem); + } + item += 16; + rectList->rectItems.push_back(rectItem); + } + rectLists.push_back(rectList); +} + +int main(int argc, char *argv[]) { + + FILE *datFile; + + loadExe("nhc.exe"); + + for (int i = 0; hitRectListOffsets[i] != 0; i++) { + addHitRect(hitRectListOffsets[i]); + } + + for (int i = 0; rectListOffsets[i] != 0; i += 2) { + addRect(rectListOffsets[i], rectListOffsets[i + 1]); + } + + for (int i = 0; messageListOffsets[i] != 0; i += 2) { + addMessage(messageListOffsets[i], messageListOffsets[i + 1]); + } + + datFile = fopen("neverhood.dat", "wb"); + + writeUint32LE(datFile, 0x11223344); // Some magic + writeUint32LE(datFile, DAT_VERSION); + + // Write all message lists + writeUint32LE(datFile, messageLists.size()); + for (std::vector::iterator it = messageLists.begin(); it != messageLists.end(); it++) { + MessageList *messageList = *it; + writeUint32LE(datFile, messageList->id); + writeUint32LE(datFile, messageList->messageItems.size()); + for (uint32 i = 0; i < messageList->messageItems.size(); i++) { + writeUint16LE(datFile, messageList->messageItems[i].messageNum); + writeUint32LE(datFile, messageList->messageItems[i].messageParam); + } + } + + // Write all rect lists + writeUint32LE(datFile, rectLists.size()); + for (std::vector::iterator it = rectLists.begin(); it != rectLists.end(); it++) { + RectList *rectList = *it; + writeUint32LE(datFile, rectList->id); + writeUint32LE(datFile, rectList->rectItems.size()); + for (uint32 i = 0; i < rectList->rectItems.size(); i++) { + const RectItem &rectItem = rectList->rectItems[i]; + writeUint16LE(datFile, rectItem.x1); + writeUint16LE(datFile, rectItem.y1); + writeUint16LE(datFile, rectItem.x2); + writeUint16LE(datFile, rectItem.y2); + writeUint32LE(datFile, rectItem.subRectItems.size()); + for (uint32 j = 0; j < rectItem.subRectItems.size(); j++) { + const SubRectItem &subRectItem = rectItem.subRectItems[j]; + writeUint16LE(datFile, subRectItem.x1); + writeUint16LE(datFile, subRectItem.y1); + writeUint16LE(datFile, subRectItem.x2); + writeUint16LE(datFile, subRectItem.y2); + writeUint32LE(datFile, subRectItem.messageListOffset); + } + } + } + + // Write all hit rect lists + writeUint32LE(datFile, hitRectLists.size()); + for (std::vector::iterator it = hitRectLists.begin(); it != hitRectLists.end(); it++) { + HitRectList *hitRectList = *it; + writeUint32LE(datFile, hitRectList->id); + writeUint32LE(datFile, hitRectList->hitRects.size()); + for (uint32 i = 0; i < hitRectList->hitRects.size(); i++) { + const HitRect &hitRect = hitRectList->hitRects[i]; + writeUint16LE(datFile, hitRect.x1); + writeUint16LE(datFile, hitRect.y1); + writeUint16LE(datFile, hitRect.x2); + writeUint16LE(datFile, hitRect.y2); + writeUint16LE(datFile, hitRect.messageNum); + } + } + + fclose(datFile); + + printf("Done.\n"); + + return 0; +} diff --git a/devtools/create_neverhood/create_neverhood.h b/devtools/create_neverhood/create_neverhood.h new file mode 100644 index 0000000000..6382c87375 --- /dev/null +++ b/devtools/create_neverhood/create_neverhood.h @@ -0,0 +1,28 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef CREATE_NEVERHOOD_H +#define CREATE_NEVERHOOD_H + +#include "util.h" + +#endif diff --git a/devtools/create_neverhood/module.mk b/devtools/create_neverhood/module.mk new file mode 100644 index 0000000000..284e19105d --- /dev/null +++ b/devtools/create_neverhood/module.mk @@ -0,0 +1,12 @@ + +MODULE := devtools/create_neverhood + +MODULE_OBJS := \ + create_neverhood.o \ + util.o + +# Set the name of the executable +TOOL_EXECUTABLE := create_neverhood + +# Include common rules +include $(srcdir)/rules.mk diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h new file mode 100644 index 0000000000..6f1fc48250 --- /dev/null +++ b/devtools/create_neverhood/tables.h @@ -0,0 +1,49 @@ +/* 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. + * + */ + +static const uint32 hitRectListOffsets[] = { + // Scene1001 + 0x004B4858, + 0 +}; + +static const uint32 rectListOffsets[] = { + // Scene1001 + 1, 0x004B49F0, + 1, 0x004B4A00, + 0, 0 +}; + +static const uint32 messageListOffsets[] = { + // Scene1001 + 1, 0x004B4888, + 2, 0x004B4898, + 1, 0x004B4970, + 1, 0x004B4890, + 3, 0x004B4910, + 5, 0x004B4938, + 1, 0x004B4960, + 4, 0x004B48A8, + 3, 0x004B48C8, + 0, 0 +}; + diff --git a/devtools/create_neverhood/util.cpp b/devtools/create_neverhood/util.cpp new file mode 100644 index 0000000000..5ce8237b85 --- /dev/null +++ b/devtools/create_neverhood/util.cpp @@ -0,0 +1,152 @@ +/* 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. + * + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +#include "util.h" +#include + +#ifdef _MSC_VER + #define vsnprintf _vsnprintf +#endif + +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); +} + +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; + + va_start(va, s); + vsnprintf(buf, 1024, s, va); + va_end(va); + + fprintf(stderr, "DEBUG: %s!\n", buf); +} + +uint8 readByte(FILE *fp) { + return fgetc(fp); +} + +uint16 readUint16BE(FILE *fp) { + uint16 ret = 0; + ret |= fgetc(fp) << 8; + ret |= fgetc(fp); + return ret; +} + +uint16 readUint16LE(FILE *fp) { + uint16 ret = 0; + ret |= fgetc(fp); + ret |= fgetc(fp) << 8; + return ret; +} + +uint32 readUint32BE(FILE *fp) { + uint32 ret = 0; + ret |= fgetc(fp) << 24; + ret |= fgetc(fp) << 16; + ret |= fgetc(fp) << 8; + ret |= fgetc(fp); + return ret; +} + +uint32 readUint32LE(FILE *fp) { + uint32 ret = 0; + ret |= fgetc(fp); + ret |= fgetc(fp) << 8; + ret |= fgetc(fp) << 16; + ret |= fgetc(fp) << 24; + return ret; +} + +void writeByte(FILE *fp, uint8 b) { + fwrite(&b, 1, 1, fp); +} + +void writeUint16BE(FILE *fp, uint16 value) { + writeByte(fp, (uint8)(value >> 8)); + writeByte(fp, (uint8)(value)); +} + +void writeUint16LE(FILE *fp, uint16 value) { + writeByte(fp, (uint8)(value)); + writeByte(fp, (uint8)(value >> 8)); +} + +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)); +} + +void writeUint32LE(FILE *fp, uint32 value) { + writeByte(fp, (uint8)(value)); + writeByte(fp, (uint8)(value >> 8)); + writeByte(fp, (uint8)(value >> 16)); + writeByte(fp, (uint8)(value >> 24)); +} + +uint32 fileSize(FILE *fp) { + uint32 sz; + uint32 pos = ftell(fp); + fseek(fp, 0, SEEK_END); + sz = ftell(fp); + fseek(fp, pos, SEEK_SET); + return sz; +} diff --git a/devtools/create_neverhood/util.h b/devtools/create_neverhood/util.h new file mode 100644 index 0000000000..a2783cca71 --- /dev/null +++ b/devtools/create_neverhood/util.h @@ -0,0 +1,57 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef UTIL_H +#define UTIL_H + +#include "common/scummsys.h" +#include "common/endian.h" +#include "common/util.h" + +#ifdef WIN32 +#include +#include +#endif + + +/* File I/O */ +uint8 readByte(FILE *fp); +uint16 readUint16BE(FILE *fp); +uint16 readUint16LE(FILE *fp); +uint32 readUint32BE(FILE *fp); +uint32 readUint32LE(FILE *fp); +void writeByte(FILE *fp, uint8 b); +void writeUint16BE(FILE *fp, uint16 value); +void writeUint16LE(FILE *fp, uint16 value); +void writeUint32BE(FILE *fp, uint32 value); +void writeUint32LE(FILE *fp, uint32 value); +uint32 fileSize(FILE *fp); + +/* Misc stuff */ +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; + +#endif -- cgit v1.2.3 From be8d542264288343a4d60936f73f94906fc0e181 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Mon, 11 Jul 2011 18:46:21 +0000 Subject: NEVERHOOD: Updated tables.h with data from Scene1002 --- devtools/create_neverhood/tables.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 6f1fc48250..d6e230af5e 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -23,6 +23,8 @@ static const uint32 hitRectListOffsets[] = { // Scene1001 0x004B4858, + // Scene1002 + 0x004B4134, 0 }; @@ -30,6 +32,10 @@ static const uint32 rectListOffsets[] = { // Scene1001 1, 0x004B49F0, 1, 0x004B4A00, + // Scene1002 + 3, 0x004B43A0, + 1, 0x004B4418, + 3, 0x004B43A0, 0, 0 }; @@ -44,6 +50,20 @@ static const uint32 messageListOffsets[] = { 1, 0x004B4960, 4, 0x004B48A8, 3, 0x004B48C8, + // Scene1002 + 1, 0x004B4270, + 1, 0x004B4478, + 3, 0x004B4298, + 1, 0x004B4470, + 4, 0x004B4428, + 5, 0x004B4448, + 1, 0x004B44B8, + 2, 0x004B44A8, + 1, 0x004B44A0, + 2, 0x004B43D0, + 4, 0x004B4480, + 2, 0x004B41E0, + 5, 0x004B4148, 0, 0 }; -- cgit v1.2.3 From b611b65bf42a3f2d710199fa69428ec1012a0108 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 13 Jul 2011 18:34:20 +0000 Subject: NEVERHOOD: Change addHitRect to use an explicit count - This is since the alignment stuff didn't work and it's not worth it to investigate - Add possibility to write out hardcoded message lists instead of reading from the exe for special lists --- devtools/create_neverhood/create_neverhood.cpp | 55 +++++++++++++++++++------- devtools/create_neverhood/tables.h | 6 +-- 2 files changed, 43 insertions(+), 18 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 951a2f0ef1..84f3f74ac8 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -76,6 +76,7 @@ typedef std::vector RectItems; struct MessageItem { uint16 messageNum; uint32 messageParam; + MessageItem(uint16 msgNum, uint32 msgParam) : messageNum(msgNum), messageParam(msgParam) {} }; typedef std::vector MessageItems; @@ -103,14 +104,10 @@ byte *getData(uint32 offset) { return data + offset - dataStart + fileStart; } -void addHitRect(uint32 offset) { +void addHitRect(uint32 count, uint32 offset) { HitRectList *hitRectList = new HitRectList(); hitRectList->id = offset; byte *item = getData(offset); - uint32 count = READ_LE_UINT32(item); - //printf("count = %d\n", count); - // Align to 16 bytes - item = data + ((offset + 4 + 16) & 0xFFFFFFF0) - dataStart + fileStart; for (uint32 i = 0; i < count; i++) { HitRect hitRect; hitRect.x1 = READ_LE_UINT16(item + 0); @@ -128,15 +125,43 @@ void addHitRect(uint32 offset) { void addMessage(uint32 count, uint32 offset) { MessageList *messageList = new MessageList(); messageList->id = offset; - byte *item = getData(offset); - for (uint32 i = 0; i < count; i++) { - MessageItem messageItem; - messageItem.messageNum = READ_LE_UINT16(item + 0); - messageItem.messageParam = READ_LE_UINT32(item + 4); - //printf("%04X, %08X\n", messageItem.messageNum, messageItem.messageParam); - item += 8; - messageList->messageItems.push_back(messageItem); + + // Special code for message lists which are set at runtime (but otherwise constant) + switch (offset) { + // Scene 1002 rings + case 0x004B4200: + messageList->messageItems.push_back(MessageItem(0x4800, 258)); + messageList->messageItems.push_back(MessageItem(0x100D, 0x4A845A00)); + messageList->messageItems.push_back(MessageItem(0x4805, 1)); + break; + case 0x004B4218: + messageList->messageItems.push_back(MessageItem(0x4800, 297)); + messageList->messageItems.push_back(MessageItem(0x100D, 0x43807801)); + messageList->messageItems.push_back(MessageItem(0x4805, 2)); + break; + case 0x004B4230: + messageList->messageItems.push_back(MessageItem(0x4800, 370)); + messageList->messageItems.push_back(MessageItem(0x100D, 0x46C26A01)); + break; + case 0x004B4240: + messageList->messageItems.push_back(MessageItem(0x4800, 334)); + messageList->messageItems.push_back(MessageItem(0x100D, 0x468C7B11)); + messageList->messageItems.push_back(MessageItem(0x4805, 1)); + break; + case 0x004B4258: + messageList->messageItems.push_back(MessageItem(0x4800, 425)); + messageList->messageItems.push_back(MessageItem(0x100D, 0x42845B19)); + messageList->messageItems.push_back(MessageItem(0x4805, 1)); + break; + default: + // Read message list from the exe + byte *item = getData(offset); + for (uint32 i = 0; i < count; i++) { + messageList->messageItems.push_back(MessageItem(READ_LE_UINT16(item + 0), READ_LE_UINT32(item + 4))); + item += 8; + } } + messageLists.push_back(messageList); } @@ -180,8 +205,8 @@ int main(int argc, char *argv[]) { loadExe("nhc.exe"); - for (int i = 0; hitRectListOffsets[i] != 0; i++) { - addHitRect(hitRectListOffsets[i]); + for (int i = 0; hitRectListOffsets[i] != 0; i += 2) { + addHitRect(hitRectListOffsets[i], hitRectListOffsets[i + 1]); } for (int i = 0; rectListOffsets[i] != 0; i += 2) { diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index d6e230af5e..7aba996ef8 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -22,10 +22,10 @@ static const uint32 hitRectListOffsets[] = { // Scene1001 - 0x004B4858, + 1, 0x004B4860, // Scene1002 - 0x004B4134, - 0 + 1, 0x004B4138, + 0, 0 }; static const uint32 rectListOffsets[] = { -- cgit v1.2.3 From 78365121ea9931eb5973c2dcc0cae278fcc6a58d Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 14 Jul 2011 13:25:12 +0000 Subject: NEVERHOOD: Add NavigationLists in create_neverhood --- devtools/create_neverhood/create_neverhood.cpp | 61 +++++++++++++++++++++++++- devtools/create_neverhood/tables.h | 4 ++ 2 files changed, 63 insertions(+), 2 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 84f3f74ac8..25ef67651d 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -81,6 +81,18 @@ struct MessageItem { typedef std::vector MessageItems; +struct NavigationItem { + uint32 fileHash; + uint32 leftSmackerFileHash; + uint32 rightSmackerFileHash; + uint32 middleSmackerFileHash; + byte interactive; + byte middleFlag; + uint32 mouseCursorFileHash; +}; + +typedef std::vector NavigationItems; + struct HitRectList { uint32 id; HitRects hitRects; @@ -96,9 +108,15 @@ struct MessageList { MessageItems messageItems; }; +struct NavigationList { + uint32 id; + NavigationItems navigationItems; +}; + std::vector hitRectLists; std::vector rectLists; std::vector messageLists; +std::vector navigationLists; byte *getData(uint32 offset) { return data + offset - dataStart + fileStart; @@ -125,7 +143,6 @@ void addHitRect(uint32 count, uint32 offset) { void addMessage(uint32 count, uint32 offset) { MessageList *messageList = new MessageList(); messageList->id = offset; - // Special code for message lists which are set at runtime (but otherwise constant) switch (offset) { // Scene 1002 rings @@ -161,7 +178,6 @@ void addMessage(uint32 count, uint32 offset) { item += 8; } } - messageLists.push_back(messageList); } @@ -199,6 +215,25 @@ void addRect(uint32 count, uint32 offset) { rectLists.push_back(rectList); } +void addNavigation(uint32 count, uint32 offset) { + NavigationList *navigationList = new NavigationList(); + navigationList->id = offset; + byte *item = getData(offset); + for (uint32 i = 0; i < count; i++) { + NavigationItem navigationItem; + navigationItem.fileHash = READ_LE_UINT32(item + 0); + navigationItem.leftSmackerFileHash = READ_LE_UINT32(item + 4); + navigationItem.rightSmackerFileHash = READ_LE_UINT32(item + 8); + navigationItem.middleSmackerFileHash = READ_LE_UINT32(item + 12); + navigationItem.interactive = item[16]; + navigationItem.middleFlag = item[17]; + navigationItem.mouseCursorFileHash = READ_LE_UINT32(item + 20); + item += 24; + navigationList->navigationItems.push_back(navigationItem); + } + navigationLists.push_back(navigationList); +} + int main(int argc, char *argv[]) { FILE *datFile; @@ -217,6 +252,10 @@ int main(int argc, char *argv[]) { addMessage(messageListOffsets[i], messageListOffsets[i + 1]); } + for (int i = 0; navigationListOffsets[i] != 0; i += 2) { + addNavigation(navigationListOffsets[i], navigationListOffsets[i + 1]); + } + datFile = fopen("neverhood.dat", "wb"); writeUint32LE(datFile, 0x11223344); // Some magic @@ -274,6 +313,24 @@ int main(int argc, char *argv[]) { } } + // Write all navigation lists + writeUint32LE(datFile, navigationLists.size()); + for (std::vector::iterator it = navigationLists.begin(); it != navigationLists.end(); it++) { + NavigationList *navigationList = *it; + writeUint32LE(datFile, navigationList->id); + writeUint32LE(datFile, navigationList->navigationItems.size()); + for (uint32 i = 0; i < navigationList->navigationItems.size(); i++) { + const NavigationItem &navigationItem = navigationList->navigationItems[i]; + writeUint32LE(datFile, navigationItem.fileHash); + writeUint32LE(datFile, navigationItem.leftSmackerFileHash); + writeUint32LE(datFile, navigationItem.rightSmackerFileHash); + writeUint32LE(datFile, navigationItem.middleSmackerFileHash); + writeByte(datFile, navigationItem.interactive); + writeByte(datFile, navigationItem.middleFlag); + writeUint32LE(datFile, navigationItem.mouseCursorFileHash); + } + } + fclose(datFile); printf("Done.\n"); diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 7aba996ef8..3024197a88 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -67,3 +67,7 @@ static const uint32 messageListOffsets[] = { 0, 0 }; +static const uint32 navigationListOffsets[] = { + // Module2300 + 2, 0x004B67B8 +}; -- cgit v1.2.3 From b1377ab153399db3fdca784ef03a040090a59706 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Sat, 16 Jul 2011 21:23:28 +0000 Subject: NEVERHOOD: Add entries for Module2300 --- devtools/create_neverhood/tables.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 3024197a88..e6e4d753cd 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -36,6 +36,8 @@ static const uint32 rectListOffsets[] = { 3, 0x004B43A0, 1, 0x004B4418, 3, 0x004B43A0, + // Scene1004 + 1, 0x004B7C70, 0, 0 }; @@ -64,10 +66,20 @@ static const uint32 messageListOffsets[] = { 4, 0x004B4480, 2, 0x004B41E0, 5, 0x004B4148, + // Scene1004 + 3, 0x004B7BF0, + 2, 0x004B7C08, + 1, 0x004B7C18, + 2, 0x004B7C20, 0, 0 }; static const uint32 navigationListOffsets[] = { // Module2300 - 2, 0x004B67B8 + 2, 0x004B67B8, + 6, 0x004B67E8, + 2, 0x004B6878, + 3, 0x004B68F0, + 3, 0x004B68A8, + 0, 0 }; -- cgit v1.2.3 From 0632fc7dda2b0ad97f22105a3fb6fbcd3346feb9 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Mon, 18 Jul 2011 18:54:59 +0000 Subject: NEVERHOOD: Add tables for Scene1201 --- devtools/create_neverhood/tables.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index e6e4d753cd..016ac73318 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -25,6 +25,8 @@ static const uint32 hitRectListOffsets[] = { 1, 0x004B4860, // Scene1002 1, 0x004B4138, + // Scene1201 + 4, 0x004AEBD0, 0, 0 }; @@ -38,6 +40,11 @@ static const uint32 rectListOffsets[] = { 3, 0x004B43A0, // Scene1004 1, 0x004B7C70, + // Scene1201 + 1, 0x004AEE58, + 1, 0x004AEDC8, + 1, 0x004AEE18, + 1, 0x004AED88, 0, 0 }; @@ -71,6 +78,18 @@ static const uint32 messageListOffsets[] = { 2, 0x004B7C08, 1, 0x004B7C18, 2, 0x004B7C20, + // Scene1201 + 1, 0x004AEC08, + 2, 0x004AEC10, + 2, 0x004AEC20, + 2, 0x004AEC30, + 4, 0x004AEC90, + 2, 0x004AECB0, + 2, 0x004AECC0, + 5, 0x004AECF0, + 2, 0x004AECD0, + 2, 0x004AECE0, + 2, 0x004AED38, 0, 0 }; -- cgit v1.2.3 From 04d2b9a4028d1f6ac7c5c5e4a6cc95f8532e9cdf Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 26 Jul 2011 08:33:35 +0000 Subject: NEVERHOOD: Add entries for Scene1401, Scene1402 and Scene1705 --- devtools/create_neverhood/tables.h | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 016ac73318..58e48dc1a4 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -27,6 +27,8 @@ static const uint32 hitRectListOffsets[] = { 1, 0x004B4138, // Scene1201 4, 0x004AEBD0, + // Scene1705 + 1, 0x004B69D8, 0, 0 }; @@ -45,6 +47,14 @@ static const uint32 rectListOffsets[] = { 1, 0x004AEDC8, 1, 0x004AEE18, 1, 0x004AED88, + // Scene1401 + 1, 0x004B6758, + // Scene1402 + 1, 0x004B0C48, + 1, 0x004B0C98, + // Scene1705 + 1, 0x004B6B40, + 1, 0x004B6B30, 0, 0 }; @@ -90,10 +100,44 @@ static const uint32 messageListOffsets[] = { 2, 0x004AECD0, 2, 0x004AECE0, 2, 0x004AED38, + // Scene1401 + 1, 0x004B65C8, + 1, 0x004B65D0, + 1, 0x004B65D8, + 1, 0x004B65E8, + 3, 0x004B6670, + 4, 0x004B6690, + 1, 0x004B66B0, + 3, 0x004B6658, + 2, 0x004B65F0, + // Scene1402 + 1, 0x004B0B48, + 1, 0x004B0B50, + 1, 0x004B0B58, + 1, 0x004B0B60, + 2, 0x004B0B68, + 3, 0x004B0BB8, + 3, 0x004B0BD0, + // Scene1705 + 1, 0x004B69E8, + 2, 0x004B6A08, + 4, 0x004B6AA0, + 2, 0x004B6A18, + 1, 0x004B69F0, + 2, 0x004B6AC0, 0, 0 }; static const uint32 navigationListOffsets[] = { + // Module1700 + 2, 0x004AE8B8, + 3, 0x004AE8E8, + // Module1800 + 4, 0x004AFD38, + 1, 0x004AFD98, + 2, 0x004AFDB0, + 4, 0x004AFDE0, + 2, 0x004AFE40, // Module2300 2, 0x004B67B8, 6, 0x004B67E8, -- cgit v1.2.3 From ad7c50d593594247f1669177eccb37e3ab8394ed Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 27 Jul 2011 18:02:51 +0000 Subject: NEVERHOOD: Add more tables --- devtools/create_neverhood/tables.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 58e48dc1a4..aa70279af3 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -52,6 +52,11 @@ static const uint32 rectListOffsets[] = { // Scene1402 1, 0x004B0C48, 1, 0x004B0C98, + // Scene1403 + 1, 0x004B1FF8, + 1, 0x004B2008, + // Scene1404 + 1, 0x004B8D80, // Scene1705 1, 0x004B6B40, 1, 0x004B6B30, @@ -118,6 +123,26 @@ static const uint32 messageListOffsets[] = { 2, 0x004B0B68, 3, 0x004B0BB8, 3, 0x004B0BD0, + // Scene1403 + 1, 0x004B1F18, + 1, 0x004B1F20, + 3, 0x004B1F70, + 2, 0x004B1FA8, + 4, 0x004B1F88, + 3, 0x004B1F58, + 2, 0x004B1F28, + 2, 0x004B1FB8, + // Scene1404 + 1, 0x004B8C28, + 1, 0x004B8C30, + 1, 0x004B8C38, + 1, 0x004B8D28, + 3, 0x004B8CB8, + 2, 0x004B8C40, + 6, 0x004B8CE8, + 3, 0x004B8CA0, + 2, 0x004B8CD0, + 2, 0x004B8D18, // Scene1705 1, 0x004B69E8, 2, 0x004B6A08, -- cgit v1.2.3 From 828629018567b3ff4e3f3311420168ff83bf62a7 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 4 Aug 2011 12:23:47 +0000 Subject: NEVERHOOD: Add tables for Module2000 --- devtools/create_neverhood/tables.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index aa70279af3..b2d5bc52ff 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -60,6 +60,9 @@ static const uint32 rectListOffsets[] = { // Scene1705 1, 0x004B6B40, 1, 0x004B6B30, + // Scene2001 + 1, 0x004B3680, + 1, 0x004B3670, 0, 0 }; @@ -150,6 +153,12 @@ static const uint32 messageListOffsets[] = { 2, 0x004B6A18, 1, 0x004B69F0, 2, 0x004B6AC0, + // Scene2001 + 1, 0x004B3538, + 2, 0x004B3540, + 4, 0x004B35F0, + 2, 0x004B3550, + 1, 0x004B3530, 0, 0 }; @@ -169,5 +178,21 @@ static const uint32 navigationListOffsets[] = { 2, 0x004B6878, 3, 0x004B68F0, 3, 0x004B68A8, + // Module2000 + 3, 0x004B7B48, + 3, 0x004B7B00, + // Module3000 + 2, 0x004B7C80, + 2, 0x004B7CE0, + 2, 0x004B7CB0, + 3, 0x004B7D58, + 3, 0x004B7D10, + 4, 0x004B7E60, + 4, 0x004B7DA0, + 4, 0x004B7E00, + 4, 0x004B7F20, + 4, 0x004B7EC0, + 2, 0x004B7F80, + 1, 0x004B7FB0, 0, 0 }; -- cgit v1.2.3 From bc239b3fb17a359151b8486f1e13c577817adef1 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 4 Aug 2011 18:52:02 +0000 Subject: NEVERHOOD: Restructure/redesign create_neverhood tool and made it more extensible for future game structures --- devtools/create_neverhood/create_neverhood.cpp | 487 ++++++++++++++----------- 1 file changed, 269 insertions(+), 218 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 25ef67651d..14dd32db3d 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -41,6 +41,13 @@ byte *data; uint32 dataStart = 0x004AE000; uint32 fileStart = 0x000AC600; +class HitRectList; +class RectList; +class MessageList; +class NavigationList; + +void addMessageList(uint32 messageListCount, uint32 messageListOffset); + void loadExe(const char *filename) { FILE *exe = fopen(filename, "rb"); dataSize = fileSize(exe); @@ -49,38 +56,131 @@ void loadExe(const char *filename) { fclose(exe); } +byte *getData(uint32 offset) { + return data + offset - dataStart + fileStart; +} + struct HitRect { int16 x1, y1, x2, y2; uint16 messageNum; + + void load(uint32 offset) { + byte *item = getData(offset); + x1 = READ_LE_UINT16(item + 0); + y1 = READ_LE_UINT16(item + 2); + x2 = READ_LE_UINT16(item + 4); + y2 = READ_LE_UINT16(item + 6); + messageNum = READ_LE_UINT16(item + 8); + } + + void save(FILE *fd) { + writeUint16LE(fd, x1); + writeUint16LE(fd, y1); + writeUint16LE(fd, x2); + writeUint16LE(fd, y2); + writeUint16LE(fd, messageNum); + } + + int getItemSize() const { + return 10; + } + }; -typedef std::vector HitRects; +struct MessageItem { + uint16 messageNum; + uint32 messageParam; + MessageItem() {} + MessageItem(uint16 msgNum, uint32 msgParam) : messageNum(msgNum), messageParam(msgParam) {} + + void load(uint32 offset) { + byte *item = getData(offset); + messageNum = READ_LE_UINT16(item + 0); + messageParam = READ_LE_UINT32(item + 4); + } + + void save(FILE *fd) { + writeUint16LE(fd, messageNum); + writeUint32LE(fd, messageParam); + } + + int getItemSize() const { + return 8; + } + +}; struct SubRectItem { int16 x1, y1, x2, y2; uint32 messageListCount; uint32 messageListOffset; -}; -typedef std::vector SubRectItems; + void load(uint32 offset) { + byte *item = getData(offset); + x1 = READ_LE_UINT16(item + 0); + y1 = READ_LE_UINT16(item + 2); + x2 = READ_LE_UINT16(item + 4); + y2 = READ_LE_UINT16(item + 6); + messageListCount = READ_LE_UINT32(item + 8); + messageListOffset = READ_LE_UINT32(item + 12); + // Add the message to the message list + addMessageList(messageListCount, messageListOffset); + } + + void save(FILE *fd) { + writeUint16LE(fd, x1); + writeUint16LE(fd, y1); + writeUint16LE(fd, x2); + writeUint16LE(fd, y2); + writeUint32LE(fd, messageListOffset); + } + + int getItemSize() const { + return 16; + } + +}; struct RectItem { int16 x1, y1, x2, y2; uint32 subRectListCount; uint32 subRectListOffset; - SubRectItems subRectItems; -}; + std::vector subRectItems; -typedef std::vector RectItems; - -struct MessageItem { - uint16 messageNum; - uint32 messageParam; - MessageItem(uint16 msgNum, uint32 msgParam) : messageNum(msgNum), messageParam(msgParam) {} + void load(uint32 offset) { + byte *item = getData(offset); + uint32 subItemOffset; + x1 = READ_LE_UINT16(item + 0); + y1 = READ_LE_UINT16(item + 2); + x2 = READ_LE_UINT16(item + 4); + y2 = READ_LE_UINT16(item + 6); + subRectListCount = READ_LE_UINT32(item + 8); + subRectListOffset = READ_LE_UINT32(item + 12); + subItemOffset = subRectListOffset; + for (uint32 j = 0; j < subRectListCount; j++) { + SubRectItem subRectItem; + subRectItem.load(subItemOffset); + subItemOffset += 16; + subRectItems.push_back(subRectItem); + } + } + + void save(FILE *fd) { + writeUint16LE(fd, x1); + writeUint16LE(fd, y1); + writeUint16LE(fd, x2); + writeUint16LE(fd, y2); + writeUint32LE(fd, subRectItems.size()); + for (uint32 j = 0; j < subRectItems.size(); j++) + subRectItems[j].save(fd); + } + + int getItemSize() const { + return 16; + } + }; -typedef std::vector MessageItems; - struct NavigationItem { uint32 fileHash; uint32 leftSmackerFileHash; @@ -89,149 +189,172 @@ struct NavigationItem { byte interactive; byte middleFlag; uint32 mouseCursorFileHash; -}; + + void load(uint32 offset) { + byte *item = getData(offset); + fileHash = READ_LE_UINT32(item + 0); + leftSmackerFileHash = READ_LE_UINT32(item + 4); + rightSmackerFileHash = READ_LE_UINT32(item + 8); + middleSmackerFileHash = READ_LE_UINT32(item + 12); + interactive = item[16]; + middleFlag = item[17]; + mouseCursorFileHash = READ_LE_UINT32(item + 20); + } -typedef std::vector NavigationItems; + void save(FILE *fd) { + writeUint32LE(fd, fileHash); + writeUint32LE(fd, leftSmackerFileHash); + writeUint32LE(fd, rightSmackerFileHash); + writeUint32LE(fd, middleSmackerFileHash); + writeByte(fd, interactive); + writeByte(fd, middleFlag); + writeUint32LE(fd, mouseCursorFileHash); + } -struct HitRectList { - uint32 id; - HitRects hitRects; + int getItemSize() const { + return 24; + } + }; -struct RectList { +template +class StaticDataList { +public: uint32 id; - RectItems rectItems; + std::vector items; + + virtual ~StaticDataList() { + } + + void add(ITEMCLASS item) { + items.push_back(item); + } + + int getCount() const { + return items.size(); + } + + ITEMCLASS *getListItem(int index) { + return &items[index]; + } + + virtual bool specialLoadList(uint32 count, uint32 offset) { + return false; + } + + void loadList(uint32 count, uint32 offset) { + id = offset; + if (!specialLoadList(count, offset)) { + for (uint32 i = 0; i < count; i++) { + ITEMCLASS listItem; + listItem.load(offset); + offset += listItem.getItemSize(); + add(listItem); + } + } + } + + void saveList(FILE *fd) { + writeUint32LE(fd, id); + writeUint32LE(fd, getCount()); + for (int i = 0; i < getCount(); i++) { + items[i].save(fd); + } + } + +}; + +class HitRectList : public StaticDataList { }; -struct MessageList { - uint32 id; - MessageItems messageItems; +class RectList : public StaticDataList { }; -struct NavigationList { - uint32 id; - NavigationItems navigationItems; +class MessageList : public StaticDataList { +public: + + virtual bool specialLoadList(uint32 count, uint32 offset) { + // Special code for message lists which are set at runtime (but otherwise constant) + switch (offset) { + // Scene 1002 rings + case 0x004B4200: + add(MessageItem(0x4800, 258)); + add(MessageItem(0x100D, 0x4A845A00)); + add(MessageItem(0x4805, 1)); + return true; + case 0x004B4218: + add(MessageItem(0x4800, 297)); + add(MessageItem(0x100D, 0x43807801)); + add(MessageItem(0x4805, 2)); + return true; + case 0x004B4230: + add(MessageItem(0x4800, 370)); + add(MessageItem(0x100D, 0x46C26A01)); + return true; + case 0x004B4240: + add(MessageItem(0x4800, 334)); + add(MessageItem(0x100D, 0x468C7B11)); + add(MessageItem(0x4805, 1)); + return true; + case 0x004B4258: + add(MessageItem(0x4800, 425)); + add(MessageItem(0x100D, 0x42845B19)); + add(MessageItem(0x4805, 1)); + return true; + } + return false; + } + }; -std::vector hitRectLists; -std::vector rectLists; -std::vector messageLists; -std::vector navigationLists; +class NavigationList : public StaticDataList { -byte *getData(uint32 offset) { - return data + offset - dataStart + fileStart; -} +}; -void addHitRect(uint32 count, uint32 offset) { - HitRectList *hitRectList = new HitRectList(); - hitRectList->id = offset; - byte *item = getData(offset); - for (uint32 i = 0; i < count; i++) { - HitRect hitRect; - hitRect.x1 = READ_LE_UINT16(item + 0); - hitRect.y1 = READ_LE_UINT16(item + 2); - hitRect.x2 = READ_LE_UINT16(item + 4); - hitRect.y2 = READ_LE_UINT16(item + 6); - hitRect.messageNum = READ_LE_UINT16(item + 8); - item += 10; - //printf("(%d, %d, %d, %d) -> %04X\n", hitRect.x1, hitRect.y1, hitRect.x2, hitRect.y2, hitRect.messageNum); - hitRectList->hitRects.push_back(hitRect); +template +class StaticDataListVector { +public: + std::vector lists; + + void add(LISTCLASS *list) { + lists.push_back(list); } - hitRectLists.push_back(hitRectList); -} - -void addMessage(uint32 count, uint32 offset) { - MessageList *messageList = new MessageList(); - messageList->id = offset; - // Special code for message lists which are set at runtime (but otherwise constant) - switch (offset) { - // Scene 1002 rings - case 0x004B4200: - messageList->messageItems.push_back(MessageItem(0x4800, 258)); - messageList->messageItems.push_back(MessageItem(0x100D, 0x4A845A00)); - messageList->messageItems.push_back(MessageItem(0x4805, 1)); - break; - case 0x004B4218: - messageList->messageItems.push_back(MessageItem(0x4800, 297)); - messageList->messageItems.push_back(MessageItem(0x100D, 0x43807801)); - messageList->messageItems.push_back(MessageItem(0x4805, 2)); - break; - case 0x004B4230: - messageList->messageItems.push_back(MessageItem(0x4800, 370)); - messageList->messageItems.push_back(MessageItem(0x100D, 0x46C26A01)); - break; - case 0x004B4240: - messageList->messageItems.push_back(MessageItem(0x4800, 334)); - messageList->messageItems.push_back(MessageItem(0x100D, 0x468C7B11)); - messageList->messageItems.push_back(MessageItem(0x4805, 1)); - break; - case 0x004B4258: - messageList->messageItems.push_back(MessageItem(0x4800, 425)); - messageList->messageItems.push_back(MessageItem(0x100D, 0x42845B19)); - messageList->messageItems.push_back(MessageItem(0x4805, 1)); - break; - default: - // Read message list from the exe - byte *item = getData(offset); - for (uint32 i = 0; i < count; i++) { - messageList->messageItems.push_back(MessageItem(READ_LE_UINT16(item + 0), READ_LE_UINT32(item + 4))); - item += 8; + + void loadListVector(const uint32 *offsets) { + for (int i = 0; offsets[i] != 0; i += 2) { + LISTCLASS *list = new LISTCLASS(); + list->loadList(offsets[i], offsets[i + 1]); + bool doAppend = true; + // Bad + for (typename std::vector::iterator it = lists.begin(); it != lists.end(); it++) { + if ((*it)->id == list->id) { + doAppend = false; + break; + } + } + if (doAppend) + lists.push_back(list); } } - messageLists.push_back(messageList); -} - -void addRect(uint32 count, uint32 offset) { - RectList *rectList = new RectList(); - rectList->id = offset; - byte *item = getData(offset); - for (uint32 i = 0; i < count; i++) { - RectItem rectItem; - byte *subItem; - rectItem.x1 = READ_LE_UINT16(item + 0); - rectItem.y1 = READ_LE_UINT16(item + 2); - rectItem.x2 = READ_LE_UINT16(item + 4); - rectItem.y2 = READ_LE_UINT16(item + 6); - rectItem.subRectListCount = READ_LE_UINT32(item + 8); - rectItem.subRectListOffset = READ_LE_UINT32(item + 12); - //printf("(%d, %d, %d, %d), %d, %08X\n", rectItem.x1, rectItem.y1, rectItem.x2, rectItem.y2, rectItem.subRectListCount, rectItem.subRectListOffset); - subItem = getData(rectItem.subRectListOffset); - for (uint32 j = 0; j < rectItem.subRectListCount; j++) { - SubRectItem subRectItem; - subRectItem.x1 = READ_LE_UINT16(subItem + 0); - subRectItem.y1 = READ_LE_UINT16(subItem + 2); - subRectItem.x2 = READ_LE_UINT16(subItem + 4); - subRectItem.y2 = READ_LE_UINT16(subItem + 6); - subRectItem.messageListCount = READ_LE_UINT32(subItem + 8); - subRectItem.messageListOffset = READ_LE_UINT32(subItem + 12); - subItem += 16; - //printf("(%d, %d, %d, %d), %d, %08X\n", subRectItem.x1, subRectItem.y1, subRectItem.x2, subRectItem.y2, subRectItem.messageListCount, subRectItem.messageListOffset); - addMessage(subRectItem.messageListCount, subRectItem.messageListOffset); - rectItem.subRectItems.push_back(subRectItem); + + void saveListVector(FILE *fd) { + writeUint32LE(fd, lists.size()); + for (typename std::vector::iterator it = lists.begin(); it != lists.end(); it++) { + (*it)->saveList(fd); } - item += 16; - rectList->rectItems.push_back(rectItem); } - rectLists.push_back(rectList); -} -void addNavigation(uint32 count, uint32 offset) { - NavigationList *navigationList = new NavigationList(); - navigationList->id = offset; - byte *item = getData(offset); - for (uint32 i = 0; i < count; i++) { - NavigationItem navigationItem; - navigationItem.fileHash = READ_LE_UINT32(item + 0); - navigationItem.leftSmackerFileHash = READ_LE_UINT32(item + 4); - navigationItem.rightSmackerFileHash = READ_LE_UINT32(item + 8); - navigationItem.middleSmackerFileHash = READ_LE_UINT32(item + 12); - navigationItem.interactive = item[16]; - navigationItem.middleFlag = item[17]; - navigationItem.mouseCursorFileHash = READ_LE_UINT32(item + 20); - item += 24; - navigationList->navigationItems.push_back(navigationItem); - } - navigationLists.push_back(navigationList); +}; + +StaticDataListVector hitRectLists; +StaticDataListVector rectLists; +StaticDataListVector messageLists; +StaticDataListVector navigationLists; + +void addMessageList(uint32 messageListCount, uint32 messageListOffset) { + MessageList *messageList = new MessageList(); + messageList->loadList(messageListCount, messageListOffset); + messageLists.add(messageList); } int main(int argc, char *argv[]) { @@ -240,96 +363,24 @@ int main(int argc, char *argv[]) { loadExe("nhc.exe"); - for (int i = 0; hitRectListOffsets[i] != 0; i += 2) { - addHitRect(hitRectListOffsets[i], hitRectListOffsets[i + 1]); - } - - for (int i = 0; rectListOffsets[i] != 0; i += 2) { - addRect(rectListOffsets[i], rectListOffsets[i + 1]); - } - - for (int i = 0; messageListOffsets[i] != 0; i += 2) { - addMessage(messageListOffsets[i], messageListOffsets[i + 1]); - } - - for (int i = 0; navigationListOffsets[i] != 0; i += 2) { - addNavigation(navigationListOffsets[i], navigationListOffsets[i + 1]); - } - + hitRectLists.loadListVector(hitRectListOffsets); + rectLists.loadListVector(rectListOffsets); + messageLists.loadListVector(messageListOffsets); + navigationLists.loadListVector(navigationListOffsets); + datFile = fopen("neverhood.dat", "wb"); writeUint32LE(datFile, 0x11223344); // Some magic writeUint32LE(datFile, DAT_VERSION); // Write all message lists - writeUint32LE(datFile, messageLists.size()); - for (std::vector::iterator it = messageLists.begin(); it != messageLists.end(); it++) { - MessageList *messageList = *it; - writeUint32LE(datFile, messageList->id); - writeUint32LE(datFile, messageList->messageItems.size()); - for (uint32 i = 0; i < messageList->messageItems.size(); i++) { - writeUint16LE(datFile, messageList->messageItems[i].messageNum); - writeUint32LE(datFile, messageList->messageItems[i].messageParam); - } - } - + messageLists.saveListVector(datFile); // Write all rect lists - writeUint32LE(datFile, rectLists.size()); - for (std::vector::iterator it = rectLists.begin(); it != rectLists.end(); it++) { - RectList *rectList = *it; - writeUint32LE(datFile, rectList->id); - writeUint32LE(datFile, rectList->rectItems.size()); - for (uint32 i = 0; i < rectList->rectItems.size(); i++) { - const RectItem &rectItem = rectList->rectItems[i]; - writeUint16LE(datFile, rectItem.x1); - writeUint16LE(datFile, rectItem.y1); - writeUint16LE(datFile, rectItem.x2); - writeUint16LE(datFile, rectItem.y2); - writeUint32LE(datFile, rectItem.subRectItems.size()); - for (uint32 j = 0; j < rectItem.subRectItems.size(); j++) { - const SubRectItem &subRectItem = rectItem.subRectItems[j]; - writeUint16LE(datFile, subRectItem.x1); - writeUint16LE(datFile, subRectItem.y1); - writeUint16LE(datFile, subRectItem.x2); - writeUint16LE(datFile, subRectItem.y2); - writeUint32LE(datFile, subRectItem.messageListOffset); - } - } - } - + rectLists.saveListVector(datFile); // Write all hit rect lists - writeUint32LE(datFile, hitRectLists.size()); - for (std::vector::iterator it = hitRectLists.begin(); it != hitRectLists.end(); it++) { - HitRectList *hitRectList = *it; - writeUint32LE(datFile, hitRectList->id); - writeUint32LE(datFile, hitRectList->hitRects.size()); - for (uint32 i = 0; i < hitRectList->hitRects.size(); i++) { - const HitRect &hitRect = hitRectList->hitRects[i]; - writeUint16LE(datFile, hitRect.x1); - writeUint16LE(datFile, hitRect.y1); - writeUint16LE(datFile, hitRect.x2); - writeUint16LE(datFile, hitRect.y2); - writeUint16LE(datFile, hitRect.messageNum); - } - } - + hitRectLists.saveListVector(datFile); // Write all navigation lists - writeUint32LE(datFile, navigationLists.size()); - for (std::vector::iterator it = navigationLists.begin(); it != navigationLists.end(); it++) { - NavigationList *navigationList = *it; - writeUint32LE(datFile, navigationList->id); - writeUint32LE(datFile, navigationList->navigationItems.size()); - for (uint32 i = 0; i < navigationList->navigationItems.size(); i++) { - const NavigationItem &navigationItem = navigationList->navigationItems[i]; - writeUint32LE(datFile, navigationItem.fileHash); - writeUint32LE(datFile, navigationItem.leftSmackerFileHash); - writeUint32LE(datFile, navigationItem.rightSmackerFileHash); - writeUint32LE(datFile, navigationItem.middleSmackerFileHash); - writeByte(datFile, navigationItem.interactive); - writeByte(datFile, navigationItem.middleFlag); - writeUint32LE(datFile, navigationItem.mouseCursorFileHash); - } - } + navigationLists.saveListVector(datFile); fclose(datFile); -- cgit v1.2.3 From 28177361bf9406fce53db89b469e912219380b4d Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Mon, 29 Aug 2011 10:23:04 +0000 Subject: NEVERHOOD: Add Hall of Records tables - Add tables for Scene2201 --- devtools/create_neverhood/create_neverhood.cpp | 99 ++++++++++++++++++++++---- devtools/create_neverhood/tables.h | 56 +++++++++++++++ 2 files changed, 142 insertions(+), 13 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 14dd32db3d..1efc6161c4 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -60,6 +60,28 @@ byte *getData(uint32 offset) { return data + offset - dataStart + fileStart; } +const char *getStringP(uint32 offset) { + return offset != 0 ? (const char*)getData(offset) : NULL; +} + +uint32 calcHash(const char *value) { + if (!value) + return 0; + uint32 hash = 0, shiftValue = 0; + while (*value != 0) { + char ch = *value++; + if (ch >= 'a' && ch <= 'z') + ch -= 32; + else if (ch >= '0' && ch <= '9') + ch += 22; + shiftValue += ch - 64; + if (shiftValue >= 32) + shiftValue -= 32; + hash ^= 1 << shiftValue; + } + return hash; +} + struct HitRect { int16 x1, y1, x2, y2; uint16 messageNum; @@ -217,6 +239,36 @@ struct NavigationItem { }; +struct SceneInfo140Item { + uint32 bgFilename1; + uint32 bgFilename2; + uint32 txFilename; + uint32 bgFilename3; + byte xPosIndex; + byte count; + + void load(uint32 offset) { + byte *item = getData(offset); + // Only save the hashes instead of the full names + bgFilename1 = calcHash(getStringP(READ_LE_UINT32(item + 0))); + bgFilename2 = calcHash(getStringP(READ_LE_UINT32(item + 4))); + txFilename = calcHash(getStringP(READ_LE_UINT32(item + 8))); + bgFilename3 = calcHash(getStringP(READ_LE_UINT32(item + 12))); + xPosIndex = item[16]; + count = item[17]; + } + + void save(FILE *fd) { + writeUint32LE(fd, bgFilename1); + writeUint32LE(fd, bgFilename2); + writeUint32LE(fd, txFilename); + writeUint32LE(fd, bgFilename3); + writeByte(fd, xPosIndex); + writeByte(fd, count); + } + +}; + template class StaticDataList { public: @@ -346,10 +398,33 @@ public: }; +template +class StaticDataVector { +public: + std::vector items; + + void loadVector(const uint32 *offsets) { + for (int i = 0; offsets[i] != 0; i++) { + ITEMCLASS item; + item.load(offsets[i]); + items.push_back(item); + } + } + + void saveVector(FILE *fd) { + writeUint32LE(fd, items.size()); + for (typename std::vector::iterator it = items.begin(); it != items.end(); it++) { + (*it).save(fd); + } + } + +}; + StaticDataListVector hitRectLists; StaticDataListVector rectLists; StaticDataListVector messageLists; StaticDataListVector navigationLists; +StaticDataVector sceneInfo140Items; void addMessageList(uint32 messageListCount, uint32 messageListOffset) { MessageList *messageList = new MessageList(); @@ -363,24 +438,22 @@ int main(int argc, char *argv[]) { loadExe("nhc.exe"); - hitRectLists.loadListVector(hitRectListOffsets); - rectLists.loadListVector(rectListOffsets); - messageLists.loadListVector(messageListOffsets); - navigationLists.loadListVector(navigationListOffsets); - + hitRectLists.loadListVector(hitRectListOffsets); + rectLists.loadListVector(rectListOffsets); + messageLists.loadListVector(messageListOffsets); + navigationLists.loadListVector(navigationListOffsets); + sceneInfo140Items.loadVector(sceneInfo140Offsets); + datFile = fopen("neverhood.dat", "wb"); writeUint32LE(datFile, 0x11223344); // Some magic writeUint32LE(datFile, DAT_VERSION); - // Write all message lists - messageLists.saveListVector(datFile); - // Write all rect lists - rectLists.saveListVector(datFile); - // Write all hit rect lists - hitRectLists.saveListVector(datFile); - // Write all navigation lists - navigationLists.saveListVector(datFile); + messageLists.saveListVector(datFile); + rectLists.saveListVector(datFile); + hitRectLists.saveListVector(datFile); + navigationLists.saveListVector(datFile); + sceneInfo140Items.saveVector(datFile); fclose(datFile); diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index b2d5bc52ff..8a139f5e74 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -159,6 +159,19 @@ static const uint32 messageListOffsets[] = { 4, 0x004B35F0, 2, 0x004B3550, 1, 0x004B3530, + // Scene2201 + 1, 0x004B8118, + 1, 0x004B8130, + 1, 0x004B8178, + 2, 0x004B8120, + 3, 0x004B81A0, + 1, 0x004B81B8, + 2, 0x004B8108, + 5, 0x004B8150, + 4, 0x004B8180, + 3, 0x004B8138, + 2, 0x004B8108, + 2, 0x004B81C8, 0, 0 }; @@ -196,3 +209,46 @@ static const uint32 navigationListOffsets[] = { 1, 0x004B7FB0, 0, 0 }; + +// Hall of Records scene definitions + +static const uint32 sceneInfo140Offsets[] = { + 0x004B7180, + 0x004B7198, + 0x004B71B0, + 0x004B71C8, + 0x004B71E0, + 0x004B71F8, + 0x004B7210, + 0x004B7228, + 0x004B7240, + 0x004B7258, + 0x004B7270, + 0x004B7288, + 0x004B72A0, + 0x004B72B8, + 0x004B72D0, + 0x004B72E8, + 0x004B7300, + 0x004B7318, + 0x004B7330, + 0x004B7348, + 0x004B7360, + 0x004B7378, + 0x004B7390, + 0x004B73A8, + 0x004B73C0, + 0x004B73D8, + 0x004B73F0, + 0x004B7408, + 0x004B7420, + 0x004B7438, + 0x004B7450, + 0x004B7468, + 0x004B7480, + 0x004B7498, + 0x004B74B0, + 0x004B74C8, + 0 +}; + -- cgit v1.2.3 From 9273c2e97ab90068faf01df246f89d939804ee79 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 31 Aug 2011 10:50:49 +0000 Subject: NEVERHOOD: Add tables for Scene2203 --- devtools/create_neverhood/tables.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 8a139f5e74..1956ece8c6 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -29,6 +29,8 @@ static const uint32 hitRectListOffsets[] = { 4, 0x004AEBD0, // Scene1705 1, 0x004B69D8, + // Scene2203 + 1, 0x004B8320, 0, 0 }; @@ -63,6 +65,8 @@ static const uint32 rectListOffsets[] = { // Scene2001 1, 0x004B3680, 1, 0x004B3670, + // Scene2203 + 1, 0x004B8420, 0, 0 }; @@ -172,6 +176,17 @@ static const uint32 messageListOffsets[] = { 3, 0x004B8138, 2, 0x004B8108, 2, 0x004B81C8, + // Scene2203 + 1, 0x004B8340, + 1, 0x004B8350, + 1, 0x004B8358, + 1, 0x004B8348, + 3, 0x004B83B0, + 3, 0x004B83C8, + 2, 0x004B8370, + 2, 0x004B8360, + 2, 0x004B83E0, + 2, 0x004B83F0, 0, 0 }; -- cgit v1.2.3 From 8729ca04d9b7cc42417f8824ccb383fe403058f3 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 1 Sep 2011 10:19:08 +0000 Subject: NEVERHOOD: Add tables for Scene2205 --- devtools/create_neverhood/tables.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 1956ece8c6..238edc8297 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -31,6 +31,8 @@ static const uint32 hitRectListOffsets[] = { 1, 0x004B69D8, // Scene2203 1, 0x004B8320, + // Scene2205 + 1, 0x004B0620, 0, 0 }; @@ -187,6 +189,12 @@ static const uint32 messageListOffsets[] = { 2, 0x004B8360, 2, 0x004B83E0, 2, 0x004B83F0, + // Scene2205 + 1, 0x004B0658, + 2, 0x004B0648, + 1, 0x004B0640, + 4, 0x004B0690, + 2, 0x004B0630, 0, 0 }; -- cgit v1.2.3 From 80bbb06453b080234f3fe52c66f628a80e3ae0fa Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 1 Sep 2011 19:09:16 +0000 Subject: NEVERHOOD: Add tables for Scene2206 --- devtools/create_neverhood/tables.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 238edc8297..18ea38ba89 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -69,6 +69,9 @@ static const uint32 rectListOffsets[] = { 1, 0x004B3670, // Scene2203 1, 0x004B8420, + // Scene2206 + 1, 0x004B8AF8, + 1, 0x004B8B58, 0, 0 }; @@ -195,6 +198,21 @@ static const uint32 messageListOffsets[] = { 1, 0x004B0640, 4, 0x004B0690, 2, 0x004B0630, + // Scene2206 + 1, 0x004B88A8, + 2, 0x004B88B8, + 1, 0x004B88C8, + 1, 0x004B8A70, + 1, 0x004B88B0, + 5, 0x004B8948, + 2, 0x004B8970, + 2, 0x004B8988, + 4, 0x004B8998, + 4, 0x004B89B8, + 4, 0x004B89D8, + 5, 0x004B89F8, + 5, 0x004B8A20, + 5, 0x004B8A48, 0, 0 }; -- cgit v1.2.3 From 8459fa97778f1f303bbbcd92359608146e3f5069 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 2 Sep 2011 17:50:59 +0000 Subject: NEVERHOOD: Add tables for Scene2207 --- devtools/create_neverhood/tables.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 18ea38ba89..597e67f4b1 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -72,6 +72,9 @@ static const uint32 rectListOffsets[] = { // Scene2206 1, 0x004B8AF8, 1, 0x004B8B58, + // Scene2207 + 3, 0x004B38B8, + 1, 0x004B3948, 0, 0 }; @@ -213,6 +216,12 @@ static const uint32 messageListOffsets[] = { 5, 0x004B89F8, 5, 0x004B8A20, 5, 0x004B8A48, + // Scene2207 + 1, 0x004B38E8, + 4, 0x004B38F0, + 2, 0x004B37D8, + 2, 0x004B3958, + 3, 0x004B3920, 0, 0 }; -- cgit v1.2.3 From 904f7ac33520a3b578ad46bb3b1552074ae57326 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 9 Sep 2011 09:04:09 +0000 Subject: NEVERHOOD: Add tables for Scene2242 --- devtools/create_neverhood/tables.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 597e67f4b1..5f54df94ba 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -75,6 +75,9 @@ static const uint32 rectListOffsets[] = { // Scene2207 3, 0x004B38B8, 1, 0x004B3948, + // Scene2242 + 1, 0x004B3DC8, + 1, 0x004B3E18, 0, 0 }; @@ -222,6 +225,16 @@ static const uint32 messageListOffsets[] = { 2, 0x004B37D8, 2, 0x004B3958, 3, 0x004B3920, + // Scene2242 + 1, 0x004B3C18, + 1, 0x004B3D60, + 1, 0x004B3D48, + 1, 0x004B3C20, + 2, 0x004B3D50, + 5, 0x004B3CF8, + 5, 0x004B3D20, + 4, 0x004B3CB8, + 4, 0x004B3CD8, 0, 0 }; -- cgit v1.2.3 From 5214284271d0ae050e5f33fe66d0fc0b8cbb94af Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 13 Sep 2011 12:56:46 +0000 Subject: NEVERHOOD: Add tables for Scene1302 --- devtools/create_neverhood/create_neverhood.cpp | 33 ++++++++++++++- devtools/create_neverhood/tables.h | 57 ++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 1efc6161c4..2d11931f5a 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -87,6 +87,7 @@ struct HitRect { uint16 messageNum; void load(uint32 offset) { + printf("Loading HitRect @ %08X...\n", offset); byte *item = getData(offset); x1 = READ_LE_UINT16(item + 0); y1 = READ_LE_UINT16(item + 2); @@ -116,6 +117,7 @@ struct MessageItem { MessageItem(uint16 msgNum, uint32 msgParam) : messageNum(msgNum), messageParam(msgParam) {} void load(uint32 offset) { + printf("Loading MessageItem @ %08X...\n", offset); byte *item = getData(offset); messageNum = READ_LE_UINT16(item + 0); messageParam = READ_LE_UINT32(item + 4); @@ -138,6 +140,7 @@ struct SubRectItem { uint32 messageListOffset; void load(uint32 offset) { + printf("Loading SubRectItem @ %08X...\n", offset); byte *item = getData(offset); x1 = READ_LE_UINT16(item + 0); y1 = READ_LE_UINT16(item + 2); @@ -170,6 +173,7 @@ struct RectItem { std::vector subRectItems; void load(uint32 offset) { + printf("Loading RectItem @ %08X...\n", offset); byte *item = getData(offset); uint32 subItemOffset; x1 = READ_LE_UINT16(item + 0); @@ -213,6 +217,7 @@ struct NavigationItem { uint32 mouseCursorFileHash; void load(uint32 offset) { + printf("Loading NavigationItem @ %08X...\n", offset); byte *item = getData(offset); fileHash = READ_LE_UINT32(item + 0); leftSmackerFileHash = READ_LE_UINT32(item + 4); @@ -240,6 +245,7 @@ struct NavigationItem { }; struct SceneInfo140Item { + uint32 id; uint32 bgFilename1; uint32 bgFilename2; uint32 txFilename; @@ -249,6 +255,7 @@ struct SceneInfo140Item { void load(uint32 offset) { byte *item = getData(offset); + id = offset; // Only save the hashes instead of the full names bgFilename1 = calcHash(getStringP(READ_LE_UINT32(item + 0))); bgFilename2 = calcHash(getStringP(READ_LE_UINT32(item + 4))); @@ -259,6 +266,7 @@ struct SceneInfo140Item { } void save(FILE *fd) { + writeUint32LE(fd, id); writeUint32LE(fd, bgFilename1); writeUint32LE(fd, bgFilename2); writeUint32LE(fd, txFilename); @@ -353,6 +361,30 @@ public: add(MessageItem(0x100D, 0x42845B19)); add(MessageItem(0x4805, 1)); return true; + // Scene 1302 rings + case 0x004B0888: + add(MessageItem(0x4800, 218)); + add(MessageItem(0x100D, 0x4A845A00)); + add(MessageItem(0x4805, 1)); + return true; + case 0x004B08A0: + add(MessageItem(0x4800, 218 + 32)); + add(MessageItem(0x100D, 0x43807801)); + return true; + case 0x004B08B0: + add(MessageItem(0x4800, 218 + 32 + 32)); + add(MessageItem(0x100D, 0x46C26A01)); + add(MessageItem(0x4805, 1)); + return true; + case 0x004B08C8: + add(MessageItem(0x4800, 218 + 32 + 32 + 32)); + add(MessageItem(0x100D, 0x468C7B11)); + return true; + case 0x004B08D8: + add(MessageItem(0x4800, 218 + 32 + 32 + 32 + 32)); + add(MessageItem(0x100D, 0x42845B19)); + add(MessageItem(0x4805, 4)); + return true; } return false; } @@ -360,7 +392,6 @@ public: }; class NavigationList : public StaticDataList { - }; template diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 5f54df94ba..7f80b8c633 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -27,6 +27,8 @@ static const uint32 hitRectListOffsets[] = { 1, 0x004B4138, // Scene1201 4, 0x004AEBD0, + // Scene1302 + 1, 0x004B0858, // Scene1705 1, 0x004B69D8, // Scene2203 @@ -51,6 +53,8 @@ static const uint32 rectListOffsets[] = { 1, 0x004AEDC8, 1, 0x004AEE18, 1, 0x004AED88, + // Scene1302 + 2, 0x004B0A38, // Scene1401 1, 0x004B6758, // Scene1402 @@ -78,6 +82,12 @@ static const uint32 rectListOffsets[] = { // Scene2242 1, 0x004B3DC8, 1, 0x004B3E18, + // HallOfRecordsScene + 1, 0x004B2BF8, + 1, 0x004B2BB8, + // Scene2247 + 1, 0x004B5588, + 1, 0x004B55C8, 0, 0 }; @@ -123,6 +133,18 @@ static const uint32 messageListOffsets[] = { 2, 0x004AECD0, 2, 0x004AECE0, 2, 0x004AED38, + // Scene1302 + 4, 0x004B08F0, + 3, 0x004B0920, + 1, 0x004B0950, + 2, 0x004B0940, + 1, 0x004B0938, + 2, 0x004B0910, + 1, 0x004B0968, + 2, 0x004B0878, + 4, 0x004B0978, + 1, 0x004B0870, + 1, 0x004B0868, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, @@ -235,10 +257,45 @@ static const uint32 messageListOffsets[] = { 5, 0x004B3D20, 4, 0x004B3CB8, 4, 0x004B3CD8, + // HallOfRecordsScene + 1, 0x004B2900, + 2, 0x004B2910, + 1, 0x004B2B70, + 1, 0x004B2908, + 2, 0x004B2920, + 4, 0x004B2978, + 4, 0x004B2998, + 4, 0x004B29B8, + 4, 0x004B29D8, + 4, 0x004B29F8, + 4, 0x004B2A18, + 4, 0x004B2A38, + 5, 0x004B2A58, + 5, 0x004B2A80, + 5, 0x004B2AA8, + 5, 0x004B2AD0, + 5, 0x004B2AF8, + 5, 0x004B2B20, + 5, 0x004B2B48, + // Scene2247 + 1, 0x004B5428, + 2, 0x004B5438, + 1, 0x004B5530, + 1, 0x004B5430, + 4, 0x004B54A0, + 4, 0x004B54C0, + 5, 0x004B54E0, + 5, 0x004B5508, 0, 0 }; static const uint32 navigationListOffsets[] = { + // Module1300 + 6, 0x004B2718, + 2, 0x004B27A8, + 2, 0x004B27D8, + 2, 0x004B2808, + 2, 0x004B2838, // Module1700 2, 0x004AE8B8, 3, 0x004AE8E8, -- cgit v1.2.3 From b5fc6ed2c0db21d132873fb8d35510bc8c186899 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 13 Sep 2011 15:07:10 +0000 Subject: NEVERHOOD: Add tables for Scene1303 --- devtools/create_neverhood/tables.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 7f80b8c633..bcd758404d 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -55,6 +55,8 @@ static const uint32 rectListOffsets[] = { 1, 0x004AED88, // Scene1302 2, 0x004B0A38, + // Scene1303 + 1, 0x004AF9E8, // Scene1401 1, 0x004B6758, // Scene1402 @@ -145,6 +147,9 @@ static const uint32 messageListOffsets[] = { 4, 0x004B0978, 1, 0x004B0870, 1, 0x004B0868, + // Scene1303 + 1, 0x004AF9A0, + 2, 0x004AF9B8, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, -- cgit v1.2.3 From 4c7930bd342740c2dd89eb1477c6b4b47ba41ca3 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 14 Sep 2011 08:50:33 +0000 Subject: NEVERHOOD: Add tables for Scene1304 --- devtools/create_neverhood/tables.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index bcd758404d..30ae94da27 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -57,6 +57,8 @@ static const uint32 rectListOffsets[] = { 2, 0x004B0A38, // Scene1303 1, 0x004AF9E8, + // Scene1304 + 1, 0x004B91A8, // Scene1401 1, 0x004B6758, // Scene1402 @@ -150,6 +152,12 @@ static const uint32 messageListOffsets[] = { // Scene1303 1, 0x004AF9A0, 2, 0x004AF9B8, + // Scene1304 + 1, 0x004B90E8, + 1, 0x004B90F0, + 2, 0x004B9158, + 2, 0x004B9130, + 2, 0x004B9140, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, -- cgit v1.2.3 From a29c62ce5a801e245a44daa680f5c109f965f750 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 14 Sep 2011 09:18:42 +0000 Subject: NEVERHOOD: Add tables for Scene1305 --- devtools/create_neverhood/tables.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 30ae94da27..207f2f75ed 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -59,6 +59,8 @@ static const uint32 rectListOffsets[] = { 1, 0x004AF9E8, // Scene1304 1, 0x004B91A8, + // Scene1305 + 1, 0x004B6E98, // Scene1401 1, 0x004B6758, // Scene1402 @@ -158,6 +160,9 @@ static const uint32 messageListOffsets[] = { 2, 0x004B9158, 2, 0x004B9130, 2, 0x004B9140, + // Scene1305 + 1, 0x004B6E40, + 1, 0x004B6E48, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, -- cgit v1.2.3 From 089ada55ba0eb1ba877921e9fd175ff16a9b7320 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 14 Sep 2011 13:16:40 +0000 Subject: NEVERHOOD: Add tables for Scene1306 --- devtools/create_neverhood/tables.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 207f2f75ed..54eed45c78 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -61,6 +61,9 @@ static const uint32 rectListOffsets[] = { 1, 0x004B91A8, // Scene1305 1, 0x004B6E98, + // Scene1306 + 1, 0x004AFD28, + 1, 0x004AFD18, // Scene1401 1, 0x004B6758, // Scene1402 @@ -163,6 +166,19 @@ static const uint32 messageListOffsets[] = { // Scene1305 1, 0x004B6E40, 1, 0x004B6E48, + // Scene1306 + 1, 0x004AFAD0, + 2, 0x004AFAF0, + 1, 0x004AFBC8, + 1, 0x004AFC30, + 4, 0x004AFC38, + 2, 0x004AFB00, + 1, 0x004AFBD0, + 4, 0x004AFBD8, + 2, 0x004AFAE0, + 1, 0x004AFAD8, + 2, 0x004AFC58, + 2, 0x004AFC68, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, -- cgit v1.2.3 From 85a216737cd1a8c8946dfd4ac7eafd68caeb6c09 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 15 Sep 2011 11:48:01 +0000 Subject: NEVERHOOD: Add tables for Scene1308 --- devtools/create_neverhood/tables.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 54eed45c78..ef32a226f6 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -64,6 +64,10 @@ static const uint32 rectListOffsets[] = { // Scene1306 1, 0x004AFD28, 1, 0x004AFD18, + // Scene1308 + 1, 0x004B5990, + 1, 0x004B5980, + 1, 0x004B59A0, // Scene1401 1, 0x004B6758, // Scene1402 @@ -179,6 +183,18 @@ static const uint32 messageListOffsets[] = { 1, 0x004AFAD8, 2, 0x004AFC58, 2, 0x004AFC68, + // Scene1308 + 1, 0x004B57C0, + 1, 0x004B57C8, + 1, 0x004B58B0, + 3, 0x004B57D0, + 3, 0x004B57E8, + 2, 0x004B5868, + 4, 0x004B5848, + 3, 0x004B5830, + 2, 0x004B5800, + 2, 0x004B5868, + 2, 0x004B58E0, // Scene1401 1, 0x004B65C8, 1, 0x004B65D0, -- cgit v1.2.3 From 95cfa04e3bdddf15db55ea0859d77cf41e102620 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 21 Sep 2011 07:14:10 +0000 Subject: NEVERHOOD: Add tables for Scene1105 --- devtools/create_neverhood/tables.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index ef32a226f6..de9098314a 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -340,6 +340,13 @@ static const uint32 messageListOffsets[] = { }; static const uint32 navigationListOffsets[] = { + // Module1100 + 2, 0x004B8430, + 2, 0x004B8460, + 4, 0x004B84F0, + 4, 0x004B8490, + 2, 0x004B8580, + 2, 0x004B8550, // Module1300 6, 0x004B2718, 2, 0x004B27A8, -- cgit v1.2.3 From 8a08287e7b92d9db70a2eee9a8b76302e282809b Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 21 Sep 2011 08:44:55 +0000 Subject: NEVERHOOD: Add tables for Scene1109 --- devtools/create_neverhood/tables.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index de9098314a..16c00a7387 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -48,6 +48,9 @@ static const uint32 rectListOffsets[] = { 3, 0x004B43A0, // Scene1004 1, 0x004B7C70, + // Scene1109 + 1, 0x004B63A8, + 1, 0x004B6398, // Scene1201 1, 0x004AEE58, 1, 0x004AEDC8, @@ -134,6 +137,12 @@ static const uint32 messageListOffsets[] = { 2, 0x004B7C08, 1, 0x004B7C18, 2, 0x004B7C20, + // Scene1109 + 1, 0x004B6260, + 2, 0x004B6268, + 4, 0x004B6318, + 2, 0x004B6278, + 1, 0x004B6258, // Scene1201 1, 0x004AEC08, 2, 0x004AEC10, -- cgit v1.2.3 From 2445e6aba8e9724737a069eb4e018f8e60015aac Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 23 Sep 2011 15:19:40 +0000 Subject: NEVERHOOD: Add tables for Module1600 and Scene1608 --- devtools/create_neverhood/tables.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 16c00a7387..01ddd15fc4 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -81,6 +81,9 @@ static const uint32 rectListOffsets[] = { 1, 0x004B2008, // Scene1404 1, 0x004B8D80, + // Scene1608 + 1, 0x004B47D0, + 1, 0x004B4810, // Scene1705 1, 0x004B6B40, 1, 0x004B6B30, @@ -242,6 +245,14 @@ static const uint32 messageListOffsets[] = { 3, 0x004B8CA0, 2, 0x004B8CD0, 2, 0x004B8D18, + // Scene1608 + 1, 0x004B46A8, + 1, 0x004B46B0, + 1, 0x004B47A8, + 3, 0x004B4748, + 2, 0x004B4770, + 2, 0x004B46C8, + 2, 0x004B4760, // Scene1705 1, 0x004B69E8, 2, 0x004B6A08, @@ -362,6 +373,14 @@ static const uint32 navigationListOffsets[] = { 2, 0x004B27D8, 2, 0x004B2808, 2, 0x004B2838, + // Module1600 + 4, 0x004B39D0, + 2, 0x004B3A30, + 2, 0x004B3A60, + 6, 0x004B3A90, + 2, 0x004B3B20, + 2, 0x004B3B50, + 2, 0x004B3B80, // Module1700 2, 0x004AE8B8, 3, 0x004AE8E8, -- cgit v1.2.3 From 729e3ae26ef9c3c039861ef5212ca3588a679ca5 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 29 Sep 2011 14:44:31 +0000 Subject: NEVERHOOD: Add tables for Scene1901 --- devtools/create_neverhood/tables.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 01ddd15fc4..9328bfd939 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -87,6 +87,8 @@ static const uint32 rectListOffsets[] = { // Scene1705 1, 0x004B6B40, 1, 0x004B6B30, + // Scene1901 + 1, 0x004B34C8, // Scene2001 1, 0x004B3680, 1, 0x004B3670, @@ -260,6 +262,10 @@ static const uint32 messageListOffsets[] = { 2, 0x004B6A18, 1, 0x004B69F0, 2, 0x004B6AC0, + // Scene1901 + 1, 0x004B3408, + 1, 0x004B3410, + 1, 0x004B3400, // Scene2001 1, 0x004B3538, 2, 0x004B3540, -- cgit v1.2.3 From ced4efc66f68c284a290a88cbeac337021526b5e Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 29 Sep 2011 18:30:05 +0000 Subject: NEVERHOOD: Add tables for Scene2101 --- devtools/create_neverhood/tables.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 9328bfd939..f0308bd709 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -92,6 +92,9 @@ static const uint32 rectListOffsets[] = { // Scene2001 1, 0x004B3680, 1, 0x004B3670, + // Scene2101 + 1, 0x004B9008, + 1, 0x004B8FF8, // Scene2203 1, 0x004B8420, // Scene2206 @@ -272,6 +275,18 @@ static const uint32 messageListOffsets[] = { 4, 0x004B35F0, 2, 0x004B3550, 1, 0x004B3530, + // Scene2101 + 1, 0x004B8E48, + 3, 0x004B8E50, + 4, 0x004B8F58, + 2, 0x004B8EB0, + 2, 0x004B8EA0, + 1, 0x004B8F50, + 1, 0x004B8F48, + 4, 0x004B8E80, + 1, 0x004B8EC8, + 2, 0x004B8F78, + 3, 0x004B8F00, // Scene2201 1, 0x004B8118, 1, 0x004B8130, -- cgit v1.2.3 From ee1bf85456c380c4fd01fb749e6f009a5c0c2147 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 12 Oct 2011 13:14:05 +0000 Subject: NEVERHOOD: Add new SceneInfo2700 structure and some tables using it for Module2700 --- devtools/create_neverhood/create_neverhood.cpp | 51 +++++++++++++++++++++ devtools/create_neverhood/tables.h | 61 ++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 2d11931f5a..33b5a3e994 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -277,6 +277,54 @@ struct SceneInfo140Item { }; +struct SceneInfo2700Item { + uint32 id; + uint32 bgFilename; + uint32 class437Filename; + uint32 dataResourceFilename; + uint32 pointListName; + uint32 rectListName; + uint32 exPaletteFilename2; + uint32 exPaletteFilename1; + uint32 mouseCursorFilename; + int16 which1; + int16 which2; + uint32 field24; + + void load(uint32 offset) { + byte *item = getData(offset); + id = offset; + // Only save the hashes instead of the full names + bgFilename = calcHash(getStringP(READ_LE_UINT32(item + 0))); + class437Filename = calcHash(getStringP(READ_LE_UINT32(item + 4))); + dataResourceFilename = calcHash(getStringP(READ_LE_UINT32(item + 8))); + pointListName = calcHash(getStringP(READ_LE_UINT32(item + 12))); + rectListName = calcHash(getStringP(READ_LE_UINT32(item + 16))); + exPaletteFilename2 = calcHash(getStringP(READ_LE_UINT32(item + 20))); + exPaletteFilename1 = calcHash(getStringP(READ_LE_UINT32(item + 24))); + mouseCursorFilename = calcHash(getStringP(READ_LE_UINT32(item + 28))); + which1 = READ_LE_UINT16(item + 32); + which2 = READ_LE_UINT16(item + 34); + field24 = READ_LE_UINT16(item + 36); + } + + void save(FILE *fd) { + writeUint32LE(fd, id); + writeUint32LE(fd, bgFilename); + writeUint32LE(fd, class437Filename); + writeUint32LE(fd, dataResourceFilename); + writeUint32LE(fd, pointListName); + writeUint32LE(fd, rectListName); + writeUint32LE(fd, exPaletteFilename2); + writeUint32LE(fd, exPaletteFilename1); + writeUint32LE(fd, mouseCursorFilename); + writeUint16LE(fd, which1); + writeUint16LE(fd, which2); + writeUint32LE(fd, field24); + } + +}; + template class StaticDataList { public: @@ -456,6 +504,7 @@ StaticDataListVector rectLists; StaticDataListVector messageLists; StaticDataListVector navigationLists; StaticDataVector sceneInfo140Items; +StaticDataVector sceneInfo2700Items; void addMessageList(uint32 messageListCount, uint32 messageListOffset) { MessageList *messageList = new MessageList(); @@ -474,6 +523,7 @@ int main(int argc, char *argv[]) { messageLists.loadListVector(messageListOffsets); navigationLists.loadListVector(navigationListOffsets); sceneInfo140Items.loadVector(sceneInfo140Offsets); + sceneInfo2700Items.loadVector(sceneInfo2700Offsets); datFile = fopen("neverhood.dat", "wb"); @@ -485,6 +535,7 @@ int main(int argc, char *argv[]) { hitRectLists.saveListVector(datFile); navigationLists.saveListVector(datFile); sceneInfo140Items.saveVector(datFile); + sceneInfo2700Items.saveVector(datFile); fclose(datFile); diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index f0308bd709..51954f82ad 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -420,6 +420,14 @@ static const uint32 navigationListOffsets[] = { // Module2000 3, 0x004B7B48, 3, 0x004B7B00, + // Module2600 + 2, 0x004B8608, + 4, 0x004B8638, + 2, 0x004B8698, + 2, 0x004B86C8, + 4, 0x004B8758, + 4, 0x004B86F8, + 2, 0x004B87B8, // Module3000 2, 0x004B7C80, 2, 0x004B7CE0, @@ -478,3 +486,56 @@ static const uint32 sceneInfo140Offsets[] = { 0 }; +static const uint32 sceneInfo2700Offsets[] = { + // + 0x004B1710, + 0x004B1738, + 0x004B1760, + 0x004B1788, + 0x004B17B0, + 0x004B17D8, + 0x004B1800, + 0x004B1828, + 0x004B1850, + 0x004B1878, + 0x004B18A0, + 0x004B18C8, + 0x004B18F0, + 0x004B1918, + // + 0x004B19E0, + 0x004B1A08, + 0x004B1A30, + 0x004B1A58, + 0x004B1A80, + 0x004B1AA8, + 0x004B1AD0, + 0x004B1AF8, + 0x004B1B20, + 0x004B1B48, + 0x004B1B70, + 0x004B1B98, + 0x004B1BC0, + 0x004B1BE8, + 0x004B1C10, + 0x004B1C38, + 0x004B1C60, + 0x004B1C88, + 0x004B1CB0, + 0x004B1CD8, + 0x004B1D00, + 0x004B1D28, + 0x004B1D50, + 0x004B1D78, + // + 0x004B1DB0, + // + 0x004B1DE8, + 0x004B1E10, + 0x004B1E38, + 0x004B1E60, + // + 0x004B1950, + // + 0 +}; -- cgit v1.2.3 From 31b3dec8c94975333a868cc527107a32b091a5ae Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 14 Oct 2011 12:25:18 +0000 Subject: NEVERHOOD: More tables for Module2700 --- devtools/create_neverhood/create_neverhood.cpp | 3 --- devtools/create_neverhood/tables.h | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index 33b5a3e994..dc77d71a39 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -289,7 +289,6 @@ struct SceneInfo2700Item { uint32 mouseCursorFilename; int16 which1; int16 which2; - uint32 field24; void load(uint32 offset) { byte *item = getData(offset); @@ -305,7 +304,6 @@ struct SceneInfo2700Item { mouseCursorFilename = calcHash(getStringP(READ_LE_UINT32(item + 28))); which1 = READ_LE_UINT16(item + 32); which2 = READ_LE_UINT16(item + 34); - field24 = READ_LE_UINT16(item + 36); } void save(FILE *fd) { @@ -320,7 +318,6 @@ struct SceneInfo2700Item { writeUint32LE(fd, mouseCursorFilename); writeUint16LE(fd, which1); writeUint16LE(fd, which2); - writeUint32LE(fd, field24); } }; diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 51954f82ad..3a5d40522a 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -537,5 +537,7 @@ static const uint32 sceneInfo2700Offsets[] = { // 0x004B1950, // + 0x004B2240, + // 0 }; -- cgit v1.2.3 From 6315ccb5528a9a4d810779055df9184f4b2960c1 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Mon, 17 Oct 2011 15:32:36 +0000 Subject: NEVERHOOD: Add tables for Scene2702 --- devtools/create_neverhood/tables.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 3a5d40522a..2534bcecee 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -539,5 +539,11 @@ static const uint32 sceneInfo2700Offsets[] = { // 0x004B2240, // + 0x004B5F68, + 0x004B5F8C, + 0x004B5FB0, + 0x004B5FD8, + 0x004B5FFC, + 0x004B6020, 0 }; -- cgit v1.2.3 From 8613ff3a9dd0ad36c9d695c48ceb16a23e92e346 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 11 Jan 2012 17:44:32 +0000 Subject: NEVERHOOD: Add tables for Scene2801 --- devtools/create_neverhood/tables.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 2534bcecee..514912c41a 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -112,6 +112,10 @@ static const uint32 rectListOffsets[] = { // Scene2247 1, 0x004B5588, 1, 0x004B55C8, + // Scene2801 + 1, 0x004B6CE0, + 1, 0x004B6CD0, + 1, 0x004B6CF0, 0, 0 }; @@ -377,6 +381,12 @@ static const uint32 messageListOffsets[] = { 4, 0x004B54C0, 5, 0x004B54E0, 5, 0x004B5508, + // Scene2801 + 1, 0x004B6BB8, + 1, 0x004B6BC0, + 1, 0x004B6C10, + 1, 0x004B6BB0, + 2, 0x004B6C40, 0, 0 }; -- cgit v1.2.3 From 0abba004fe4a6b172269f09cfe55d7d683736867 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 16 Aug 2012 17:39:45 +0000 Subject: NEVERHOOD: Add tables for Scene2805 --- devtools/create_neverhood/tables.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 514912c41a..70402d48d2 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -116,6 +116,9 @@ static const uint32 rectListOffsets[] = { 1, 0x004B6CE0, 1, 0x004B6CD0, 1, 0x004B6CF0, + // Scene2805 + 1, 0x004AE318, + 1, 0x004AE308, 0, 0 }; @@ -387,6 +390,12 @@ static const uint32 messageListOffsets[] = { 1, 0x004B6C10, 1, 0x004B6BB0, 2, 0x004B6C40, + // Scene2805 + 1, 0x004AE1C8, + 2, 0x004AE1D0, + 4, 0x004AE288, + 2, 0x004AE1E0, + 1, 0x004AE1C0, 0, 0 }; -- cgit v1.2.3 From 3cee21ac9391f98f1ed372ad0a99f9e81974ef2b Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 29 Aug 2012 17:53:58 +0000 Subject: NEVERHOOD: Add tables for Scene2803b (forgot them before) and Scene2806 --- devtools/create_neverhood/tables.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 70402d48d2..fe6644ef07 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -390,12 +390,33 @@ static const uint32 messageListOffsets[] = { 1, 0x004B6C10, 1, 0x004B6BB0, 2, 0x004B6C40, + // Scene2803b + 1, 0x004B60D8, + 1, 0x004B6100, + 1, 0x004B60F8, + 1, 0x004B6100, + 3, 0x004B6138, + 3, 0x004B60E0, + 3, 0x004B6180, + 1, 0x004B6198, + 6, 0x004B6108, + 3, 0x004B6150, + 3, 0x004B6168, + 1, 0x004B61A0, + 5, 0x004B61A8, // Scene2805 1, 0x004AE1C8, 2, 0x004AE1D0, 4, 0x004AE288, 2, 0x004AE1E0, 1, 0x004AE1C0, + // Scene2806 + 1, 0x004AF098, + 1, 0x004AF098, + 3, 0x004AF0C8, + 5, 0x004AF0A0, + 1, 0x004AF090, + 2, 0x004AF0E0, 0, 0 }; -- cgit v1.2.3 From 5688047fe353276806bc491e324dbb3a9c9df22f Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 4 Sep 2012 16:24:20 +0000 Subject: NEVERHOOD: Add tables for Scene2809 --- devtools/create_neverhood/tables.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index fe6644ef07..1c9c76a68d 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -417,6 +417,12 @@ static const uint32 messageListOffsets[] = { 5, 0x004AF0A0, 1, 0x004AF090, 2, 0x004AF0E0, + // Scene2809 + 1, 0x004B5B90, + 3, 0x004B5BD0, + 5, 0x004B5BA8, + 1, 0x004B5B88, + 2, 0x004B5B98, 0, 0 }; -- cgit v1.2.3 From 745e46279ec4b3ccacd996d73a9df9dc19271e75 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 6 Sep 2012 12:08:57 +0000 Subject: NEVERHOOD: Add tables for Scene2810 --- devtools/create_neverhood/tables.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 1c9c76a68d..a458dedb00 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -119,6 +119,9 @@ static const uint32 rectListOffsets[] = { // Scene2805 1, 0x004AE318, 1, 0x004AE308, + // Scene2810 + 1, 0x004AE810, + 1, 0x004AE800, 0, 0 }; @@ -423,6 +426,30 @@ static const uint32 messageListOffsets[] = { 5, 0x004B5BA8, 1, 0x004B5B88, 2, 0x004B5B98, + 1, 0x004AE438, + 3, 0x004AE440, + 3, 0x004AE738, + 1, 0x004AE6D8, + 2, 0x004AE6E8, + 1, 0x004AE6E0, + 2, 0x004AE428, + 2, 0x004AE418, + 1, 0x004AE410, + 4, 0x004AE458, + 5, 0x004AE4A8, + 5, 0x004AE4D0, + 5, 0x004AE4F8, + 5, 0x004AE520, + 5, 0x004AE548, + 5, 0x004AE570, + 5, 0x004AE598, + 5, 0x004AE5C0, + 5, 0x004AE5E8, + 5, 0x004AE610, + 5, 0x004AE638, + 5, 0x004AE660, + 5, 0x004AE688, + 2, 0x004AE750, 0, 0 }; -- cgit v1.2.3 From c27e930861cea513f3d966e610c336dbdb34ea6d Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 7 Sep 2012 17:34:15 +0000 Subject: NEVERHOOD: Add tables for Scene2812 --- devtools/create_neverhood/tables.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index a458dedb00..f8a4497e73 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -122,6 +122,9 @@ static const uint32 rectListOffsets[] = { // Scene2810 1, 0x004AE810, 1, 0x004AE800, + // Scene2812 + 1, 0x004AF700, + 1, 0x004AF710, 0, 0 }; @@ -450,6 +453,13 @@ static const uint32 messageListOffsets[] = { 5, 0x004AE660, 5, 0x004AE688, 2, 0x004AE750, + // Scene2812 + 1, 0x004AF560, + 1, 0x004AF588, + 1, 0x004AF5F0, + 4, 0x004AF568, + 2, 0x004AF658, + 2, 0x004AF668, 0, 0 }; -- cgit v1.2.3 From de622586f6926eb2376b59494fdbf504b5858b95 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Mon, 10 Sep 2012 18:15:49 +0000 Subject: NEVERHOOD: Add tables for Scene2803 --- devtools/create_neverhood/tables.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index f8a4497e73..663845f987 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -410,6 +410,19 @@ static const uint32 messageListOffsets[] = { 3, 0x004B6168, 1, 0x004B61A0, 5, 0x004B61A8, + // Scene2803 + 1, 0x004B79F0, + 5, 0x004B79C8, + 1, 0x004B7A00, + 2, 0x004B7A78, + 1, 0x004B79F8, + 1, 0x004B79C0, + 1, 0x004B7A50, + 2, 0x004B7A58, + 5, 0x004B7A08, + 4, 0x004B7A30, + 2, 0x004B7A68, + 7, 0x004B7A88, // Scene2805 1, 0x004AE1C8, 2, 0x004AE1D0, -- cgit v1.2.3 From b2175adf61a2524338ad8c78a747a326d1519266 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 11 Sep 2012 12:52:29 +0000 Subject: NEVERHOOD: Add tables for Scene2501 --- devtools/create_neverhood/tables.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 663845f987..044880b9bc 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -112,6 +112,8 @@ static const uint32 rectListOffsets[] = { // Scene2247 1, 0x004B5588, 1, 0x004B55C8, + // Scene2501 + 1, 0x004B2608, // Scene2801 1, 0x004B6CE0, 1, 0x004B6CD0, @@ -390,6 +392,9 @@ static const uint32 messageListOffsets[] = { 4, 0x004B54C0, 5, 0x004B54E0, 5, 0x004B5508, + // Scene 2501 + 7, 0x004B2538, + 6, 0x004B2570, // Scene2801 1, 0x004B6BB8, 1, 0x004B6BC0, @@ -641,5 +646,9 @@ static const uint32 sceneInfo2700Offsets[] = { 0x004B5FD8, 0x004B5FFC, 0x004B6020, + // Scene2501 + 0x004B2628, + 0x004B264C, + 0x004B2670, 0 }; -- cgit v1.2.3 From 31270bc5e66de42312813e58f4641c0958f1f455 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 13 Sep 2012 07:25:14 +0000 Subject: NEVERHOOD: Add car track tables for Module2500 --- devtools/create_neverhood/tables.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 044880b9bc..b4f84c2830 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -650,5 +650,18 @@ static const uint32 sceneInfo2700Offsets[] = { 0x004B2628, 0x004B264C, 0x004B2670, + // Scene2502 + 0x004B01B8, + // Scene2503 + 0x004B01E0, + 0x004B0208, + // Scene2505 + 0x004B0230, + // Scene2506 + 0x004B0268, + // Scene2507 + 0x004B02A0, + // Scene2508 + 0x004B02C8, 0 }; -- cgit v1.2.3 From d4e322bc78d30941f5f3ab31c2460412fe0d7fb5 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 13 Sep 2012 17:51:16 +0000 Subject: NEVERHOOD: Add tables for Scene2401 --- devtools/create_neverhood/tables.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index b4f84c2830..c2f0d6a3fc 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -112,6 +112,8 @@ static const uint32 rectListOffsets[] = { // Scene2247 1, 0x004B5588, 1, 0x004B55C8, + // Scene2401 + 1, 0x004B3140, // Scene2501 1, 0x004B2608, // Scene2801 @@ -392,7 +394,17 @@ static const uint32 messageListOffsets[] = { 4, 0x004B54C0, 5, 0x004B54E0, 5, 0x004B5508, - // Scene 2501 + // Scene2401 + 1, 0x004B2F70, + 1, 0x004B2F80, + 1, 0x004B2F78, + 4, 0x004B3090, + 2, 0x004B30B0, + 6, 0x004B3020, + 2, 0x004B3050, + 4, 0x004B2FA8, + 4, 0x004B2FC8, + // Scene2501 7, 0x004B2538, 6, 0x004B2570, // Scene2801 -- cgit v1.2.3 From 49f39b0da2bee93e8425c0686f7cc26df443a35f Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 14 Sep 2012 10:34:00 +0000 Subject: NEVERHOOD: Add tables for Scene2402 --- devtools/create_neverhood/tables.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index c2f0d6a3fc..5be95ee600 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -114,6 +114,8 @@ static const uint32 rectListOffsets[] = { 1, 0x004B55C8, // Scene2401 1, 0x004B3140, + // Scene2402 + 1, 0x004AF900, // Scene2501 1, 0x004B2608, // Scene2801 @@ -404,6 +406,14 @@ static const uint32 messageListOffsets[] = { 2, 0x004B3050, 4, 0x004B2FA8, 4, 0x004B2FC8, + // Scene2402 + 1, 0x004AF7C8, + 2, 0x004AF7D8, + 1, 0x004AF888, + 1, 0x004AF7D0, + 3, 0x004AF800, + 1, 0x004AF818, + 2, 0x004AF890, // Scene2501 7, 0x004B2538, 6, 0x004B2570, -- cgit v1.2.3 From 23864562238cacfc4bdd4d6ddc151e900c89c51d Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 14 Sep 2012 11:46:43 +0000 Subject: NEVERHOOD: Add tables for Scene2406 --- devtools/create_neverhood/tables.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 5be95ee600..2b51b6ecdc 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -116,7 +116,10 @@ static const uint32 rectListOffsets[] = { 1, 0x004B3140, // Scene2402 1, 0x004AF900, - // Scene2501 + // Scene2406 + 1, 0x004B78C8, + 1, 0x004B78D8, + // Scene2501 1, 0x004B2608, // Scene2801 1, 0x004B6CE0, @@ -414,6 +417,16 @@ static const uint32 messageListOffsets[] = { 3, 0x004AF800, 1, 0x004AF818, 2, 0x004AF890, + // Scene2406 + 1, 0x004B76C8, + 3, 0x004B76D8, + 1, 0x004B77C0, + 1, 0x004B7810, + 1, 0x004B76D0, + 2, 0x004B77C8, + 2, 0x004B77D8, + 2, 0x004B7758, + 4, 0x004B7738, // Scene2501 7, 0x004B2538, 6, 0x004B2570, -- cgit v1.2.3 From a94c1fcb8f8b1aac20a20c17a6b4a3bfff931ae6 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 14 Sep 2012 14:17:24 +0000 Subject: NEVERHOOD: Add tables for Scene2403 --- devtools/create_neverhood/tables.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 2b51b6ecdc..eb210f8daf 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -116,6 +116,9 @@ static const uint32 rectListOffsets[] = { 1, 0x004B3140, // Scene2402 1, 0x004AF900, + // Scene2403 + 1, 0x004B5E18, + 1, 0x004B5E28, // Scene2406 1, 0x004B78C8, 1, 0x004B78D8, @@ -417,6 +420,11 @@ static const uint32 messageListOffsets[] = { 3, 0x004AF800, 1, 0x004AF818, 2, 0x004AF890, + // Scene2403 + 1, 0x004B5C98, + 1, 0x004B5D70, + 4, 0x004B5CA0, + 2, 0x004B5D98, // Scene2406 1, 0x004B76C8, 3, 0x004B76D8, -- cgit v1.2.3 From 8d5a4f736e1160463ee7bd85ed67e9b9f742509e Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Wed, 24 Oct 2012 13:31:22 +0000 Subject: NEVERHOOD: Add tables for new scenes in Module2700 --- devtools/create_neverhood/create_neverhood.cpp | 5 ----- devtools/create_neverhood/tables.h | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'devtools') diff --git a/devtools/create_neverhood/create_neverhood.cpp b/devtools/create_neverhood/create_neverhood.cpp index dc77d71a39..323066d8b1 100644 --- a/devtools/create_neverhood/create_neverhood.cpp +++ b/devtools/create_neverhood/create_neverhood.cpp @@ -87,7 +87,6 @@ struct HitRect { uint16 messageNum; void load(uint32 offset) { - printf("Loading HitRect @ %08X...\n", offset); byte *item = getData(offset); x1 = READ_LE_UINT16(item + 0); y1 = READ_LE_UINT16(item + 2); @@ -117,7 +116,6 @@ struct MessageItem { MessageItem(uint16 msgNum, uint32 msgParam) : messageNum(msgNum), messageParam(msgParam) {} void load(uint32 offset) { - printf("Loading MessageItem @ %08X...\n", offset); byte *item = getData(offset); messageNum = READ_LE_UINT16(item + 0); messageParam = READ_LE_UINT32(item + 4); @@ -140,7 +138,6 @@ struct SubRectItem { uint32 messageListOffset; void load(uint32 offset) { - printf("Loading SubRectItem @ %08X...\n", offset); byte *item = getData(offset); x1 = READ_LE_UINT16(item + 0); y1 = READ_LE_UINT16(item + 2); @@ -173,7 +170,6 @@ struct RectItem { std::vector subRectItems; void load(uint32 offset) { - printf("Loading RectItem @ %08X...\n", offset); byte *item = getData(offset); uint32 subItemOffset; x1 = READ_LE_UINT16(item + 0); @@ -217,7 +213,6 @@ struct NavigationItem { uint32 mouseCursorFileHash; void load(uint32 offset) { - printf("Loading NavigationItem @ %08X...\n", offset); byte *item = getData(offset); fileHash = READ_LE_UINT32(item + 0); leftSmackerFileHash = READ_LE_UINT32(item + 4); diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index eb210f8daf..1218526463 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -124,6 +124,8 @@ static const uint32 rectListOffsets[] = { 1, 0x004B78D8, // Scene2501 1, 0x004B2608, + // Scene2732 + 1, 0x004AE360, // Scene2801 1, 0x004B6CE0, 1, 0x004B6CD0, @@ -438,6 +440,8 @@ static const uint32 messageListOffsets[] = { // Scene2501 7, 0x004B2538, 6, 0x004B2570, + // Scene2732 + 1, 0x004AE328, // Scene2801 1, 0x004B6BB8, 1, 0x004B6BC0, -- cgit v1.2.3 From 9ea07e0925d679e8f3e33aa34c0403c3f58d5f1c Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Thu, 17 Jan 2013 15:16:30 +0000 Subject: NEVERHOOD: Add tables for Scene2706 --- devtools/create_neverhood/tables.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'devtools') diff --git a/devtools/create_neverhood/tables.h b/devtools/create_neverhood/tables.h index 1218526463..ea39aa807d 100644 --- a/devtools/create_neverhood/tables.h +++ b/devtools/create_neverhood/tables.h @@ -710,5 +710,9 @@ static const uint32 sceneInfo2700Offsets[] = { 0x004B02A0, // Scene2508 0x004B02C8, + // Scene2706 + 0x004B22A0, + 0x004B22C4, + 0x004B22E8, 0 }; -- cgit v1.2.3