diff options
Diffstat (limited to 'tools/create_drascula/create_drascula.cpp')
-rw-r--r-- | tools/create_drascula/create_drascula.cpp | 249 |
1 files changed, 155 insertions, 94 deletions
diff --git a/tools/create_drascula/create_drascula.cpp b/tools/create_drascula/create_drascula.cpp index 14e50165d0..856405dbff 100644 --- a/tools/create_drascula/create_drascula.cpp +++ b/tools/create_drascula/create_drascula.cpp @@ -52,9 +52,12 @@ static void writeUint16BE(FILE *fp, uint16 value) { int main(int argc, char *argv[]) { FILE* outFile; int i, lang; - int len, pad; + int len, len1, pad; uint8 padBuf[DATAALIGNMENT]; + for (i = 0; i < DATAALIGNMENT; i++) + padBuf[i] = 0; + outFile = fopen("drascula.dat", "wb"); // Write header @@ -165,27 +168,29 @@ int main(int argc, char *argv[]) { writeUint16BE(outFile, roomActions[i].speechID); } - for (i = 0; i < DATAALIGNMENT; i++) - padBuf[i] = 0; - // langs writeUint16BE(outFile, NUM_LANGS); // Write _text writeUint16BE(outFile, NUM_TEXT); + for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXT; i++) { - len += strlen(_text[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_text[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXT; i++) { - writeUint16BE(outFile, strlen(_text[lang][i])); - fwrite(_text[lang][i], strlen(_text[lang][i]), 1, outFile); + len = strlen(_text[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + writeUint16BE(outFile, len + pad + 2); + fwrite(_text[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } } @@ -193,17 +198,21 @@ int main(int argc, char *argv[]) { // Write _textd writeUint16BE(outFile, NUM_TEXTD); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTD; i++) { - len += strlen(_textd[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textd[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTD; i++) { - writeUint16BE(outFile, strlen(_textd[lang][i])); - fwrite(_textd[lang][i], strlen(_textd[lang][i]), 1, outFile); + len = strlen(_textd[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textd[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -212,17 +221,21 @@ int main(int argc, char *argv[]) { // Write _textb writeUint16BE(outFile, NUM_TEXTB); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTB; i++) { - len += strlen(_textb[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textb[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTB; i++) { - writeUint16BE(outFile, strlen(_textb[lang][i])); - fwrite(_textb[lang][i], strlen(_textb[lang][i]), 1, outFile); + len = strlen(_textb[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textb[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -231,17 +244,21 @@ int main(int argc, char *argv[]) { // Write _textbj writeUint16BE(outFile, NUM_TEXTBJ); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTBJ; i++) { - len += strlen(_textbj[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textbj[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTBJ; i++) { - writeUint16BE(outFile, strlen(_textbj[lang][i])); - fwrite(_textbj[lang][i], strlen(_textbj[lang][i]), 1, outFile); + len = strlen(_textbj[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textbj[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -250,17 +267,21 @@ int main(int argc, char *argv[]) { // Write _texte writeUint16BE(outFile, NUM_TEXTE); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTE; i++) { - len += strlen(_texte[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_texte[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTE; i++) { - writeUint16BE(outFile, strlen(_texte[lang][i])); - fwrite(_texte[lang][i], strlen(_texte[lang][i]), 1, outFile); + len = strlen(_texte[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_texte[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -269,17 +290,21 @@ int main(int argc, char *argv[]) { // Write _texti writeUint16BE(outFile, NUM_TEXTI); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTI; i++) { - len += strlen(_texti[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_texti[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTI; i++) { - writeUint16BE(outFile, strlen(_texti[lang][i])); - fwrite(_texti[lang][i], strlen(_texti[lang][i]), 1, outFile); + len = strlen(_texti[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_texti[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -288,17 +313,21 @@ int main(int argc, char *argv[]) { // Write _textl writeUint16BE(outFile, NUM_TEXTL); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTL; i++) { - len += strlen(_textl[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textl[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTL; i++) { - writeUint16BE(outFile, strlen(_textl[lang][i])); - fwrite(_textl[lang][i], strlen(_textl[lang][i]), 1, outFile); + len = strlen(_textl[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textl[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -307,17 +336,21 @@ int main(int argc, char *argv[]) { // Write _textp writeUint16BE(outFile, NUM_TEXTP); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTP; i++) { - len += strlen(_textp[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textp[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTP; i++) { - writeUint16BE(outFile, strlen(_textp[lang][i])); - fwrite(_textp[lang][i], strlen(_textp[lang][i]), 1, outFile); + len = strlen(_textp[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textp[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -326,17 +359,21 @@ int main(int argc, char *argv[]) { // Write _textt writeUint16BE(outFile, NUM_TEXTT); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTT; i++) { - len += strlen(_textt[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textt[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTT; i++) { - writeUint16BE(outFile, strlen(_textt[lang][i])); - fwrite(_textt[lang][i], strlen(_textt[lang][i]), 1, outFile); + len = strlen(_textt[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textt[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -345,17 +382,21 @@ int main(int argc, char *argv[]) { // Write _textvb writeUint16BE(outFile, NUM_TEXTVB); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTVB; i++) { - len += strlen(_textvb[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textvb[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTVB; i++) { - writeUint16BE(outFile, strlen(_textvb[lang][i])); - fwrite(_textvb[lang][i], strlen(_textvb[lang][i]), 1, outFile); + len = strlen(_textvb[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textvb[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -364,17 +405,21 @@ int main(int argc, char *argv[]) { // Write _textsys writeUint16BE(outFile, NUM_TEXTSYS); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTSYS; i++) { - len += strlen(_textsys[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textsys[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTSYS; i++) { - writeUint16BE(outFile, strlen(_textsys[lang][i])); - fwrite(_textsys[lang][i], strlen(_textsys[lang][i]), 1, outFile); + len = strlen(_textsys[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textsys[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -383,17 +428,21 @@ int main(int argc, char *argv[]) { // Write _texthis writeUint16BE(outFile, NUM_TEXTHIS); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTHIS; i++) { - len += strlen(_texthis[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_texthis[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTHIS; i++) { - writeUint16BE(outFile, strlen(_texthis[lang][i])); - fwrite(_texthis[lang][i], strlen(_texthis[lang][i]), 1, outFile); + len = strlen(_texthis[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_texthis[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -402,17 +451,21 @@ int main(int argc, char *argv[]) { // Write _textverbs writeUint16BE(outFile, NUM_TEXTVERBS); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTVERBS; i++) { - len += strlen(_textverbs[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textverbs[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTVERBS; i++) { - writeUint16BE(outFile, strlen(_textverbs[lang][i])); - fwrite(_textverbs[lang][i], strlen(_textverbs[lang][i]), 1, outFile); + len = strlen(_textverbs[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textverbs[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -421,17 +474,21 @@ int main(int argc, char *argv[]) { // Write _textmisc writeUint16BE(outFile, NUM_TEXTMISC); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTMISC; i++) { - len += strlen(_textmisc[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textmisc[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTMISC; i++) { - writeUint16BE(outFile, strlen(_textmisc[lang][i])); - fwrite(_textmisc[lang][i], strlen(_textmisc[lang][i]), 1, outFile); + len = strlen(_textmisc[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textmisc[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } @@ -440,17 +497,21 @@ int main(int argc, char *argv[]) { // Write _textd1 writeUint16BE(outFile, NUM_TEXTD1); for (lang = 0; lang < NUM_LANGS; lang++) { - len = 0; + len = 2; for (i = 0; i < NUM_TEXTD1; i++) { - len += strlen(_textd1[lang][i]) + 2; - pad = len % DATAALIGNMENT; - len += pad; + len1 = strlen(_textd1[lang][i]) + 1; + pad = DATAALIGNMENT - (len1 + 2) % DATAALIGNMENT; + len += 2 + len1 + pad; } writeUint16BE(outFile, len); + writeUint16BE(outFile, 0); // padding for (i = 0; i < NUM_TEXTD1; i++) { - writeUint16BE(outFile, strlen(_textd1[lang][i])); - fwrite(_textd1[lang][i], strlen(_textd1[lang][i]), 1, outFile); + len = strlen(_textd1[lang][i]) + 1; + pad = DATAALIGNMENT - (len + 2) % DATAALIGNMENT; + + writeUint16BE(outFile, len + pad + 2); + fwrite(_textd1[lang][i], len, 1, outFile); fwrite(padBuf, pad, 1, outFile); } |