Files
2026-03-28 15:03:02 -04:00

167 lines
3.8 KiB
Plaintext

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