mirror of
https://github.com/zeldaret/st
synced 2026-08-18 05:38:23 -04:00
Decompile overlay 1 (Part 3) (#95)
* ZeldaArrangeBinary OK * ZeldaMapBinary 26% * UnkStruct_SceneChange1 -> EntranceInfo * cleanup EntranceInfo ctors * fix regressions * ZeldaMapBinary 47% * fix regressions * ZeldaMapBinary 73% * ZeldaMapBinary 89% * ZeldaMapBinary 99%
This commit is contained in:
+298
-67
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorId.hpp"
|
||||
#include "Actor/ActorRef.hpp"
|
||||
#include "Map/MapObjectId.hpp"
|
||||
#include "types.h"
|
||||
|
||||
@@ -11,11 +13,13 @@ extern "C" {
|
||||
|
||||
typedef u32 FileType;
|
||||
enum FileType_ {
|
||||
FileType_ZOB = 'BLOZ',
|
||||
FileType_ZTB = '1BTZ',
|
||||
FileType_ZMB = '1BMZ',
|
||||
FileType_CIB = 'ZCIB',
|
||||
FileType_CLB = 'ZCLB',
|
||||
FileType_ZOB = 'BLOZ',
|
||||
FileType_ZTB = '1BTZ',
|
||||
FileType_ZAB = 'ZCAB',
|
||||
FileType_ZMBv1 = 'ZMB1',
|
||||
FileType_ZMBv2 = 'ZMB2',
|
||||
FileType_CIB = 'ZCIB',
|
||||
FileType_CLB = 'ZCLB',
|
||||
};
|
||||
|
||||
typedef struct FileInfos {
|
||||
@@ -23,6 +27,55 @@ typedef struct FileInfos {
|
||||
/* 04 */ size_t size;
|
||||
} FileInfos;
|
||||
|
||||
// .cib
|
||||
typedef struct CourseInitEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ STRUCT_PAD(0x10, 0x24);
|
||||
} CourseInitEntry; // size = 0x24
|
||||
|
||||
typedef struct CourseInitHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseInitHeader; // size = 0x10
|
||||
|
||||
// .clb
|
||||
typedef struct CourseListRoomEntry {
|
||||
/* 00 */ u8 roomIndex;
|
||||
/* 01 */ u8 mapPaintIndex;
|
||||
/* 02 */ u16 unk_02;
|
||||
} CourseListRoomEntry; // size = 0x08
|
||||
|
||||
typedef struct CourseListEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ unk32 unk_10;
|
||||
/* 14 */ u8 numRooms;
|
||||
/* 15 */ unk8 unk_15;
|
||||
/* 16 */ unk8 titleCardMsgIndex;
|
||||
/* 17 */ u8 saveCourseIndex;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
/* 1C */ u8 unk_1C;
|
||||
/* 1D */ u8 unk_1D;
|
||||
/* 1E */ u8 unk_1E;
|
||||
/* 1F */ u8 unk_1F;
|
||||
/* 20 */ u8 defaultMapPaintIndex;
|
||||
/* 21 */ s8 unk_21; // scene index but unknown purpose
|
||||
/* 22 */ unk8 unk_22; // pad?
|
||||
/* 23 */ unk8 unk_23; // pad?
|
||||
/* 24 */ CourseListRoomEntry roomEntries[];
|
||||
} CourseListEntry; // size >= 0x28
|
||||
|
||||
typedef struct CourseListHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseListHeader; // size = 0x10
|
||||
|
||||
// .zob
|
||||
typedef struct ZOBHeader {
|
||||
/* 00 */ FileType type; // always "ZOLB"
|
||||
@@ -51,7 +104,7 @@ typedef struct ZTBHeader {
|
||||
/* 00 */ u32 magic; // 'MTRB'
|
||||
/* 04 */ FileType type; // always "ZTB1"
|
||||
/* 08 */ size_t nSize;
|
||||
/* 0C */ u32 nEntries;
|
||||
/* 0C */ u32 nSections;
|
||||
/* 10 */ u8 unused[0x10];
|
||||
} ZTBHeader; // size = 0x20
|
||||
|
||||
@@ -129,35 +182,90 @@ extern BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectio
|
||||
extern BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB);
|
||||
extern BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK);
|
||||
|
||||
// .zab
|
||||
typedef u32 ZABSectionType;
|
||||
enum ZABSectionType_ {
|
||||
ZABSectionType_CABM = 'CABM',
|
||||
ZABSectionType_CABI = 'CABI',
|
||||
};
|
||||
|
||||
typedef struct ZABHeader {
|
||||
/* 00 */ FileType type; // always "ZCAB" (probably "Zelda Course Arrange Binary"?)
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nSections;
|
||||
/* 0C */ unk32 unk_0C;
|
||||
} ZABHeader; // size = 0x10
|
||||
|
||||
typedef struct ZABEntryCABM {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ s8 unk_03;
|
||||
/* 04 */ u32 unk_04;
|
||||
} ZABEntryCABM; // size = 0x08
|
||||
|
||||
typedef struct ZABSectionHeader {
|
||||
/* 00 */ ZABSectionType type;
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u8 unk_08;
|
||||
/* 09 */ u8 unk_09;
|
||||
/* 0A */ u8 unk_0A;
|
||||
/* 0B */ u8 unk_0B;
|
||||
/* 0C */ u8 unk_0C;
|
||||
/* 0D */ u8 unk_0D;
|
||||
/* 0E */ u16 nEntries;
|
||||
} ZABSectionHeader; // size = 0x10
|
||||
|
||||
typedef struct ZABSectionCABM {
|
||||
/* 00 */ ZABSectionHeader header;
|
||||
/* 10 */ ZABEntryCABM entries[];
|
||||
} ZABSectionCABM;
|
||||
|
||||
typedef struct ZABSectionCABI {
|
||||
/* 00 */ ZABSectionHeader header;
|
||||
/* 10 */ // unknown
|
||||
} ZABSectionCABI;
|
||||
|
||||
struct UnkStruct_027e0cd8_04;
|
||||
struct UnkStruct_func_ov000_020702a8;
|
||||
|
||||
extern BOOL ZAB_ParseFile(FileInfos *pFileInfos, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, const CourseListEntry *pEntry,
|
||||
const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6);
|
||||
extern BOOL ZAB_ParseCAMB(FileInfos *pFileInfos, ZABSectionCABM *pCABM, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst,
|
||||
const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6);
|
||||
extern BOOL ZAB_ParseCABI(FileInfos *pFileInfos, ZABSectionCABI *pCABI, BOOL param3);
|
||||
extern BOOL ZAB_GetRoomEntry(FileInfos *pFileInfos, u8 param2, const CourseListEntry *pEntry, CourseListRoomEntry *param4);
|
||||
|
||||
// .zmb
|
||||
typedef u32 ZMBSectionType;
|
||||
enum ZMBSectionType_ {
|
||||
ZMBSectionType_LDLB = 'LDLB', // related to script triggers
|
||||
ZMBSectionType_ROMB = 'ROMB', // unknown
|
||||
ZMBSectionType_ROOB = 'ROOM', // room settings
|
||||
ZMBSectionType_ARAB = 'ARAB', // locations? (?)
|
||||
ZMBSectionType_RALB = 'RALB', // paths?
|
||||
ZMBSectionType_WARP = 'WARP', // exits?
|
||||
ZMBSectionType_CAME = 'CAME', // camera settings?
|
||||
ZMBSectionType_PLYR = 'PLYR', // player entrances?
|
||||
ZMBSectionType_MPOB = 'MPOB', // map object list, parameters are stored here
|
||||
ZMBSectionType_NPCA = 'NPCA', // actor list, same as above
|
||||
ZMBSectionType_ROMB = 'ROMB', // unknown
|
||||
ZMBSectionType_ROOM = 'ROOM', // room settings
|
||||
ZMBSectionType_LDLB = 'LDLB', // related to script triggers
|
||||
ZMBSectionType_MapObjects = 'MPOB', // map object list, parameters are stored here
|
||||
ZMBSectionType_ARAB = 'ARAB', // locations? (?)
|
||||
ZMBSectionType_RALB = 'RALB', // paths?
|
||||
ZMBSectionType_NPCA = 'NPCA', // actor list, same as above
|
||||
ZMBSectionType_PLYR = 'PLYR', // player entrances?
|
||||
ZMBSectionType_WARP = 'WARP', // exits?
|
||||
ZMBSectionType_CAME = 'CAME', // camera settings?
|
||||
ZMBSectionType_CMPT = 'CMPT', // ?
|
||||
};
|
||||
|
||||
typedef struct ZMBFileInfos {
|
||||
/* 00 */ void *pFile;
|
||||
/* 04 */ size_t size;
|
||||
/* 08 */ unk16 unk_08;
|
||||
/* 0A */ unk16 unk_0A;
|
||||
/* 0C */ unk16 unk_0C;
|
||||
/* 10 */ unk16 unk_10;
|
||||
/* 14 */ unk16 unk_14;
|
||||
} ZMBFileInfos;
|
||||
/* 0E */ s16 unk_0E;
|
||||
} ZMBFileInfos; // size = 0x10
|
||||
|
||||
typedef struct ZMBHeader {
|
||||
/* 00 */ u32 magic; // 'MAPB'
|
||||
/* 04 */ FileType type; // always "ZMB1"
|
||||
/* 08 */ size_t nSize;
|
||||
/* 0C */ u32 nEntries;
|
||||
/* 0C */ u32 nSections;
|
||||
/* 10 */ u8 unused[0x10];
|
||||
} ZMBHeader; // size = 0x20
|
||||
|
||||
@@ -169,18 +277,68 @@ typedef struct ZMBSectionHeader {
|
||||
/* 0B */ u8 unk_0B;
|
||||
} ZMBSectionHeader; // size = 0x0C
|
||||
|
||||
typedef struct ZMBEntryRALB {
|
||||
typedef struct ZMBSectionROMB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */
|
||||
} ZMBSectionROMB;
|
||||
|
||||
typedef struct ZMBEntryROOM {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
/* 04 */ unk32 unk_04;
|
||||
} ZMBEntryRALB; // size = 0x08
|
||||
/* 04 */ u8 unk_04;
|
||||
/* 05 */ u8 unk_05;
|
||||
/* 06 */ u8 unk_06;
|
||||
/* 07 */ u8 unk_07;
|
||||
/* 08 */ u32 unk_08;
|
||||
/* 0C */ u8 unk_0C;
|
||||
/* 0D */ union {
|
||||
u8 unk_0D;
|
||||
bool unk_0D_bool;
|
||||
};
|
||||
/* 0E */ u8 unk_0E;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u16 unk_10;
|
||||
/* 12 */ unk16 unk_12; // pad
|
||||
} ZMBEntryROOM; // size = 0x14
|
||||
|
||||
typedef struct ZMBSectionRALB {
|
||||
typedef struct ZMBSectionROOM {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryRALB entries[];
|
||||
} ZMBSectionRALB;
|
||||
/* 0C */ ZMBEntryROOM entries[];
|
||||
} ZMBSectionROOM;
|
||||
|
||||
typedef struct ZMBEntryLBLB {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
/* 04 */ u16 unk_04;
|
||||
/* 06 */ unk16 unk_06;
|
||||
} ZMBEntryLBLB; // size = 0x08
|
||||
|
||||
typedef struct ZMBSectionLDLB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryLBLB entries[];
|
||||
} ZMBSectionLDLB;
|
||||
|
||||
typedef struct ZMBMapObjEntry {
|
||||
/* 00 */ u32 id;
|
||||
/* 04 */ Vec2b pos;
|
||||
/* 06 */ u16 angle;
|
||||
/* 08 */ u16 params[4];
|
||||
/* 10 */ u16 unk_10[2];
|
||||
/* 14 */ unk32 unk_14;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
} ZMBMapObjEntry; // size = 0x1C
|
||||
|
||||
typedef struct ZMBSectionMapObjectList {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBMapObjEntry entries[];
|
||||
} ZMBSectionMapObjectList;
|
||||
|
||||
typedef struct ZMBEntryARAB {
|
||||
/* 00 */ u8 unk_00;
|
||||
@@ -195,57 +353,130 @@ typedef struct ZMBEntryARAB {
|
||||
/* 0F */ unk8 unk_0F;
|
||||
} ZMBEntryARAB; // size = 0x10
|
||||
|
||||
struct UnkStruct_027e0cd8_0C_Base;
|
||||
typedef struct ZMBSectionARAB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryARAB entries[];
|
||||
} ZMBSectionARAB;
|
||||
|
||||
extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, BOOL param3);
|
||||
// ZMBPathPoint?
|
||||
typedef struct ZMBRALBPoint {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ fx16 angle;
|
||||
/* 04 */ VecFx32 pos;
|
||||
/* 10 */ unk16 unk_10;
|
||||
/* 12 */ u16 unk_12;
|
||||
/* 14 */ unk32 unk_14;
|
||||
} ZMBRALBPoint; // size = 0x18
|
||||
|
||||
// .cib
|
||||
typedef struct CourseInitEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ STRUCT_PAD(0x10, 0x24);
|
||||
} CourseInitEntry; // size = 0x24
|
||||
|
||||
typedef struct CourseInitHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseInitHeader; // size = 0x10
|
||||
|
||||
// .clb
|
||||
typedef struct CourseListRoomEntry {
|
||||
/* 00 */ u8 roomIndex;
|
||||
/* 01 */ u8 mapPaintIndex;
|
||||
// ZMBPathEntry?
|
||||
typedef struct ZMBEntryRALB {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 numPoints;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
} CourseListRoomEntry; // size = 0x08
|
||||
/* 04 */ unk32 unk_04;
|
||||
} ZMBEntryRALB; // size = 0x08
|
||||
|
||||
typedef struct CourseListEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ unk32 unk_10;
|
||||
/* 14 */ unk8 numRooms;
|
||||
/* 15 */ unk8 unk_15;
|
||||
/* 16 */ unk8 titleCardMsgIndex;
|
||||
/* 17 */ u8 saveCourseIndex;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
typedef struct ZMBSectionRALB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryRALB entries[];
|
||||
} ZMBSectionRALB;
|
||||
|
||||
typedef struct ZMBActorEntry {
|
||||
/* 00 */ u32 id;
|
||||
/* 04 */ struct {
|
||||
u16 x, y;
|
||||
} pos;
|
||||
/* 08 */ s8 unk_08;
|
||||
/* 08 */ s8 unk_09;
|
||||
/* 0A */ u16 angle;
|
||||
/* 0C */ u16 params[4];
|
||||
/* 14 */ u16 unk_14[2];
|
||||
/* 18 */ u32 unk_18;
|
||||
/* 1C */ u8 unk_1C;
|
||||
/* 1D */ u8 unk_1D;
|
||||
/* 1E */ u8 unk_1E;
|
||||
/* 1F */ u8 unk_1F;
|
||||
/* 20 */ u8 defaultMapPaintIndex;
|
||||
/* 21 */ s8 unk_21; // scene index but unknown purpose
|
||||
/* 24 */ CourseListRoomEntry roomEntries[];
|
||||
} CourseListEntry; // size >= 0x28
|
||||
} ZMBActorEntry; // size = 0x20
|
||||
|
||||
typedef struct CourseListHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseListHeader; // size = 0x10
|
||||
typedef struct ZMBSectionActorList {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBActorEntry entries[];
|
||||
} ZMBSectionActorList;
|
||||
|
||||
typedef struct ZMBEntryPLYR {
|
||||
/* 00 */ VecFx32 unk_00;
|
||||
/* 0C */ u16 unk_0C;
|
||||
/* 0E */ u8 unk_0E;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u8 unk_10;
|
||||
/* 11 */ u8 unk_11;
|
||||
/* 12 */ u8 unk_12;
|
||||
/* 13 */ u8 unk_13;
|
||||
} ZMBEntryPLYR; // size = 0x14
|
||||
|
||||
typedef struct ZMBSectionPLYR {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryPLYR entries[];
|
||||
} ZMBSectionPLYR;
|
||||
|
||||
typedef struct ZMBEntryWARP {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 roomIndex;
|
||||
/* 03 */ u8 spawnIndex;
|
||||
/* 04 */ const char destName[16];
|
||||
/* 14 */ u8 unk_14;
|
||||
/* 15 */ u8 unk_15;
|
||||
/* 16 */ u8 unk_16;
|
||||
/* 17 */ u8 unk_17;
|
||||
} ZMBEntryWARP; // size = 0x18
|
||||
|
||||
typedef struct ZMBSectionWARP {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryWARP entries[];
|
||||
} ZMBSectionWARP;
|
||||
|
||||
typedef struct ZMBEntryCAME {
|
||||
/* 00 */ fx32 unk_00;
|
||||
/* 04 */ VecFx32 unk_04;
|
||||
/* 10 */ s16 unk_10;
|
||||
/* 12 */ s16 unk_12;
|
||||
/* 14 */ unk32 unk_14[2]; // pad
|
||||
} ZMBEntryCAME; // size = 0x1C
|
||||
|
||||
typedef struct ZMBSectionCAME {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryCAME entries[];
|
||||
} ZMBSectionCAME;
|
||||
|
||||
typedef struct ZMBEntryCMPT {
|
||||
/* 04 */ VecFx32 unk_00;
|
||||
/* 10 */ u8 unk_0C;
|
||||
/* 12 */ u8 unk_0D;
|
||||
/* 14 */ unk16 unk_0E; // pad
|
||||
} ZMBEntryCMPT; // size = 0x10
|
||||
|
||||
typedef struct ZMBSectionCMPT {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryCMPT entries[];
|
||||
} ZMBSectionCMPT;
|
||||
|
||||
struct UnkStruct_027e0cd8_0C_Base;
|
||||
|
||||
extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, bool param3);
|
||||
extern BOOL ZMB_ParseROMB(ZMBFileInfos *pFileInfos, ZMBSectionROMB *pROMB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseLDLB(ZMBFileInfos *pFileInfos, ZMBSectionLDLB *pLDLB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseARAB(ZMBFileInfos *pFileInfos, ZMBSectionARAB *pARAB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseRALB(ZMBFileInfos *pFileInfos, ZMBSectionRALB *pRALB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseWARP(ZMBFileInfos *pFileInfos, ZMBSectionWARP *pWARP, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseMapObjList(ZMBFileInfos *pFileInfos, ZMBSectionMapObjectList *pMapObjs, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pNPCA, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseROOM(ZMBFileInfos *pFileInfos, ZMBSectionROOM *pROOM, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParsePLYR(ZMBFileInfos *pFileInfos, ZMBSectionPLYR *pPLYR, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseCAME(ZMBFileInfos *pFileInfos, ZMBSectionCAME *pCAME, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseCMPT(ZMBFileInfos *pFileInfos, ZMBSectionCMPT *pCMPT, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
||||
Reference in New Issue
Block a user