Construct type definitions for Retro Studios game
| Format | Prime 1 (Read) | Prime 1 (Write) | Prime 2 (Read) | Prime 2 (Write) | Prime 3 (Read) | Prime 3 (Write) |
|---|---|---|---|---|---|---|
| PAK | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| MLVL | ✓ | ✗ | ✓ | ✗ | ✓ | ✗ |
| MREA | ✗ | ✗ | ✓ | ✗ [2] | ✗ | ✗ |
| MAPA | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ |
| CMDL | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| ANCS | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| ANIM | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| CSKR | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| CINF | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| PART | ✓ | ✓ | ✓ | ✓ | ✓ [1] | ✓ [1] |
| HIER | - | - | ✓ | ✓ | - | - |
| STRG | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SAVW | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ |
- [1] All existing files parse, but not checked if exhaustive for what the game supports.
- [2] Missing re-calculation of how sections are split between blocks.
from retro_data_structures.formats.pak_gc import PAK_GC
def read_file(path):
with open(path, "rb") as f:
return f.read()
PAK_GC.build_file({
'named_resources': [
{"asset": {"type": 'TXTR', "id": 201335801}, "name": 'TXTR_ElevatorIcon_1'},
{"asset": {"type": 'TXTR', "id": 239414538}, "name": 'TXTR_ElevatorIcon'},
{"asset": {"type": 'TXTR', "id": 564256465}, "name": 'TXTR_QuaterCurve'},
{"asset": {"type": 'TXTR', "id": 568030977}, "name": 'TXTR_SaveStationIcon_1'},
],
'resources': [
{
"asset": {"type": 'TXTR', "id": 201335801},
"compressed": 1,
"contents": {"value": read_file("ElevatorIcon_1.TXTR")},
},
{
"asset": {"type": 'TXTR', "id": 201335801},
"compressed": 1,
"contents": {"value": read_file("ElevatorIcon.TXTR")},
},
{
"asset": {"type": 'TXTR', "id": 201335801},
"compressed": 1,
"contents": {"value": read_file("QuaterCurve.TXTR")},
},
{
"asset": {"type": 'TXTR', "id": 201335801},
"compressed": 1,
"contents": {"value": read_file("SaveStationIcon_1.TXTR")},
},
]
}, "Game.pak")