Shipwright/libultraship/libultraship/Resource.cpp
Random 09432ee7f4
Linux/GCC Support (#28)
* Initial Linux/GCC support commit

* Add instructins for linux in the README

* apply suggestions by @Erotemic and @Emill

* Fix python 3.10 symlink line

* Fix func_80041E80 type mismatch (#3)

Type mismatch functions.h:664

* Makefile: clean OTRExporter/libultraship/ZAPDTR with distclean and fix CXX_FILES

* Makefile: find C/CXX_FILES automatically

* Makefile: remove ugly conditions in find commands

* cleanup _MSC_VER usage

* fix Windows build

* cleanup extraction scripts

* fix Windows build

* Fix Windows path separator issue

* fix rumble support for linux

* use glew-cmake in dockerfile

* add pulseaudio backend

* fix ZAPDTR linkage

* Check for "soh.elf" in directory (#6)

hide second button if `soh.exe` or `soh.elf` is present

* Fix hardcoded segment addresses (#5)

* fix condition

* hack lus -> soh dep for ZAPDTR

Co-authored-by: sholdee <102821812+sholdee@users.noreply.github.com>
Co-authored-by: qurious-pixel <62252937+qurious-pixel@users.noreply.github.com>
Co-authored-by: GaryOderNichts <12049776+GaryOderNichts@users.noreply.github.com>
2022-05-11 13:18:24 -04:00

61 lines
1.6 KiB
C++

#include "Resource.h"
#include "DisplayList.h"
#include "ResourceMgr.h"
#include "Utils/BinaryReader.h"
#include "Lib/tinyxml2/tinyxml2.h"
#include "Lib/Fast3D/U64/PR/ultra64/gbi.h"
namespace Ship
{
void ResourceFile::ParseFileBinary(BinaryReader* reader, Resource* res)
{
id = reader->ReadUInt64();
res->id = id;
reader->ReadUInt32(); // Resource minor version number
reader->ReadUInt64(); // ROM CRC
reader->ReadUInt32(); // ROM Enum
// Reserved for future file format versions...
reader->Seek(64, SeekOffsetType::Start);
}
void ResourceFile::ParseFileXML(tinyxml2::XMLElement* reader, Resource* res)
{
id = reader->Int64Attribute("id", -1);
}
void ResourceFile::WriteFileBinary(BinaryWriter* writer, Resource* res)
{
}
void ResourceFile::WriteFileXML(tinyxml2::XMLElement* writer, Resource* res)
{
}
Resource::~Resource()
{
free(cachedGameAsset);
cachedGameAsset = nullptr;
for (size_t i = 0; i < patches.size(); i++)
{
std::string hashStr = resMgr->HashToString(patches[i].crc);
auto resShared = resMgr->GetCachedFile(hashStr);
if (resShared != nullptr)
{
auto res = (Ship::DisplayList*)resShared.get();
Gfx* gfx = (Gfx*)&res->instructions[patches[i].index];
gfx->words.w1 = patches[i].origData;
}
}
patches.clear();
#if _DEBUG
if (file != nullptr)
printf("Deconstructor called on file %s\n", file->path.c_str());
#endif
}
}