[Scummvm-cvs-logs] SF.net SVN: scummvm: [32621] scummvm/trunk/tools/create_drascula/ create_drascula.cpp

sev at users.sourceforge.net sev at users.sourceforge.net
Sun Jun 8 23:58:20 CEST 2008


Revision: 32621
          http://scummvm.svn.sourceforge.net/scummvm/?rev=32621&view=rev
Author:   sev
Date:     2008-06-08 14:58:20 -0700 (Sun, 08 Jun 2008)

Log Message:
-----------
Proper texts alignment.

Modified Paths:
--------------
    scummvm/trunk/tools/create_drascula/create_drascula.cpp

Modified: scummvm/trunk/tools/create_drascula/create_drascula.cpp
===================================================================
--- scummvm/trunk/tools/create_drascula/create_drascula.cpp	2008-06-08 16:42:12 UTC (rev 32620)
+++ scummvm/trunk/tools/create_drascula/create_drascula.cpp	2008-06-08 21:58:20 UTC (rev 32621)
@@ -52,9 +52,12 @@
 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 @@
 		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,18 +198,22 @@
 	// 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,18 +221,22 @@
 	// 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,18 +244,22 @@
 	// 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,18 +267,22 @@
 	// 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,18 +290,22 @@
 	// 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,18 +313,22 @@
 	// 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,18 +336,22 @@
 	// 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,18 +359,22 @@
 	// 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,18 +382,22 @@
 	// 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,18 +405,22 @@
 	// 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,18 +428,22 @@
 	// 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,18 +451,22 @@
 	// 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,18 +474,22 @@
 	// 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,18 +497,22 @@
 	// 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);
 		}
 	}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list