This tool can read infinity engine binary game files for BGEE and BG2EE. Similar to NearInfinity. It prints the binary game data files into human readable text. With optional json output.
Taken from infinity file formats on the iesdp.
- area
- biff
- character
- creature
- dialogue
- effect_v1
- effect_v2
- game
- ids
- item_table
- item
- key
- save
- spell_table
- spell
- store
- tlk
- twoda
- world_map
- .bio files - Text format Baldur's Gate 2 only, Character biography
- embedded tileset files - Binary data for tilesets in maps can be viewed
Ensure rust is installed via rustup
cargo run <path to chitin.key> / or target file
post_infinity(.exe) models/fixtures/gate1.spl
{
"signature": "SPL ",
"version": "V1 ",
"unidentified_spell_name": 14260,
"identified_spell_name": 9999999,
"completion_sound": "CAS_M03\u0000",
"flags": 0,
"spell_type": 1,
"exclusion_flags": 0,
"casting_graphics": 18,
"min_level": 0,
"primary_spell_school": 2,
"min_strength": 0,
"secondary_spell_school": 6,
"min_strength_bonus": 0,
"kit_usability_1": 0,
"min_intelligence": 0,
"kit_usability_2": 0,
"min_dexterity": 0,
"kit_usability_3": 0,
"min_wisdom": 0,
"kit_usability_4": 0,
"min_constitution": 0,
"min_charisma": 0,
"spell_level": 9,
"max_stackable": 1,
"spell_book_icon": "SPWI905C",
"lore": 0,
"ground_icon": "\u0000\u0000rb\u0000\u0000Un",
"base_weight": 0,
"spell_description_generic": 4294967295,
"spell_description_identified": 9999999,
"description_icon": "",
"enchantment": 0,
"offset_to_extended_headers": 114,
"count_of_extended_headers": 1,
"offset_to_feature_block_table": 154,
"offset_to_casting_feature_blocks": 0,
"count_of_casting_feature_blocks": 0,
"extended_headers": [
{
"spell_form": 1,
"friendly": 0,
"location": 2,
"memorised_icon": "SPWI905B",
"target_type": 4,
"target_count": 0,
"range": 25,
"level_required": 1,
"casting_time": 4,
"times_per_day": 0,
"dice_sides": 6,
"dice_thrown": 0,
"enchanted": 0,
"damage_type": 1,
"count_of_feature_blocks": 1,
"offset_to_feature_blocks": 0,
"charges": 1,
"charge_depletion_behaviour": 1,
"projectile": 1
}
],
"equipping_feature_blocks": [
{
"opcode_number": 177,
"target_type": 1,
"power": 9,
"parameter_1": 0,
"parameter_2": 2,
"timing_mode": 0,
"dispel_resistance": 2,
"duration": 100000,
"probability_1": 39,
"probability_2": 0,
"resource": "balorsu\u0000",
"dice_thrown_max_level": 0,
"dice_sides_min_level": 0,
"saving_throw_type": [
0,
0,
0,
0
],
"saving_throw_bonus": 0,
"stacking_id": 0
}
]
}
cargo build --release
It takes about 0.07 ish to read all the supported files in an unmodded bg1ee game, into memory, without parsing them.
time cargo run -- <path to bgee dir>/chitin.key
0.07s user 0.58s system 99% cpu 0.655 total
you can analyze performance:
cargo install flamegraph
flamegraph -- target/release/post_infinity <path to chitin file>