2023-02-13 13:22:03 -05:00
|
|
|
// Common
|
2023-02-16 10:44:03 -08:00
|
|
|
if (!exists(isDKCTF)) {
|
2023-02-18 12:13:29 -08:00
|
|
|
local uint isDKCTF<hidden = true> = false;
|
|
|
|
|
LittleEndian();
|
2023-02-16 10:44:03 -08:00
|
|
|
}
|
|
|
|
|
|
2023-02-13 01:30:24 -05:00
|
|
|
#include "CChunkDescriptor.bt"
|
|
|
|
|
#include "CFormDescriptor.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "Common.bt"
|
2023-02-12 18:00:48 -05:00
|
|
|
|
2023-02-13 13:22:03 -05:00
|
|
|
// Meta
|
2023-02-16 22:50:22 -05:00
|
|
|
#include "CGraphicsModel.bt"
|
2023-03-10 23:25:13 -05:00
|
|
|
#include "MaterialArchive.bt"
|
2023-03-12 14:09:37 -07:00
|
|
|
|
2023-03-12 16:32:42 -04:00
|
|
|
#include "CGameAreaResource.bt"
|
2023-03-22 22:30:31 -04:00
|
|
|
#include "CLightProbeData.bt"
|
2023-03-12 14:09:37 -07:00
|
|
|
|
2023-02-13 13:22:03 -05:00
|
|
|
#include "Meta.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "NTextureFormat.bt"
|
2023-02-13 13:22:03 -05:00
|
|
|
|
|
|
|
|
// Files
|
2023-02-17 01:56:32 -08:00
|
|
|
#include "CAudioBusHierarchy.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "CAudioSampleBank.bt"
|
2023-03-04 17:15:30 -08:00
|
|
|
#include "CAudioSoundEffect.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "CCharInfo.bt"
|
|
|
|
|
#include "CCollisionTree.bt"
|
2023-02-17 01:56:32 -08:00
|
|
|
#include "CDataEnumObject.bt"
|
2023-02-18 16:26:17 -08:00
|
|
|
#include "CGuiFrame.bt"
|
2023-02-18 14:19:28 -08:00
|
|
|
#include "CGuiMap.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "CLegacyStateMachine.bt"
|
2023-02-18 17:01:47 -08:00
|
|
|
#include "CMaterialInstanceResource.bt"
|
2023-02-13 01:30:24 -05:00
|
|
|
#include "CPakFile.bt"
|
2023-02-16 10:39:11 -08:00
|
|
|
#include "CReflectionProbeData.bt"
|
2023-02-18 14:19:28 -08:00
|
|
|
#include "CUniverseInfo.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
#include "CVectorField.bt"
|
2023-02-19 11:09:34 -08:00
|
|
|
#include "MessageTable.bt"
|
2023-03-10 23:44:22 -08:00
|
|
|
#include "NShaderHint.bt"
|
2023-02-18 12:13:29 -08:00
|
|
|
// #include "CRuleSet.bt"
|
2023-02-14 21:11:00 -08:00
|
|
|
#include "CScaleformFlashLibrary.bt"
|
2023-10-02 10:01:04 -07:00
|
|
|
#include "CFont.bt"
|
2023-03-13 01:38:31 -04:00
|
|
|
#include "DependencyGroup.bt"
|
|
|
|
|
#include "NModConFormat.bt"
|
2026-03-28 15:03:02 -04:00
|
|
|
#include "Dialogue.bt"
|
2023-02-12 17:25:49 -05:00
|
|
|
|
2023-02-13 13:22:03 -05:00
|
|
|
// Custom footer
|
|
|
|
|
#include "Footer.bt"
|
|
|
|
|
|
2023-02-18 12:13:29 -08:00
|
|
|
typedef struct {
|
|
|
|
|
FormDescriptor form;
|
|
|
|
|
local uint64 start<format = hex, hidden = true> = FTell();
|
|
|
|
|
switch (form.id) {
|
|
|
|
|
case "MTRL":
|
2023-02-19 11:04:58 -08:00
|
|
|
if (form.readerVersion == 168 || form.readerVersion == 12) {
|
2023-02-18 12:13:29 -08:00
|
|
|
byte MTRLRaw[form.size]; // For now
|
2023-02-19 11:04:58 -08:00
|
|
|
} else if (form.readerVersion == 22 || form.readerVersion == 10) {
|
2023-02-18 12:13:29 -08:00
|
|
|
MaterialArchive materialArchive(form.size);
|
|
|
|
|
} else {
|
|
|
|
|
Assert(false, "Invalid version!");
|
2023-02-12 17:25:49 -05:00
|
|
|
}
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
2023-02-18 17:01:47 -08:00
|
|
|
case "MATI":
|
2026-01-25 19:10:55 -08:00
|
|
|
CMaterialInstanceResource materialInstance;
|
2023-02-18 17:01:47 -08:00
|
|
|
break;
|
2023-03-04 17:15:30 -08:00
|
|
|
case "CAUD":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CAudioSoundEffect audioSoundEffect;
|
2023-03-04 17:15:30 -08:00
|
|
|
break;
|
2023-02-18 12:13:29 -08:00
|
|
|
case "CBNK":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CAudioSampleBank audioSampleBank;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "CABH":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CAudioBusHierarchy audioBusHierarchy;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "ENUM":
|
2025-12-07 10:37:47 -08:00
|
|
|
// CDataEnumObject dataEnum;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
2023-02-18 12:34:02 -08:00
|
|
|
case "UINF":
|
2025-12-07 10:37:47 -08:00
|
|
|
// CUniverseInfo universeInfo(form.size);
|
2023-02-18 12:34:02 -08:00
|
|
|
break;
|
2023-02-18 12:13:29 -08:00
|
|
|
case "LTPB":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CLightProbeData lightProbe(form.size);
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "LFSM":
|
|
|
|
|
if (!isDKCTF)
|
|
|
|
|
BigEndian();
|
2025-12-07 10:37:47 -08:00
|
|
|
// CLegacyStateMachine legacyStateMachine;
|
2023-02-18 12:13:29 -08:00
|
|
|
if (!isDKCTF)
|
|
|
|
|
LittleEndian();
|
|
|
|
|
break;
|
|
|
|
|
case "DCLN":
|
|
|
|
|
CCollisionTree obboxCollisionTree(form.size, kCOL_OBBox);
|
|
|
|
|
break;
|
2023-02-18 14:19:28 -08:00
|
|
|
case "CMAP":
|
2025-12-07 10:37:47 -08:00
|
|
|
Printf("FOUND! 0x%08X", startof(this));
|
|
|
|
|
// CGuiMap guiMap;
|
2023-02-18 14:19:28 -08:00
|
|
|
break;
|
2023-02-18 12:13:29 -08:00
|
|
|
case "CLSN":
|
2025-12-07 10:37:47 -08:00
|
|
|
// CCollisionTree aaboxCollisionTree(form.size, kCOL_AABox);
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "CHPR":
|
2023-10-02 10:01:04 -07:00
|
|
|
FCharInfo charInfo;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
2023-02-20 17:27:21 -08:00
|
|
|
case "CHAR":
|
2025-12-07 10:37:47 -08:00
|
|
|
// FCharInfo charInfo;
|
2023-02-20 17:27:21 -08:00
|
|
|
break;
|
2023-02-18 12:13:29 -08:00
|
|
|
case "CMDL":
|
|
|
|
|
case "SMDL":
|
|
|
|
|
case "WMDL":
|
2025-12-07 10:37:47 -08:00
|
|
|
ModelFile model(form.size, form.readerVersion, form.writerVersion);
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "MSBT":
|
2026-03-28 15:03:02 -04:00
|
|
|
MessageStudioBinaryText text(form.readerVersion, form.writerVersion);
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
case "PACK":
|
|
|
|
|
CPakFile pak;
|
|
|
|
|
break;
|
|
|
|
|
case "TXTR":
|
|
|
|
|
NTextureFormat texture(form.size);
|
|
|
|
|
break;
|
|
|
|
|
case "REFL":
|
2025-12-07 10:37:47 -08:00
|
|
|
// CReflectionProbeData probeData;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
/*case "RULE":
|
|
|
|
|
CRuleSet rulesetconfig(form.size);
|
|
|
|
|
break;*/
|
|
|
|
|
case "GFXL":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CScaleformFlashLibrary scaleformflashlibrary;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
|
|
|
|
/*case "GFX ":
|
|
|
|
|
CFlashMovieResource flashmovieresource(form.size);
|
|
|
|
|
break;*/
|
|
|
|
|
case "VECF":
|
2025-12-07 10:37:47 -08:00
|
|
|
// CVectorField vectorField;
|
2023-02-18 12:13:29 -08:00
|
|
|
break;
|
2023-02-18 14:57:48 -08:00
|
|
|
case "ROOM":
|
2023-03-11 11:12:23 -05:00
|
|
|
CGameAreaResource room(form.size);
|
2023-02-18 14:57:48 -08:00
|
|
|
break;
|
2023-02-18 16:26:17 -08:00
|
|
|
case "GUIF":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CGuiFrame frame;
|
2023-02-18 16:26:17 -08:00
|
|
|
break;
|
2023-03-10 23:44:22 -08:00
|
|
|
case "SHNT":
|
2025-12-07 10:37:47 -08:00
|
|
|
//NShaderHint shaderHints;
|
2023-03-10 23:44:22 -08:00
|
|
|
break;
|
2023-03-13 01:38:31 -04:00
|
|
|
case "FONT":
|
2025-12-07 10:37:47 -08:00
|
|
|
//CFont font;
|
2023-03-13 01:38:31 -04:00
|
|
|
break;
|
|
|
|
|
case "DGRP":
|
2025-12-07 10:37:47 -08:00
|
|
|
//DependencyGroup data;
|
2023-03-13 01:38:31 -04:00
|
|
|
break;
|
|
|
|
|
case "MCON":
|
|
|
|
|
CModConData data(form.size);
|
|
|
|
|
break;
|
2026-03-28 15:03:02 -04:00
|
|
|
case "DLOG":
|
|
|
|
|
Dialogue data;
|
|
|
|
|
break;
|
2023-02-18 12:13:29 -08:00
|
|
|
}
|
|
|
|
|
FSeek(start + form.size);
|
|
|
|
|
} File<open = true, bgcolor = cSilver>;
|
2023-02-12 17:25:49 -05:00
|
|
|
|
2023-02-18 12:13:29 -08:00
|
|
|
File
|
|
|
|
|
file<bgcolor = cGray, name = (Str("%s rv%d wv%d file", form.id,
|
|
|
|
|
form.readerVersion, form.writerVersion))>;
|
2023-02-13 16:25:12 -05:00
|
|
|
|
|
|
|
|
// Custom footer for extracted files
|
2023-02-18 12:13:29 -08:00
|
|
|
if (ReadString(FTell(), 4) == "RFRM") {
|
|
|
|
|
Footer footer(file.form.id)<bgcolor = cLtBlue>;
|
2023-02-13 16:25:12 -05:00
|
|
|
}
|