The rough breakup of the structure is:
64 maze_entries (64x26 bytes)
1 maze_header (the last 14 dwords)
In GemRB we have:
struct maze_entry {
ieDword unknown00;
ieDword accessible; //used in generation it is 1 for accessible areas
ieDword valid; //used in generation, it is 1 for used areas
ieDword trapped; //1 or 0, if 1 see next dword
ieDword traptype; //0-2 - enable TRAP(A|B|C) in the area
ieWord walls; //bitfield (1-east, 2-west,4-north,8-south)
ieDword unknown16;
};
struct maze_header {
ieDword maze_sizex, maze_sizey;
ieDword pos1x, pos1y; //nordom's position
ieDword pos2x, pos2y; //main hall position
ieDword pos3x, pos3y; //unknown
ieDword pos4x, pos4y; //unknown
ieDword trapcount; //based on map size
ieDword initialized; //set to 1
ieDword unknown2c; //unknown
ieDword unknown30; //unknown
};
Just for completeness, we also got an easy maze 2da for the built-in 3x3 initial maze:
2DA V1.0 3 FIELD_0 TRAPTYPE WALLS FIELD_16 AR1301 1 -1 5 0 AR1309 1 -1 13 0 AR1317 1 0 9 0 AR1302 1 -1 3 0 AR1310 1 -1 6 0 AR1318 1 -1 11 0 AR1303 1 -1 6 0 AR1311 1 -1 9 0 AR1319 1 -1 2 0











