Risen 3 (.bin)
- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Risen 3 (.bin)
please help with the unpacking w_strings.bin of the Risen 3
			
			
									
						
										
						- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
- 
				aluigi
 - Site Admin
 - Posts: 12984
 - Joined: Wed Jul 30, 2014 9:32 pm
 
- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Re: Risen 3 (.bin)
how to decode files .csv ????
			
			
									
						
										
						- 
				aluigi
 - Site Admin
 - Posts: 12984
 - Joined: Wed Jul 30, 2014 9:32 pm
 
Re: Risen 3 (.bin)
I have no idea 
			
			
									
						
										
						- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Re: Risen 3 (.bin)
Да емае как интересно вообще раскодировать возможно??
			
			
									
						
										
						- 
				aluigi
 - Site Admin
 - Posts: 12984
 - Joined: Wed Jul 30, 2014 9:32 pm
 
Re: Risen 3 (.bin)
If you want to edit the files use a hex editor, it's the easiest way.
			
			
									
						
										
						- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Re: Risen 3 (.bin)
Я его пробовал Hex editor не поможет он не понимает что там
			
			
									
						
										
						- 
				michalss
 - Posts: 320
 - Joined: Sun Aug 10, 2014 12:49 pm
 
Re: Risen 3 (.bin)
Some research 
			
			
									
						
										
						Code: Select all
gar_header {
    uint8_t  magic1[4];  // "GAR5"
    uint32_t unknown;    // 00000020 sizeof(stb_header)?
    uint8_t  magic2[4];  // "STB\x05"
}
stb_header {
    uint32_t source_count;
    uint32_t unknown;   // 00000000
    uint32_t column_count;
    uint32_t row_count;
    uint32_t source_table_offset;
    uint32_t column_names_offset;
    uint32_t column_table_offset;
    uint32_t id_table_offset;
}
// @stb_header.source_table_offset
source_table[stb_header.source_count] {
    filepath {
        uint16_t length;
        uint8_t  buffer[length];  // char[], not 0-terminated
    }
    filetime {  // swapped FILETIME (rounded)
        uint32_t hi;
        uint32_t lo;
    }
}
// @stb_header.id_table_offset
id_table {
    uint32_t size;  // stb_header.row_count * sizeof(uint32_t)
    uint32_t offset;
    // @id_table.offset
    uint32_t ids[stb_header.row_count];  // DJB2 hash?
}    
// @stb_header.column_names_offset
column_names {
    names[stb_header.column_count] {
        uint32_t size;    // includes terminating 0
        uint32_t offset;  // buffer
    }
    uint8_t buffer[];  // char[], 0-terminated
}
string_table[stb_header.column_count] {
    // @column_table[].string_table_offset
    strings {
        int32_t  seq_start[stb_header.row_count];  // index into sequences, -1 = empty
        uint16_t sequences[];                      // indices into symbols, 0-terminated
    }
    // @column_table[].symbol_table_offset
    symbols[] {
        uint16_t child;   // index into symbols
        uint16_t symbol;  // wchar_t
    }
}
// @stb_header.column_table_offset
column_table[stb_header.column_count] {
    uint32_t string_table_size;
    uint32_t string_table_offset;
    uint32_t symbol_table_size;
    uint32_t symbol_table_offset;
}- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Re: Risen 3 (.bin)
And you can use this script ???
			
			
									
						
										
						- 
				Ekey
 - Posts: 1383
 - Joined: Sat Aug 09, 2014 2:34 pm
 
Re: Risen 3 (.bin)
It's not script, just structure of localization file for devs.
			
			
									
						
										
						- 
				aluigi
 - Site Admin
 - Posts: 12984
 - Joined: Wed Jul 30, 2014 9:32 pm
 
Re: Risen 3 (.bin)
Just for fun, the following is a simple adapting of the information provided by michalss to bms (yeah quickbms can handle many C and pseudo-code structures):
			
			
									
						
										
						Code: Select all
#gar_header {
    uint8_t  magic1[4];  // "GAR5"
    uint32_t unknown;    // 00000020 sizeof(stb_header)?
    uint8_t  magic2[4];  // "STB\x05"
#stb_header {
    uint32_t source_count;
    uint32_t unknown;   // 00000000
    uint32_t column_count;
    uint32_t row_count;
    uint32_t source_table_offset;
    uint32_t column_names_offset;
    uint32_t column_table_offset;
    uint32_t id_table_offset;
// @stb_header.source_table_offset
#source_table[stb_header.source_count] {
goto source_table_offset
for i = 0 < source_count
    #filepath {
        uint16_t length;
        uint8_t  buffer[length];  // char[], not 0-terminated
    #filetime {  // swapped FILETIME (rounded)
        uint32_t hi;
        uint32_t lo;
next i
// @stb_header.id_table_offset
#id_table {
goto id_table_offset
    uint32_t size;  // stb_header.row_count * sizeof(uint32_t)
    uint32_t offset;
    // @id_table.offset
    uint32_t ids[row_count];  // DJB2 hash?
// @stb_header.column_names_offset
#column_names {
goto column_names_offset
    #names[stb_header.column_count] {
for i = 0 < column_count
        uint32_t size;    // includes terminating 0
        uint32_t offset;  // buffer
next i
    uint8_t *buffer #[];  // char[], 0-terminated
// @stb_header.column_table_offset
goto column_table_offset
#column_table[stb_header.column_count] {
for i = 0 < column_count
    uint32_t string_table_size;
    uint32_t string_table_offset;
    uint32_t symbol_table_size;
    uint32_t symbol_table_offset;
    savepos TMP
#string_table[stb_header.column_count] {
    // @column_table[].string_table_offset
    goto string_table_offset
    #strings {
        int32_t  seq_start[row_count];  // index into sequences, -1 = empty
        do
            uint16_t sequences  #[];                      // indices into symbols, 0-terminated
        while sequences != 0
    // @column_table[].symbol_table_offset
    goto symbol_table_offset
    #symbols[] {
        uint16_t child;   // index into symbols
        uint16_t symbol;  // wchar_t
    #}
next i- 
				ponaromixxx
 - Posts: 176
 - Joined: Tue Sep 30, 2014 5:59 pm
 
Re: Risen 3 (.bin)
But look what I got, I mixed the first and the last script code and quickbms campaign realized that it is in the archive on the command line issued by how many languages packed well, or reaped here who can finalize ???? if possible !!!
			
			
									
						
										
						Code: Select all
idstring "GAR5"
get DUMMY long
getdstring STB_SIGN 3
get VER byte
get FILES long
get ZERO long
get STRINGS long
get DUMMY long
get NAME_OFF long
get STR_OFF long
get INFO_OFF long
get DATA_OFF long
goto STR_OFF
for i = 0 < STRINGS
    get STRSZ long
    get OFFSET long
    savepos TMP
    goto OFFSET
    getdstring STR STRSZ
    goto TMP
    print "%STR%"
next i
goto NAME_OFF
for i = 0 < FILES
    get NAMESZ short
    getdstring NAME NAMESZ
    get TSTAMPH long
    get TSTAMPL long
    putarray 0 i NAME
next i
goto INFO_OFF
for i = 0 < FILES
    get SIZE long
    get OFFSET long
    getarray NAME 0 i
    log NAME OFFSET SIZE
next i
#stb_header {
    uint32_t source_count;
    uint32_t unknown;   // 00000000
    uint32_t column_count;
    uint32_t row_count;
    uint32_t source_table_offset;
    uint32_t column_names_offset;
    uint32_t column_table_offset;
    uint32_t id_table_offset;
// @stb_header.source_table_offset
#source_table[stb_header.source_count] {
goto source_table_offset
for i = 0 < source_count
    #filepath {
        uint16_t length;
        uint8_t  buffer[length];  // char[], not 0-terminated
    #filetime {  // swapped FILETIME (rounded)
        uint32_t hi;
        uint32_t lo;
next i
// @stb_header.id_table_offset
#id_table {
goto id_table_offset
    uint32_t size;  // stb_header.row_count * sizeof(uint32_t)
    uint32_t offset;
    // @id_table.offset
    uint32_t ids[row_count];  // DJB2 hash?
// @stb_header.column_names_offset
#column_names {
goto column_names_offset
    #names[stb_header.column_count] {
for i = 0 < column_count
        uint32_t size;    // includes terminating 0
        uint32_t offset;  // buffer
next i
    uint8_t *buffer #[];  // char[], 0-terminated
// @stb_header.column_table_offset
goto column_table_offset
#column_table[stb_header.column_count] {
for i = 0 < column_count
    uint32_t string_table_size;
    uint32_t string_table_offset;
    uint32_t symbol_table_size;
    uint32_t symbol_table_offset;
    savepos TMP
#string_table[stb_header.column_count] {
    // @column_table[].string_table_offset
    goto string_table_offset
    #strings {
        int32_t  seq_start[row_count];  // index into sequences, -1 = empty
        do
            uint16_t sequences  #[];                      // indices into symbols, 0-terminated
        while sequences != 0
    // @column_table[].symbol_table_offset
    goto symbol_table_offset
    #symbols[] {
        uint16_t child;   // index into symbols
        uint16_t symbol;  // wchar_t
    #}
next i- 
				aluigi
 - Site Admin
 - Posts: 12984
 - Joined: Wed Jul 30, 2014 9:32 pm
 
Re: Risen 3 (.bin)
@michalss
You already did something on the format, do you want to finish the work on the script?
I don't know what should be the output because it's not a file to extract.
			
			
									
						
										
						You already did something on the format, do you want to finish the work on the script?
I don't know what should be the output because it's not a file to extract.
- 
				michalss
 - Posts: 320
 - Joined: Sun Aug 10, 2014 12:49 pm
 
Re: Risen 3 (.bin)
i wont be able to finnish it, coz it is not my work. I allready ask for help but that person left the scene and he is not interested anymore about R3 game.
			
			
									
						
										
						- 
				tehasut
 - Posts: 5
 - Joined: Sat Nov 01, 2014 11:02 am
 
- 
				michalss
 - Posts: 320
 - Joined: Sun Aug 10, 2014 12:49 pm
 
Re: Risen 3 (.bin)
There is also complte source for convertor from bin to CSV wirtten in C++, for me i dont know much C++ but for someone who got skill this will be easy enought to write repacker 
 or is someone make complete template for 010 or QBMS ill make repacker from there 
https://dl.dropboxusercontent.com/u/38234344/r3l10n.zip
			
			
									
						
										
						https://dl.dropboxusercontent.com/u/38234344/r3l10n.zip
- 
				bioshock
 - Posts: 8
 - Joined: Tue Jan 05, 2016 4:40 pm
 
Re: Risen 3 (.bin)
tehasut wrote:There's a w_strings.bin to csv tool.
http://forum.worldofplayers.de/forum/th ... st23606794
Hi, i need help with the packing w_strings.csv to w_strings.bin of the Risen 3,
or any edit way to edit this string file,So long he did not do it
Thanks!
- 
				bioshock
 - Posts: 8
 - Joined: Tue Jan 05, 2016 4:40 pm
 
Re: Risen 3 (.bin)
bioshock wrote:tehasut wrote:There's a w_strings.bin to csv tool.
http://forum.worldofplayers.de/forum/th ... st23606794
Hi, i need help with the packing w_strings.csv to w_strings.bin of the Risen 3,
or any edit way to edit this string file,So long he did not do it
Thanks!
There is no way!!!??????