From 688ebb1ec4493353f3eb2b98cdcd2521d4f35694 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 13 May 2026 01:21:13 +0300 Subject: [PATCH] DEVTOOLS: Update game data for Nancy10-15 and regen nancy.dat --- devtools/create_nancy/create_nancy.cpp | 50 ++++++++++++++++++++++++- devtools/create_nancy/nancy10_data.h | 2 +- devtools/create_nancy/nancy11_data.h | 2 +- devtools/create_nancy/nancy12_data.h | 45 ++++++++++++++++++++++ devtools/create_nancy/nancy13_data.h | 38 +++++++++++++++++++ devtools/create_nancy/nancy14_data.h | 38 +++++++++++++++++++ devtools/create_nancy/nancy15_data.h | 38 +++++++++++++++++++ dists/engine-data/nancy.dat | Bin 254078 -> 254950 bytes 8 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 devtools/create_nancy/nancy12_data.h create mode 100644 devtools/create_nancy/nancy13_data.h create mode 100644 devtools/create_nancy/nancy14_data.h create mode 100644 devtools/create_nancy/nancy15_data.h diff --git a/devtools/create_nancy/create_nancy.cpp b/devtools/create_nancy/create_nancy.cpp index b6fad3e20b1..e6a2776bbb2 100644 --- a/devtools/create_nancy/create_nancy.cpp +++ b/devtools/create_nancy/create_nancy.cpp @@ -33,11 +33,15 @@ #include "nancy9_data.h" #include "nancy10_data.h" #include "nancy11_data.h" +#include "nancy12_data.h" +#include "nancy13_data.h" +#include "nancy14_data.h" +#include "nancy15_data.h" #define NANCYDAT_MAJOR_VERSION 1 #define NANCYDAT_MINOR_VERSION 1 -#define NANCYDAT_NUM_GAMES 12 +#define NANCYDAT_NUM_GAMES 16 /** * Format specifications for nancy.dat: @@ -77,6 +81,10 @@ * Nancy Drew: Danger on Deception Island * Nancy Drew: The Secret of Shadow Ranch * Nancy Drew: Curse of Blackmoor Manor + * Nancy Drew: Secret of the Old Clock + * Nancy Drew: Last Train to Blue Moon Canyon + * Nancy Drew: Danger by Design + * Nancy Drew: The Creature of Kapu Cave */ // Add the offset to the next tagged section before the section itself for easier navigation @@ -346,6 +354,46 @@ int main(int argc, char *argv[]) { WRAPWITHOFFSET(writeRingingTexts(output, _nancy8TelephoneRinging)) // same as 8 WRAPWITHOFFSET(writeEventFlagNames(output, _nancy11EventFlagNames)) + // Nancy Drew: Secret of the Old Clock + gameOffsets.push_back(output.pos()); + WRAPWITHOFFSET(writeConstants(output, _nancy12Constants)) + WRAPWITHOFFSET(writeSoundChannels(output, _nancy3andUpSoundChannelInfo)) // same as 3 + WRAPWITHOFFSET(writeLanguages(output, _nancy8LanguagesOrder)) // same as 8 + WRAPWITHOFFSET(writeConditionalDialogue(output, _nancy12ConditionalDialogue)) + WRAPWITHOFFSET(writeGoodbyes(output, _nancy12Goodbyes)) + WRAPWITHOFFSET(writeRingingTexts(output, _nancy8TelephoneRinging)) // same as 8 + WRAPWITHOFFSET(writeEventFlagNames(output, _nancy12EventFlagNames)) + + // Nancy Drew: Last Train to Blue Moon Canyon + gameOffsets.push_back(output.pos()); + WRAPWITHOFFSET(writeConstants(output, _nancy13Constants)) + WRAPWITHOFFSET(writeSoundChannels(output, _nancy3andUpSoundChannelInfo)) // same as 3 + WRAPWITHOFFSET(writeLanguages(output, _nancy8LanguagesOrder)) // same as 8 + WRAPWITHOFFSET(writeConditionalDialogue(output, _nancy12ConditionalDialogue)) // same as 12 + WRAPWITHOFFSET(writeGoodbyes(output, _nancy12Goodbyes)) // same as 12 + WRAPWITHOFFSET(writeRingingTexts(output, _nancy8TelephoneRinging)) // same as 8 + WRAPWITHOFFSET(writeEventFlagNames(output, _nancy12EventFlagNames)) // same as 12 + + // Nancy Drew: Danger by Design + gameOffsets.push_back(output.pos()); + WRAPWITHOFFSET(writeConstants(output, _nancy14Constants)) + WRAPWITHOFFSET(writeSoundChannels(output, _nancy3andUpSoundChannelInfo)) // same as 3 + WRAPWITHOFFSET(writeLanguages(output, _nancy8LanguagesOrder)) // same as 8 + WRAPWITHOFFSET(writeConditionalDialogue(output, _nancy12ConditionalDialogue)) // same as 12 + WRAPWITHOFFSET(writeGoodbyes(output, _nancy12Goodbyes)) // same as 12 + WRAPWITHOFFSET(writeRingingTexts(output, _nancy8TelephoneRinging)) // same as 8 + WRAPWITHOFFSET(writeEventFlagNames(output, _nancy12EventFlagNames)) // same as 12 + + // Nancy Drew: The Creature of Kapu Cave + gameOffsets.push_back(output.pos()); + WRAPWITHOFFSET(writeConstants(output, _nancy15Constants)) + WRAPWITHOFFSET(writeSoundChannels(output, _nancy3andUpSoundChannelInfo)) // same as 3 + WRAPWITHOFFSET(writeLanguages(output, _nancy8LanguagesOrder)) // same as 8 + WRAPWITHOFFSET(writeConditionalDialogue(output, _nancy12ConditionalDialogue)) // same as 12 + WRAPWITHOFFSET(writeGoodbyes(output, _nancy12Goodbyes)) // same as 12 + WRAPWITHOFFSET(writeRingingTexts(output, _nancy8TelephoneRinging)) // same as 8 + WRAPWITHOFFSET(writeEventFlagNames(output, _nancy12EventFlagNames)) // same as 12 + // Write the offsets for each game in the header output.seek(offsetsOffset); for (uint i = 0; i < gameOffsets.size(); ++i) { diff --git a/devtools/create_nancy/nancy10_data.h b/devtools/create_nancy/nancy10_data.h index 2b5148302a5..c5bc8d91995 100644 --- a/devtools/create_nancy/nancy10_data.h +++ b/devtools/create_nancy/nancy10_data.h @@ -30,7 +30,7 @@ const GameConstants _nancy10Constants ={ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, - 20, // numCursorTypes + 37, // numCursorTypes 4000, // logoEndAfter 32 // wonGameFlagID }; diff --git a/devtools/create_nancy/nancy11_data.h b/devtools/create_nancy/nancy11_data.h index 8a9c416ffeb..a656609c0cf 100644 --- a/devtools/create_nancy/nancy11_data.h +++ b/devtools/create_nancy/nancy11_data.h @@ -30,7 +30,7 @@ const GameConstants _nancy11Constants ={ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, - 20, // numCursorTypes + 37, // numCursorTypes 4000, // logoEndAfter 32 // wonGameFlagID }; diff --git a/devtools/create_nancy/nancy12_data.h b/devtools/create_nancy/nancy12_data.h new file mode 100644 index 00000000000..efab0a8ad95 --- /dev/null +++ b/devtools/create_nancy/nancy12_data.h @@ -0,0 +1,45 @@ +/* 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 3 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, see . + * + */ + +#ifndef NANCY12DATA_H +#define NANCY12DATA_H + +#include "types.h" + +const GameConstants _nancy12Constants ={ + 70, // numItems + 1251, // numEventFlags - TODO: verify this + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, + 37, // numCursorTypes + 4000, // logoEndAfter + 32 // wonGameFlagID +}; + +// Conditional dialog checks and goodbyes have been moved to game data files +const Common::Array> _nancy12ConditionalDialogue = {}; +const Common::Array _nancy12Goodbyes = {}; + +// Event flag names are no longer stored in the executable +const Common::Array _nancy12EventFlagNames = {}; + +#endif // NANCY12DATA_H diff --git a/devtools/create_nancy/nancy13_data.h b/devtools/create_nancy/nancy13_data.h new file mode 100644 index 00000000000..aa7077ec490 --- /dev/null +++ b/devtools/create_nancy/nancy13_data.h @@ -0,0 +1,38 @@ +/* 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 3 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, see . + * + */ + +#ifndef NANCY13DATA_H +#define NANCY13DATA_H + +#include "types.h" + +const GameConstants _nancy13Constants ={ + 50, // numItems + 1251, // numEventFlags - TODO: verify this + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, + 37, // numCursorTypes + 4000, // logoEndAfter + 32 // wonGameFlagID +}; + +#endif // NANCY13DATA_H diff --git a/devtools/create_nancy/nancy14_data.h b/devtools/create_nancy/nancy14_data.h new file mode 100644 index 00000000000..ae7a1301cc3 --- /dev/null +++ b/devtools/create_nancy/nancy14_data.h @@ -0,0 +1,38 @@ +/* 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 3 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, see . + * + */ + +#ifndef NANCY14DATA_H +#define NANCY14DATA_H + +#include "types.h" + +const GameConstants _nancy14Constants ={ + 50, // numItems + 1251, // numEventFlags - TODO: verify this + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, + 44, // numCursorTypes + 4000, // logoEndAfter + 32 // wonGameFlagID +}; + +#endif // NANCY14DATA_H diff --git a/devtools/create_nancy/nancy15_data.h b/devtools/create_nancy/nancy15_data.h new file mode 100644 index 00000000000..3280ed52a60 --- /dev/null +++ b/devtools/create_nancy/nancy15_data.h @@ -0,0 +1,38 @@ +/* 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 3 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, see . + * + */ + +#ifndef NANCY15DATA_H +#define NANCY15DATA_H + +#include "types.h" + +const GameConstants _nancy15Constants ={ + 50, // numItems + 1251, // numEventFlags - TODO: verify this + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // genericEventFlags + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, + 44, // numCursorTypes + 4000, // logoEndAfter + 32 // wonGameFlagID +}; + +#endif // NANCY15DATA_H diff --git a/dists/engine-data/nancy.dat b/dists/engine-data/nancy.dat index c7a0d53098e8b8a8ec0081915dcebb58610b23e2..aad04f0d99b9014d72934e722baddab78b16d1c7 100644 GIT binary patch delta 1627 zcmZvcZA?>V6vxkbo`Sutg*qU<0;QB1+F7MYjhl4xB05n->q}I&?n8CRGUMpnmMK_` zEI|b(*W`i0P!=;|miUsZJY<=R(^WC<1B-%&Y*C6KF>?f#Wt+O_o_jBdAJ#ATfA8t} zo&P=Ox#!vC#Nq3SZnE}c9ZWw{=LmP^|}Ch%L-N@z}@rR^~SinZh*~7 ziFCk@y~+)DJ;wEV0IHNt^L8K(%RhKhaJO>D)0luaHZGkifl zq2~-S!-06SU#(!7?$;|20L)j6{^wN6-wKdf2yj%f7N*X`pzPTiG6gFD&WM1eLT=xx z;CiLJB9&U!%K-I3fSx@7WzFvtE8hn{%Ow$6&X2nAEBOOC15YWkY%tbtgcx66}oGuv9L*a!o3Y0ywS$e5g#j>LU2Dyd>(z4!JVw z#Mw$ybgvbUC{z1)&B6h>W^^@rnrCQIy8HjSO0BJIpXnDZDQq)3l9 zxbPqgX5vHXpc5hFKxpM_9hga|;zZdWoxz%%m`n%6O;yx^8~9Bperl!R8k7_IGx&~0 z_+%Njuuu&;@DZ!8!2q36i*m+Tw#8A4+Q`&~?&m4B_*=ZR|AHu8hp>=KbyztcOIY;< z{8B3ELU3P1xW#8APUU25%Y+A6MUS6gCm|=L6a#@_5vu362=O8VIYbW+3lH+4A&{H5AQ$Sy!48zIDRQuL zx3P%5?;}QfUSz0^xFllg*;O0i3(vSk~cIL$t8b1jQ#2Hcx<*MJN-+x z`N1m!Rng33+r$qtf-l?ZLyiT+nnwSr)@_MN7>s=JyX35yq=z+gk}#L!Ta*J~W(|`7 zJs#Hmd?P-<2|qh{dzf4@p^I&)C70>OeUn`wGf(pJ9`Y;lto`JHoxaEQO7l(>p<~#^_B2p8Hu6&q^v*gGyUz>} zy7Gmkgh7p9pCwk_1i_)|RmDXB9#s_ z)ztB$_C(bh&>*&|4qOn^f$E;sfsI1F1blV8Y2U_lhu759abT~iHQ<1%G>7p+I#6BO kIxr;E{{TN9(t+(FJOTV#)f(`esx;s)I?yyMp6I~;0C@o3qyPW_ delta 1289 zcmYk6e@t6d6vxjww?H3Ieh3;sU{DGO4P7ar(=ci}eoPRGp^P|L0JkBVQTGE}1`Gx` z3?#tDp7Dk;MKaOty$lHq;49@~UT`mA00+?L^=x#;0Jcp2IB?xUG=obX$Wr7w918QgR z@<7oxJTq|ENMj&B8cGQks({5|FF^qJ=k6Y@pW6sfq*O|sdYo2%F!rF|vL(nh+P03O2V$VXe^U$RR;sh_5pmT79Lf}V^s>~E4BOLm@Z!iXsQ92Y5{P_ zVYT_nH#P5O(NS40b*1BZxkFAwu3VBeT6`dXGUUVvd1EM5x9#E<)UKE>TKy#Zb%6aN z0G-N_k);I8k;|{&kaAoAkuv}XmBg8J!g{&HWyF5@q$>r3lwsGYFg&HiE*y=)S-Eee z6yxPPD^4tyx33y?m8)BbYNdYl(*UVD2_bk5phAgW+mnus{74esml{(LDhvoc;#C7C z5xbOvvcna{hf^?;&8mxLmjMgJofK>iV+UGMj$cR=O*`;m0e17oRy5#`e6SUrOxuQX z=4zTQvJJg6^CWsqB)8!Mf9cq`ita)%i0Cdnv>mOya~waAtdj^&Paw>QXC^Qn+5Sln zJB{_IZx8mexG;%v@w7h2ugzgOOP%*2vgWrC$s&IqPxwj6L@;?9;jEasjmJ~bk6VdG zB|ij`$36c)Hq)SjjV6#4$t9?KqP zlXuJa^rVlVL@R$&P+T~IGb`Ji1#hb-+36_DGw|s-%;T+A(y|dNd4u>&t$7ZwCy1xS zS5`U{fH!!mjjpgiY+e_Ug@4^&`qN}GB_!;8%eJ%52Kwhcj*=o1HXjJD`M<4s6ybIX zi)Z(a`)sL`&}c++w`+nj5W}gff&PI zZ=-2eczP=pl14?Xn|?x(-9f+TS(WgSa!1J&f&Kgqq2{>6hlMH~GUbzwnc9+mLKvs$ z?-10Bq?;6q%;6@UxyaJcENa}en2cw*eOc|jy6o%yLcIVsZT&93UM7nUd*0umK{m1B z>y&P#G4E(T5;fk*j6S9uBkmD*(^!`lTli}hmW;P}uZ6wHdzVQ|>lVIfVd=VnEcT!F zJ0dEJwM1eae{VNiq=6T>d6A_DdhQ+1*v-r{b~WGjVs<{8D%<(FyR6tJ*V*oq>sP