You've already forked PrimeRemasterStructs
mirror of
https://github.com/PrimeDecomp/PrimeRemasterStructs.git
synced 2026-03-31 14:23:23 -07:00
Initial Prime 4 updates
This commit is contained in:
+22
-13
@@ -114,7 +114,7 @@ struct ModelHeader {
|
||||
}
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
typedef struct(int readerVersion, int writerVersion) {
|
||||
FourCC id <read=ReadMaterialDataId>;
|
||||
FourCC type <read=ReadMaterialDataType>;
|
||||
} MaterialType <read=(Str("%s %s", id, type))>;
|
||||
@@ -258,7 +258,7 @@ struct CLayeredTextureData
|
||||
CMaterialTextureTokenData textures[3];
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
typedef struct(int readerVersion, int writerVersion) {
|
||||
FourCC id <read=ReadMaterialDataId>;
|
||||
if (ReadByte() == 0) //Fix DKCTF WiiU models
|
||||
{
|
||||
@@ -351,9 +351,10 @@ string CMaterialDataRead(CMaterialData &mat) {
|
||||
case DATA_TYPE_COMPLEX:
|
||||
return Str("Complex %s", mat.id);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
typedef struct(int readerVersion, int writerVersion) {
|
||||
if (ReadByte() == 0 || !isDKCTF) //NS, use anti isDKCTF so MP1R models don't break
|
||||
{
|
||||
local uint useMaterialTypeChunk <hidden=true> = 1;
|
||||
@@ -391,13 +392,18 @@ typedef struct {
|
||||
}
|
||||
}
|
||||
//material data types
|
||||
uint dataCount;
|
||||
if (useMaterialTypeChunk || !isDKCTF)
|
||||
{
|
||||
MaterialType dataTypes[dataCount];
|
||||
if (readerVersion != 163) {
|
||||
// Metroid Prime remastered and earlier
|
||||
uint dataCount;
|
||||
if (useMaterialTypeChunk || !isDKCTF)
|
||||
{
|
||||
MaterialType dataTypes(readerVersion, writerVersion)[dataCount];
|
||||
}
|
||||
} else {
|
||||
uint dataCount;
|
||||
}
|
||||
//data parse
|
||||
CMaterialData data[dataCount] <optimize=false>;
|
||||
// data parse
|
||||
CMaterialData materialData(readerVersion, writerVersion)[dataCount] <optimize = false>;
|
||||
} CMaterialCache <name=(Str("%s %s", this.name.text, GUIDToString(this.shaderID)))>;
|
||||
|
||||
typedef struct {
|
||||
@@ -517,7 +523,7 @@ struct CGraphicsIndexBufferToken {
|
||||
EBufferType type[count];
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
typedef struct(int readerVersion, int writerVersion) {
|
||||
ChunkDescriptor chunk;
|
||||
|
||||
local uint pos<format = hex, hidden = true> = FTell();
|
||||
@@ -548,10 +554,13 @@ typedef struct {
|
||||
case "MTRL":
|
||||
if (isDKCTF == 0)
|
||||
{
|
||||
if (readerVersion == 163) {
|
||||
FourCC unkFcc;// LEGA?
|
||||
}
|
||||
uint unk;
|
||||
}
|
||||
uint numMaterials;
|
||||
CMaterialCache materials[numMaterials]<optimize = false>;
|
||||
CMaterialCache materials(readerVersion, writerVersion)[numMaterials]<optimize = false>;
|
||||
break;
|
||||
case "MESH":
|
||||
SMeshLoadInformation loadInformation;
|
||||
@@ -566,10 +575,10 @@ typedef struct {
|
||||
FSeek(pos + chunk.size);
|
||||
} ModelChunk <name=(Str("%s chunk", chunk.id))>;
|
||||
|
||||
typedef struct(uint64 size) {
|
||||
typedef struct(uint64 size, int readerVersion, int writerVersion) {
|
||||
local uint64 start <format=hex, hidden=true> = FTell();
|
||||
while (FTell() < start + size) {
|
||||
ModelChunk chunk;
|
||||
ModelChunk chunk(readerVersion, writerVersion);
|
||||
}
|
||||
} ModelFile <name="Model chunks">;
|
||||
|
||||
|
||||
+8
-3
@@ -1,5 +1,6 @@
|
||||
#ifndef _CPAKFILE
|
||||
#define _CPAKFILE
|
||||
#include "Common.bt"
|
||||
struct File;
|
||||
struct CPakFile;
|
||||
|
||||
@@ -22,19 +23,23 @@ typedef struct
|
||||
{
|
||||
local uint64 decompressedSize <hidden=true> = size;
|
||||
}
|
||||
|
||||
if (pak.toc.readerVersion == 4) {
|
||||
uint64 unk;
|
||||
}
|
||||
|
||||
local uint64 pos <format=hex, hidden=true> = FTell();
|
||||
|
||||
FSeek(offset);
|
||||
if (size == decompressedSize) {
|
||||
File data <size=size>;
|
||||
} else {
|
||||
} else {
|
||||
CompressionType compressionType;
|
||||
byte pad[3] <hidden=true>;
|
||||
byte compressedData[size - 4];
|
||||
}
|
||||
FSeek(pos);
|
||||
} AssetDirectoryEntry <
|
||||
size=(isDKCTF ? 36 : 52), // Parse on-demand
|
||||
//size=(isDKCTF ? 36 : 52), // Parse on-demand
|
||||
name=AssetDirectoryEntryName,
|
||||
comment=(SizeComment(this.size))
|
||||
>;
|
||||
|
||||
@@ -439,6 +439,7 @@ EMaterialDataId MapMaterialDataId(FourCC value) {
|
||||
case "XCH1":
|
||||
return DATA_ID_XCH1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
string ReadMaterialDataId(FourCC value) {
|
||||
|
||||
@@ -58,30 +58,30 @@ typedef struct {
|
||||
}
|
||||
break;
|
||||
case "MATI":
|
||||
CMaterialInstanceResource materialInstance;
|
||||
//CMaterialInstanceResource materialInstance;
|
||||
break;
|
||||
case "CAUD":
|
||||
CAudioSoundEffect audioSoundEffect;
|
||||
//CAudioSoundEffect audioSoundEffect;
|
||||
break;
|
||||
case "CBNK":
|
||||
CAudioSampleBank audioSampleBank;
|
||||
//CAudioSampleBank audioSampleBank;
|
||||
break;
|
||||
case "CABH":
|
||||
CAudioBusHierarchy audioBusHierarchy;
|
||||
//CAudioBusHierarchy audioBusHierarchy;
|
||||
break;
|
||||
case "ENUM":
|
||||
CDataEnumObject dataEnum;
|
||||
// CDataEnumObject dataEnum;
|
||||
break;
|
||||
case "UINF":
|
||||
CUniverseInfo universeInfo(form.size);
|
||||
// CUniverseInfo universeInfo(form.size);
|
||||
break;
|
||||
case "LTPB":
|
||||
CLightProbeData lightProbe(form.size);
|
||||
//CLightProbeData lightProbe(form.size);
|
||||
break;
|
||||
case "LFSM":
|
||||
if (!isDKCTF)
|
||||
BigEndian();
|
||||
CLegacyStateMachine legacyStateMachine;
|
||||
// CLegacyStateMachine legacyStateMachine;
|
||||
if (!isDKCTF)
|
||||
LittleEndian();
|
||||
break;
|
||||
@@ -89,24 +89,25 @@ typedef struct {
|
||||
CCollisionTree obboxCollisionTree(form.size, kCOL_OBBox);
|
||||
break;
|
||||
case "CMAP":
|
||||
CGuiMap guiMap;
|
||||
Printf("FOUND! 0x%08X", startof(this));
|
||||
// CGuiMap guiMap;
|
||||
break;
|
||||
case "CLSN":
|
||||
CCollisionTree aaboxCollisionTree(form.size, kCOL_AABox);
|
||||
// CCollisionTree aaboxCollisionTree(form.size, kCOL_AABox);
|
||||
break;
|
||||
case "CHPR":
|
||||
FCharInfo charInfo;
|
||||
break;
|
||||
case "CHAR":
|
||||
FCharInfo charInfo;
|
||||
// FCharInfo charInfo;
|
||||
break;
|
||||
case "CMDL":
|
||||
case "SMDL":
|
||||
case "WMDL":
|
||||
ModelFile model(form.size);
|
||||
ModelFile model(form.size, form.readerVersion, form.writerVersion);
|
||||
break;
|
||||
case "MSBT":
|
||||
MessageStudioBinaryText text;
|
||||
// MessageStudioBinaryText text;
|
||||
break;
|
||||
case "PACK":
|
||||
CPakFile pak;
|
||||
@@ -115,34 +116,34 @@ typedef struct {
|
||||
NTextureFormat texture(form.size);
|
||||
break;
|
||||
case "REFL":
|
||||
CReflectionProbeData probeData;
|
||||
// CReflectionProbeData probeData;
|
||||
break;
|
||||
/*case "RULE":
|
||||
CRuleSet rulesetconfig(form.size);
|
||||
break;*/
|
||||
case "GFXL":
|
||||
CScaleformFlashLibrary scaleformflashlibrary;
|
||||
//CScaleformFlashLibrary scaleformflashlibrary;
|
||||
break;
|
||||
/*case "GFX ":
|
||||
CFlashMovieResource flashmovieresource(form.size);
|
||||
break;*/
|
||||
case "VECF":
|
||||
CVectorField vectorField;
|
||||
// CVectorField vectorField;
|
||||
break;
|
||||
case "ROOM":
|
||||
CGameAreaResource room(form.size);
|
||||
break;
|
||||
case "GUIF":
|
||||
CGuiFrame frame;
|
||||
//CGuiFrame frame;
|
||||
break;
|
||||
case "SHNT":
|
||||
NShaderHint shaderHints;
|
||||
//NShaderHint shaderHints;
|
||||
break;
|
||||
case "FONT":
|
||||
CFont font;
|
||||
//CFont font;
|
||||
break;
|
||||
case "DGRP":
|
||||
DependencyGroup data;
|
||||
//DependencyGroup data;
|
||||
break;
|
||||
case "MCON":
|
||||
CModConData data(form.size);
|
||||
|
||||
Reference in New Issue
Block a user