mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-12 09:50:50 +00:00
ZAPD update (#612)
* remove roompoly * git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "fd4d53a26" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "fd4d53a26" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596"
This commit is contained in:
parent
5c6335f9fb
commit
1ff2f0f849
171 changed files with 1567 additions and 826 deletions
|
@ -19,6 +19,14 @@ SetActorList::SetActorList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawD
|
|||
zRoom->parent->AddDeclarationPlaceholder(segmentOffset);
|
||||
}
|
||||
|
||||
SetActorList::~SetActorList()
|
||||
{
|
||||
for (ActorSpawnEntry* entry : actors)
|
||||
delete entry;
|
||||
|
||||
actors.clear();
|
||||
}
|
||||
|
||||
string SetActorList::GetSourceOutputCode(std::string prefix)
|
||||
{
|
||||
return "";
|
||||
|
@ -66,9 +74,9 @@ string SetActorList::GenerateSourceCodePass2(string roomName, int baseAddress)
|
|||
index++;
|
||||
}
|
||||
|
||||
zRoom->parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::None, DeclarationPadding::Pad16, actors.size() * 16,
|
||||
zRoom->parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::None, DeclarationPadding::Pad16, actors.size() * 16,
|
||||
"ActorEntry", StringHelper::Sprintf("%sActorList0x%06X", roomName.c_str(), segmentOffset), actors.size(), declaration);
|
||||
|
||||
|
||||
return sourceOutput;
|
||||
}
|
||||
|
||||
|
@ -94,7 +102,7 @@ RoomCommand SetActorList::GetRoomCommand()
|
|||
|
||||
ActorSpawnEntry::ActorSpawnEntry(std::vector<uint8_t> rawData, int rawDataIndex)
|
||||
{
|
||||
uint8_t* data = rawData.data();
|
||||
const uint8_t* data = rawData.data();
|
||||
|
||||
actorNum = BitConverter::ToInt16BE(data, rawDataIndex + 0);
|
||||
posX = BitConverter::ToInt16BE(data, rawDataIndex + 2);
|
||||
|
@ -104,4 +112,4 @@ ActorSpawnEntry::ActorSpawnEntry(std::vector<uint8_t> rawData, int rawDataIndex)
|
|||
rotY = BitConverter::ToInt16BE(data, rawDataIndex + 10);
|
||||
rotZ = BitConverter::ToInt16BE(data, rawDataIndex + 12);
|
||||
initVar = BitConverter::ToInt16BE(data, rawDataIndex + 14);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ class SetActorList : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetActorList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetActorList();
|
||||
|
||||
std::string GetSourceOutputCode(std::string prefix);
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -44,8 +44,8 @@ string SetAlternateHeaders::GenerateSourceCodePass1(string roomName, int baseAdd
|
|||
declaration += StringHelper::Sprintf("\t(u32)&%sSet%04XCmd00,\n", roomName.c_str(), headers[i] & 0x00FFFFFF);
|
||||
}
|
||||
|
||||
zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, headers.size() * 4,
|
||||
"u32", StringHelper::Sprintf("%sAlternateHeaders0x%06X", roomName.c_str(), segmentOffset), true, declaration);
|
||||
zRoom->parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::None, headers.size() * 4,
|
||||
"u32", StringHelper::Sprintf("%sAlternateHeaders0x%06X", roomName.c_str(), segmentOffset), 0, declaration);
|
||||
|
||||
return sourceOutput;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,15 @@ SetCutscenes::SetCutscenes(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawD
|
|||
StringHelper::Sprintf("%sCutsceneData0x%06X", zRoom->GetName().c_str(), segmentOffset), 0, output);
|
||||
}
|
||||
|
||||
SetCutscenes::~SetCutscenes()
|
||||
{
|
||||
if (cutscene != nullptr)
|
||||
{
|
||||
delete cutscene;
|
||||
cutscene = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
string SetCutscenes::GenerateSourceCodePass1(string roomName, int baseAddress)
|
||||
{
|
||||
return StringHelper::Sprintf("%s 0, (u32)%sCutsceneData0x%06X", ZRoomCommand::GenerateSourceCodePass1(roomName, baseAddress).c_str(), zRoom->GetName().c_str(), segmentOffset);
|
||||
|
|
|
@ -7,6 +7,7 @@ class SetCutscenes : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetCutscenes(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetCutscenes();
|
||||
|
||||
std::string GetSourceOutputCode(std::string prefix);
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -16,6 +16,12 @@ SetEntranceList::SetEntranceList(ZRoom* nZRoom, std::vector<uint8_t> rawData, in
|
|||
_rawDataIndex = rawDataIndex;
|
||||
}
|
||||
|
||||
SetEntranceList::~SetEntranceList()
|
||||
{
|
||||
for (EntranceEntry* entry : entrances)
|
||||
delete entry;
|
||||
}
|
||||
|
||||
string SetEntranceList::GenerateSourceCodePass1(string roomName, int baseAddress)
|
||||
{
|
||||
string sourceOutput = StringHelper::Sprintf("%s 0x00, (u32)&%sEntranceList0x%06X", ZRoomCommand::GenerateSourceCodePass1(roomName, baseAddress).c_str(), zRoom->GetName().c_str(), segmentOffset);
|
||||
|
|
|
@ -15,6 +15,7 @@ class SetEntranceList : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetEntranceList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetEntranceList();
|
||||
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
virtual std::string GenerateExterns();
|
||||
|
|
|
@ -35,6 +35,12 @@ SetLightingSettings::SetLightingSettings(ZRoom* nZRoom, std::vector<uint8_t> raw
|
|||
}
|
||||
}
|
||||
|
||||
SetLightingSettings::~SetLightingSettings()
|
||||
{
|
||||
for (LightingSettings* setting : settings)
|
||||
delete setting;
|
||||
}
|
||||
|
||||
string SetLightingSettings::GenerateSourceCodePass1(string roomName, int baseAddress)
|
||||
{
|
||||
return StringHelper::Sprintf("%s %i, (u32)&%sLightSettings0x%06X", ZRoomCommand::GenerateSourceCodePass1(roomName, baseAddress).c_str(), settings.size(), zRoom->GetName().c_str(), segmentOffset);
|
||||
|
@ -62,7 +68,7 @@ RoomCommand SetLightingSettings::GetRoomCommand()
|
|||
|
||||
LightingSettings::LightingSettings(vector<uint8_t> rawData, int rawDataIndex)
|
||||
{
|
||||
uint8_t* data = rawData.data();
|
||||
const uint8_t* data = rawData.data();
|
||||
|
||||
ambientClrR = data[rawDataIndex + 0];
|
||||
ambientClrG = data[rawDataIndex + 1];
|
||||
|
@ -90,4 +96,4 @@ LightingSettings::LightingSettings(vector<uint8_t> rawData, int rawDataIndex)
|
|||
|
||||
unk = BitConverter::ToInt16BE(data, rawDataIndex + 18);
|
||||
drawDistance = BitConverter::ToInt16BE(data, rawDataIndex + 20);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ class SetLightingSettings : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetLightingSettings(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetLightingSettings();
|
||||
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
virtual std::string GenerateSourceCodePass2(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -109,8 +109,6 @@ SetMesh::SetMesh(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex,
|
|||
zRoom->parent->AddDeclaration(meshHeader0->dListStart + (meshHeader0->entries.size() * 8) + 0, DeclarationAlignment::None, DeclarationPadding::Pad16, 4, "static s32",
|
||||
"terminatorMaybe", " 0x01000000 ");
|
||||
|
||||
//zRoom->parent->declarations[meshHeader0->dListStart] = new Declaration(DeclarationAlignment::None, DeclarationPadding::Pad16, (meshHeader0->entries.size() * 8) + 4, declaration);
|
||||
|
||||
meshHeader = meshHeader0;
|
||||
}
|
||||
else if (meshHeaderType == 1)
|
||||
|
@ -146,11 +144,6 @@ SetMesh::SetMesh(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex,
|
|||
zRoom->parent->AddDeclaration(segmentOffset, DeclarationAlignment::None, DeclarationPadding::Pad16, 0x1E, "MeshHeader1Single",
|
||||
StringHelper::Sprintf("%sMeshHeader0x%06X", zRoom->GetName().c_str(), segmentOffset), declaration);
|
||||
|
||||
//if (headerSingle->imagePtr != 0)
|
||||
//{
|
||||
//zRoom->declarations[headerSingle->imagePtr] = new Declaration(DeclarationAlignment::None, DeclarationPadding::Pad16, 0x1E, declaration);
|
||||
//}
|
||||
|
||||
meshHeader1 = headerSingle;
|
||||
; }
|
||||
else if (fmt == 2) // Multi-Format
|
||||
|
@ -164,21 +157,18 @@ SetMesh::SetMesh(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex,
|
|||
headerMulti->bgCnt = rawData[segmentOffset + 8];
|
||||
headerMulti->bgRecordPtr = BitConverter::ToInt32BE(rawData, segmentOffset + 12);
|
||||
|
||||
//zRoom->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, DeclarationPadding::Pad16, 12, "");
|
||||
|
||||
declaration += StringHelper::Sprintf("{ { 1 }, 2, 0x%06X }, 0x%06X, 0x%06X",
|
||||
headerMulti->entryRecord, headerMulti->bgCnt, headerMulti->bgRecordPtr);
|
||||
|
||||
zRoom->parent->AddDeclaration(segmentOffset, DeclarationAlignment::None, DeclarationPadding::Pad16, 16, "MeshHeader1Multi",
|
||||
StringHelper::Sprintf("%sMeshHeader0x%06X", zRoom->GetName().c_str(), segmentOffset), declaration);
|
||||
|
||||
//zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, DeclarationPadding::Pad16, 16, declaration);
|
||||
|
||||
meshHeader1 = headerMulti;
|
||||
}
|
||||
else // UH OH
|
||||
{
|
||||
int bp = 0;
|
||||
if (Globals::Instance->verbosity >= VERBOSITY_INFO)
|
||||
printf("WARNING: MeshHeader FMT %i not implemented!\n", fmt);
|
||||
}
|
||||
|
||||
meshHeader1->headerType = 1;
|
||||
|
@ -290,6 +280,15 @@ SetMesh::SetMesh(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex,
|
|||
}
|
||||
}
|
||||
|
||||
SetMesh::~SetMesh()
|
||||
{
|
||||
if (meshHeader != nullptr)
|
||||
{
|
||||
delete meshHeader;
|
||||
meshHeader = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void SetMesh::GenDListDeclarations(std::vector<uint8_t> rawData, ZDisplayList* dList)
|
||||
{
|
||||
string sourceOutput = dList->GetSourceOutputCode(zRoom->GetName()); // HOTSPOT
|
||||
|
@ -301,15 +300,15 @@ void SetMesh::GenDListDeclarations(std::vector<uint8_t> rawData, ZDisplayList* d
|
|||
else
|
||||
srcVarName = StringHelper::Sprintf("%s", dList->GetName().c_str());
|
||||
|
||||
zRoom->parent->AddDeclarationArray(dList->GetRawDataIndex(), DeclarationAlignment::None, dList->GetRawDataSize(), "Gfx", srcVarName, 0, sourceOutput);
|
||||
zRoom->parent->AddDeclarationArray(dList->GetRawDataIndex(), DeclarationAlignment::None, dList->GetRawDataSize(), "static Gfx", srcVarName, dList->GetRawDataSize() / 8, sourceOutput);
|
||||
|
||||
for (ZDisplayList* otherDList : dList->otherDLists)
|
||||
GenDListDeclarations(rawData, otherDList);
|
||||
|
||||
for (pair<uint32_t, string> vtxEntry : dList->vtxDeclarations)
|
||||
{
|
||||
zRoom->parent->AddDeclarationArray(vtxEntry.first, DeclarationAlignment::Align8, dList->vertices[vtxEntry.first].size() * 16, "Vtx",
|
||||
StringHelper::Sprintf("%sVtx_%06X", zRoom->GetName().c_str(), vtxEntry.first), 0, vtxEntry.second);
|
||||
zRoom->parent->AddDeclarationArray(vtxEntry.first, DeclarationAlignment::Align8, dList->vertices[vtxEntry.first].size() * 16, "static Vtx",
|
||||
StringHelper::Sprintf("%sVtx_%06X", zRoom->GetName().c_str(), vtxEntry.first), dList->vertices[vtxEntry.first].size(), vtxEntry.second);
|
||||
|
||||
//zRoom->parent->declarations[vtxEntry.first] = new Declaration(DeclarationAlignment::Align8, dList->vertices[vtxEntry.first].size() * 16, vtxEntry.second);
|
||||
}
|
||||
|
@ -317,11 +316,8 @@ void SetMesh::GenDListDeclarations(std::vector<uint8_t> rawData, ZDisplayList* d
|
|||
for (pair<uint32_t, string> texEntry : dList->texDeclarations)
|
||||
{
|
||||
zRoom->textures[texEntry.first] = dList->textures[texEntry.first];
|
||||
|
||||
//zRoom->parent->AddDeclarationArray(texEntry.first, DeclarationAlignment::None, dList->textures[texEntry.first]->GetRawDataSize(), "u64",
|
||||
//zRoom->textures[texEntry.first]->GetName(), 0, texEntry.second);
|
||||
|
||||
if (Globals::Instance->debugMessages)
|
||||
if (Globals::Instance->verbosity >= VERBOSITY_DEBUG)
|
||||
printf("SAVING IMAGE TO %s\n", Globals::Instance->outputPath.c_str());
|
||||
|
||||
zRoom->textures[texEntry.first]->Save(Globals::Instance->outputPath);
|
||||
|
@ -344,8 +340,8 @@ std::string SetMesh::GenDListExterns(ZDisplayList* dList)
|
|||
for (ZDisplayList* otherDList : dList->otherDLists)
|
||||
sourceOutput += GenDListExterns(otherDList);
|
||||
|
||||
for (pair<uint32_t, string> vtxEntry : dList->vtxDeclarations)
|
||||
sourceOutput += StringHelper::Sprintf("extern Vtx %sVtx_%06X[%i];\n", zRoom->GetName().c_str(), vtxEntry.first, dList->vertices[vtxEntry.first].size());
|
||||
//for (pair<uint32_t, string> vtxEntry : dList->vtxDeclarations)
|
||||
//sourceOutput += StringHelper::Sprintf("extern Vtx %sVtx_%06X[%i];\n", zRoom->GetName().c_str(), vtxEntry.first, dList->vertices[vtxEntry.first].size());
|
||||
|
||||
for (pair<uint32_t, string> texEntry : dList->texDeclarations)
|
||||
sourceOutput += StringHelper::Sprintf("extern u64 %sTex_%06X[];\n", zRoom->GetName().c_str(), texEntry.first);
|
||||
|
|
|
@ -102,6 +102,7 @@ class SetMesh : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetMesh(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex, int segAddressOffset);
|
||||
~SetMesh();
|
||||
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
//virtual std::string GenerateSourceCodePass2(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -19,10 +19,13 @@ SetPathways::SetPathways(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDat
|
|||
uint32_t currentPtr = listSegmentOffset;
|
||||
|
||||
if (segmentOffset != 0)
|
||||
zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, 0, "", "", false, "");
|
||||
zRoom->parent->AddDeclarationPlaceholder(segmentOffset);
|
||||
}
|
||||
|
||||
//if (listSegmentOffset != 0)
|
||||
//zRoom->declarations[listSegmentOffset] = new Declaration(DeclarationAlignment::None, 0, "");
|
||||
SetPathways::~SetPathways()
|
||||
{
|
||||
for (PathwayEntry* entry : pathways)
|
||||
delete entry;
|
||||
}
|
||||
|
||||
void SetPathways::InitList(uint32_t address)
|
||||
|
|
|
@ -13,6 +13,7 @@ class SetPathways : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetPathways(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetPathways();
|
||||
|
||||
std::string GetSourceOutputCode(std::string prefix);
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -23,19 +23,12 @@ SetRoomList::SetRoomList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDat
|
|||
|
||||
currentPtr += 8;
|
||||
}
|
||||
}
|
||||
|
||||
//string declaration = "";
|
||||
|
||||
/*for (int i = 0; i < rooms.size(); i++)
|
||||
{
|
||||
RoomEntry* entry = rooms[i];
|
||||
|
||||
string roomName = StringHelper::Sprintf("%sRoom%i", StringHelper::Split(zRoom->GetName(), "_scene")[0].c_str(), i);
|
||||
declaration += StringHelper::Sprintf("\t{ (u32)%sSegmentRomStart, (u32)%sSegmentRomEnd },\n", roomName.c_str(), roomName.c_str());
|
||||
}*/
|
||||
|
||||
//zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, rooms.size() * 8,
|
||||
//"RomFile", StringHelper::Sprintf("%sRoomList0x%06X", zRoom->GetName().c_str(), segmentOffset), true, declaration);
|
||||
SetRoomList::~SetRoomList()
|
||||
{
|
||||
for (RoomEntry* entry : rooms)
|
||||
delete entry;
|
||||
}
|
||||
|
||||
string SetRoomList::GenerateSourceCodePass1(string roomName, int baseAddress)
|
||||
|
@ -79,8 +72,8 @@ std::string SetRoomList::PreGenSourceFiles()
|
|||
}
|
||||
}
|
||||
|
||||
zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, rooms.size() * 8,
|
||||
"RomFile", StringHelper::Sprintf("%sRoomList0x%06X", zRoom->GetName().c_str(), segmentOffset), true, declaration);
|
||||
zRoom->parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::None, rooms.size() * 8,
|
||||
"RomFile", StringHelper::Sprintf("%sRoomList0x%06X", zRoom->GetName().c_str(), segmentOffset), 0, declaration);
|
||||
|
||||
return std::string();
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ class SetRoomList : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetRoomList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetRoomList();
|
||||
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
virtual std::string GenerateSourceCodePass2(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -26,6 +26,12 @@ SetStartPositionList::SetStartPositionList(ZRoom* nZRoom, std::vector<uint8_t> r
|
|||
}
|
||||
}
|
||||
|
||||
SetStartPositionList::~SetStartPositionList()
|
||||
{
|
||||
for (ActorSpawnEntry* entry : actors)
|
||||
delete entry;
|
||||
}
|
||||
|
||||
string SetStartPositionList::GenerateSourceCodePass1(string roomName, int baseAddress)
|
||||
{
|
||||
string sourceOutput = "";
|
||||
|
|
|
@ -10,6 +10,7 @@ public:
|
|||
std::vector<ActorSpawnEntry*> actors;
|
||||
|
||||
SetStartPositionList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetStartPositionList();
|
||||
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
virtual std::string GenerateSourceCodePass2(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -25,6 +25,12 @@ SetTransitionActorList::SetTransitionActorList(ZRoom* nZRoom, std::vector<uint8_
|
|||
}
|
||||
}
|
||||
|
||||
SetTransitionActorList::~SetTransitionActorList()
|
||||
{
|
||||
for (TransitionActorEntry* actor : transitionActors)
|
||||
delete actor;
|
||||
}
|
||||
|
||||
string SetTransitionActorList::GetSourceOutputCode(std::string prefix)
|
||||
{
|
||||
return "";
|
||||
|
@ -38,8 +44,8 @@ string SetTransitionActorList::GenerateSourceCodePass1(string roomName, int base
|
|||
for (TransitionActorEntry* entry : transitionActors)
|
||||
declaration += StringHelper::Sprintf("\t{ %i, %i, %i, %i, %s, %i, %i, %i, %i, 0x%04X }, \n", entry->frontObjectRoom, entry->frontTransitionReaction, entry->backObjectRoom, entry->backTransitionReaction, ActorList[entry->actorNum].c_str(), entry->posX, entry->posY, entry->posZ, entry->rotY, (uint16_t)entry->initVar);
|
||||
|
||||
zRoom->parent->declarations[segmentOffset] = new Declaration(DeclarationAlignment::None, transitionActors.size() * 16, "TransitionActorEntry",
|
||||
StringHelper::Sprintf("%sTransitionActorList0x%06X", roomName.c_str(), segmentOffset), true, declaration);
|
||||
zRoom->parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::None, transitionActors.size() * 16, "TransitionActorEntry",
|
||||
StringHelper::Sprintf("%sTransitionActorList0x%06X", roomName.c_str(), segmentOffset), 0, declaration);
|
||||
|
||||
return sourceOutput;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ class SetTransitionActorList : public ZRoomCommand
|
|||
{
|
||||
public:
|
||||
SetTransitionActorList(ZRoom* nZRoom, std::vector<uint8_t> rawData, int rawDataIndex);
|
||||
~SetTransitionActorList();
|
||||
|
||||
std::string GetSourceOutputCode(std::string prefix);
|
||||
virtual std::string GenerateSourceCodePass1(std::string roomName, int baseAddress);
|
||||
|
|
|
@ -48,6 +48,12 @@ ZRoom::ZRoom() : ZResource()
|
|||
scene = nullptr;
|
||||
}
|
||||
|
||||
ZRoom::~ZRoom()
|
||||
{
|
||||
for (ZRoomCommand* cmd : commands)
|
||||
delete cmd;
|
||||
}
|
||||
|
||||
ZRoom* ZRoom::ExtractFromXML(XMLElement* reader, vector<uint8_t> nRawData, int rawDataIndex, string nRelPath, ZFile* nParent, ZRoom* nScene)
|
||||
{
|
||||
ZRoom* room = new ZRoom();
|
||||
|
@ -78,7 +84,7 @@ ZRoom* ZRoom::ExtractFromXML(XMLElement* reader, vector<uint8_t> nRawData, int r
|
|||
if (string(child->Name()) == "DListHint")
|
||||
{
|
||||
string comment = "";
|
||||
|
||||
|
||||
if (child->Attribute("Comment") != NULL)
|
||||
comment = "// " + string(child->Attribute("Comment")) + "\n";
|
||||
|
||||
|
@ -86,10 +92,8 @@ ZRoom* ZRoom::ExtractFromXML(XMLElement* reader, vector<uint8_t> nRawData, int r
|
|||
int address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16);
|
||||
|
||||
ZDisplayList* dList = new ZDisplayList(room->rawData, address, ZDisplayList::GetDListLength(room->rawData, address));
|
||||
//room->parent->declarations[address] = new Declaration(DeclarationAlignment::None, dList->GetRawDataSize(), comment + dList->GetSourceOutputCode(room->name));
|
||||
//room->parent->AddDeclarationArray(address, DeclarationAlignment::None, dList->GetRawDataSize(), "Gfx", "", 0, comment + dList->GetSourceOutputCode(room->name));
|
||||
|
||||
dList->GetSourceOutputCode(room->name);
|
||||
delete dList;
|
||||
}
|
||||
else if (string(child->Name()) == "BlobHint")
|
||||
{
|
||||
|
@ -118,7 +122,7 @@ ZRoom* ZRoom::ExtractFromXML(XMLElement* reader, vector<uint8_t> nRawData, int r
|
|||
int address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16);
|
||||
|
||||
ZCutscene* cutscene = new ZCutscene(room->rawData, address, 9999);
|
||||
|
||||
|
||||
room->parent->AddDeclarationArray(address, DeclarationAlignment::None, DeclarationPadding::Pad16, cutscene->GetRawDataSize(), "s32",
|
||||
StringHelper::Sprintf("%sCutsceneData0x%06X", room->name.c_str(), cutscene->segmentOffset), 0, cutscene->GetSourceOutputCode(room->name));
|
||||
}
|
||||
|
@ -201,7 +205,7 @@ void ZRoom::ParseCommands(std::vector<ZRoomCommand*>& commandList, CommandSet co
|
|||
if (commandsLeft <= 0)
|
||||
break;
|
||||
|
||||
RoomCommand opcode = (RoomCommand)rawData[rawDataIndex];
|
||||
RoomCommand opcode = (RoomCommand)rawData[rawDataIndex];
|
||||
|
||||
ZRoomCommand* cmd = nullptr;
|
||||
|
||||
|
@ -280,7 +284,7 @@ void ZRoom::ProcessCommandSets()
|
|||
cmd->commandSet = commandSet & 0x00FFFFFF;
|
||||
string pass1 = cmd->GenerateSourceCodePass1(name, cmd->commandSet);
|
||||
|
||||
Declaration* decl = parent->AddDeclaration(cmd->cmdAddress, i == 0 ? DeclarationAlignment::Align16 : DeclarationAlignment::None, 8, cmd->GetCommandCName(),
|
||||
Declaration* decl = parent->AddDeclaration(cmd->cmdAddress, i == 0 ? DeclarationAlignment::Align16 : DeclarationAlignment::None, 8, StringHelper::Sprintf("static %s", cmd->GetCommandCName().c_str()),
|
||||
StringHelper::Sprintf("%sSet%04XCmd%02X", name.c_str(), commandSet & 0x00FFFFFF, cmd->cmdIndex, cmd->cmdID),
|
||||
StringHelper::Sprintf("%s", pass1.c_str()));
|
||||
|
||||
|
@ -298,7 +302,7 @@ void ZRoom::ProcessCommandSets()
|
|||
string pass2 = cmd->GenerateSourceCodePass2(name, cmd->commandSet);
|
||||
|
||||
if (pass2 != "")
|
||||
parent->AddDeclaration(cmd->cmdAddress, DeclarationAlignment::None, 8, cmd->GetCommandCName(), StringHelper::Sprintf("%sSet%04XCmd%02X", name.c_str(), cmd->commandSet & 0x00FFFFFF, cmd->cmdIndex, cmd->cmdID), StringHelper::Sprintf("%s // 0x%04X", pass2.c_str(), cmd->cmdAddress));
|
||||
parent->AddDeclaration(cmd->cmdAddress, DeclarationAlignment::None, 8, StringHelper::Sprintf("static %s", cmd->GetCommandCName().c_str()), StringHelper::Sprintf("%sSet%04XCmd%02X", name.c_str(), cmd->commandSet & 0x00FFFFFF, cmd->cmdIndex, cmd->cmdID), StringHelper::Sprintf("%s // 0x%04X", pass2.c_str(), cmd->cmdAddress));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -308,7 +312,7 @@ void ZRoom::ProcessCommandSets()
|
|||
*/
|
||||
void ZRoom::SyotesRoomHack()
|
||||
{
|
||||
char headerData[] =
|
||||
char headerData[] =
|
||||
{
|
||||
0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08
|
||||
};
|
||||
|
@ -392,10 +396,10 @@ size_t ZRoom::GetCommandSizeFromNeighbor(ZRoomCommand* cmd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
string ZRoom::GetSourceOutputHeader(string prefix)
|
||||
string ZRoom::GetSourceOutputHeader(const std::string& prefix)
|
||||
{
|
||||
sourceOutput = "";
|
||||
|
||||
|
||||
for (ZRoomCommand* cmd : commands)
|
||||
sourceOutput += cmd->GenerateExterns();
|
||||
|
||||
|
@ -407,7 +411,7 @@ string ZRoom::GetSourceOutputHeader(string prefix)
|
|||
return sourceOutput;
|
||||
}
|
||||
|
||||
string ZRoom::GetSourceOutputCode(std::string prefix)
|
||||
string ZRoom::GetSourceOutputCode(const std::string& prefix)
|
||||
{
|
||||
sourceOutput = "";
|
||||
|
||||
|
@ -466,9 +470,9 @@ string ZRoom::GetSourceOutputCode(std::string prefix)
|
|||
|
||||
declaration += item.second->GetSourceOutputCode(prefix);
|
||||
|
||||
if (Globals::Instance->debugMessages)
|
||||
if (Globals::Instance->verbosity >= VERBOSITY_DEBUG)
|
||||
printf("SAVING IMAGE TO %s\n", Globals::Instance->outputPath.c_str());
|
||||
|
||||
|
||||
item.second->Save(Globals::Instance->outputPath);
|
||||
|
||||
parent->AddDeclarationIncludeArray(item.first, StringHelper::Sprintf("%s/%s.%s.inc.c",
|
||||
|
@ -501,7 +505,7 @@ ZResourceType ZRoom::GetResourceType()
|
|||
return ZResourceType::Room;
|
||||
}
|
||||
|
||||
void ZRoom::Save(string outFolder)
|
||||
void ZRoom::Save(const std::string& outFolder)
|
||||
{
|
||||
for (ZRoomCommand* cmd : commands)
|
||||
cmd->Save();
|
||||
|
@ -578,4 +582,4 @@ CommandSet::CommandSet(int32_t nAddress, int32_t nCommandCount)
|
|||
{
|
||||
address = nAddress;
|
||||
commandCount = nCommandCount;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include "../ZResource.h"
|
||||
#include "ZRoomCommand.h"
|
||||
#include "ZTexture.h"
|
||||
#include "../tinyxml2.h"
|
||||
#include <tinyxml2.h>
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
@ -14,12 +14,13 @@ class ZRoom : public ZResource
|
|||
protected:
|
||||
std::vector<ZRoomCommand*> commands;
|
||||
|
||||
std::string GetSourceOutputHeader(std::string prefix);
|
||||
std::string GetSourceOutputCode(std::string prefix);
|
||||
std::string GetSourceOutputHeader(const std::string& prefix);
|
||||
std::string GetSourceOutputCode(const std::string& prefix);
|
||||
void ProcessCommandSets();
|
||||
void SyotesRoomHack();
|
||||
|
||||
ZRoom();
|
||||
~ZRoom();
|
||||
|
||||
public:
|
||||
ZRoom* scene;
|
||||
|
@ -36,7 +37,7 @@ public:
|
|||
std::vector<uint8_t> GetRawData();
|
||||
int GetRawDataSize();
|
||||
virtual ZResourceType GetResourceType();
|
||||
virtual void Save(std::string outFolder);
|
||||
virtual void Save(const std::string& outFolder);
|
||||
virtual void PreGenSourceFiles();
|
||||
};
|
||||
|
||||
|
@ -47,4 +48,4 @@ struct CommandSet
|
|||
|
||||
CommandSet(int32_t nAddress);
|
||||
CommandSet(int32_t nAddress, int32_t nCommandCount);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "../tinyxml2.h"
|
||||
#include <tinyxml2.h>
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue