Home Risen Risen2 Risen3 Forum English Russian

Register FAQ Calendar Today's Posts
Results 1 to 13 of 13
  1. #1 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    This tool allows you to [un]pack binary string tables for Risen 3 (and ELEX).
    Sample batch scripts and a complete string id map for Risen 3 are included.

    Binary releases: https://github.com/nicodex/lianzifu/releases
    Source code: https://github.com/nicodex/lianzifu

    Code:
    Usage: lianzifu <command [argument]...>...
    
      The commands are executed in command line order.
      Therefore, everything after --exit is ignored.
    
    Commands:
    
      --version                                print program version
      --help                                   print this help
      --exit                                   exit the program now
      --clear                                  reset string table state
      --read-ini [ini]                         add prefix/csv from <ini>
      --read-csv [utf]                         add strings from all csv
      --save-map [map]                         save [prefix:]id to <map>
      --save-bin [plt] [ver] [bin] [cmp] [flt] save string table to <bin>
      --read-map [map]                         add [prefix:]id from <map>
      --read-bin [bin]                         add csv/strings from <bin>
      --save-csv                               save strings to all csv
    
    Defaults:
    
      <ini>  #G3:/ini/loc.ini
      <utf>  1
      <map>  #G3:/lianzifu.csv
      <plt>  x64
      <ver>  6
      <bin>  #G3:/data/compiled/localization/w_strings.bin
      <cmp>  9
      <flt>  *_Text;*_StageDir
    
    Platforms:
    
      pc    Windows (32-bit)
      x64   Windows (64-bit)
      ps3   PlayStation 3
      ps4   PlayStation 4
      x360  Xbox 360
      xone  Xbox One
    
    Map format:
    
      The map files are used to restore the string identifiers
      (the binary string table contains only the hash values).
    
      Map files have to be encoded in UTF-8 (BOM is optional).
      Every non-empty line contains <[prefix:]id>[|...], where
      the prefix is optional (used to select the unpacked CSV,
      defaults to first CSV in loc.ini for unknown id hashes),
      and everything after | will be ignored on read (hashes).
    
    CSV format:
    
      The first line defines the case-insensitive column names.
      The first row contains the case-insensitive string ids or
      an eight-character, hexadecimal, and case-sensitive hash.
    
      Without a BOM the encoding is detected based on the first
      two octets (X,0 = UTF-16LE; 0,X = UTF-16BE; X,X = UTF-8).
      This extension to the Genome CSV format has been added to
      simplify the work flow with CSV tools that do not write a
      BOM and could be disabled with --read-csv 0 if necessary.
    
      Records are separated with a LINE FEED (U+000A), the NULL
      (U+0000) is not allowed, and all CARRIAGE RETURN (U+000D)
      are ignored during read. Record fields are separated with
      VERTICAL LINE (U+007C), there's no field quote character,
      leading and trailing white space is not removed, and only
      the following escape sequences are available:
        "\a"  COMMERCIAL AT (U+0040)
        "\n"  LINE FEED (U+000A)
        "\r"  CARRIAGE RETURN (U+000D)
        "\\"  REVERSE SOLIDUS (U+005C)
        "\v"  VERTICAL LINE (U+007C)
      The latter two are extensions to the Genome CSV format to
      permit encoding of field separators and escape sequences.
    
    Examples:
    
      create #G3:/data/compiled/localization/w_strings.bin (x64 v6) from CSVs
    
        lianzifu --read-ini --read-csv --save-bin
    
      export #G3:/lianzifu.csv from CSVs in #G3:/ini/loc.ini
    
        lianzifu --read-ini --read-csv --save-map
    
      unpack #G3:/data/compiled/localization/w_strings.bin with #G3:/lianzifu.csv
    
        lianzifu --read-map --read-ini --read-bin --save-csv

    Old versions:
    lianzifu_2.0.zip
    lianzifu_1.3.zip
    lianzifu_1.2.zip
    lianzifu_1.1.zip
    lianzifu_1.0.zip
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline Last edited by NicoDE; 09.02.2018 at 14:37. Reason: Windows binary release on GitHub

  2. #2 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 1.1
    • big-endian (PlayStation 3, Xbox 360) support fixed
    • --save-bin output directory is automatically created

    Thanks for the bug report
    NicoDE is offline Last edited by NicoDE; 16.01.2018 at 16:16.

  3. #3 Reply With Quote
    Neuling
    Join Date
    Jan 2018
    Posts
    4
    Do you have any public repository with the sourcecode?
    Tardek is offline

  4. #4 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 1.2
    • fixed BOM detection with non-Western user locale
    • new --read-csv flag to default to UTF without BOM (enabled by default)

    Many thanks for the detailed bug reports, especially from the Russian community
    NicoDE is offline Last edited by NicoDE; 16.01.2018 at 16:17.

  5. #5 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Quote Originally Posted by Tardek View Post
    Do you have any public repository with the sourcecode?
    Not yet, but it will be published after finishing and fixing the missing compression method.
    NicoDE is offline Last edited by NicoDE; 16.01.2018 at 16:18.

  6. #6 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 1.3
    • better compression ratio for levels 2-9
    NicoDE is offline Last edited by NicoDE; 16.01.2018 at 16:17.

  7. #7 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 2.0
    • new compression methods for levels 8-9

    The source code is available at https://github.com/nicodex/lianzifu

    edit: Windows binary release has been added in the first post
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline Last edited by NicoDE; 01.02.2018 at 11:29. Reason: Windows release

  8. #8 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 2.1
    • added column name filter for --save-bin

    The default filter is "*_Text;*_StageDir" (shouldn't change anything for Risen 3 projects).

    This feature has been added to support ELEX, where every language has it's own binary string table.
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline Last edited by NicoDE; 09.02.2018 at 14:38.

  9. #9 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Version 2.2
    • added support for empty strings on merging BINs
    • fixed idhash.names log value for merged BINs
    • added code signing in release build
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline

  10. #10 Reply With Quote
    Rookie
    Join Date
    Oct 2014
    Posts
    5
    Is there any way to repack them?
    Shield is offline

  11. #11 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Quote Originally Posted by Shield View Post
    Is there any way to repack them?
    Have a look at the lianzifu-pack.risen3*.cmd that are included in the release package.
    The usual command order for packing STBs is lianzifu --read-ini --read-csv --save-bin (optionally with overridden default parameters for the commands).

    Note that lianzifu has to support the Genome volume paths (used in the loc.ini). Currently all volumes (#Xxx:/) are mapped to the current directory and #Xxx:/ini/ is always mapped to ./data/ini/. There are no command line options yet to change the volume and path mappings (might be added in a later version).
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline Last edited by NicoDE; 23.02.2018 at 16:32.

  12. #12 Reply With Quote
    Rookie
    Join Date
    Oct 2014
    Posts
    5
    Is there any chance to be unpacked the file with all the dialogues in smaller filles for each caracter? How it is in Gothic 1 and 2. Each npc has his own script with his dialogue from the game.
    Shield is offline

  13. #13 Reply With Quote
    research NicoDE's Avatar
    Join Date
    Dec 2004
    Posts
    7,404
    Quote Originally Posted by Shield View Post
    Is there any chance to be unpacked the file with all the dialogues in smaller filles for each caracter?
    It would require to read/parse the binary game content files. This is not the intended use for lianzifu, sorry.
    However another tool could now read/write the raw (CSV) files and/or use the lianzifu code to read/write the binary (BIN/STR) files to get/set the dialog strings...

    My current TODO list for lianzifu only includes an even better compression method and a general cleanup of the string table code (mess)
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE is offline

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •