#include #include #include #include "table.h" CODE_BEGINS int pos[50]; virtual int startup() throw (GeneralException) { Input * f = new Input("dump/0000.out"); Output * s = new Output("various/various.txt"); unsigned int c, b, i, j, size, n, changed; unsigned short p, t; String fn; for (c = 0; c < 6;) { b = f->readU8(); if (b <= MAXCHAR) { s->writeU8(table[b]); } else { switch(b) { case 0xfe: b = f->readU8(); (*s) << "\n"; break; case 0xff: (*s) << "\n\n"; c++; break; default: (*s) << String().set("", b); } } } delete f; delete s; f = new Input("dump/0001.out"); c = f->readU32(); for (i = 0; i < c; i++) { pos[i] = f->readU32(); } pos[c] = f->GetSize(); for (i = 0; i < c; i++) { f->seek(pos[i]); size = pos[i + 1] - pos[i]; fn.set("various/0001/%02i.out", i); s = new Output(fn); for (j = 0; j < size; j++) { b = f->readU8(); s->writeU8(b); } delete s; } delete f; f = new Input("various/0001/00.out"); c = f->readU32(); for (i = 0; i < c; i++) { pos[i] = f->readU32(); } pos[c] = f->GetSize(); for (i = 0; i < c; i++) { f->seek(pos[i]); size = pos[i + 1] - pos[i]; fn.set("various/0001/00/%01i.out", i); s = new Output(fn); for (j = 0; j < size; j++) { b = f->readU8(); s->writeU8(b); } delete s; } delete f; for (i = 0; i < 4; i++) { fn.set("various/0001/00/%i.out", i); f = new Input(fn); fn.set("various/menus%i.txt", i); s = new Output(fn); p = f->readU16(); f->seek(p * 2, SEEK_CUR); changed = 1; for (c = 0; c < p;) { if (changed) { f->seek(c * 2 + 2); t = f->readU16(); f->seek(t); } if (!(b = f->readU8()) && changed) break; changed = 0; if (b <= MAXCHAR) { s->writeU8(table[b]); } else { switch(b) { case 0xff: (*s) << "\n\n"; c++; changed = 1; break; default: (*s) << String().set("", b); } } } delete f; delete s; } return 0; } CODE_ENDS