Risen 3 (.bin)
-
- 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
-
- Posts: 176
- Joined: Tue Sep 30, 2014 5:59 pm
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
-
- Posts: 176
- Joined: Tue Sep 30, 2014 5:59 pm
Re: Risen 3 (.bin)
how to decode files .csv ????
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Risen 3 (.bin)
I have no idea
-
- Posts: 176
- Joined: Tue Sep 30, 2014 5:59 pm
Re: Risen 3 (.bin)
Да емае как интересно вообще раскодировать возможно??
-
- 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.
-
- Posts: 176
- Joined: Tue Sep 30, 2014 5:59 pm
Re: Risen 3 (.bin)
Я его пробовал Hex editor не поможет он не понимает что там
-
- 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;
}
-
- Posts: 176
- Joined: Tue Sep 30, 2014 5:59 pm
Re: Risen 3 (.bin)
And you can use this script ???
-
- 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.
-
- 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
-
- 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
-
- 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.
-
- 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.
-
- Posts: 5
- Joined: Sat Nov 01, 2014 11:02 am
-
- 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
-
- 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!
-
- 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!!!??????