Compare commits

...

2 Commits

Author SHA1 Message Date
Jarrod Doyle bcf7013cdb
Add Relations chunk pattern 2024-08-23 15:25:08 +01:00
Jarrod Doyle f0de440e06
Add initial Link chunk parsing 2024-08-23 15:20:26 +01:00
4 changed files with 47 additions and 0 deletions

View File

@ -26,11 +26,13 @@
#include "db_files/chunks/FLOW_TEX.hexpat" #include "db_files/chunks/FLOW_TEX.hexpat"
#include "db_files/chunks/FOGZONEVAR.hexpat" #include "db_files/chunks/FOGZONEVAR.hexpat"
#include "db_files/chunks/HotRegions.hexpat" #include "db_files/chunks/HotRegions.hexpat"
#include "db_files/chunks/L$_.hexpat"
#include "db_files/chunks/MAPISRC.hexpat" #include "db_files/chunks/MAPISRC.hexpat"
#include "db_files/chunks/Mission_GameSysEAX.hexpat" #include "db_files/chunks/Mission_GameSysEAX.hexpat"
#include "db_files/chunks/MultiBrush.hexpat" #include "db_files/chunks/MultiBrush.hexpat"
#include "db_files/chunks/OBJ_MAP.hexpat" #include "db_files/chunks/OBJ_MAP.hexpat"
#include "db_files/chunks/P$_.hexpat" #include "db_files/chunks/P$_.hexpat"
#include "db_files/chunks/Relations.hexpat"
#include "db_files/chunks/RENDPARAMS.hexpat" #include "db_files/chunks/RENDPARAMS.hexpat"
#include "db_files/chunks/ROOM_DB.hexpat" #include "db_files/chunks/ROOM_DB.hexpat"
#include "db_files/chunks/ROOM_EAX.hexpat" #include "db_files/chunks/ROOM_EAX.hexpat"

View File

@ -70,6 +70,7 @@ struct TOCEntry {
("MissionEAX"): Chunk<AccousticsProperty> mission_eax @ offset; ("MissionEAX"): Chunk<AccousticsProperty> mission_eax @ offset;
("MultiBrush"): Chunk<MultiBrush> multibrush @ offset; ("MultiBrush"): Chunk<MultiBrush> multibrush @ offset;
("OBJ_MAP"): Chunk<ObjMap> obj_map @ offset; ("OBJ_MAP"): Chunk<ObjMap> obj_map @ offset;
("Relations"): Chunk<Relations> relations @ offset;
("RENDPARAMS"): Chunk<RendParams> rend_params @ offset; ("RENDPARAMS"): Chunk<RendParams> rend_params @ offset;
("ROOM_DB"): Chunk<RoomDb> room_db @ offset; ("ROOM_DB"): Chunk<RoomDb> room_db @ offset;
("ROOM_EAX"): Chunk<RoomEax> room_eax @ offset; ("ROOM_EAX"): Chunk<RoomEax> room_eax @ offset;
@ -88,6 +89,13 @@ struct TOCEntry {
if (std::string::starts_with(name, "P$")) { if (std::string::starts_with(name, "P$")) {
Chunk<PropertyMap> property_chunk @ offset [[name(name)]]; Chunk<PropertyMap> property_chunk @ offset [[name(name)]];
} }
// if (std::string::starts_with(name, "LD$")) {
// std::print("LD: {}", name);
// }
if (std::string::starts_with(name, "L$")) {
Chunk<LinkMap> link_chunk @ offset [[name(name)]];
// std::print("L: {}", name);
}
} }
} }
}; };

View File

@ -0,0 +1,24 @@
#pragma once
#include "Common.hexpat"
bitfield LinkId {
id: 16;
concrete: 4;
relation: 12;
};
struct Link {
LinkId id;
s32 source;
s32 destination;
u16 relation;
// if (source > 0 || destination > 0) {
// std::print("Link: {}, Id: {}, Src: {}, Dest: {}, Flavor: {}", parent.parent.parent.name, id, source, destination, relation);
// }
};
struct LinkMap {
u32 max = parent.parent.data_end;
Link links[while($ < max)];
};

View File

@ -0,0 +1,13 @@
#pragma once
#include <std/io.pat>
struct RelationString {
char name[];
$ = $ + 32 - std::string::length(name);
};
struct Relations {
u32 max = parent.parent.data_end;
RelationString relations[while($ < max)];
};