diff options
| -rw-r--r-- | PE/extract-rooms.cpp | 57 | ||||
| -rw-r--r-- | PE/extract-various.cpp | 35 | ||||
| -rw-r--r-- | PE/reinsert.cpp | 5 | ||||
| -rw-r--r-- | PE/table.h | 62 | 
4 files changed, 102 insertions, 57 deletions
| diff --git a/PE/extract-rooms.cpp b/PE/extract-rooms.cpp index d7148ff..738411d 100644 --- a/PE/extract-rooms.cpp +++ b/PE/extract-rooms.cpp @@ -131,62 +131,7 @@ virtual int startup() throw (GeneralException) {  	printm(M_INFO, "Found %i bytes of text at %i\n", size, pos); -	for (j = 0; j < size; j++) { -	    b = f->readU8(); -	     -	    if (b <= MAXCHAR) { -		t->writeU8(table[b]); -	    } else { -		switch(b) { -		case 0xf7: -		    t->writeU8('\n'); -		    break; -		case 0xf8: -		    (*t) << "<PAUSE>\n"; -		    break; -		case 0xf9: -		    (*t) << "\n<TCLOSE>\n"; -		    break; -		case 0xfa: -		    (*t) << "<AYA>"; -		    break; -		case 0xfb: -		    j++; -		    j++; -		    a1 = f->readU8(); -		    switch(a1) { -		    case 0: -			(*t) << "<TAG0>"; -			break; -		    case 1: -			(*t) << "<TAG1>"; -			break; -		    case 9: -			a2 = f->readU8(); -			(*t) << "<CHOICES " << a2 << ">\n"; -			break; -		    case 7: -			a2 = f->readU8(); -			(*t) << "<TIMER " << a2 << ">"; -			break; -		    default: -			(*t) << "<UNKCMD " << a1 << ">"; -			break; -		    } -		    break; -		case 0xfe: -		    j++; -		    b = f->readU8(); -		    (*t) << "<PT" << b << ">\n"; -		    break; -		case 0xff: -		    (*t) << "\n<CLOSE>\n"; -		    break; -		default: -		    (*t) << String().set("<UNK %02X>", b); -		} -	    } -	} +	extracttext(f, t, size);  	delete t;      } diff --git a/PE/extract-various.cpp b/PE/extract-various.cpp index 9a68a3d..a4261b9 100644 --- a/PE/extract-various.cpp +++ b/PE/extract-various.cpp @@ -9,7 +9,7 @@ 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 int c, b, i, j, size, changed;      unsigned short p, t;      String fn; @@ -126,6 +126,39 @@ virtual int startup() throw (GeneralException) {  	delete s;      } +    f = new Input("dump/0075.out"); +     +    for (i = 0; i < 4; i++) { +	Uint32 pos, pos2, size; +	 +	f->seek(i * 4); +	pos = f->readU32(); +	pos2 = f->readU32(); +	f->seek(pos); +	 +	if (i == 3) { +	    size = f->readU32(); +	    f->seek(pos); +	} else { +	    size = pos2 - pos; +	} +	 +	s = new Output(String().set("75/%i.out", i)); +	 +	copy(f, s, size); +	 +	delete s; +	 +	if (i == 1) { +	    s = new Output("75/text.txt"); +	    f->seek(pos); +	    extracttext(f, s, size); +	    delete s; +	} +    } +     +    delete f; +      return 0;  }  CODE_ENDS diff --git a/PE/reinsert.cpp b/PE/reinsert.cpp index 581c16f..47b2627 100644 --- a/PE/reinsert.cpp +++ b/PE/reinsert.cpp @@ -77,6 +77,11 @@ int patch_img(cdutils * cd) {      cd->write_file(menu, GUESS, d_pe1.Sector + 978);      delete menu; +    Handle * Jour1 = new Input("75/0075.out"); +    printm(M_INFO, "Ecriture de la fin du jour 1...\n"); +    cd->write_file(Jour1, GUESS, d_pe1.Sector + 1975); +    delete Jour1; +          for (i = 1; i <= 20; i++) {  	Input groupe(String().set("groupe-%02i.txt", i));  	c = 0; @@ -1,3 +1,65 @@  char table[256] = "0123456789+-=*% ABCDEFGHIJKLMNOPQRSTUVWXYZ&!?\"'.abcdefghijklmnopqrstuvwxyz:,/éèêëàâäîïôöùûüç";  #define MAXCHAR 0x5b + +void extracttext(Handle * f, Handle * t, int size) { +    int j; +    Uint8 b, a1, a2; +     +    for (j = 0; j < size; j++) { +        b = f->readU8(); +	     +	if (b <= MAXCHAR) { +	    t->writeU8(table[b]); +	} else { +	    switch(b) { +	    case 0xf7: +		t->writeU8('\n'); +		break; +	    case 0xf8: +		(*t) << "<PAUSE>\n"; +		break; +	    case 0xf9: +		(*t) << "\n<TCLOSE>\n"; +		break; +	    case 0xfa: +		(*t) << "<AYA>"; +		break; +	    case 0xfb: +		j++; +		j++; +		a1 = f->readU8(); +		switch(a1) { +		case 0: +		    (*t) << "<TAG0>"; +		    break; +		case 1: +		    (*t) << "<TAG1>"; +		    break; +		case 9: +		    a2 = f->readU8(); +		    (*t) << "<CHOICES " << a2 << ">\n"; +		    break; +		case 7: +		    a2 = f->readU8(); +		    (*t) << "<TIMER " << a2 << ">"; +		    break; +		default: +		    (*t) << "<UNKCMD " << a1 << ">"; +		    break; +		} +		break; +	    case 0xfe: +		j++; +		b = f->readU8(); +		(*t) << "<PT" << b << ">\n"; +		break; +	    case 0xff: +		(*t) << "\n<CLOSE>\n"; +		break; +	    default: +		(*t) << String().set("<UNK %02X>", b); +	    } +	} +    } +} | 
