mirror of
https://github.com/PrimeDecomp/PrimeRemasterStructs.git
synced 2026-07-12 18:18:58 -07:00
Add DLOG support, update MSBT for MP4
This commit is contained in:
+53
@@ -0,0 +1,53 @@
|
||||
#ifndef _DIALOGUE
|
||||
#define _DIALOGUE
|
||||
|
||||
#include "Common.bt"
|
||||
|
||||
typedef enum <uint> {
|
||||
Armstrong = 0x3B6D5087,
|
||||
Duke = 0xF3FA69F7,
|
||||
MacKenzie = 0x3749E413,
|
||||
Tokabi = 0xF1CAB965,
|
||||
VUE_995 = 0x5AFA1EB5,
|
||||
Samus = 0x525C2625,
|
||||
Sylux = 0x97CE32B7,
|
||||
None = 0x1344B4AA
|
||||
} DialogueActor;
|
||||
|
||||
typedef struct Line {
|
||||
CStringFixed label;
|
||||
ubyte unk[4];
|
||||
DialogueActor speakerId<format=hex>;
|
||||
DialogueActor targetId<format=hex>;
|
||||
ubyte unk1[4];
|
||||
GUID caud;
|
||||
byte unk2[10];
|
||||
};
|
||||
|
||||
typedef struct Scene {
|
||||
uint maybe_id <format=hex>;
|
||||
uint unk1;
|
||||
uint unk2[2];
|
||||
ubyte unk3[4];
|
||||
uint unk4[2];
|
||||
ubyte unk5[6];
|
||||
uint unk6;
|
||||
ubyte hasLDCH;
|
||||
if (hasLDCH) {
|
||||
ubyte magic[4];
|
||||
uint ldchSize;
|
||||
uint ldchUnks[4];
|
||||
ubyte unk0[ldchSize];
|
||||
}
|
||||
uint lineCount;
|
||||
Line lines[lineCount] <optimize=false>;
|
||||
};
|
||||
|
||||
typedef struct Dialogue {
|
||||
uint count;
|
||||
if (count) {
|
||||
Scene scenes[count] <optimize=false>;
|
||||
}
|
||||
};
|
||||
|
||||
#endif// _DIALOGUE
|
||||
+29
-3
@@ -125,6 +125,7 @@ struct TextsSection {
|
||||
|
||||
struct Language (string expectedLanguage) {
|
||||
ChunkDescriptor languageChunkHeader;
|
||||
Assert(languageChunkHeader.id == expectedLanguage);
|
||||
// Each section here is heavily referenced from https://zeldamods.org/wiki/Msbt
|
||||
struct MSBTContents {
|
||||
MSBTHeader header;
|
||||
@@ -138,8 +139,15 @@ struct Language (string expectedLanguage) {
|
||||
} contents;
|
||||
};
|
||||
|
||||
struct MessageStudioBinaryText
|
||||
{
|
||||
struct TableName {
|
||||
ChunkDescriptor tableNameChunkHeader;
|
||||
Assert(tableNameChunkHeader.id == "TBNM");
|
||||
CStringFixed name;
|
||||
};
|
||||
|
||||
struct MessageStudioBinaryText(uint32 readerVersion, uint32 writerVersion)
|
||||
{
|
||||
Assert(readerVersion == writerVersion);
|
||||
if (isDKCTF == 1)
|
||||
{
|
||||
Language us_english("USEN");
|
||||
@@ -151,7 +159,7 @@ struct MessageStudioBinaryText
|
||||
Language eu_german("EUGE");
|
||||
Language eu_italian("EUIT");
|
||||
Language jp_japanese("JPJP");
|
||||
} else {
|
||||
} else if (readerVersion == 10) {
|
||||
Language us_english("USEN");
|
||||
Language eu_english("EUEN");
|
||||
Language eu_french("EUFR");
|
||||
@@ -165,6 +173,24 @@ struct MessageStudioBinaryText
|
||||
Language ch_traditionalchinese("CHTC");
|
||||
Language ch_simplifiedchinese("CHSC");
|
||||
Language us_spanish("USSP");
|
||||
} else if (readerVersion == 16) {
|
||||
Language us_english("USEN");
|
||||
Language eu_english("EUEN");
|
||||
Language us_portuguese("USPO");
|
||||
Language eu_french("EUFR");
|
||||
Language us_french("USFR");
|
||||
Language eu_spanish("EUSP");
|
||||
Language us_spanish("USSP");
|
||||
Language eu_german("EUGE");
|
||||
Language eu_italian("EUIT");
|
||||
Language eu_dutch("EUDU");
|
||||
Language jp_japanese("JPJP");
|
||||
Language ch_simplifiedchinese("CHSC");
|
||||
Language ko_korean("KOKO");
|
||||
Language ch_traditionalchinese("CHTC");
|
||||
TableName tableName;
|
||||
} else {
|
||||
Assert(false, "Unsupported MSBT version!");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ if (!exists(isDKCTF)) {
|
||||
#include "CFont.bt"
|
||||
#include "DependencyGroup.bt"
|
||||
#include "NModConFormat.bt"
|
||||
#include "Dialogue.bt"
|
||||
|
||||
// Custom footer
|
||||
#include "Footer.bt"
|
||||
@@ -107,7 +108,7 @@ typedef struct {
|
||||
ModelFile model(form.size, form.readerVersion, form.writerVersion);
|
||||
break;
|
||||
case "MSBT":
|
||||
// MessageStudioBinaryText text;
|
||||
MessageStudioBinaryText text(form.readerVersion, form.writerVersion);
|
||||
break;
|
||||
case "PACK":
|
||||
CPakFile pak;
|
||||
@@ -148,6 +149,9 @@ typedef struct {
|
||||
case "MCON":
|
||||
CModConData data(form.size);
|
||||
break;
|
||||
case "DLOG":
|
||||
Dialogue data;
|
||||
break;
|
||||
}
|
||||
FSeek(start + form.size);
|
||||
} File<open = true, bgcolor = cSilver>;
|
||||
|
||||
Reference in New Issue
Block a user