diff options
| author | Eugene Sandulenko | 2008-06-08 21:58:20 +0000 | 
|---|---|---|
| committer | Eugene Sandulenko | 2008-06-08 21:58:20 +0000 | 
| commit | e62b1ed9d84bd66ceac829ec34fdec0c83731034 (patch) | |
| tree | 9733d5450486204d2827777d89be9a0fcd0f4294 /tools/create_drascula/create_drascula.cpp | |
| parent | 458c7185d92a9e5ac53663733043c8b73e964f4e (diff) | |
| download | scummvm-rg350-e62b1ed9d84bd66ceac829ec34fdec0c83731034.tar.gz scummvm-rg350-e62b1ed9d84bd66ceac829ec34fdec0c83731034.tar.bz2 scummvm-rg350-e62b1ed9d84bd66ceac829ec34fdec0c83731034.zip  | |
Proper texts alignment.
svn-id: r32621
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);  		}  | 
