Created
October 8, 2019 03:37
-
-
Save encounter/106f91bd0e6293cbd0228f7e3e93b79b to your computer and use it in GitHub Desktop.
Kaitai Struct definitions for (a subset of) No Man's Sky MBIN and PAK files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| meta: | |
| id: mbin | |
| file-extension: mbin | |
| endian: le | |
| encoding: utf-8 | |
| seq: | |
| - id: header | |
| type: mbin_header | |
| - id: table | |
| type: | |
| switch-on: header.template_name | |
| cases: | |
| '"cGcProductTable"': list(_io.pos, "product_entry") | |
| '"cGcRecipeTable"': list(_io.pos, "refiner_recipe") | |
| '"cGcSubstanceTable"': list(_io.pos, "substance_entry") | |
| '"cGcTechnologyTable"': list(_io.pos, "technology_entry") | |
| '"cTkLocalisationTable"': list(_io.pos, "localization_entry") | |
| _: unknown | |
| types: | |
| unknown: {} | |
| mbin_header: | |
| seq: | |
| - id: magic | |
| contents: [0xCC, 0xCC, 0xCC, 0xCC] | |
| - id: version | |
| type: u4 | |
| - id: timestamp | |
| type: u8 | |
| - id: template_guid | |
| type: u8 | |
| - id: template_name | |
| type: strz | |
| size: 64 | |
| - id: padding | |
| type: u8 | |
| list_def: | |
| seq: | |
| - id: rel_offset | |
| type: u8 | |
| - id: size | |
| type: u4 | |
| - contents: [0x01, 0xAA, 0xAA, 0xAA] | |
| list: | |
| params: | |
| - id: pos | |
| type: u8 | |
| - id: list_type | |
| type: str | |
| seq: | |
| - id: info | |
| type: list_def | |
| instances: | |
| values: | |
| type: | |
| switch-on: list_type | |
| cases: | |
| '"localization_entry"': localization_entry | |
| '"product_entry"': product_entry | |
| '"refiner_recipe"': refiner_recipe | |
| '"refiner_recipe_element"': refiner_recipe_element | |
| '"stats_bonus"': stats_bonus | |
| '"substance_entry"': substance_entry | |
| '"technology_entry"': technology_entry | |
| '"technology_requirement"': technology_requirement | |
| _: unknown | |
| pos: pos + info.rel_offset | |
| io: _root._io | |
| repeat: expr | |
| repeat-expr: info.size | |
| v_string: | |
| params: | |
| - id: pos | |
| type: u8 | |
| seq: | |
| - id: info | |
| type: list_def | |
| instances: | |
| value: | |
| type: strz | |
| size: info.size | |
| pos: pos + info.rel_offset | |
| io: _root._io | |
| str_list_0x10: | |
| params: | |
| - id: pos | |
| type: u8 | |
| seq: | |
| - id: info | |
| type: list_def | |
| instances: | |
| values: | |
| type: strz | |
| size: 16 | |
| pos: pos + info.rel_offset | |
| io: _root._io | |
| repeat: expr | |
| repeat-expr: info.size | |
| localization_entry: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 32 | |
| - id: english | |
| type: v_string(_io.pos) | |
| - id: french | |
| type: v_string(_io.pos) | |
| - id: italian | |
| type: v_string(_io.pos) | |
| - id: german | |
| type: v_string(_io.pos) | |
| - id: spanish | |
| type: v_string(_io.pos) | |
| - id: russian | |
| type: v_string(_io.pos) | |
| - id: polish | |
| type: v_string(_io.pos) | |
| - id: dutch | |
| type: v_string(_io.pos) | |
| - id: portuguese | |
| type: v_string(_io.pos) | |
| - id: latin_american_spanish | |
| type: v_string(_io.pos) | |
| - id: brazilian_portuguese | |
| type: v_string(_io.pos) | |
| - id: simplified_chinese | |
| type: v_string(_io.pos) | |
| - id: traditional_chinese | |
| type: v_string(_io.pos) | |
| - id: tencent_chinese | |
| type: v_string(_io.pos) | |
| - id: korean | |
| type: v_string(_io.pos) | |
| - id: japanese | |
| type: v_string(_io.pos) | |
| - id: us_english | |
| type: v_string(_io.pos) | |
| technology_entry: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 16 | |
| - id: group | |
| type: strz | |
| size: 32 | |
| - id: name | |
| type: strz | |
| size: 128 | |
| - id: lower_name | |
| type: strz | |
| size: 128 | |
| - id: subtitle | |
| type: v_string(_io.pos) | |
| - id: description | |
| type: v_string(_io.pos) | |
| - id: teach | |
| type: u8 | |
| enum: boolean | |
| - id: hint_start | |
| type: strz | |
| size: 32 | |
| - id: hint_end | |
| type: strz | |
| size: 32 | |
| - id: icon | |
| type: filename_ref | |
| - size: 4 | |
| - id: color | |
| type: color | |
| - id: level | |
| type: u4 | |
| - id: chargeable | |
| type: u4 | |
| enum: boolean | |
| - id: charge_amount | |
| type: u4 | |
| - id: charge_type | |
| type: u4 | |
| enum: substance_category | |
| - id: charge_by | |
| type: str_list_0x10(_io.pos) | |
| - id: charge_multiplier | |
| type: f4 | |
| - id: build_fully_carged | |
| type: u1 | |
| enum: boolean | |
| - id: uses_ammo | |
| type: u1 | |
| enum: boolean | |
| - size: 2 | |
| - id: ammo_id | |
| type: strz | |
| size: 16 | |
| - id: primary_item | |
| type: u1 | |
| enum: boolean | |
| - id: upgrade | |
| type: u1 | |
| enum: boolean | |
| - id: core | |
| type: u1 | |
| enum: boolean | |
| - id: repair_tech | |
| type: u1 | |
| enum: boolean | |
| - id: procedural | |
| type: u1 | |
| enum: boolean | |
| - size: 3 | |
| - id: category | |
| type: u4 | |
| enum: technology_category | |
| - id: rarity | |
| type: u4 | |
| enum: technology_rarity | |
| - id: value | |
| type: f4 | |
| - size: 4 | |
| - id: requirements | |
| type: list(_io.pos, "technology_requirement") | |
| - id: base_stat | |
| type: u4 | |
| enum: stats_type | |
| - size: 4 | |
| - id: stat_bonuses | |
| type: list(_io.pos, "stats_bonus") | |
| - id: required_tech | |
| type: strz | |
| size: 16 | |
| - id: required_level | |
| type: u4 | |
| - size: 4 | |
| - id: focus_locator | |
| type: strz | |
| size: 32 | |
| - id: upgrade_color | |
| type: color | |
| - id: link_color | |
| type: color | |
| - id: reward_group | |
| type: strz | |
| size: 16 | |
| - id: base_value | |
| type: u4 | |
| - id: cost | |
| type: item_price_modifiers | |
| - id: required_rank | |
| type: u4 | |
| - id: dispensing_race | |
| type: u4 | |
| enum: alien_race | |
| - id: fragment_cost | |
| type: u4 | |
| - id: tech_shop_rarity | |
| type: u4 | |
| enum: technology_rarity | |
| - id: wiki_enabled | |
| type: u8 | |
| enum: boolean | |
| - id: damaged_description | |
| type: v_string(_io.pos) | |
| product_entry: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 16 | |
| - id: name | |
| type: strz | |
| size: 128 | |
| - id: lower_name | |
| type: strz | |
| size: 128 | |
| - id: subtitle | |
| type: v_string(_io.pos) | |
| - id: description | |
| type: v_string(_io.pos) | |
| - id: hint | |
| type: strz | |
| size: 32 | |
| - id: group_id | |
| type: strz | |
| size: 16 | |
| - id: debris | |
| type: filename_ref | |
| - id: base_value | |
| type: u4 | |
| - id: level | |
| type: u4 | |
| - id: icon | |
| type: filename_ref | |
| - id: hero_icon | |
| type: filename_ref | |
| - size: 12 | |
| - id: color | |
| type: color | |
| - id: substance_category | |
| enum: substance_category | |
| type: u4 | |
| - id: type | |
| type: u4 | |
| enum: product_category | |
| - id: rarity | |
| enum: rarity | |
| type: u4 | |
| - id: legality | |
| enum: legality | |
| type: u4 | |
| - id: consumable | |
| type: u1 | |
| enum: boolean | |
| - size: 3 | |
| - id: charge_value | |
| type: u4 | |
| - id: stack_multiplier | |
| type: u4 | |
| - id: default_craft_amount | |
| type: u4 | |
| - id: craft_amount_step_size | |
| type: u4 | |
| - id: craft_amount_multiplier | |
| type: u4 | |
| - id: requirements | |
| type: list(_io.pos, "technology_requirement") | |
| - id: alt_requirements | |
| type: list(_io.pos, "technology_requirement") | |
| - id: cost | |
| type: item_price_modifiers | |
| - id: recipe_cost | |
| type: u4 | |
| - id: specific_charge_only | |
| type: u1 | |
| - size: 3 | |
| - id: normalized_value_on_world | |
| type: f4 | |
| - id: normalized_value_off_world | |
| type: f4 | |
| - id: trade_category | |
| enum: trade_category | |
| type: u4 | |
| - id: wiki_category | |
| enum: wiki_category | |
| type: u4 | |
| - id: is_craftable | |
| type: u1 | |
| enum: boolean | |
| - size: 3 | |
| - id: deploys_into | |
| type: strz | |
| size: 16 | |
| - id: economy_influence_multiplier | |
| type: f4 | |
| - size: 4 | |
| - id: pin_objective | |
| type: strz | |
| size: 32 | |
| - id: pin_objective_tip | |
| type: strz | |
| size: 32 | |
| - id: cooking_ingredient | |
| type: u1 | |
| enum: boolean | |
| - size: 3 | |
| - id: cooking_value | |
| type: f4 | |
| - size: 8 | |
| technology_requirement: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 16 | |
| - id: inventory_type | |
| type: u4 | |
| enum: inventory_type | |
| - id: amount | |
| type: u4 | |
| stats_bonus: | |
| seq: | |
| - id: type | |
| type: u4 | |
| enum: stats_type | |
| - id: bonus | |
| type: f4 | |
| - id: level | |
| type: u4 | |
| item_price_modifiers: | |
| seq: | |
| - id: space_station_markup | |
| type: f4 | |
| - id: low_price_mod | |
| type: f4 | |
| - id: high_price_mod | |
| type: f4 | |
| - id: buy_base_markup | |
| type: f4 | |
| - id: buy_markup_mod | |
| type: f4 | |
| filename_ref: | |
| seq: | |
| - id: filename | |
| type: strz | |
| size: 128 | |
| - size: 4 | |
| color: | |
| seq: | |
| - id: r | |
| type: f4 | |
| - id: g | |
| type: f4 | |
| - id: b | |
| type: f4 | |
| - id: a | |
| type: f4 | |
| refiner_recipe: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 32 | |
| - id: name | |
| type: strz | |
| size: 32 | |
| - id: time_to_make | |
| type: f4 | |
| - id: cooking | |
| type: u4 | |
| enum: boolean | |
| - id: result | |
| type: refiner_recipe_element | |
| - id: ingredients | |
| type: list(_io.pos, "refiner_recipe_element") | |
| refiner_recipe_element: | |
| seq: | |
| - id: id | |
| type: strz | |
| size: 16 | |
| - id: type | |
| type: u4 | |
| enum: inventory_type | |
| - id: amount | |
| type: u4 | |
| substance_entry: | |
| seq: | |
| - id: name | |
| type: strz | |
| size: 32 | |
| - id: lower_name | |
| type: strz | |
| size: 32 | |
| - id: id | |
| type: strz | |
| size: 16 | |
| - id: symbol | |
| type: strz | |
| size: 32 | |
| - id: icon | |
| type: filename_ref | |
| - id: debris | |
| type: filename_ref | |
| - id: subtitle | |
| type: v_string(_io.pos) | |
| - id: description | |
| type: v_string(_io.pos) | |
| - size: 8 | |
| - id: color | |
| type: color | |
| - id: world_color | |
| type: color | |
| - id: base_value | |
| type: u4 | |
| - id: category | |
| type: u4 | |
| enum: substance_category | |
| - id: rarity | |
| type: u4 | |
| enum: rarity | |
| - id: legality | |
| type: u4 | |
| enum: legality | |
| - id: charge_value | |
| type: u4 | |
| - id: stack_multiplier | |
| type: u4 | |
| - id: cost | |
| type: item_price_modifiers | |
| - id: normalized_value_on_world | |
| type: f4 | |
| - id: normalized_value_off_world | |
| type: f4 | |
| - id: trade_category | |
| type: u4 | |
| enum: trade_category | |
| - id: wiki_enabled | |
| type: u4 | |
| enum: boolean | |
| - id: economy_influence_multiplier | |
| type: f4 | |
| - id: pin_objective | |
| type: strz | |
| size: 32 | |
| - id: pin_objective_tip | |
| type: strz | |
| size: 32 | |
| - id: wiki_mission_id | |
| type: strz | |
| size: 16 | |
| - id: cooking_ingredient | |
| type: u1 | |
| enum: boolean | |
| - size: 15 | |
| enums: | |
| boolean: | |
| 0: false | |
| 1: true | |
| substance_category: | |
| 0: fuel | |
| 1: metal | |
| 2: catalyst | |
| 3: stellar | |
| 4: flora | |
| 5: earth | |
| 6: exotic | |
| 7: special | |
| 8: building_part | |
| technology_category: | |
| 0: ship | |
| 1: weapon | |
| 2: suit | |
| 3: personal | |
| 4: all | |
| 5: none | |
| 6: freighter | |
| 7: maintenance | |
| 8: exocraft | |
| 9: submarine | |
| 10: all_vehicles | |
| technology_rarity: | |
| 0: normal | |
| 1: very_common | |
| 2: common | |
| 3: rare | |
| 4: very_rare | |
| 5: impossible | |
| 6: always | |
| stats_type: | |
| 0: unspecified | |
| 1: weapon_laser | |
| 2: weapon_laser_damage | |
| 3: weapon_laser_mining_speed | |
| 4: weapon_laser_heattime | |
| 5: weapon_laser_bounce | |
| 6: weapon_laser_reloadtime | |
| 7: weapon_laser_recoil | |
| 8: weapon_laser_drain | |
| 9: weapon_laser_stronglaser | |
| 10: weapon_laser_chargetime | |
| 11: weapon_laser_miningbonus | |
| 12: weapon_projectile | |
| 13: weapon_projectile_damage | |
| 14: weapon_projectile_range | |
| 15: weapon_projectile_rate | |
| 16: weapon_projectile_clipsize | |
| 17: weapon_projectile_reloadtime | |
| 18: weapon_projectile_recoil | |
| 19: weapon_projectile_bounce | |
| 20: weapon_projectile_homing | |
| 21: weapon_projectile_dispersion | |
| 22: weapon_projectile_bulletspershot | |
| 23: weapon_projectile_maximumcharge | |
| 24: weapon_rail | |
| 25: weapon_shotgun | |
| 26: weapon_burst | |
| 27: weapon_grenade | |
| 28: weapon_grenade_damage | |
| 29: weapon_grenade_radius | |
| 30: weapon_grenade_speed | |
| 31: weapon_grenade_bounce | |
| 32: weapon_grenade_homing | |
| 33: weapon_grenade_clusterbomb | |
| 34: weapon_terrainedit | |
| 35: weapon_minegrenade | |
| 36: weapon_frontshield | |
| 37: weapon_scope | |
| 38: weapon_scan | |
| 39: weapon_scan_radius | |
| 40: weapon_scan_recharge_time | |
| 41: weapon_scan_types | |
| 42: weapon_scan_binoculars | |
| 43: weapon_scan_discovery_creature | |
| 44: weapon_scan_discovery_flora | |
| 45: weapon_scan_secondary | |
| 46: weapon_scan_terrain_resource | |
| 47: weapon_scan_surveying | |
| 48: suit_armour_health | |
| 49: suit_armour_shield | |
| 50: suit_armour_shield_strength | |
| 51: suit_energy | |
| 52: suit_energy_regen | |
| 53: suit_protection | |
| 54: suit_protection_cold | |
| 55: suit_protection_heat | |
| 56: suit_protection_toxic | |
| 57: suit_protection_radiation | |
| 58: suit_underwater | |
| 59: suit_underwaterlifesupport | |
| 60: suit_damagereduce_cold | |
| 61: suit_damagereduce_heat | |
| 62: suit_damagereduce_toxic | |
| 63: suit_damagereduce_radiation | |
| 64: suit_protection_heatdrain | |
| 65: suit_protection_colddrain | |
| 66: suit_protection_toxdrain | |
| 67: suit_protection_raddrain | |
| 68: suit_protection_waterdrain | |
| 69: suit_stamina_strength | |
| 70: suit_stamina_speed | |
| 71: suit_jetpack | |
| 72: suit_jetpack_tank | |
| 73: suit_jetpack_drain | |
| 74: suit_jetpack_ignition | |
| 75: suit_jetpack_doublejump | |
| 76: suit_jetpack_waterefficiency | |
| 77: suit_autotranslator | |
| 78: suit_utility | |
| 79: ship_weapons_guns | |
| 80: ship_weapons_guns_damage | |
| 81: ship_weapons_guns_rate | |
| 82: ship_weapons_guns_heattime | |
| 83: ship_weapons_guns_cooltime | |
| 84: ship_weapons_guns_scale | |
| 85: ship_weapons_guns_bulletspershot | |
| 86: ship_weapons_guns_dispersion | |
| 87: ship_weapons_guns_range | |
| 88: ship_weapons_guns_damage_radius | |
| 89: ship_weapons_lasers | |
| 90: ship_weapons_lasers_damage | |
| 91: ship_weapons_lasers_heattime | |
| 92: ship_weapons_missiles | |
| 93: ship_weapons_missiles_numpershot | |
| 94: ship_weapons_missiles_speed | |
| 95: ship_weapons_missiles_damage | |
| 96: ship_weapons_missiles_size | |
| 97: ship_weapons_shotgun | |
| 98: ship_weapons_minigun | |
| 99: ship_weapons_plasma | |
| 100: ship_weapons_rockets | |
| 101: ship_armour_shield | |
| 102: ship_armour_shield_strength | |
| 103: ship_armour_health | |
| 104: ship_scan | |
| 105: ship_scan_economyfilter | |
| 106: ship_scan_conflictfilter | |
| 107: ship_hyperdrive | |
| 108: ship_hyperdrive_jumpdistance | |
| 109: ship_hyperdrive_jumpspercell | |
| 110: ship_launcher | |
| 111: ship_launcher_takeoffcost | |
| 112: ship_launcher_autocharge | |
| 113: ship_pulsedrive | |
| 114: ship_pulsedrive_minijumpfuelspending | |
| 115: ship_boost | |
| 116: ship_maneuverability | |
| 117: ship_boostmaneuverability | |
| 118: ship_teleport | |
| 119: freighter_hyperdrive | |
| 120: freighter_hyperdrive_jumpdistance | |
| 121: vehicle_boost | |
| 122: vehicle_engine | |
| 123: vehicle_scan | |
| 124: vehicle_enginefueluse | |
| 125: vehicle_enginetopspeed | |
| 126: vehicle_boostspeed | |
| 127: vehicle_boosttanks | |
| 128: vehicle_grip | |
| 129: vehicle_skidgrip | |
| 130: vehicle_subboostspeed | |
| 131: vehicle_laser | |
| 132: vehicle_laserdamage | |
| 133: vehicle_laserheattime | |
| 134: vehicle_laserstronglaser | |
| 135: vehicle_gun | |
| 136: vehicle_gundamage | |
| 137: vehicle_gunheattime | |
| 138: vehicle_gunrate | |
| alien_race: | |
| 0: traders | |
| 1: warriors | |
| 2: explorers | |
| 3: robots | |
| 4: atlas | |
| 5: diplomats | |
| 6: exotics | |
| 7: none | |
| inventory_type: | |
| 0: substance | |
| 1: technology | |
| 2: product | |
| product_category: | |
| 0: component | |
| 1: consumable | |
| 2: tradeable | |
| 3: curiosity | |
| 4: building_part | |
| 5: procedural | |
| 6: emote | |
| 7: customization_part | |
| rarity: | |
| 0: common | |
| 1: uncommon | |
| 2: rare | |
| legality: | |
| 0: legal | |
| 1: illegal | |
| 2: none | |
| trade_category: | |
| 0: mineral | |
| 1: tech | |
| 2: commodity | |
| 3: component | |
| 4: alloy | |
| 5: exotic | |
| 6: energy | |
| 7: none | |
| wiki_category: | |
| 0: not_enabled | |
| 1: crafting | |
| 2: tech | |
| 3: construction | |
| 4: trade | |
| 5: curio | |
| 6: cooking |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| meta: | |
| id: psarc | |
| file-extension: pak | |
| application: Sony PlayStation archive | |
| endian: be | |
| seq: | |
| - id: header | |
| type: toc_header | |
| - id: tables | |
| type: toc_tables | |
| size: header.toc_size - 32 | |
| enums: | |
| compression_type: | |
| 0: none | |
| 0x7a6c6962: zlib | |
| 0x6c7a6d61: lzma | |
| types: | |
| toc_header: | |
| seq: | |
| - id: magic | |
| contents: PSAR | |
| - id: version_major | |
| type: u2 | |
| - id: version_minor | |
| type: u2 | |
| - id: compression_type | |
| type: u4 | |
| enum: compression_type | |
| - id: toc_size | |
| type: u4 | |
| - id: toc_entry_size | |
| type: u4 | |
| - id: toc_entries | |
| type: u4 | |
| - id: block_size | |
| type: u4 | |
| - id: archive_flags | |
| type: u4 | |
| toc_tables: | |
| seq: | |
| - id: entries | |
| type: toc_entry | |
| size: _root.header.toc_entry_size | |
| repeat: expr | |
| repeat-expr: _root.header.toc_entries | |
| - id: blocks | |
| type: u2 | |
| repeat: eos | |
| toc_entry: | |
| seq: | |
| - id: name_digest | |
| size: 16 | |
| - id: start_block_index | |
| type: u4 | |
| - id: size | |
| type: b40 | |
| - id: offset | |
| type: b40 | |
| instances: | |
| body: | |
| pos: offset | |
| size: _root.tables.blocks[start_block_index] | |
| io: _root._io | |
| process: zlib | |
| repeat: until | |
| repeat-until: body.size == size # FIXME this doesn't work in ksy |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment