From d38e80ee04afe582e70150d3884e56c05f3fd7a8 Mon Sep 17 00:00:00 2001
From: pixel <pixel>
Date: Sat, 27 Nov 2004 21:44:44 +0000
Subject: Large dos2unix commit...

---
 Xenogears/Decrypt.cpp        | 1026 +++++++++++++++++++++---------------------
 Xenogears/Translate.cpp      |  512 ++++++++++-----------
 Xenogears/archive.cpp        |   74 +--
 Xenogears/build-sector-2.cpp |   28 +-
 Xenogears/build-sector.cpp   |   28 +-
 Xenogears/main_dump.cpp      |  566 +++++++++++------------
 Xenogears/reinsert.cpp       |  580 ++++++++++++------------
 Xenogears/script-comp.cpp    |  218 ++++-----
 Xenogears/script-dec.cpp     |  164 +++----
 Xenogears/test-dlzss.cpp     |   14 +-
 Xenogears/test-lzss.cpp      |   14 +-
 11 files changed, 1612 insertions(+), 1612 deletions(-)

(limited to 'Xenogears')

diff --git a/Xenogears/Decrypt.cpp b/Xenogears/Decrypt.cpp
index 7cdb1aa..0683078 100644
--- a/Xenogears/Decrypt.cpp
+++ b/Xenogears/Decrypt.cpp
@@ -1,513 +1,513 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "generic.h"
-#include "Input.h"
-#include "Output.h"
-#include "Main.h"
-
-CODE_BEGINS
-void init_table(long table[5000])
-{
-    long i;
-
-    for (i = 0; i < 5000; i++) {
-	table[i] = 0;
-    }
-}
-
-char found_position(long table[5000], int number, FILE * f_source)
-{
-    long position;
-    long i;
-
-    position = ftell(f_source);
-
-    for (i = 0; i < number; i++) {
-	if (table[i] <= position)
-	    return (1);
-    }
-    return (0);
-}
-
-long found_next(long table[5000], long script_number, long max_script)
-{
-    long i;
-    long next = 0xFFFF;
-    long actual = table[script_number];
-
-    for (i = 0; i < script_number; i++) {
-	if (table[i] > actual) {
-	    if (table[i] < next)
-		next = table[i];
-	}
-    }
-
-    for (i = script_number + 1; i < max_script; i++) {
-	if (table[i] > actual) {
-	    if (table[i] < next)
-		next = table[i];
-	}
-    }
-
-    return (next);
-}
-
-void dump_text(FILE * f_source, FILE * f_cible, long table[5000], long script_number,
-	       long max_script, unsigned char *length_table, unsigned char *line_table)
-{
-    long next;
-    unsigned char val;
-    char temp_string[2] = {0, 0};
-    long position;
-    unsigned char temp1 = 0;
-    unsigned char temp2 = 0;
-    
-    next = found_next(table, script_number, max_script);
-
-    fseek(f_source, table[script_number], SEEK_SET);
-
-    fprintf(f_cible, "<Text_block lines:%d width:%d>\n",
-	    line_table[script_number], length_table[script_number]);
-
-    position = ftell(f_source);
-
-    while (position < next) {
-	val = 0;
-
-	fread((unsigned char *) &val, 1, 1, f_source);
-
-	if (val == 0x00)	// "<Close>"
-	{
-	    break;
-	} else if (val == 0x01)	// "\n"
-	{
-	    fprintf(f_cible, "\n");
-	} else if (val == 0x02)	// "<New>"
-	{
-	    fprintf(f_cible, "<New>\n");
-	} else if (val == 0x03)	// "<Wait>"
-	{
-	    fprintf(f_cible, "<Wait>");
-	} else if (val == 0x0F)	// Extended opcode. Reads two more bytes.
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fread((unsigned char *) &temp2, 1, 1, f_source);
-	    if (temp1 == 0) {
-		fprintf(f_cible, "<Delay %d>", temp2);
-	    } else if (temp1 == 5) {
-		switch (temp2) {
-		case 0:
-		    fprintf(f_cible, "<Fei>");
-		    break;
-		case 1:
-		    fprintf(f_cible, "<Elly>");
-		    break;
-		case 2:
-		    fprintf(f_cible, "<Citan>");
-		    break;
-		case 3:
-		    fprintf(f_cible, "<Bart>");
-		    break;
-		case 4:
-		    fprintf(f_cible, "<Billy>");
-		    break;
-		case 5:
-		    fprintf(f_cible, "<Rico>");
-		    break;
-		case 6:
-		    fprintf(f_cible, "<Emeralda>");
-		    break;
-		case 7:
-		    fprintf(f_cible, "<Chu-Chu>");
-		    break;
-		case 8:
-		    fprintf(f_cible, "<Maria>");
-		    break;
-		case 9:
-		    fprintf(f_cible, "<Citan2>");
-		    break;
-		case 10:
-		    fprintf(f_cible, "<Emeralda2>");
-		    break;
-		case 11:
-		    fprintf(f_cible, "<Weltall>");
-		    break;
-		case 12:
-		    fprintf(f_cible, "<Weltall-2>");
-		    break;
-		case 13:
-		    fprintf(f_cible, "<Vierge>");
-		    break;
-		case 14:
-		    fprintf(f_cible, "<Heimdal>");
-		    break;
-		case 15:
-		    fprintf(f_cible, "<Brigandier>");
-		    break;
-		case 16:
-		    fprintf(f_cible, "<Renmazuo>");
-		    break;
-		case 17:
-		    fprintf(f_cible, "<Stier>");
-		    break;
-		case 18:
-		    fprintf(f_cible, "<BigChu-chu>");
-		    break;
-		case 19:
-		    fprintf(f_cible, "<Seibzehn>");
-		    break;
-		case 20:
-		    fprintf(f_cible, "<Crescens>");
-		    break;
-		case 21:
-		    fprintf(f_cible, "<Regurus>");
-		    break;
-		case 22:
-		    fprintf(f_cible, "<Fenrir>");
-		    break;
-		case 23:
-		    fprintf(f_cible, "<Andvari>");
-		    break;
-		case 24:
-		    fprintf(f_cible, "<Renmazuo>");
-		    break;
-		case 25:
-		    fprintf(f_cible, "<Stier-2>");
-		    break;
-		case 26:
-		    fprintf(f_cible, "<Xenogears>");
-		    break;
-		case 27:
-		    fprintf(f_cible, "<BARTHOS>");
-		    break;
-		case 28:
-		    fprintf(f_cible, "<Yggdra>");
-		    break;
-		case 128:
-		    fprintf(f_cible, "<Perso1>");
-		    break;
-		case 129:
-		    fprintf(f_cible, "<Perso2>");
-		    break;
-		case 130:
-		    fprintf(f_cible, "<Perso3>");
-		    break;
-		default:
-		    fprintf(f_cible, "<Gear %d>", temp2);
-		}
-	    } else {
-		fprintf(f_cible, "<Opcode %d %d>", temp1, temp2);
-	    }
-	} else if (val == 0x10)	// " "
-	{
-	    fprintf(f_cible, " ");
-	} else if (val == 0x11)	// "+"
-	{
-	    fprintf(f_cible, "+");
-	} else if (val == 0x12)	// ","
-	{
-	    fprintf(f_cible, ",");
-	} else if (val == 0x13)	// "-"
-	{
-	    fprintf(f_cible, "-");
-	} else if (val == 0x14)	// "."
-	{
-	    fprintf(f_cible, ".");
-	} else if (val == 0x15)	// "/"
-	{
-	    fprintf(f_cible, "/");
-	} else if ((val >= 0x16) && (val <= 0x1F))	// "0-9"
-	{
-	    temp_string[0] = val + 0x1A;
-	    fprintf(f_cible, temp_string);
-	} else if ((val >= 0x20) && (val <= 0x39))	// "A-Z"
-	{
-	    temp_string[0] = val + 0x21;
-	    fprintf(f_cible, temp_string);
-	} else if (val == 0x3A)	// "["
-	{
-	    fprintf(f_cible, "[");
-	} else if (val == 0x3B)	// "]"
-	{
-	    fprintf(f_cible, "]");
-	} else if (val == 0x3C)	// "="
-	{
-	    fprintf(f_cible, "=");
-	} else if ((val >= 0x3D) && (val <= 0x56))	// "a-z"
-	{
-	    temp_string[0] = val + 0x24;
-	    fprintf(f_cible, temp_string);
-	} else if (val == 0x57)	// "!"
-	{
-	    fprintf(f_cible, "!");
-	} else if (val == 0x58)	// "\""
-	{
-	    fprintf(f_cible, "\"");
-	} else if (val == 0x59)	// "#"
-	{
-	    fprintf(f_cible, "#");
-	} else if (val == 0x5A)	// "%"
-	{
-	    fprintf(f_cible, "%%");
-	} else if (val == 0x5B)	// "&"
-	{
-	    fprintf(f_cible, "&");
-	} else if (val == 0x5C)	// "'"
-	{
-	    fprintf(f_cible, "'");
-	} else if (val == 0x5D)	// "("
-	{
-	    fprintf(f_cible, "(");
-	} else if (val == 0x5E)	// ")"
-	{
-	    fprintf(f_cible, ")");
-	} else if (val == 0x5F)	// ":"
-	{
-	    fprintf(f_cible, ":");
-	} else if (val == 0x60)	// "?"
-	{
-	    fprintf(f_cible, "?");
-	} else if (val == 0x61)	// "<0>"
-	{
-	    fprintf(f_cible, "<0>");
-	} else if (val == 0x62)	// "<1>"
-	{
-	    fprintf(f_cible, "<1>");
-	} else if (val == 0x63)	// "<2>"
-	{
-	    fprintf(f_cible, "<2>");
-	} else if (val == 0x64)	// "<3>"
-	{
-	    fprintf(f_cible, "<3>");
-	} else if (val == 0x65)	// "<4>"
-	{
-	    fprintf(f_cible, "<4>");
-	} else if (val == 0x66)	// "<5>"
-	{
-	    fprintf(f_cible, "<5>");
-	} else if (val == 0x67)	// "<6>"
-	{
-	    fprintf(f_cible, "<6>");
-	} else if (val == 0x68)	// "<7>"
-	{
-	    fprintf(f_cible, "<7>");
-	} else if (val == 0x69)	// "<8>"
-	{
-	    fprintf(f_cible, "<8>");
-	} else if (val == 0x6A)	// "<9>"
-	{
-	    fprintf(f_cible, "<9>");
-	} else if (val == 0x6B)	// "<%>"
-	{
-	    fprintf(f_cible, "<%%>");
-	} else if (val == 0x6C)	// "<&>"
-	{
-	    fprintf(f_cible, "<&>");
-	} else if (val == 0x6D)	// "*"
-	{
-	    fprintf(f_cible, "*");
-	} else if (val == 0x6E)	// "<C>"
-	{
-	    fprintf(f_cible, "<C>");
-	} else if (val == 0x6F)	// "<S>"
-	{
-	    fprintf(f_cible, "<S>");
-	} else if (val == 0x70)	// "<T>"
-	{
-	    fprintf(f_cible, "<T>");
-	} else if (val == 0x71)	// "<*>"
-	{
-	    fprintf(f_cible, "<*>");
-	} else if (val == 0x72)	// "<R>"
-	{
-	    fprintf(f_cible, "<R>");
-	} else if (val == 0x73)	// "<L>"
-	{
-	    fprintf(f_cible, "<L>");
-	} else if (val == 0x74)	// "<U>"
-	{
-	    fprintf(f_cible, "<U>");
-	} else if (val == 0x75)	// "<U>"
-	{
-	    fprintf(f_cible, "<D>");
-	} else if (val == 0x76) // "<.>"
-	{
-	    fprintf(f_cible, "<.>");
-	} else if (val == 0x77) // "<:>"
-	{
-	    fprintf(f_cible, "<:>");
-	} else if (val == 0x79) // "</>"
-	{
-	    fprintf(f_cible, "</>");
-	} else if (val == 0x7A) // "<..>"
-	{
-	    fprintf(f_cible, "<..>");
-	} else if (val == 0x7B) // "<`>"
-	{
-	    fprintf(f_cible, "<`>");
-	} else if (val == 0x7D) // "<+>"
-	{
-	    fprintf(f_cible, "<+>");
-	} else if (val == 0x7E) // "<->"
-	{
-	    fprintf(f_cible, "<->");
-	} else if (val == 0x7F)	// "<X>"
-	{
-	    fprintf(f_cible, "<X>");
-	} else if (val == 0x80) // "<[>"
-	{
-	    fprintf(f_cible, "<[>");
-	} else if (val == 0x81)	// "<]>"
-	{
-	    fprintf(f_cible, "<]>");
-	} else if (val == 0x82)	// "<%>"
-	{
-	    fprintf(f_cible, "<%%>");
-	} else if (val == 0x83)	// "<&>"
-	{
-	    fprintf(f_cible, "<&>");
-	} else if (val == 0x84)	// "<(>"
-	{
-	    fprintf(f_cible, "<(>");
-	} else if (val == 0x85)	// "<)>"
-	{
-	    fprintf(f_cible, "<)>");
-	} else if (val == 0x86)	// "<#>"
-	{
-	    fprintf(f_cible, "<#>");
-	} else if (val == 0x87)	// "`"
-	{
-	    fprintf(f_cible, "`");
-	} else if (val == 0x88)	// "�"
-	{
-	    fprintf(f_cible, "�");
-	} else if (val == 0x89)	// "<=>"
-	{
-	    fprintf(f_cible, "<=>");
-	} else if (val == 0x8A)	// "<?>"
-	{
-	    fprintf(f_cible, "<?>");
-	} else if (val == 0x8B)	// "<!>"
-	{
-	    fprintf(f_cible, "<!>");
-	} else if (val == 0x8C)	// "_"
-	{
-	    fprintf(f_cible, "_");
-	} else if (val == 0x8D)	// "~"
-	{
-	    fprintf(f_cible, "~");
-	} else if (val == 0x8E)	// "<...>"
-	{
-	    fprintf(f_cible, "<...>");
-	} else if (val == 0x8F)	// "<'>"
-	{
-	    fprintf(f_cible, "<'>");
-	} else if (val == 0xFE)	// "<Extra1 X>
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fprintf(f_cible, "<Extra1 %d>", temp1);
-	} else if (val == 0xFF)	// "<Extra2 X>
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fprintf(f_cible, "<Extra2 %d>", temp1);
-	} else {
-	    fprintf(f_cible, "<Bare %X>", val);
-	}
-
-	position = ftell(f_source);
-    }
-    fprintf(f_cible, "\n<End_of_block>\n\n");
-}
-
-int decrypt(FILE * f_source, FILE * f_cible, int room_number)
-{
-    long i, j;
-    long table[5000];
-    unsigned char line_table[5000];
-    unsigned char length_table[5000];
-    long script_number = 0;
-    long temp = 0;
-    char temp_char;
-    int counter = 0;
-
-    fread((long *) &script_number, 4, 1, f_source);
-
-    if (script_number == 0x0000FFFF)
-	return (1);
-
-    script_number = (script_number++);
-
-    fprintf(f_cible, "<Blocks:%li>\n", script_number);
-    init_table(table);
-
-    i = j = 0;
-
-    while (i < script_number) {
-	fread((long *) &temp, 2, 1, f_source);
-	if (table[j - 1] != temp)
-	    table[j++] = temp;
-	i++;
-    }
-
-    script_number = j;
-
-    for (i = 0; i < script_number; i++) {
-	fread((unsigned char *) &length_table[i], 1, 1, f_source);
-	fread((unsigned char *) &line_table[i], 1, 1, f_source);
-    }
-
-    fseek(f_source, table[script_number - 1], SEEK_SET);
-
-    do {
-	fread((char *) &temp_char, 1, 1, f_source);
-	counter++;
-    } while (temp_char != 0);
-
-    table[script_number] = ftell(f_source);
-
-    for (i = 0; i < script_number; i++) {
-	dump_text(f_source, f_cible, table, i, script_number, length_table, line_table);
-    }
-
-    return (0);
-}
-
-int startup(void) throw (GeneralException)
-{
-    int i;
-    char file_name[100];
-    FILE *f_source, *f_cible;
-
-    for (i = 0; i < 730; i++) {
-	printf("%d\n", i);
-	sprintf(file_name, "xeno_d1/ROOMS/%04d/script.comp", i);
-	f_source = fopen(file_name, "rb");
-
-	sprintf(file_name, "xeno_d1/ROOMS/%04d/script.txt", i);
-
-	if (f_source != NULL) {
-	    f_cible = fopen(file_name, "w");
-	    decrypt(f_source, f_cible, 5);
-	    fclose(f_source);
-	    fclose(f_cible);
-	}
-    }
-    for (i = 0; i < 730; i++) {
-	printf("%d\n", i);
-	sprintf(file_name, "xeno_d2/ROOMS/%04d/script.comp", i);
-	f_source = fopen(file_name, "rb");
-
-	sprintf(file_name, "xeno_d2/ROOMS/%04d/script.txt", i);
-
-	if (f_source != NULL) {
-	    f_cible = fopen(file_name, "w");
-	    decrypt(f_source, f_cible, 5);
-	    fclose(f_source);
-	    fclose(f_cible);
-	}
-    }
-    
-    return 0;
-}
-CODE_ENDS
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "generic.h"
+#include "Input.h"
+#include "Output.h"
+#include "Main.h"
+
+CODE_BEGINS
+void init_table(long table[5000])
+{
+    long i;
+
+    for (i = 0; i < 5000; i++) {
+	table[i] = 0;
+    }
+}
+
+char found_position(long table[5000], int number, FILE * f_source)
+{
+    long position;
+    long i;
+
+    position = ftell(f_source);
+
+    for (i = 0; i < number; i++) {
+	if (table[i] <= position)
+	    return (1);
+    }
+    return (0);
+}
+
+long found_next(long table[5000], long script_number, long max_script)
+{
+    long i;
+    long next = 0xFFFF;
+    long actual = table[script_number];
+
+    for (i = 0; i < script_number; i++) {
+	if (table[i] > actual) {
+	    if (table[i] < next)
+		next = table[i];
+	}
+    }
+
+    for (i = script_number + 1; i < max_script; i++) {
+	if (table[i] > actual) {
+	    if (table[i] < next)
+		next = table[i];
+	}
+    }
+
+    return (next);
+}
+
+void dump_text(FILE * f_source, FILE * f_cible, long table[5000], long script_number,
+	       long max_script, unsigned char *length_table, unsigned char *line_table)
+{
+    long next;
+    unsigned char val;
+    char temp_string[2] = {0, 0};
+    long position;
+    unsigned char temp1 = 0;
+    unsigned char temp2 = 0;
+    
+    next = found_next(table, script_number, max_script);
+
+    fseek(f_source, table[script_number], SEEK_SET);
+
+    fprintf(f_cible, "<Text_block lines:%d width:%d>\n",
+	    line_table[script_number], length_table[script_number]);
+
+    position = ftell(f_source);
+
+    while (position < next) {
+	val = 0;
+
+	fread((unsigned char *) &val, 1, 1, f_source);
+
+	if (val == 0x00)	// "<Close>"
+	{
+	    break;
+	} else if (val == 0x01)	// "\n"
+	{
+	    fprintf(f_cible, "\n");
+	} else if (val == 0x02)	// "<New>"
+	{
+	    fprintf(f_cible, "<New>\n");
+	} else if (val == 0x03)	// "<Wait>"
+	{
+	    fprintf(f_cible, "<Wait>");
+	} else if (val == 0x0F)	// Extended opcode. Reads two more bytes.
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fread((unsigned char *) &temp2, 1, 1, f_source);
+	    if (temp1 == 0) {
+		fprintf(f_cible, "<Delay %d>", temp2);
+	    } else if (temp1 == 5) {
+		switch (temp2) {
+		case 0:
+		    fprintf(f_cible, "<Fei>");
+		    break;
+		case 1:
+		    fprintf(f_cible, "<Elly>");
+		    break;
+		case 2:
+		    fprintf(f_cible, "<Citan>");
+		    break;
+		case 3:
+		    fprintf(f_cible, "<Bart>");
+		    break;
+		case 4:
+		    fprintf(f_cible, "<Billy>");
+		    break;
+		case 5:
+		    fprintf(f_cible, "<Rico>");
+		    break;
+		case 6:
+		    fprintf(f_cible, "<Emeralda>");
+		    break;
+		case 7:
+		    fprintf(f_cible, "<Chu-Chu>");
+		    break;
+		case 8:
+		    fprintf(f_cible, "<Maria>");
+		    break;
+		case 9:
+		    fprintf(f_cible, "<Citan2>");
+		    break;
+		case 10:
+		    fprintf(f_cible, "<Emeralda2>");
+		    break;
+		case 11:
+		    fprintf(f_cible, "<Weltall>");
+		    break;
+		case 12:
+		    fprintf(f_cible, "<Weltall-2>");
+		    break;
+		case 13:
+		    fprintf(f_cible, "<Vierge>");
+		    break;
+		case 14:
+		    fprintf(f_cible, "<Heimdal>");
+		    break;
+		case 15:
+		    fprintf(f_cible, "<Brigandier>");
+		    break;
+		case 16:
+		    fprintf(f_cible, "<Renmazuo>");
+		    break;
+		case 17:
+		    fprintf(f_cible, "<Stier>");
+		    break;
+		case 18:
+		    fprintf(f_cible, "<BigChu-chu>");
+		    break;
+		case 19:
+		    fprintf(f_cible, "<Seibzehn>");
+		    break;
+		case 20:
+		    fprintf(f_cible, "<Crescens>");
+		    break;
+		case 21:
+		    fprintf(f_cible, "<Regurus>");
+		    break;
+		case 22:
+		    fprintf(f_cible, "<Fenrir>");
+		    break;
+		case 23:
+		    fprintf(f_cible, "<Andvari>");
+		    break;
+		case 24:
+		    fprintf(f_cible, "<Renmazuo>");
+		    break;
+		case 25:
+		    fprintf(f_cible, "<Stier-2>");
+		    break;
+		case 26:
+		    fprintf(f_cible, "<Xenogears>");
+		    break;
+		case 27:
+		    fprintf(f_cible, "<BARTHOS>");
+		    break;
+		case 28:
+		    fprintf(f_cible, "<Yggdra>");
+		    break;
+		case 128:
+		    fprintf(f_cible, "<Perso1>");
+		    break;
+		case 129:
+		    fprintf(f_cible, "<Perso2>");
+		    break;
+		case 130:
+		    fprintf(f_cible, "<Perso3>");
+		    break;
+		default:
+		    fprintf(f_cible, "<Gear %d>", temp2);
+		}
+	    } else {
+		fprintf(f_cible, "<Opcode %d %d>", temp1, temp2);
+	    }
+	} else if (val == 0x10)	// " "
+	{
+	    fprintf(f_cible, " ");
+	} else if (val == 0x11)	// "+"
+	{
+	    fprintf(f_cible, "+");
+	} else if (val == 0x12)	// ","
+	{
+	    fprintf(f_cible, ",");
+	} else if (val == 0x13)	// "-"
+	{
+	    fprintf(f_cible, "-");
+	} else if (val == 0x14)	// "."
+	{
+	    fprintf(f_cible, ".");
+	} else if (val == 0x15)	// "/"
+	{
+	    fprintf(f_cible, "/");
+	} else if ((val >= 0x16) && (val <= 0x1F))	// "0-9"
+	{
+	    temp_string[0] = val + 0x1A;
+	    fprintf(f_cible, temp_string);
+	} else if ((val >= 0x20) && (val <= 0x39))	// "A-Z"
+	{
+	    temp_string[0] = val + 0x21;
+	    fprintf(f_cible, temp_string);
+	} else if (val == 0x3A)	// "["
+	{
+	    fprintf(f_cible, "[");
+	} else if (val == 0x3B)	// "]"
+	{
+	    fprintf(f_cible, "]");
+	} else if (val == 0x3C)	// "="
+	{
+	    fprintf(f_cible, "=");
+	} else if ((val >= 0x3D) && (val <= 0x56))	// "a-z"
+	{
+	    temp_string[0] = val + 0x24;
+	    fprintf(f_cible, temp_string);
+	} else if (val == 0x57)	// "!"
+	{
+	    fprintf(f_cible, "!");
+	} else if (val == 0x58)	// "\""
+	{
+	    fprintf(f_cible, "\"");
+	} else if (val == 0x59)	// "#"
+	{
+	    fprintf(f_cible, "#");
+	} else if (val == 0x5A)	// "%"
+	{
+	    fprintf(f_cible, "%%");
+	} else if (val == 0x5B)	// "&"
+	{
+	    fprintf(f_cible, "&");
+	} else if (val == 0x5C)	// "'"
+	{
+	    fprintf(f_cible, "'");
+	} else if (val == 0x5D)	// "("
+	{
+	    fprintf(f_cible, "(");
+	} else if (val == 0x5E)	// ")"
+	{
+	    fprintf(f_cible, ")");
+	} else if (val == 0x5F)	// ":"
+	{
+	    fprintf(f_cible, ":");
+	} else if (val == 0x60)	// "?"
+	{
+	    fprintf(f_cible, "?");
+	} else if (val == 0x61)	// "<0>"
+	{
+	    fprintf(f_cible, "<0>");
+	} else if (val == 0x62)	// "<1>"
+	{
+	    fprintf(f_cible, "<1>");
+	} else if (val == 0x63)	// "<2>"
+	{
+	    fprintf(f_cible, "<2>");
+	} else if (val == 0x64)	// "<3>"
+	{
+	    fprintf(f_cible, "<3>");
+	} else if (val == 0x65)	// "<4>"
+	{
+	    fprintf(f_cible, "<4>");
+	} else if (val == 0x66)	// "<5>"
+	{
+	    fprintf(f_cible, "<5>");
+	} else if (val == 0x67)	// "<6>"
+	{
+	    fprintf(f_cible, "<6>");
+	} else if (val == 0x68)	// "<7>"
+	{
+	    fprintf(f_cible, "<7>");
+	} else if (val == 0x69)	// "<8>"
+	{
+	    fprintf(f_cible, "<8>");
+	} else if (val == 0x6A)	// "<9>"
+	{
+	    fprintf(f_cible, "<9>");
+	} else if (val == 0x6B)	// "<%>"
+	{
+	    fprintf(f_cible, "<%%>");
+	} else if (val == 0x6C)	// "<&>"
+	{
+	    fprintf(f_cible, "<&>");
+	} else if (val == 0x6D)	// "*"
+	{
+	    fprintf(f_cible, "*");
+	} else if (val == 0x6E)	// "<C>"
+	{
+	    fprintf(f_cible, "<C>");
+	} else if (val == 0x6F)	// "<S>"
+	{
+	    fprintf(f_cible, "<S>");
+	} else if (val == 0x70)	// "<T>"
+	{
+	    fprintf(f_cible, "<T>");
+	} else if (val == 0x71)	// "<*>"
+	{
+	    fprintf(f_cible, "<*>");
+	} else if (val == 0x72)	// "<R>"
+	{
+	    fprintf(f_cible, "<R>");
+	} else if (val == 0x73)	// "<L>"
+	{
+	    fprintf(f_cible, "<L>");
+	} else if (val == 0x74)	// "<U>"
+	{
+	    fprintf(f_cible, "<U>");
+	} else if (val == 0x75)	// "<U>"
+	{
+	    fprintf(f_cible, "<D>");
+	} else if (val == 0x76) // "<.>"
+	{
+	    fprintf(f_cible, "<.>");
+	} else if (val == 0x77) // "<:>"
+	{
+	    fprintf(f_cible, "<:>");
+	} else if (val == 0x79) // "</>"
+	{
+	    fprintf(f_cible, "</>");
+	} else if (val == 0x7A) // "<..>"
+	{
+	    fprintf(f_cible, "<..>");
+	} else if (val == 0x7B) // "<`>"
+	{
+	    fprintf(f_cible, "<`>");
+	} else if (val == 0x7D) // "<+>"
+	{
+	    fprintf(f_cible, "<+>");
+	} else if (val == 0x7E) // "<->"
+	{
+	    fprintf(f_cible, "<->");
+	} else if (val == 0x7F)	// "<X>"
+	{
+	    fprintf(f_cible, "<X>");
+	} else if (val == 0x80) // "<[>"
+	{
+	    fprintf(f_cible, "<[>");
+	} else if (val == 0x81)	// "<]>"
+	{
+	    fprintf(f_cible, "<]>");
+	} else if (val == 0x82)	// "<%>"
+	{
+	    fprintf(f_cible, "<%%>");
+	} else if (val == 0x83)	// "<&>"
+	{
+	    fprintf(f_cible, "<&>");
+	} else if (val == 0x84)	// "<(>"
+	{
+	    fprintf(f_cible, "<(>");
+	} else if (val == 0x85)	// "<)>"
+	{
+	    fprintf(f_cible, "<)>");
+	} else if (val == 0x86)	// "<#>"
+	{
+	    fprintf(f_cible, "<#>");
+	} else if (val == 0x87)	// "`"
+	{
+	    fprintf(f_cible, "`");
+	} else if (val == 0x88)	// "�"
+	{
+	    fprintf(f_cible, "�");
+	} else if (val == 0x89)	// "<=>"
+	{
+	    fprintf(f_cible, "<=>");
+	} else if (val == 0x8A)	// "<?>"
+	{
+	    fprintf(f_cible, "<?>");
+	} else if (val == 0x8B)	// "<!>"
+	{
+	    fprintf(f_cible, "<!>");
+	} else if (val == 0x8C)	// "_"
+	{
+	    fprintf(f_cible, "_");
+	} else if (val == 0x8D)	// "~"
+	{
+	    fprintf(f_cible, "~");
+	} else if (val == 0x8E)	// "<...>"
+	{
+	    fprintf(f_cible, "<...>");
+	} else if (val == 0x8F)	// "<'>"
+	{
+	    fprintf(f_cible, "<'>");
+	} else if (val == 0xFE)	// "<Extra1 X>
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fprintf(f_cible, "<Extra1 %d>", temp1);
+	} else if (val == 0xFF)	// "<Extra2 X>
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fprintf(f_cible, "<Extra2 %d>", temp1);
+	} else {
+	    fprintf(f_cible, "<Bare %X>", val);
+	}
+
+	position = ftell(f_source);
+    }
+    fprintf(f_cible, "\n<End_of_block>\n\n");
+}
+
+int decrypt(FILE * f_source, FILE * f_cible, int room_number)
+{
+    long i, j;
+    long table[5000];
+    unsigned char line_table[5000];
+    unsigned char length_table[5000];
+    long script_number = 0;
+    long temp = 0;
+    char temp_char;
+    int counter = 0;
+
+    fread((long *) &script_number, 4, 1, f_source);
+
+    if (script_number == 0x0000FFFF)
+	return (1);
+
+    script_number = (script_number++);
+
+    fprintf(f_cible, "<Blocks:%li>\n", script_number);
+    init_table(table);
+
+    i = j = 0;
+
+    while (i < script_number) {
+	fread((long *) &temp, 2, 1, f_source);
+	if (table[j - 1] != temp)
+	    table[j++] = temp;
+	i++;
+    }
+
+    script_number = j;
+
+    for (i = 0; i < script_number; i++) {
+	fread((unsigned char *) &length_table[i], 1, 1, f_source);
+	fread((unsigned char *) &line_table[i], 1, 1, f_source);
+    }
+
+    fseek(f_source, table[script_number - 1], SEEK_SET);
+
+    do {
+	fread((char *) &temp_char, 1, 1, f_source);
+	counter++;
+    } while (temp_char != 0);
+
+    table[script_number] = ftell(f_source);
+
+    for (i = 0; i < script_number; i++) {
+	dump_text(f_source, f_cible, table, i, script_number, length_table, line_table);
+    }
+
+    return (0);
+}
+
+int startup(void) throw (GeneralException)
+{
+    int i;
+    char file_name[100];
+    FILE *f_source, *f_cible;
+
+    for (i = 0; i < 730; i++) {
+	printf("%d\n", i);
+	sprintf(file_name, "xeno_d1/ROOMS/%04d/script.comp", i);
+	f_source = fopen(file_name, "rb");
+
+	sprintf(file_name, "xeno_d1/ROOMS/%04d/script.txt", i);
+
+	if (f_source != NULL) {
+	    f_cible = fopen(file_name, "w");
+	    decrypt(f_source, f_cible, 5);
+	    fclose(f_source);
+	    fclose(f_cible);
+	}
+    }
+    for (i = 0; i < 730; i++) {
+	printf("%d\n", i);
+	sprintf(file_name, "xeno_d2/ROOMS/%04d/script.comp", i);
+	f_source = fopen(file_name, "rb");
+
+	sprintf(file_name, "xeno_d2/ROOMS/%04d/script.txt", i);
+
+	if (f_source != NULL) {
+	    f_cible = fopen(file_name, "w");
+	    decrypt(f_source, f_cible, 5);
+	    fclose(f_source);
+	    fclose(f_cible);
+	}
+    }
+    
+    return 0;
+}
+CODE_ENDS
diff --git a/Xenogears/Translate.cpp b/Xenogears/Translate.cpp
index 1edef8b..3f85437 100644
--- a/Xenogears/Translate.cpp
+++ b/Xenogears/Translate.cpp
@@ -1,256 +1,256 @@
-#include <stdio.h>
-#include <string.h>
-
-void dump_text(FILE * f_source, FILE * f_cible)
-{
-    unsigned char val;
-    unsigned char temp1 = 0;
-    unsigned char temp2 = 0;
-
-    while (!feof(f_source)) {
-	val = 0;
-
-	fread((unsigned char *) &val, 1, 1, f_source);
-
-	if (val == 0x00)	// "<Close>"
-	{
-//	    break;
-	    fprintf(f_cible, "<EOF>\n");
-	} else if (val == 0x01)	// "\n"
-	{
-	    fprintf(f_cible, "\n");
-	} else if (val == 0x02)	// "<New>"
-	{
-	    fprintf(f_cible, "<New>\n");
-	} else if (val == 0x03)	// "<Wait>"
-	{
-	    fprintf(f_cible, "<Wait>");
-	} else if (val == 0x0F)	// "<Delay X>
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fread((unsigned char *) &temp2, 1, 1, f_source);
-	    if (temp1 == 0) {
-		fprintf(f_cible, "<Delay %d>", temp2);
-	    } else if (temp1 == 5) {
-		fprintf(f_cible, "<Gear %d>", temp2);
-	    } else {
-		fprintf(f_cible, "<Opcode %d %d>", temp1, temp2);
-	    }
-	} else if (val == 0x10)	// " "
-	{
-	    fprintf(f_cible, " ");
-	} else if (val == 0x11)	// "+"
-	{
-	    fprintf(f_cible, "+");
-	} else if (val == 0x12)	// ","
-	{
-	    fprintf(f_cible, ",");
-	} else if (val == 0x13)	// "-"
-	{
-	    fprintf(f_cible, "-");
-	} else if (val == 0x14)	// "."
-	{
-	    fprintf(f_cible, ".");
-	} else if (val == 0x15)	// "/"
-	{
-	    fprintf(f_cible, "/");
-	} else if ((val >= 0x16) && (val <= 0x1F))	// "0-9"
-	{
-	    fprintf(f_cible, "%c", val + 0x1a);
-	} else if ((val >= 0x20) && (val <= 0x39))	// "A-Z"
-	{
-	    fprintf(f_cible, "%c", val + 0x21);
-	} else if (val == 0x3A)	// "["
-	{
-	    fprintf(f_cible, "[");
-	} else if (val == 0x3B)	// "]"
-	{
-	    fprintf(f_cible, "]");
-	} else if (val == 0x3C)	// "="
-	{
-	    fprintf(f_cible, "=");
-	} else if ((val >= 0x3D) && (val <= 0x56))	// "a-z"
-	{
-	    fprintf(f_cible, "%c", val + 0x24);
-	} else if (val == 0x57)	// "!"
-	{
-	    fprintf(f_cible, "!");
-	} else if (val == 0x58)	// "\""
-	{
-	    fprintf(f_cible, "\"");
-	} else if (val == 0x59)	// "#"
-	{
-	    fprintf(f_cible, "#");
-	} else if (val == 0x5A)	// "%"
-	{
-	    fprintf(f_cible, "%%");
-	} else if (val == 0x5B)	// "&"
-	{
-	    fprintf(f_cible, "&");
-	} else if (val == 0x5C)	// "'"
-	{
-	    fprintf(f_cible, "'");
-	} else if (val == 0x5D)	// "("
-	{
-	    fprintf(f_cible, "(");
-	} else if (val == 0x5E)	// ")"
-	{
-	    fprintf(f_cible, ")");
-	} else if (val == 0x5F)	// ":"
-	{
-	    fprintf(f_cible, ":");
-	} else if (val == 0x60)	// "?"
-	{
-	    fprintf(f_cible, "?");
-	} else if (val == 0x61)	// "<0>"
-	{
-	    fprintf(f_cible, "<0>");
-	} else if (val == 0x62)	// "<1>"
-	{
-	    fprintf(f_cible, "<1>");
-	} else if (val == 0x63)	// "<2>"
-	{
-	    fprintf(f_cible, "<2>");
-	} else if (val == 0x64)	// "<3>"
-	{
-	    fprintf(f_cible, "<3>");
-	} else if (val == 0x65)	// "<4>"
-	{
-	    fprintf(f_cible, "<4>");
-	} else if (val == 0x66)	// "<5>"
-	{
-	    fprintf(f_cible, "<5>");
-	} else if (val == 0x67)	// "<6>"
-	{
-	    fprintf(f_cible, "<6>");
-	} else if (val == 0x68)	// "<7>"
-	{
-	    fprintf(f_cible, "<7>");
-	} else if (val == 0x69)	// "<8>"
-	{
-	    fprintf(f_cible, "<8>");
-	} else if (val == 0x6A)	// "<9>"
-	{
-	    fprintf(f_cible, "<9>");
-	} else if (val == 0x6B)	// "<%>"
-	{
-	    fprintf(f_cible, "<%%>");
-	} else if (val == 0x6C)	// "<&>"
-	{
-	    fprintf(f_cible, "<&>");
-	} else if (val == 0x6D)	// "*"
-	{
-	    fprintf(f_cible, "*");
-	} else if (val == 0x6E)	// "<C>"
-	{
-	    fprintf(f_cible, "<C>");
-	} else if (val == 0x6F)	// "<S>"
-	{
-	    fprintf(f_cible, "<S>");
-	} else if (val == 0x70)	// "<T>"
-	{
-	    fprintf(f_cible, "<T>");
-	} else if (val == 0x71)	// "<*>"
-	{
-	    fprintf(f_cible, "<*>");
-	} else if (val == 0x72)	// "<R>"
-	{
-	    fprintf(f_cible, "<R>");
-	} else if (val == 0x73)	// "<L>"
-	{
-	    fprintf(f_cible, "<L>");
-	} else if (val == 0x74)	// "<U>"
-	{
-	    fprintf(f_cible, "<U>");
-	} else if (val == 0x75)	// "<U>"
-	{
-	    fprintf(f_cible, "<D>");
-	} else if (val == 0x76) // "<.>"
-	{
-	    fprintf(f_cible, "<.>");
-	} else if (val == 0x77) // "<:>"
-	{
-	    fprintf(f_cible, "<:>");
-	} else if (val == 0x79) // "</>"
-	{
-	    fprintf(f_cible, "</>");
-	} else if (val == 0x7A) // "<..>"
-	{
-	    fprintf(f_cible, "<..>");
-	} else if (val == 0x7B) // "<`>"
-	{
-	    fprintf(f_cible, "<`>");
-	} else if (val == 0x7D) // "<+>"
-	{
-	    fprintf(f_cible, "<+>");
-	} else if (val == 0x7E) // "<->"
-	{
-	    fprintf(f_cible, "<->");
-	} else if (val == 0x7F)	// "<X>"
-	{
-	    fprintf(f_cible, "<X>");
-	} else if (val == 0x80) // "<[>"
-	{
-	    fprintf(f_cible, "<[>");
-	} else if (val == 0x81)	// "<]>"
-	{
-	    fprintf(f_cible, "<]>");
-	} else if (val == 0x82)	// "<%>"
-	{
-	    fprintf(f_cible, "<%%>");
-	} else if (val == 0x83)	// "<&>"
-	{
-	    fprintf(f_cible, "<&>");
-	} else if (val == 0x84)	// "<(>"
-	{
-	    fprintf(f_cible, "<(>");
-	} else if (val == 0x85)	// "<)>"
-	{
-	    fprintf(f_cible, "<)>");
-	} else if (val == 0x86)	// "<#>"
-	{
-	    fprintf(f_cible, "<#>");
-	} else if (val == 0x87)	// "`"
-	{
-	    fprintf(f_cible, "`");
-	} else if (val == 0x88)	// "�"
-	{
-	    fprintf(f_cible, "�");
-	} else if (val == 0x89)	// "<=>"
-	{
-	    fprintf(f_cible, "<=>");
-	} else if (val == 0x8A)	// "<?>"
-	{
-	    fprintf(f_cible, "<?>");
-	} else if (val == 0x8B)	// "<!>"
-	{
-	    fprintf(f_cible, "<!>");
-	} else if (val == 0x8C)	// "_"
-	{
-	    fprintf(f_cible, "_");
-	} else if (val == 0x8D)	// "~"
-	{
-	    fprintf(f_cible, "~");
-	} else if (val == 0x8E)	// "<...>"
-	{
-	    fprintf(f_cible, "<...>");
-	} else if (val == 0x8F)	// "<'>"
-	{
-	    fprintf(f_cible, "<'>");
-	} else if (val == 0xFE)	// "<Extra1 X>
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fprintf(f_cible, "<Extra1 %d>", temp1);
-	} else if (val == 0xFF)	// "<Extra2 X>
-	{
-	    fread((unsigned char *) &temp1, 1, 1, f_source);
-	    fprintf(f_cible, "<Extra2 %d>", temp1);
-	} else {
-	    fprintf(f_cible, "<Bare %X>", val);
-	}
-    }
-}
-
-int main(void) {
-    dump_text(stdin, stdout);
-}
+#include <stdio.h>
+#include <string.h>
+
+void dump_text(FILE * f_source, FILE * f_cible)
+{
+    unsigned char val;
+    unsigned char temp1 = 0;
+    unsigned char temp2 = 0;
+
+    while (!feof(f_source)) {
+	val = 0;
+
+	fread((unsigned char *) &val, 1, 1, f_source);
+
+	if (val == 0x00)	// "<Close>"
+	{
+//	    break;
+	    fprintf(f_cible, "<EOF>\n");
+	} else if (val == 0x01)	// "\n"
+	{
+	    fprintf(f_cible, "\n");
+	} else if (val == 0x02)	// "<New>"
+	{
+	    fprintf(f_cible, "<New>\n");
+	} else if (val == 0x03)	// "<Wait>"
+	{
+	    fprintf(f_cible, "<Wait>");
+	} else if (val == 0x0F)	// "<Delay X>
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fread((unsigned char *) &temp2, 1, 1, f_source);
+	    if (temp1 == 0) {
+		fprintf(f_cible, "<Delay %d>", temp2);
+	    } else if (temp1 == 5) {
+		fprintf(f_cible, "<Gear %d>", temp2);
+	    } else {
+		fprintf(f_cible, "<Opcode %d %d>", temp1, temp2);
+	    }
+	} else if (val == 0x10)	// " "
+	{
+	    fprintf(f_cible, " ");
+	} else if (val == 0x11)	// "+"
+	{
+	    fprintf(f_cible, "+");
+	} else if (val == 0x12)	// ","
+	{
+	    fprintf(f_cible, ",");
+	} else if (val == 0x13)	// "-"
+	{
+	    fprintf(f_cible, "-");
+	} else if (val == 0x14)	// "."
+	{
+	    fprintf(f_cible, ".");
+	} else if (val == 0x15)	// "/"
+	{
+	    fprintf(f_cible, "/");
+	} else if ((val >= 0x16) && (val <= 0x1F))	// "0-9"
+	{
+	    fprintf(f_cible, "%c", val + 0x1a);
+	} else if ((val >= 0x20) && (val <= 0x39))	// "A-Z"
+	{
+	    fprintf(f_cible, "%c", val + 0x21);
+	} else if (val == 0x3A)	// "["
+	{
+	    fprintf(f_cible, "[");
+	} else if (val == 0x3B)	// "]"
+	{
+	    fprintf(f_cible, "]");
+	} else if (val == 0x3C)	// "="
+	{
+	    fprintf(f_cible, "=");
+	} else if ((val >= 0x3D) && (val <= 0x56))	// "a-z"
+	{
+	    fprintf(f_cible, "%c", val + 0x24);
+	} else if (val == 0x57)	// "!"
+	{
+	    fprintf(f_cible, "!");
+	} else if (val == 0x58)	// "\""
+	{
+	    fprintf(f_cible, "\"");
+	} else if (val == 0x59)	// "#"
+	{
+	    fprintf(f_cible, "#");
+	} else if (val == 0x5A)	// "%"
+	{
+	    fprintf(f_cible, "%%");
+	} else if (val == 0x5B)	// "&"
+	{
+	    fprintf(f_cible, "&");
+	} else if (val == 0x5C)	// "'"
+	{
+	    fprintf(f_cible, "'");
+	} else if (val == 0x5D)	// "("
+	{
+	    fprintf(f_cible, "(");
+	} else if (val == 0x5E)	// ")"
+	{
+	    fprintf(f_cible, ")");
+	} else if (val == 0x5F)	// ":"
+	{
+	    fprintf(f_cible, ":");
+	} else if (val == 0x60)	// "?"
+	{
+	    fprintf(f_cible, "?");
+	} else if (val == 0x61)	// "<0>"
+	{
+	    fprintf(f_cible, "<0>");
+	} else if (val == 0x62)	// "<1>"
+	{
+	    fprintf(f_cible, "<1>");
+	} else if (val == 0x63)	// "<2>"
+	{
+	    fprintf(f_cible, "<2>");
+	} else if (val == 0x64)	// "<3>"
+	{
+	    fprintf(f_cible, "<3>");
+	} else if (val == 0x65)	// "<4>"
+	{
+	    fprintf(f_cible, "<4>");
+	} else if (val == 0x66)	// "<5>"
+	{
+	    fprintf(f_cible, "<5>");
+	} else if (val == 0x67)	// "<6>"
+	{
+	    fprintf(f_cible, "<6>");
+	} else if (val == 0x68)	// "<7>"
+	{
+	    fprintf(f_cible, "<7>");
+	} else if (val == 0x69)	// "<8>"
+	{
+	    fprintf(f_cible, "<8>");
+	} else if (val == 0x6A)	// "<9>"
+	{
+	    fprintf(f_cible, "<9>");
+	} else if (val == 0x6B)	// "<%>"
+	{
+	    fprintf(f_cible, "<%%>");
+	} else if (val == 0x6C)	// "<&>"
+	{
+	    fprintf(f_cible, "<&>");
+	} else if (val == 0x6D)	// "*"
+	{
+	    fprintf(f_cible, "*");
+	} else if (val == 0x6E)	// "<C>"
+	{
+	    fprintf(f_cible, "<C>");
+	} else if (val == 0x6F)	// "<S>"
+	{
+	    fprintf(f_cible, "<S>");
+	} else if (val == 0x70)	// "<T>"
+	{
+	    fprintf(f_cible, "<T>");
+	} else if (val == 0x71)	// "<*>"
+	{
+	    fprintf(f_cible, "<*>");
+	} else if (val == 0x72)	// "<R>"
+	{
+	    fprintf(f_cible, "<R>");
+	} else if (val == 0x73)	// "<L>"
+	{
+	    fprintf(f_cible, "<L>");
+	} else if (val == 0x74)	// "<U>"
+	{
+	    fprintf(f_cible, "<U>");
+	} else if (val == 0x75)	// "<U>"
+	{
+	    fprintf(f_cible, "<D>");
+	} else if (val == 0x76) // "<.>"
+	{
+	    fprintf(f_cible, "<.>");
+	} else if (val == 0x77) // "<:>"
+	{
+	    fprintf(f_cible, "<:>");
+	} else if (val == 0x79) // "</>"
+	{
+	    fprintf(f_cible, "</>");
+	} else if (val == 0x7A) // "<..>"
+	{
+	    fprintf(f_cible, "<..>");
+	} else if (val == 0x7B) // "<`>"
+	{
+	    fprintf(f_cible, "<`>");
+	} else if (val == 0x7D) // "<+>"
+	{
+	    fprintf(f_cible, "<+>");
+	} else if (val == 0x7E) // "<->"
+	{
+	    fprintf(f_cible, "<->");
+	} else if (val == 0x7F)	// "<X>"
+	{
+	    fprintf(f_cible, "<X>");
+	} else if (val == 0x80) // "<[>"
+	{
+	    fprintf(f_cible, "<[>");
+	} else if (val == 0x81)	// "<]>"
+	{
+	    fprintf(f_cible, "<]>");
+	} else if (val == 0x82)	// "<%>"
+	{
+	    fprintf(f_cible, "<%%>");
+	} else if (val == 0x83)	// "<&>"
+	{
+	    fprintf(f_cible, "<&>");
+	} else if (val == 0x84)	// "<(>"
+	{
+	    fprintf(f_cible, "<(>");
+	} else if (val == 0x85)	// "<)>"
+	{
+	    fprintf(f_cible, "<)>");
+	} else if (val == 0x86)	// "<#>"
+	{
+	    fprintf(f_cible, "<#>");
+	} else if (val == 0x87)	// "`"
+	{
+	    fprintf(f_cible, "`");
+	} else if (val == 0x88)	// "�"
+	{
+	    fprintf(f_cible, "�");
+	} else if (val == 0x89)	// "<=>"
+	{
+	    fprintf(f_cible, "<=>");
+	} else if (val == 0x8A)	// "<?>"
+	{
+	    fprintf(f_cible, "<?>");
+	} else if (val == 0x8B)	// "<!>"
+	{
+	    fprintf(f_cible, "<!>");
+	} else if (val == 0x8C)	// "_"
+	{
+	    fprintf(f_cible, "_");
+	} else if (val == 0x8D)	// "~"
+	{
+	    fprintf(f_cible, "~");
+	} else if (val == 0x8E)	// "<...>"
+	{
+	    fprintf(f_cible, "<...>");
+	} else if (val == 0x8F)	// "<'>"
+	{
+	    fprintf(f_cible, "<'>");
+	} else if (val == 0xFE)	// "<Extra1 X>
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fprintf(f_cible, "<Extra1 %d>", temp1);
+	} else if (val == 0xFF)	// "<Extra2 X>
+	{
+	    fread((unsigned char *) &temp1, 1, 1, f_source);
+	    fprintf(f_cible, "<Extra2 %d>", temp1);
+	} else {
+	    fprintf(f_cible, "<Bare %X>", val);
+	}
+    }
+}
+
+int main(void) {
+    dump_text(stdin, stdout);
+}
diff --git a/Xenogears/archive.cpp b/Xenogears/archive.cpp
index 286fa43..6701c2c 100644
--- a/Xenogears/archive.cpp
+++ b/Xenogears/archive.cpp
@@ -1,37 +1,37 @@
-#include <stdio.h>
-#include <values.h>
-#include <stdlib.h>
-#include "fileutils.h"
-
-void dearchive(FILE * f) {
-    long nb;
-    long * address;
-    char fname[100];
-    int i;
-    FILE * f_out;
-    
-    fread(&nb, 4, 1, f);
-    nb++;
-    fprintf(stderr, "Reading index... (%li elements)\n", nb);
-    
-    address = (long *) malloc(nb * sizeof(long) + 1);
-    
-    for (i = 0; i < nb; i++) {
-	fread(address + i, 4, 1, f);
-    }
-    address[nb] = MAXINT;
-    
-    for (i = 0; i < nb; i++) {
-	fprintf(stderr, "Dumping file %i\n", i);
-	sprintf(fname, "part-%i.lz", i);
-	f_out = fopen(fname, "wb");
-	copy(fileno(f), fileno(f_out), address[i + 1] - address[i]);
-	fclose(f_out);
-    }
-    
-    free(address);
-}
-
-int main(void) {
-    dearchive(stdin);
-}
+#include <stdio.h>
+#include <values.h>
+#include <stdlib.h>
+#include "fileutils.h"
+
+void dearchive(FILE * f) {
+    long nb;
+    long * address;
+    char fname[100];
+    int i;
+    FILE * f_out;
+    
+    fread(&nb, 4, 1, f);
+    nb++;
+    fprintf(stderr, "Reading index... (%li elements)\n", nb);
+    
+    address = (long *) malloc(nb * sizeof(long) + 1);
+    
+    for (i = 0; i < nb; i++) {
+	fread(address + i, 4, 1, f);
+    }
+    address[nb] = MAXINT;
+    
+    for (i = 0; i < nb; i++) {
+	fprintf(stderr, "Dumping file %i\n", i);
+	sprintf(fname, "part-%i.lz", i);
+	f_out = fopen(fname, "wb");
+	copy(fileno(f), fileno(f_out), address[i + 1] - address[i]);
+	fclose(f_out);
+    }
+    
+    free(address);
+}
+
+int main(void) {
+    dearchive(stdin);
+}
diff --git a/Xenogears/build-sector-2.cpp b/Xenogears/build-sector-2.cpp
index 1b1be62..6ab7835 100644
--- a/Xenogears/build-sector-2.cpp
+++ b/Xenogears/build-sector-2.cpp
@@ -1,14 +1,14 @@
-#include <stdio.h>
-#include "yazedc.h"
-
-int main(void) {
-    unsigned char datas[2352];
-    
-    fread(datas, 2352, 1, stdin);
-    minute = datas[12];
-    second = datas[13];
-    frame = datas[14];
-    fprintf(stderr, "Sector info: %2i:%02i:%04i\n", minute, second, frame);
-    do_encode_L2(datas, MODE_2, 0);
-    fwrite(datas, 2352, 1, stdout);
-}
+#include <stdio.h>
+#include "yazedc.h"
+
+int main(void) {
+    unsigned char datas[2352];
+    
+    fread(datas, 2352, 1, stdin);
+    minute = datas[12];
+    second = datas[13];
+    frame = datas[14];
+    fprintf(stderr, "Sector info: %2i:%02i:%04i\n", minute, second, frame);
+    do_encode_L2(datas, MODE_2, 0);
+    fwrite(datas, 2352, 1, stdout);
+}
diff --git a/Xenogears/build-sector.cpp b/Xenogears/build-sector.cpp
index 744a087..3effc35 100644
--- a/Xenogears/build-sector.cpp
+++ b/Xenogears/build-sector.cpp
@@ -1,14 +1,14 @@
-#include <stdio.h>
-#include "yazedc.h"
-
-int main(void) {
-    unsigned char datas[2352];
-    
-    fread(datas, 2352, 1, stdin);
-    minute = datas[12];
-    second = datas[13];
-    frame = datas[14];
-    fprintf(stderr, "Sector info: %2i:%02i:%04i\n", minute, second, frame);
-    do_encode_L2(datas, MODE_2_FORM_1, 0);
-    fwrite(datas, 2352, 1, stdout);
-}
+#include <stdio.h>
+#include "yazedc.h"
+
+int main(void) {
+    unsigned char datas[2352];
+    
+    fread(datas, 2352, 1, stdin);
+    minute = datas[12];
+    second = datas[13];
+    frame = datas[14];
+    fprintf(stderr, "Sector info: %2i:%02i:%04i\n", minute, second, frame);
+    do_encode_L2(datas, MODE_2_FORM_1, 0);
+    fwrite(datas, 2352, 1, stdout);
+}
diff --git a/Xenogears/main_dump.cpp b/Xenogears/main_dump.cpp
index e2f5058..1610ec1 100644
--- a/Xenogears/main_dump.cpp
+++ b/Xenogears/main_dump.cpp
@@ -1,283 +1,283 @@
-/*
- * Xenogears extractor by Nicolas "Pixel" Noble (nicolas@nobis-crew.org)
- * Highly based upon Yazoo's Chrono Cross CD extractor
- * 
- * ******** Original disclaimer by Yazoo ********
- * 
- * Chrono Cross CD extractor Copyright 2000-2001 by Yazoo (hamm@efrei.fr) Revision 0.1b ANSI C
- * 
- * 
- * Features:
- * 
- * Dump the complete content of Chrono Chross CD1/CD2 US and Japanese version It requires a iso
- * named Chrono1.iso in the same directory
- * 
- * Todo list:
- * 
- * Find a way to locate end of the last file Better support for CD2 Dump in subdirectory according
- * to CD1/CD2 repartition Recompilation in Visual C++ 6 for disk speed optimisation Source comment
- * and reorganisation Log feature (Optional since you can redirect output with > ) Progression
- * indicator Better detection of the ISO with error control Major code optimisation Integration in
- * main Chrono Cross Hacking tool
- * 
- * ******** End of original disclaimer by Yazoo ********
- * 
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "cdutils.h"
-#include "generic.h"
-#include "Input.h"
-#include "Output.h"
-#include "Main.h"
-#include "cdabstract.h"
-
-CODE_BEGINS
-public:
-Appli() : tourne(0), nb_seqs(0), f_def(0), f_iso(0), cdutil(0) {}
-virtual ~Appli() {
-    delete cdutil;
-    delete f_def;
-    delete f_iso;
-    delete f_out;
-}
-private:
-
-unsigned int tourne;
-
-struct t_index_tab {
-    unsigned long address;
-    long size;
-    long type;
-    long index;
-};
-
-struct t_sequence {
-    unsigned int n;
-    unsigned int sum;
-    String prefix;
-    String name;
-    int type;
-};
-
-String title, iso_filename, prefix;
-unsigned long iso_size;
-unsigned int nb_records, nb_seqs;
-struct t_sequence sequences[100];
-Handle * f_def, * f_iso, * f_out;
-
-cdutils * cdutil;
-
-Byte user_data[2352];
-
-virtual int startup() throw (GeneralException)
-{
-    
-    verbosity = 3;
-    
-    printm(M_BARE, 
-"Xenogears File Extractor by Nicolas \"Pixel\" Noble\n"
-"Highly based upon the Chrono Cross File Extractor By Yazoo\n\n");
-
-    if (argc != 3) {
-	printm(M_BARE, "Usage: %s <definition_file.sqr> <iso_file_name>\nSee readme.txt for details\n",
-	       argv[0]);
-	exit(-1);
-    }
-
-    printm(M_STATUS, "Processing file %s...\n", argv[1]);
-
-    f_def = new Input(argv[1]);
-
-    if (process_def_file()) {
-	printm(M_ERROR, "Unable to process the definition file \"%s\"...\n", argv[1]);
-	exit(-1);
-    }
-
-    iso_filename = argv[2];
-
-    printm(M_STATUS, "Begin processing iso file.\n");
-    f_iso = cdabstract::open_cd(iso_filename);
-
-    if (check_iso()) {
-	printm(M_ERROR, "Invalid iso file for " + title + "\n");
-	printm(M_ERROR, "===> Make sure you are using a Genuine iso file.\n");
-    } else {
-	printm(M_INFO, "Genuine " + title + " iso detected.\n");
-    }
-    
-    cdutil = new cdutils(f_iso);
-    
-    printm(M_STATUS, "Entering files read sequence\n");
-    read_files();
-    return 0;
-}
-
-/*
- * Ugly but working... for now 
- */
-int process_def_file()
-{
-    String t;
-    unsigned int n, sum = 0;
-
-    *f_def >> t;
-    printm(M_INFO, "Read title: " + t + "\n");
-    title = t;
-
-    *f_def >> t;
-    iso_size = t.to_int();
-    printm(M_INFO, "Read iso size: %lu bytes\n", iso_size);
-
-    *f_def >> t;
-    printm(M_INFO, "Read global directory prefix: " + t + "\n");
-    prefix = t;
-
-    *f_def >> t;
-    nb_records = t.to_int();
-    printm(M_INFO, "Read total of records: %u\n", nb_records);
-
-    while (1) {
-	*f_def >> t;
-	n = t.to_int();
-	if (!n) {
-	    if (sum == nb_records) {
-		printm(M_INFO, "Definition file seems coherent\n");
-		return 0;
-	    } else {
-		printm(M_ERROR, "Definition file incoherent\n");
-		return 1;
-	    }
-	}
-	sum += n;
-	sequences[nb_seqs].n = n;
-	sequences[nb_seqs].sum = sum;
-	*f_def >> t;
-	sequences[nb_seqs].prefix = t;
-	*f_def >> t;
-	n = t.to_int();
-	sequences[nb_seqs].type = n;
-	*f_def >> t;
-	sequences[nb_seqs].name = t;
-	printm(M_INFO, "Read definition of sequence %i:\n===> %5i (sum = %5i) chunks of " + t +
-	               " (" + sequences[nb_seqs].prefix + ")\n", nb_seqs, n, sum);
-	nb_seqs++;
-    }
-}
-
-long check_iso()
-{
-    unsigned long length;
-
-    length = f_iso->GetSize();
-    if (length < 0) {
-	printm(M_INFO, "Can not get file size, assuming reading from CD.\n");
-    } else {
-	printm(M_INFO, "Filesize of iso file " + iso_filename + " is %ld bytes\n", length);
-	if (length != iso_size) {
-	    return 1;
-	}
-    }
-    return 0;
-}
-
-void read_files()
-{
-    t_index_tab index_tab[10000];
-    unsigned char t[8];
-    unsigned long i;
-    unsigned long j;
-    unsigned int seq = 0;
-    unsigned long indexer;
-    struct t_index_tab *p = (struct t_index_tab *) t;
-
-    Byte fat[32768];
-
-#define INDEXPOS 24
-
-    cdutil->sector_seek(INDEXPOS);
-    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
-	printm(M_INFO, "Reading fat sector %lu\n", i);
-	cdutil->read_sector(&fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
-    }
-
-    indexer = 0;
-    for (j = 0; j < 32768; j = j + 7) {
-	t[0] = 0;
-	bcopy((char *) &fat[j], (char *) t + 1, 7);
-	p->address >>= 8;
-	index_tab[indexer] = *p;
-	if (p->size > 0 && p->address != 0) {
-	    index_tab[indexer].index = j / 7;
-	    printm(M_INFO, "Found a quite valid index: number %4lu, address %6lu, size %3li\n",
-		   indexer, index_tab[indexer].address, index_tab[indexer].size);
-	    indexer++;
-	    if (indexer == nb_records)
-		break;
-	} else {
-	    printm(M_WARNING, "Ignored invalid index chunk number %4lu (size = %lu) (%02x %02x %02x %02x %02x %02x %02x)\n",
-		 j / 7, -index_tab[indexer].size, t[0], t[1], t[2], t[4], t[5], t[6], t[7]);
-	}
-    }
-    printm(M_STATUS, "Index file generation complete.\n\n");
-
-    for (i = 0; i < nb_records; i++) {
-	if (sequences[seq].sum == i)
-	    seq++;
-	index_tab[i].type = sequences[seq].type;
-	if (sequences[seq].type == 0) {
-	    printm(M_INFO, "%6lu (%10lu): ignored\n", index_tab[i].address, index_tab[i].size);
-	} else {
-	    printm(M_INFO, "%6lu (%10lu): ", index_tab[i].address, index_tab[i].size);
-	    file_dump(index_tab[i].address, index_tab[i].size, i, seq);
-	    if (verbosity >= M_INFO) {
-		fprintf(stderr, "\n");
-	    }
-	}
-    }
-    fprintf(stderr, "\n");
-}
-
-void file_dump(unsigned long debut, unsigned long taille, long num, int seq)
-{
-    long i;
-    long nbsects;
-    String nom;
-    String extension = ".out";
-    String nom_t;
-    char type = sequences[seq].type;
-    char ptitbidule[] = "-\\|/";
-    
-    nom_t.set("%04ld", num);
-
-    nom = "./" + prefix + "/";
-
-    MKDIR(nom.to_charp());
-
-    nom += sequences[seq].prefix + "/";
-    MKDIR(nom.to_charp());
-
-    nom += nom_t + extension;;
-
-    f_out = new Output(nom);
-    nbsects = taille / sec_sizes[type];
-    if (taille % sec_sizes[type])
-	nbsects++;
-    cdutil->sector_seek(debut);
-    for (i = 0; i < nbsects; i++) {
-	if (verbosity < M_INFO) 
-	    fprintf(stderr, "  (%c)\010\010\010\010\010", ptitbidule[((tourne++) >> 8) % 4]);
-	cdutil->read_sector(user_data, type);
-	if (i != (nbsects - 1)) {
-	    f_out->write(user_data, sec_sizes[type]);
-	} else {
-	    f_out->write(user_data, taille % sec_sizes[type] ? taille % sec_sizes[type] : sec_sizes[type]);
-	}
-    }
-    delete f_out;
-    f_out = 0;
-    printm(M_BARE, "  (*) Dumped file number %4ld - type \"" + sequences[seq].name + "\"           \r", num);
-}
-CODE_ENDS
+/*
+ * Xenogears extractor by Nicolas "Pixel" Noble (nicolas@nobis-crew.org)
+ * Highly based upon Yazoo's Chrono Cross CD extractor
+ * 
+ * ******** Original disclaimer by Yazoo ********
+ * 
+ * Chrono Cross CD extractor Copyright 2000-2001 by Yazoo (hamm@efrei.fr) Revision 0.1b ANSI C
+ * 
+ * 
+ * Features:
+ * 
+ * Dump the complete content of Chrono Chross CD1/CD2 US and Japanese version It requires a iso
+ * named Chrono1.iso in the same directory
+ * 
+ * Todo list:
+ * 
+ * Find a way to locate end of the last file Better support for CD2 Dump in subdirectory according
+ * to CD1/CD2 repartition Recompilation in Visual C++ 6 for disk speed optimisation Source comment
+ * and reorganisation Log feature (Optional since you can redirect output with > ) Progression
+ * indicator Better detection of the ISO with error control Major code optimisation Integration in
+ * main Chrono Cross Hacking tool
+ * 
+ * ******** End of original disclaimer by Yazoo ********
+ * 
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "cdutils.h"
+#include "generic.h"
+#include "Input.h"
+#include "Output.h"
+#include "Main.h"
+#include "cdabstract.h"
+
+CODE_BEGINS
+public:
+Appli() : tourne(0), nb_seqs(0), f_def(0), f_iso(0), cdutil(0) {}
+virtual ~Appli() {
+    delete cdutil;
+    delete f_def;
+    delete f_iso;
+    delete f_out;
+}
+private:
+
+unsigned int tourne;
+
+struct t_index_tab {
+    unsigned long address;
+    long size;
+    long type;
+    long index;
+};
+
+struct t_sequence {
+    unsigned int n;
+    unsigned int sum;
+    String prefix;
+    String name;
+    int type;
+};
+
+String title, iso_filename, prefix;
+unsigned long iso_size;
+unsigned int nb_records, nb_seqs;
+struct t_sequence sequences[100];
+Handle * f_def, * f_iso, * f_out;
+
+cdutils * cdutil;
+
+Byte user_data[2352];
+
+virtual int startup() throw (GeneralException)
+{
+    
+    verbosity = 3;
+    
+    printm(M_BARE, 
+"Xenogears File Extractor by Nicolas \"Pixel\" Noble\n"
+"Highly based upon the Chrono Cross File Extractor By Yazoo\n\n");
+
+    if (argc != 3) {
+	printm(M_BARE, "Usage: %s <definition_file.sqr> <iso_file_name>\nSee readme.txt for details\n",
+	       argv[0]);
+	exit(-1);
+    }
+
+    printm(M_STATUS, "Processing file %s...\n", argv[1]);
+
+    f_def = new Input(argv[1]);
+
+    if (process_def_file()) {
+	printm(M_ERROR, "Unable to process the definition file \"%s\"...\n", argv[1]);
+	exit(-1);
+    }
+
+    iso_filename = argv[2];
+
+    printm(M_STATUS, "Begin processing iso file.\n");
+    f_iso = cdabstract::open_cd(iso_filename);
+
+    if (check_iso()) {
+	printm(M_ERROR, "Invalid iso file for " + title + "\n");
+	printm(M_ERROR, "===> Make sure you are using a Genuine iso file.\n");
+    } else {
+	printm(M_INFO, "Genuine " + title + " iso detected.\n");
+    }
+    
+    cdutil = new cdutils(f_iso);
+    
+    printm(M_STATUS, "Entering files read sequence\n");
+    read_files();
+    return 0;
+}
+
+/*
+ * Ugly but working... for now 
+ */
+int process_def_file()
+{
+    String t;
+    unsigned int n, sum = 0;
+
+    *f_def >> t;
+    printm(M_INFO, "Read title: " + t + "\n");
+    title = t;
+
+    *f_def >> t;
+    iso_size = t.to_int();
+    printm(M_INFO, "Read iso size: %lu bytes\n", iso_size);
+
+    *f_def >> t;
+    printm(M_INFO, "Read global directory prefix: " + t + "\n");
+    prefix = t;
+
+    *f_def >> t;
+    nb_records = t.to_int();
+    printm(M_INFO, "Read total of records: %u\n", nb_records);
+
+    while (1) {
+	*f_def >> t;
+	n = t.to_int();
+	if (!n) {
+	    if (sum == nb_records) {
+		printm(M_INFO, "Definition file seems coherent\n");
+		return 0;
+	    } else {
+		printm(M_ERROR, "Definition file incoherent\n");
+		return 1;
+	    }
+	}
+	sum += n;
+	sequences[nb_seqs].n = n;
+	sequences[nb_seqs].sum = sum;
+	*f_def >> t;
+	sequences[nb_seqs].prefix = t;
+	*f_def >> t;
+	n = t.to_int();
+	sequences[nb_seqs].type = n;
+	*f_def >> t;
+	sequences[nb_seqs].name = t;
+	printm(M_INFO, "Read definition of sequence %i:\n===> %5i (sum = %5i) chunks of " + t +
+	               " (" + sequences[nb_seqs].prefix + ")\n", nb_seqs, n, sum);
+	nb_seqs++;
+    }
+}
+
+long check_iso()
+{
+    unsigned long length;
+
+    length = f_iso->GetSize();
+    if (length < 0) {
+	printm(M_INFO, "Can not get file size, assuming reading from CD.\n");
+    } else {
+	printm(M_INFO, "Filesize of iso file " + iso_filename + " is %ld bytes\n", length);
+	if (length != iso_size) {
+	    return 1;
+	}
+    }
+    return 0;
+}
+
+void read_files()
+{
+    t_index_tab index_tab[10000];
+    unsigned char t[8];
+    unsigned long i;
+    unsigned long j;
+    unsigned int seq = 0;
+    unsigned long indexer;
+    struct t_index_tab *p = (struct t_index_tab *) t;
+
+    Byte fat[32768];
+
+#define INDEXPOS 24
+
+    cdutil->sector_seek(INDEXPOS);
+    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
+	printm(M_INFO, "Reading fat sector %lu\n", i);
+	cdutil->read_sector(&fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
+    }
+
+    indexer = 0;
+    for (j = 0; j < 32768; j = j + 7) {
+	t[0] = 0;
+	bcopy((char *) &fat[j], (char *) t + 1, 7);
+	p->address >>= 8;
+	index_tab[indexer] = *p;
+	if (p->size > 0 && p->address != 0) {
+	    index_tab[indexer].index = j / 7;
+	    printm(M_INFO, "Found a quite valid index: number %4lu, address %6lu, size %3li\n",
+		   indexer, index_tab[indexer].address, index_tab[indexer].size);
+	    indexer++;
+	    if (indexer == nb_records)
+		break;
+	} else {
+	    printm(M_WARNING, "Ignored invalid index chunk number %4lu (size = %lu) (%02x %02x %02x %02x %02x %02x %02x)\n",
+		 j / 7, -index_tab[indexer].size, t[0], t[1], t[2], t[4], t[5], t[6], t[7]);
+	}
+    }
+    printm(M_STATUS, "Index file generation complete.\n\n");
+
+    for (i = 0; i < nb_records; i++) {
+	if (sequences[seq].sum == i)
+	    seq++;
+	index_tab[i].type = sequences[seq].type;
+	if (sequences[seq].type == 0) {
+	    printm(M_INFO, "%6lu (%10lu): ignored\n", index_tab[i].address, index_tab[i].size);
+	} else {
+	    printm(M_INFO, "%6lu (%10lu): ", index_tab[i].address, index_tab[i].size);
+	    file_dump(index_tab[i].address, index_tab[i].size, i, seq);
+	    if (verbosity >= M_INFO) {
+		fprintf(stderr, "\n");
+	    }
+	}
+    }
+    fprintf(stderr, "\n");
+}
+
+void file_dump(unsigned long debut, unsigned long taille, long num, int seq)
+{
+    long i;
+    long nbsects;
+    String nom;
+    String extension = ".out";
+    String nom_t;
+    char type = sequences[seq].type;
+    char ptitbidule[] = "-\\|/";
+    
+    nom_t.set("%04ld", num);
+
+    nom = "./" + prefix + "/";
+
+    MKDIR(nom.to_charp());
+
+    nom += sequences[seq].prefix + "/";
+    MKDIR(nom.to_charp());
+
+    nom += nom_t + extension;;
+
+    f_out = new Output(nom);
+    nbsects = taille / sec_sizes[type];
+    if (taille % sec_sizes[type])
+	nbsects++;
+    cdutil->sector_seek(debut);
+    for (i = 0; i < nbsects; i++) {
+	if (verbosity < M_INFO) 
+	    fprintf(stderr, "  (%c)\010\010\010\010\010", ptitbidule[((tourne++) >> 8) % 4]);
+	cdutil->read_sector(user_data, type);
+	if (i != (nbsects - 1)) {
+	    f_out->write(user_data, sec_sizes[type]);
+	} else {
+	    f_out->write(user_data, taille % sec_sizes[type] ? taille % sec_sizes[type] : sec_sizes[type]);
+	}
+    }
+    delete f_out;
+    f_out = 0;
+    printm(M_BARE, "  (*) Dumped file number %4ld - type \"" + sequences[seq].name + "\"           \r", num);
+}
+CODE_ENDS
diff --git a/Xenogears/reinsert.cpp b/Xenogears/reinsert.cpp
index fb7460e..bf60cb4 100644
--- a/Xenogears/reinsert.cpp
+++ b/Xenogears/reinsert.cpp
@@ -1,290 +1,290 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "cdutils.h"
-#include "generic.h"
-#include "Input.h"
-#include "Output.h"
-#include "Main.h"
-
-CODE_BEGINS
-public:
-Appli() : tourne(0), nb_seqs(0), f_def(0), f_iso_r(0), f_iso_w(0), f_in(0), cdutil(0), slus_index(-1), force(0) {}
-virtual ~Appli() {
-    delete cdutil;
-    delete f_def;
-    delete f_iso_r;
-    delete f_iso_w;
-    delete f_in;
-}
-private:
-
-unsigned int tourne;
-
-struct t_index_tab {
-    unsigned long address;
-    long size;
-    long type;
-    long index;
-};
-
-struct t_sequence {
-    unsigned int n;
-    unsigned int sum;
-    String prefix;
-    String name;
-    int type;
-};
-
-String title, iso_filename, prefix, in_filename;
-unsigned long iso_size;
-unsigned int nb_records, nb_seqs;
-struct t_sequence sequences[1000];
-Handle * f_def, * f_iso_r, * f_iso_w, * f_in;
-cdutils * cdutil;
-
-int slus_index, force;
-
-unsigned char user_data[2352];
-
-void usage() throw (GeneralException) {
-	printm(M_BARE, "Usage: %s <definition_file.sqr> <iso_file_name> <file_index> <filename> [-f]\nSee readme.txt for details\n",
-	       argv[0]);
-	throw Exit(-1);
-}
-
-virtual int startup() throw (GeneralException)
-{
-    int fileindex;
-    
-    verbosity = 1;
-    
-    printm(M_BARE, "Xenogears File Insertor by Nicolas \"Pixel\" Noble\n\n");
-
-    if ((argc != 5) && (argc != 6)) {
-	usage();
-    }
-    
-    if (argc == 6) {
-	if (strcmp(argv[5], "-f")) {
-	    usage();
-	} else {
-	    force = 1;
-	}
-    }
-
-    printm(M_STATUS, "Processing file %s...\n", argv[1]);
-
-    f_def = new Input(argv[1]);
-
-    if (process_def_file(f_def)) {
-	printm(M_ERROR, "Unable to process the definition file \"%s\"...\n", argv[1]);
-	throw Exit(-1);
-    }
-
-    iso_filename = argv[2];
-
-    printm(M_STATUS, "Begin processing iso file.\n");
-    f_iso_r = new Input(iso_filename);
-    f_iso_w = new Output(iso_filename, 0, 0);
-    f_iso_w->seek(0, SEEK_SET);
-    
-    cdutil = new cdutils(f_iso_r, f_iso_w);
-    
-    if (check_iso()) {
-	printm(M_ERROR, "Invalid iso file for " + title + "\n");
-	printm(M_ERROR, "===> Make sure you are using a Genuine iso file.\n");
-	throw Exit(-1);
-    } else {
-	printm(M_INFO, "Genuine " + title + " iso detected.\n");
-    }
-
-    fileindex = atoi(argv[3]);
-    in_filename = argv[4];
-    f_in = new Input(in_filename);
-
-    printm(M_STATUS, "Entering files write sequence\n");
-    write_files(fileindex);
-    return 0;
-}
-
-/*
- * Ugly but working... for now 
- */
-int process_def_file(Handle * f_def)
-{
-    unsigned int n, sum = 0;
-    String t;
-
-    *f_def >> t;
-    printm(M_INFO, "Read title: " + t + "\n");
-    title = t;
-
-    *f_def >> t;
-    iso_size = t.to_int();
-    printm(M_INFO, "Read iso size: %lu bytes\n", iso_size);
-
-    *f_def >> t;
-    printm(M_INFO, "Read global directory prefix: " + t + "\n");
-    prefix = t;
-
-    *f_def >> t;
-    nb_records = t.to_int();
-    printm(M_INFO, "Read total of records: %u\n", nb_records);
-
-    while (1) {
-	*f_def >> t;
-	n = t.to_int();
-	if (!n) {
-	    if (sum == nb_records) {
-		printm(M_INFO, "Definition file seems coherent\n");
-		return 0;
-	    } else {
-		printm(M_ERROR, "Definition file incoherent\n");
-		return 1;
-	    }
-	}
-	sum += n;
-	sequences[nb_seqs].n = n;
-	sequences[nb_seqs].sum = sum;
-	*f_def >> t;
-	sequences[nb_seqs].prefix = t;
-	*f_def >> t;
-	n = t.to_int();
-	sequences[nb_seqs].type = n;
-	*f_def >> t;
-	sequences[nb_seqs].name = t;
-	printm(M_INFO, "Read definition of sequence %i:\n===> %5i (sum = %5i) chunks of " + t +
-		       " (" + sequences[nb_seqs].prefix + ")\n", nb_seqs, n, sum);
-	nb_seqs++;
-    }
-}
-
-long check_iso()
-{
-    unsigned long length;
-
-    length = f_iso_r->GetSize();
-    printm(M_INFO, "Filesize of iso file " + iso_filename + " is %ld bytes\n", length);
-    if (length != iso_size) {
-	return 1;
-    }
-    return 0;
-}
-
-#define INDEXPOS 24
-
-void rewrite_fat(Byte * new_fat) {
-    unsigned char old_fat[34816];
-    int i;
-
-    cdutil->sector_seek(INDEXPOS);
-    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
-	printm(M_INFO, "Writing fat sector %lu\n", i);
-	cdutil->write_sector(&new_fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
-    }
-
-    cdutil->sector_seek(slus_index + 1);
-    for (i = slus_index + 1; i < (slus_index + 18); i++) {
-	printm(M_INFO, "Reading SLUS sector %lu\n", i);
-	cdutil->read_sector(&old_fat[2048 * (i - slus_index - 1)], MODE_2_FORM_1);
-    }
-
-    bcopy((char *) new_fat, (char *) old_fat + 4, 32768);
-    cdutil->sector_seek(slus_index + 1);
-    for (i = slus_index + 1; i < (slus_index + 18); i++) {
-	printm(M_INFO, "Writing SLUS sector %lu\n", i);
-	cdutil->write_sector(&old_fat[2048 * (i - slus_index - 1)], MODE_2_FORM_1);
-    }
-}
-
-void write_files(int fileindex) throw (GeneralException)
-{
-    t_index_tab index_tab[10000];
-    unsigned char t[8];
-    unsigned long i;
-    unsigned long j;
-    unsigned int seq = 0;
-    unsigned long indexer;
-    struct t_index_tab *p = (struct t_index_tab *) t;
-    
-    long old_file_size, new_file_size, old_nb_sects, new_nb_sects;
-    unsigned char fat[32768];
-
-    cdutil->sector_seek(INDEXPOS);
-    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
-	printm(M_INFO, "Reading fat sector %lu\n", i);
-	cdutil->read_sector(&fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
-    }
-
-    indexer = 0;
-    for (j = 0; j < 32768; j = j + 7) {
-	t[0] = 0;
-	bcopy((char *) &fat[j], (char *) t + 1, 7);
-	p->address >>= 8;
-	index_tab[indexer] = *p;
-	if (p->size > 0 && p->address != 0) {
-	    index_tab[indexer].index = j / 7;
-	    printm(M_INFO, "Found a quite valid index: number %4lu, address %6lu, size %3li\n",
-		   indexer, index_tab[indexer].address, index_tab[indexer].size);
-	    indexer++;
-	    if (indexer == nb_records)
-		break;
-	} else {
-	    printm(M_WARNING, "Ignored invalid index chunk number %4lu (size = %lu) (%02x %02x %02x %02x %02x %02x %02x)\n",
-		 j / 7, -index_tab[indexer].size, t[0], t[1], t[2], t[4], t[5], t[6], t[7]);
-	}
-    }
-    printm(M_STATUS, "Index file generation complete.\n\n");
-
-    for (i = 0; i < nb_records; i++) {
-	if (sequences[seq].sum == i)
-	    seq++;
-	index_tab[i].type = sequences[seq].type;
-	if (sequences[seq].prefix == "SLUS") {
-	    if (slus_index >= 0) {
-		printm(M_ERROR, "Two SLUS files defined\n");
-		throw Exit(-1);
-	    }
-	    slus_index = index_tab[i].address;
-	}
-    }
-    
-    if (slus_index < 0) {
-	printm(M_ERROR, "No SLUS file defined\n");
-	throw Exit(-1);
-    }
-    
-    printm(M_INFO, "SLUS file found at sector %6i\n", slus_index);
-    
-    new_file_size = f_in->GetSize();
-    old_file_size = index_tab[fileindex].size;
-    
-    new_nb_sects = new_file_size / sec_sizes[index_tab[fileindex].type];
-    old_nb_sects = old_file_size / sec_sizes[index_tab[fileindex].type];
-    
-    if (new_file_size % sec_sizes[index_tab[fileindex].type]) {
-	new_nb_sects++;
-    }
-    
-    if (old_file_size % sec_sizes[index_tab[fileindex].type]) {
-	old_nb_sects++;
-    }
-    
-    if (new_nb_sects > old_nb_sects) {
-	printm(M_ERROR, "New file too big.\n");
-	if (!force) {
-	    throw Exit(-1);
-	}
-    }
-    
-    printm(M_INFO, "New file size:  %12li, old file size:  %12li\n", new_file_size, old_file_size);
-    printm(M_INFO, "New file ssize: %12li, old file ssize: %12li\n", new_nb_sects, old_nb_sects);
-    
-    printm(M_INFO, "File address: %6i\n", index_tab[fileindex].address);
-    
-    cdutil->write_file(f_in, index_tab[fileindex].type, index_tab[fileindex].address);
-    *((long *)(&fat[index_tab[fileindex].index * 7 + 3])) = new_file_size;
-    rewrite_fat(fat);
-}
-CODE_ENDS
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "cdutils.h"
+#include "generic.h"
+#include "Input.h"
+#include "Output.h"
+#include "Main.h"
+
+CODE_BEGINS
+public:
+Appli() : tourne(0), nb_seqs(0), f_def(0), f_iso_r(0), f_iso_w(0), f_in(0), cdutil(0), slus_index(-1), force(0) {}
+virtual ~Appli() {
+    delete cdutil;
+    delete f_def;
+    delete f_iso_r;
+    delete f_iso_w;
+    delete f_in;
+}
+private:
+
+unsigned int tourne;
+
+struct t_index_tab {
+    unsigned long address;
+    long size;
+    long type;
+    long index;
+};
+
+struct t_sequence {
+    unsigned int n;
+    unsigned int sum;
+    String prefix;
+    String name;
+    int type;
+};
+
+String title, iso_filename, prefix, in_filename;
+unsigned long iso_size;
+unsigned int nb_records, nb_seqs;
+struct t_sequence sequences[1000];
+Handle * f_def, * f_iso_r, * f_iso_w, * f_in;
+cdutils * cdutil;
+
+int slus_index, force;
+
+unsigned char user_data[2352];
+
+void usage() throw (GeneralException) {
+	printm(M_BARE, "Usage: %s <definition_file.sqr> <iso_file_name> <file_index> <filename> [-f]\nSee readme.txt for details\n",
+	       argv[0]);
+	throw Exit(-1);
+}
+
+virtual int startup() throw (GeneralException)
+{
+    int fileindex;
+    
+    verbosity = 1;
+    
+    printm(M_BARE, "Xenogears File Insertor by Nicolas \"Pixel\" Noble\n\n");
+
+    if ((argc != 5) && (argc != 6)) {
+	usage();
+    }
+    
+    if (argc == 6) {
+	if (strcmp(argv[5], "-f")) {
+	    usage();
+	} else {
+	    force = 1;
+	}
+    }
+
+    printm(M_STATUS, "Processing file %s...\n", argv[1]);
+
+    f_def = new Input(argv[1]);
+
+    if (process_def_file(f_def)) {
+	printm(M_ERROR, "Unable to process the definition file \"%s\"...\n", argv[1]);
+	throw Exit(-1);
+    }
+
+    iso_filename = argv[2];
+
+    printm(M_STATUS, "Begin processing iso file.\n");
+    f_iso_r = new Input(iso_filename);
+    f_iso_w = new Output(iso_filename, 0, 0);
+    f_iso_w->seek(0, SEEK_SET);
+    
+    cdutil = new cdutils(f_iso_r, f_iso_w);
+    
+    if (check_iso()) {
+	printm(M_ERROR, "Invalid iso file for " + title + "\n");
+	printm(M_ERROR, "===> Make sure you are using a Genuine iso file.\n");
+	throw Exit(-1);
+    } else {
+	printm(M_INFO, "Genuine " + title + " iso detected.\n");
+    }
+
+    fileindex = atoi(argv[3]);
+    in_filename = argv[4];
+    f_in = new Input(in_filename);
+
+    printm(M_STATUS, "Entering files write sequence\n");
+    write_files(fileindex);
+    return 0;
+}
+
+/*
+ * Ugly but working... for now 
+ */
+int process_def_file(Handle * f_def)
+{
+    unsigned int n, sum = 0;
+    String t;
+
+    *f_def >> t;
+    printm(M_INFO, "Read title: " + t + "\n");
+    title = t;
+
+    *f_def >> t;
+    iso_size = t.to_int();
+    printm(M_INFO, "Read iso size: %lu bytes\n", iso_size);
+
+    *f_def >> t;
+    printm(M_INFO, "Read global directory prefix: " + t + "\n");
+    prefix = t;
+
+    *f_def >> t;
+    nb_records = t.to_int();
+    printm(M_INFO, "Read total of records: %u\n", nb_records);
+
+    while (1) {
+	*f_def >> t;
+	n = t.to_int();
+	if (!n) {
+	    if (sum == nb_records) {
+		printm(M_INFO, "Definition file seems coherent\n");
+		return 0;
+	    } else {
+		printm(M_ERROR, "Definition file incoherent\n");
+		return 1;
+	    }
+	}
+	sum += n;
+	sequences[nb_seqs].n = n;
+	sequences[nb_seqs].sum = sum;
+	*f_def >> t;
+	sequences[nb_seqs].prefix = t;
+	*f_def >> t;
+	n = t.to_int();
+	sequences[nb_seqs].type = n;
+	*f_def >> t;
+	sequences[nb_seqs].name = t;
+	printm(M_INFO, "Read definition of sequence %i:\n===> %5i (sum = %5i) chunks of " + t +
+		       " (" + sequences[nb_seqs].prefix + ")\n", nb_seqs, n, sum);
+	nb_seqs++;
+    }
+}
+
+long check_iso()
+{
+    unsigned long length;
+
+    length = f_iso_r->GetSize();
+    printm(M_INFO, "Filesize of iso file " + iso_filename + " is %ld bytes\n", length);
+    if (length != iso_size) {
+	return 1;
+    }
+    return 0;
+}
+
+#define INDEXPOS 24
+
+void rewrite_fat(Byte * new_fat) {
+    unsigned char old_fat[34816];
+    int i;
+
+    cdutil->sector_seek(INDEXPOS);
+    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
+	printm(M_INFO, "Writing fat sector %lu\n", i);
+	cdutil->write_sector(&new_fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
+    }
+
+    cdutil->sector_seek(slus_index + 1);
+    for (i = slus_index + 1; i < (slus_index + 18); i++) {
+	printm(M_INFO, "Reading SLUS sector %lu\n", i);
+	cdutil->read_sector(&old_fat[2048 * (i - slus_index - 1)], MODE_2_FORM_1);
+    }
+
+    bcopy((char *) new_fat, (char *) old_fat + 4, 32768);
+    cdutil->sector_seek(slus_index + 1);
+    for (i = slus_index + 1; i < (slus_index + 18); i++) {
+	printm(M_INFO, "Writing SLUS sector %lu\n", i);
+	cdutil->write_sector(&old_fat[2048 * (i - slus_index - 1)], MODE_2_FORM_1);
+    }
+}
+
+void write_files(int fileindex) throw (GeneralException)
+{
+    t_index_tab index_tab[10000];
+    unsigned char t[8];
+    unsigned long i;
+    unsigned long j;
+    unsigned int seq = 0;
+    unsigned long indexer;
+    struct t_index_tab *p = (struct t_index_tab *) t;
+    
+    long old_file_size, new_file_size, old_nb_sects, new_nb_sects;
+    unsigned char fat[32768];
+
+    cdutil->sector_seek(INDEXPOS);
+    for (i = INDEXPOS; i < (INDEXPOS + 16); i++) {
+	printm(M_INFO, "Reading fat sector %lu\n", i);
+	cdutil->read_sector(&fat[2048 * (i - INDEXPOS)], MODE_2_FORM_1);
+    }
+
+    indexer = 0;
+    for (j = 0; j < 32768; j = j + 7) {
+	t[0] = 0;
+	bcopy((char *) &fat[j], (char *) t + 1, 7);
+	p->address >>= 8;
+	index_tab[indexer] = *p;
+	if (p->size > 0 && p->address != 0) {
+	    index_tab[indexer].index = j / 7;
+	    printm(M_INFO, "Found a quite valid index: number %4lu, address %6lu, size %3li\n",
+		   indexer, index_tab[indexer].address, index_tab[indexer].size);
+	    indexer++;
+	    if (indexer == nb_records)
+		break;
+	} else {
+	    printm(M_WARNING, "Ignored invalid index chunk number %4lu (size = %lu) (%02x %02x %02x %02x %02x %02x %02x)\n",
+		 j / 7, -index_tab[indexer].size, t[0], t[1], t[2], t[4], t[5], t[6], t[7]);
+	}
+    }
+    printm(M_STATUS, "Index file generation complete.\n\n");
+
+    for (i = 0; i < nb_records; i++) {
+	if (sequences[seq].sum == i)
+	    seq++;
+	index_tab[i].type = sequences[seq].type;
+	if (sequences[seq].prefix == "SLUS") {
+	    if (slus_index >= 0) {
+		printm(M_ERROR, "Two SLUS files defined\n");
+		throw Exit(-1);
+	    }
+	    slus_index = index_tab[i].address;
+	}
+    }
+    
+    if (slus_index < 0) {
+	printm(M_ERROR, "No SLUS file defined\n");
+	throw Exit(-1);
+    }
+    
+    printm(M_INFO, "SLUS file found at sector %6i\n", slus_index);
+    
+    new_file_size = f_in->GetSize();
+    old_file_size = index_tab[fileindex].size;
+    
+    new_nb_sects = new_file_size / sec_sizes[index_tab[fileindex].type];
+    old_nb_sects = old_file_size / sec_sizes[index_tab[fileindex].type];
+    
+    if (new_file_size % sec_sizes[index_tab[fileindex].type]) {
+	new_nb_sects++;
+    }
+    
+    if (old_file_size % sec_sizes[index_tab[fileindex].type]) {
+	old_nb_sects++;
+    }
+    
+    if (new_nb_sects > old_nb_sects) {
+	printm(M_ERROR, "New file too big.\n");
+	if (!force) {
+	    throw Exit(-1);
+	}
+    }
+    
+    printm(M_INFO, "New file size:  %12li, old file size:  %12li\n", new_file_size, old_file_size);
+    printm(M_INFO, "New file ssize: %12li, old file ssize: %12li\n", new_nb_sects, old_nb_sects);
+    
+    printm(M_INFO, "File address: %6i\n", index_tab[fileindex].address);
+    
+    cdutil->write_file(f_in, index_tab[fileindex].type, index_tab[fileindex].address);
+    *((long *)(&fat[index_tab[fileindex].index * 7 + 3])) = new_file_size;
+    rewrite_fat(fat);
+}
+CODE_ENDS
diff --git a/Xenogears/script-comp.cpp b/Xenogears/script-comp.cpp
index 01f6bdd..4e835a7 100644
--- a/Xenogears/script-comp.cpp
+++ b/Xenogears/script-comp.cpp
@@ -1,109 +1,109 @@
-#include "lzss.h"
-#include "Input.h"
-#include "Output.h"
-#include "generic.h"
-#include "Main.h"
-
-CODE_BEGINS
-public:
-Appli() : lzss_o(new lzss()) {}
-virtual ~Appli() { delete lzss_o; }
-private:
-
-lzss * lzss_o;
-
-void process_one_file(Handle * f, Handle * d, Handle * f_part, int n) {
-    String nom_du_fichier;
-    char zeros[4] = {0, 0, 0, 0}, * datas;
-    int script_position, true_length, delta, data_length;
-    printm(M_BARE, "  Copying header\n");
-    
-    f->seek(0x14c);
-    f->read(&script_position, 4);
-    f->seek(0);
-    copy(f, d, script_position);
-    
-    f->seek(0x150);
-    f->read(&script_position, 4);
-    f->seek(script_position);
-    
-    data_length = f->GetSize() - script_position;
-    
-    datas = (char *) malloc(data_length);
-    f->read(datas, data_length);
-    
-    printm(M_BARE, "  Processing script\n");
-
-    true_length = f_part->GetSize();
-
-    script_position = d->tell();
-    d->seek(0x14c);
-    d->write(&script_position, 4);
-    d->seek(0x128);
-    d->write(&true_length, 4);
-    d->seek(0, SEEK_END);
-	
-    lzss_o->lzss_comp(f_part, d, &delta);
-
-    script_position = d->tell();
-    if ((true_length = (script_position & 3))) {
-        d->write(zeros, 4 - true_length);
-    }
-    
-    printm(M_BARE, "  Processing extra datas\n");
-    script_position = d->tell();
-    d->seek(0x150);
-    d->write(&script_position, 4);
-	
-    d->seek(0,SEEK_END);
-    d->write(datas, data_length);
-    
-    free(datas);
-}
-
-virtual int startup() throw (GeneralException)
-{
-    Handle * f_script_comp, * f_old_script, * f_new_script;
-    int i;
-    int num = 0;
-    String nom_du_fichier;
-
-    for (i = 384; i < 1844; i = i + 2) {
-	printm(M_BARE, "CD1 - File %d -> Script %d\n", i, num);
-	nom_du_fichier.set("xeno_d1/ROOMS/%04d.out", i);
-	f_old_script = new Input(nom_du_fichier);
-	nom_du_fichier.set("xeno_d1/ROOMS/%04d.out-new", i);
-	f_new_script = new Output(nom_du_fichier);
-	nom_du_fichier.set("xeno_d1/ROOMS/%04d/script.comp", num);
-	f_script_comp = new Input(nom_du_fichier);
-	
-	process_one_file(f_old_script, f_new_script, f_script_comp, num);
-
-	delete f_script_comp;
-	delete f_new_script;
-	delete f_old_script;
-	num++;
-    }
-    num = 0;
-
-    for (i = 379; i < 1838; i = i + 2) {
-	printm(M_BARE, "CD2 - File %d -> Script %d\n", i, num);
-	nom_du_fichier.set("xeno_d2/ROOMS/%04d.out", i);
-	f_old_script = new Input(nom_du_fichier);
-	nom_du_fichier.set("xeno_d2/ROOMS/%04d.out-new", i);
-	f_new_script = new Output(nom_du_fichier);
-	nom_du_fichier.set("xeno_d2/ROOMS/%04d/script.comp", num);
-	f_script_comp = new Input(nom_du_fichier);
-	
-	process_one_file(f_old_script, f_new_script, f_script_comp, num);
-
-	delete f_script_comp;
-	delete f_new_script;
-	delete f_old_script;
-    	num++;
-    }
-    printm(M_BARE, "Done !\n");
-    
-    return 0;
-}
-CODE_ENDS
+#include "lzss.h"
+#include "Input.h"
+#include "Output.h"
+#include "generic.h"
+#include "Main.h"
+
+CODE_BEGINS
+public:
+Appli() : lzss_o(new lzss()) {}
+virtual ~Appli() { delete lzss_o; }
+private:
+
+lzss * lzss_o;
+
+void process_one_file(Handle * f, Handle * d, Handle * f_part, int n) {
+    String nom_du_fichier;
+    char zeros[4] = {0, 0, 0, 0}, * datas;
+    int script_position, true_length, delta, data_length;
+    printm(M_BARE, "  Copying header\n");
+    
+    f->seek(0x14c);
+    f->read(&script_position, 4);
+    f->seek(0);
+    copy(f, d, script_position);
+    
+    f->seek(0x150);
+    f->read(&script_position, 4);
+    f->seek(script_position);
+    
+    data_length = f->GetSize() - script_position;
+    
+    datas = (char *) malloc(data_length);
+    f->read(datas, data_length);
+    
+    printm(M_BARE, "  Processing script\n");
+
+    true_length = f_part->GetSize();
+
+    script_position = d->tell();
+    d->seek(0x14c);
+    d->write(&script_position, 4);
+    d->seek(0x128);
+    d->write(&true_length, 4);
+    d->seek(0, SEEK_END);
+	
+    lzss_o->lzss_comp(f_part, d, &delta);
+
+    script_position = d->tell();
+    if ((true_length = (script_position & 3))) {
+        d->write(zeros, 4 - true_length);
+    }
+    
+    printm(M_BARE, "  Processing extra datas\n");
+    script_position = d->tell();
+    d->seek(0x150);
+    d->write(&script_position, 4);
+	
+    d->seek(0,SEEK_END);
+    d->write(datas, data_length);
+    
+    free(datas);
+}
+
+virtual int startup() throw (GeneralException)
+{
+    Handle * f_script_comp, * f_old_script, * f_new_script;
+    int i;
+    int num = 0;
+    String nom_du_fichier;
+
+    for (i = 384; i < 1844; i = i + 2) {
+	printm(M_BARE, "CD1 - File %d -> Script %d\n", i, num);
+	nom_du_fichier.set("xeno_d1/ROOMS/%04d.out", i);
+	f_old_script = new Input(nom_du_fichier);
+	nom_du_fichier.set("xeno_d1/ROOMS/%04d.out-new", i);
+	f_new_script = new Output(nom_du_fichier);
+	nom_du_fichier.set("xeno_d1/ROOMS/%04d/script.comp", num);
+	f_script_comp = new Input(nom_du_fichier);
+	
+	process_one_file(f_old_script, f_new_script, f_script_comp, num);
+
+	delete f_script_comp;
+	delete f_new_script;
+	delete f_old_script;
+	num++;
+    }
+    num = 0;
+
+    for (i = 379; i < 1838; i = i + 2) {
+	printm(M_BARE, "CD2 - File %d -> Script %d\n", i, num);
+	nom_du_fichier.set("xeno_d2/ROOMS/%04d.out", i);
+	f_old_script = new Input(nom_du_fichier);
+	nom_du_fichier.set("xeno_d2/ROOMS/%04d.out-new", i);
+	f_new_script = new Output(nom_du_fichier);
+	nom_du_fichier.set("xeno_d2/ROOMS/%04d/script.comp", num);
+	f_script_comp = new Input(nom_du_fichier);
+	
+	process_one_file(f_old_script, f_new_script, f_script_comp, num);
+
+	delete f_script_comp;
+	delete f_new_script;
+	delete f_old_script;
+    	num++;
+    }
+    printm(M_BARE, "Done !\n");
+    
+    return 0;
+}
+CODE_ENDS
diff --git a/Xenogears/script-dec.cpp b/Xenogears/script-dec.cpp
index 0285013..55edb31 100644
--- a/Xenogears/script-dec.cpp
+++ b/Xenogears/script-dec.cpp
@@ -1,82 +1,82 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "lzss.h"
-#include "BString.h"
-#include "Input.h"
-#include "Output.h"
-#include "Main.h"
-
-CODE_BEGINS
-public:
-Appli() : lzss_o(new lzss()) {}
-virtual ~Appli() { delete lzss_o; }
-private:
-
-lzss * lzss_o;
-
-void process_one_file(Handle * f, int d, int n) {
-    String nom_du_fichier;
-    long script_position, true_length;
-    int i;
-    Handle * f_out;
-    
-    if (f->GetSize() == 24) return;
-    
-    nom_du_fichier.set("xeno_d%d/ROOMS/%04i", d, n);
-    MKDIR(nom_du_fichier.to_charp());
-
-    i = 7;
-//    for (i = 0; i < 9; i++) {
-//	printm(M_BARE, "  Processing part %i\n", i);
-	nom_du_fichier.set("xeno_d%d/ROOMS/%04i/script.comp", d, n);
-//	sprintf(nom_du_fichier, "xeno_d%d/ROOMS/%04i/part-%i", d, n, i);
-	f_out = new Output(nom_du_fichier);
-	f->seek(0x130 + i * 4);
-	f->read(&script_position, 4);
-	f->seek(0x10c + i * 4);
-	f->read(&true_length, 4);
-	f->seek(script_position);
-	lzss_o->lzss_decomp(f, f_out, true_length);
-//	if (i == 7) {
-//    	    fseek(f_out, 0, SEEK_SET);
-//	    fread(&true_length, 4, 1, f_out);
-//	    printm(M_BARE, "      (seems to be the script number %i)\n", true_length);
-//	}
-	delete f_out;
-//    }
-}
-
-virtual int startup() throw (GeneralException)
-{
-    Handle * f_script_comp;
-    int i;
-    int num = 0;
-    char nom_du_fichier[100];
-
-    for (i = 384; i < 1844; i = i + 2) {
-	printm(M_BARE, "CD 1 - File %d -> Script %d\n", i, num);
-	sprintf(nom_du_fichier, "xeno_d1/ROOMS/%04d.out", i);
-	f_script_comp = new Input(nom_du_fichier);
-	
-	process_one_file(f_script_comp, 1, num);
-
-	delete f_script_comp;
-	num++;
-    }
-
-    num = 0;
-
-    for (i = 379; i < 1838; i = i + 2) {
-	printm(M_BARE, "CD 2 - File %d -> Script %d\n", i, num);
-	sprintf(nom_du_fichier, "xeno_d2/ROOMS/%04d.out", i);
-	f_script_comp = new Input(nom_du_fichier);
-	
-	process_one_file(f_script_comp, 2, num);
-
-	delete f_script_comp;
-	num++;
-    }
-    printm(M_BARE, "Done !\n");
-    return 0;
-}
-CODE_ENDS
+#include <stdio.h>
+#include <stdlib.h>
+#include "lzss.h"
+#include "BString.h"
+#include "Input.h"
+#include "Output.h"
+#include "Main.h"
+
+CODE_BEGINS
+public:
+Appli() : lzss_o(new lzss()) {}
+virtual ~Appli() { delete lzss_o; }
+private:
+
+lzss * lzss_o;
+
+void process_one_file(Handle * f, int d, int n) {
+    String nom_du_fichier;
+    long script_position, true_length;
+    int i;
+    Handle * f_out;
+    
+    if (f->GetSize() == 24) return;
+    
+    nom_du_fichier.set("xeno_d%d/ROOMS/%04i", d, n);
+    MKDIR(nom_du_fichier.to_charp());
+
+    i = 7;
+//    for (i = 0; i < 9; i++) {
+//	printm(M_BARE, "  Processing part %i\n", i);
+	nom_du_fichier.set("xeno_d%d/ROOMS/%04i/script.comp", d, n);
+//	sprintf(nom_du_fichier, "xeno_d%d/ROOMS/%04i/part-%i", d, n, i);
+	f_out = new Output(nom_du_fichier);
+	f->seek(0x130 + i * 4);
+	f->read(&script_position, 4);
+	f->seek(0x10c + i * 4);
+	f->read(&true_length, 4);
+	f->seek(script_position);
+	lzss_o->lzss_decomp(f, f_out, true_length);
+//	if (i == 7) {
+//    	    fseek(f_out, 0, SEEK_SET);
+//	    fread(&true_length, 4, 1, f_out);
+//	    printm(M_BARE, "      (seems to be the script number %i)\n", true_length);
+//	}
+	delete f_out;
+//    }
+}
+
+virtual int startup() throw (GeneralException)
+{
+    Handle * f_script_comp;
+    int i;
+    int num = 0;
+    char nom_du_fichier[100];
+
+    for (i = 384; i < 1844; i = i + 2) {
+	printm(M_BARE, "CD 1 - File %d -> Script %d\n", i, num);
+	sprintf(nom_du_fichier, "xeno_d1/ROOMS/%04d.out", i);
+	f_script_comp = new Input(nom_du_fichier);
+	
+	process_one_file(f_script_comp, 1, num);
+
+	delete f_script_comp;
+	num++;
+    }
+
+    num = 0;
+
+    for (i = 379; i < 1838; i = i + 2) {
+	printm(M_BARE, "CD 2 - File %d -> Script %d\n", i, num);
+	sprintf(nom_du_fichier, "xeno_d2/ROOMS/%04d.out", i);
+	f_script_comp = new Input(nom_du_fichier);
+	
+	process_one_file(f_script_comp, 2, num);
+
+	delete f_script_comp;
+	num++;
+    }
+    printm(M_BARE, "Done !\n");
+    return 0;
+}
+CODE_ENDS
diff --git a/Xenogears/test-dlzss.cpp b/Xenogears/test-dlzss.cpp
index 4591b9d..ecd0f7e 100644
--- a/Xenogears/test-dlzss.cpp
+++ b/Xenogears/test-dlzss.cpp
@@ -1,7 +1,7 @@
-#include <stdio.h>
-#include "lzss.h"
-
-int main(void) {
-    lzss_decomp(0, 1);
-    return 0;
-}
+#include <stdio.h>
+#include "lzss.h"
+
+int main(void) {
+    lzss_decomp(0, 1);
+    return 0;
+}
diff --git a/Xenogears/test-lzss.cpp b/Xenogears/test-lzss.cpp
index b92808c..0257e99 100644
--- a/Xenogears/test-lzss.cpp
+++ b/Xenogears/test-lzss.cpp
@@ -1,7 +1,7 @@
-#include <stdio.h>
-#include "lzss.h"
-
-int main(void) {
-    lzss_comp(0, 1);
-    return 0;
-}
+#include <stdio.h>
+#include "lzss.h"
+
+int main(void) {
+    lzss_comp(0, 1);
+    return 0;
+}
-- 
cgit v1.2.3