From b6a64cee06136183b5773c5a0a162b77d66b0788 Mon Sep 17 00:00:00 2001 From: Henrique Gemignani Passos Lima Date: Thu, 16 Feb 2023 20:59:46 +0200 Subject: [PATCH] CGameAreaResource --- CGameAreaResource.bt | 104 +++++++++++++++++++++++++++++++++++++++++++ Common.bt | 3 ++ Run.bt | 1 + 3 files changed, 108 insertions(+) create mode 100644 CGameAreaResource.bt diff --git a/CGameAreaResource.bt b/CGameAreaResource.bt new file mode 100644 index 0000000..7c70b79 --- /dev/null +++ b/CGameAreaResource.bt @@ -0,0 +1,104 @@ +#ifndef _CGAMEAREARESOURCE +#define _CGAMEAREARESOURCE + +struct GameAreaHeader +{ + ChunkDescriptor chunk; + GUID id_a; + ushort unk1; + ushort unk2; + bool unk3; + GUID id_b; + GUID id_c; + GUID id_d; + GUID id_e; + GUID id_f; + FSeek(FTell() + chunk.size - 16 * 6 - 5); +}; + +struct PerformanceGroups +{ + ChunkDescriptor chunk; + FSeek(FTell() + chunk.size); +}; + +struct GeneratedObjectMap +{ + ChunkDescriptor chunk; + FSeek(FTell() + chunk.size); +}; + +struct Docks +{ + ChunkDescriptor chunk; + FSeek(FTell() + chunk.size); +}; + +struct BakedLightning +{ + ChunkDescriptor chunk; + FSeek(FTell() + chunk.size); +}; + +struct LoadUnit +{ + FormDescriptor form; + FSeek(FTell() + form.size); +}; + + +struct RoomHeader +{ + FormDescriptor form; + + GameAreaHeader game_area_header; + PerformanceGroups performance_groups; + GeneratedObjectMap generated_object_map; + Docks docks; + BakedLightning baked_lightinng; + + ChunkDescriptor load_unit_chunk; + short num_load_units; + LoadUnit load_units[num_load_units] ; +}; + +struct STRP +{ + FormDescriptor form; + uint unk; + FSeek(FTell() + form.size - 4); +}; + +struct ScriptData +{ + FormDescriptor form; + FSeek(FTell() + form.size); +}; + +struct LayerHeader { + int name_length; + //char name[name_length]; + //GUID id; + //int unk; +}; + +struct Layer +{ + FormDescriptor form; + + ChunkDescriptor header_chunk; + //LayerHeader header; +}; + + +struct CGameAreaResource +{ + RoomHeader header; + STRP strp; + ScriptData script_data; + + FormDescriptor layers_form; + Layer layer; +}; + +#endif // _CGAMEAREARESOURCE \ No newline at end of file diff --git a/Common.bt b/Common.bt index 2c957a3..576096e 100644 --- a/Common.bt +++ b/Common.bt @@ -1,5 +1,8 @@ #ifndef _COMMON #define _COMMON + +typedef uchar bool; + typedef struct { string text; diff --git a/Run.bt b/Run.bt index 92cd267..494e5d2 100644 --- a/Run.bt +++ b/Run.bt @@ -29,6 +29,7 @@ if (!exists(isDKCTF)) { #include "MaterialArchive.bt" #include "MessageStudioBinaryText.bt" // #include "CRuleSet.bt" +#include "CGameAreaResource.bt" #include "CScaleformFlashLibrary.bt" // Custom footer