mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-01 13:52:19 -05:00
4166dbf907
* Rough mockup of LUS XML loading * Updated code for merge * Loading from FS support and custom DList WIP implementation * Added current directory support to F3D and impl most of the dlist cmds * WIP Skeleton support * Almost done * Rebase fixes * Submodule updates * HD Texture Support * Fixes * bump lus * fix exporter build, header update * soh builds * setMesh image path cleanup * Update soh/src/overlays/actors/ovl_player_actor/z_player.c * Update soh/src/overlays/actors/ovl_player_actor/z_player.c * Update OTRExporter/OTRExporter/Main.cpp * Update ZAPDTR/ZAPD/ZResource.h * Update soh/src/code/z_skelanime.c * Update OTRExporter/OTRExporter/Main.cpp * Fixed jpeg backgrounds and decreased icon buffer size * Bump lus * Increased even more the buffer because it crashes on long texts * Removed print because sometimes the if is not triggered when the image is already byteswapped * fix non-windows build * fix build Co-authored-by: Kenix <kenixwhisperwind@gmail.com> * add hd checkbox * Various fixes for custom model support (#23) * Some fixes * Updated LUS Version * Fixed issue with Link Skirt on pause menu * Added CVar for custom link model changes * Fixed headers * Additional header fixes * Tweaks * Unload HD game assets on scene transition. (#16) * Unload game assets on scene transition. * Bump LUS * Unloads all HD assets on scene transition. * Only unload hd assets if hd assets are turned on. * Fixes issues on toggling between HD and non HD assets. --------- Co-authored-by: briaguya <briaguya@alice> * fix: actually load hd debug font (#27) * fix: actually load hd debug font * toggle debug text correctly --------- Co-authored-by: briaguya <briaguya> * Yes. (#28) * Merge branch 'develop' into dev-to-ghost * HD Skeleton Swapping and Language Fixes (#32) * Yes. * HD Skeleton Swapping and Language Fixes * Test * Fixed issues with ganon cape (#34) * Fixed Bongo Bongo Crash (#35) * Added HD Assets Toggle (#37) * Ivan the Fairy - Coop Mode (#36) * wip * hookshotable ivan * added hookshot item * new items & changes & fixes & restored navi * farore, din and nayru's spells are done * fixed slingshot & bow * added more items supported * done with all main items * bug fixes & ready * added imgui button * wip * hookshotable ivan * added hookshot item * new items & changes & fixes & restored navi * farore, din and nayru's spells are done * fixed slingshot & bow * added more items supported * fix own dungeon items on shuffled boss rooms (#2683) * bump lus (#2692) * fix: lowercase package names for vcpkg (#2693) vcpkg was throwing an error `error: invalid character in package name (must be lowercase, digits, '-')` this updates our calls to `vcpkg_install_packages` to use lowercase package names instead of uppercase * fix death mountain cloud in rando (#2691) * Fix: Switch Age No Longer Reloads Start Room (#2679) * [Reduced Clutter] Disable Hot/Underwater Warning Text (#2684) * Disable Warning Text * Moved to Reduced Clutter * done with all main items * bug fixes & ready * fix: process roms in consistent order (#2696) * chore: move rando savefile setup and document flags (#2697) * remove rando save init from sram * move rando savefile init logic and set more flags * document flags for rando save creation * Fix: Use correct fps value for frame interpolation with match refresh rate (#2694) * Fix: Kak GS placement on construction site (#2695) * added imgui button * addressed kenix's comments * fixed useless null * added rupee dash mode in extra modes * changed menu position --------- Co-authored-by: Adam Bird <Archez@users.noreply.github.com> Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com> Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com> * LUS Scancodes (#42) * Added HD Assets Toggle * Switched out SDL for LUS scancodes * Ivan tweaks (#45) * Magic consumption slowed down; Bosses now affected by Ivan's Din spell * Adjust magic timer * clean up imgui * model fixes/improvements (#50) * replace `gUseCustomLinkModel` with custom resource check * handle adult/child * bump lus * fix model switching with tab * use lus main * fix carpet man (#52) Co-authored-by: Rozelette <Rozelette@users.noreply.github.com> * get ship model and lus texture into soh.otr, use `gAuthenticLogo` to toggle between ship and authentic (#55) * Use libultra features for CPU-modified textures (#40) * Use libultra features for CPU-modified textures * Comment * bump lus on ghost (#58) * fix: properly use `Interface_LoadActionLabel` to display start button text (#61) * Changes hd -> alt for texture replacement. (#65) * Changes hd -> alt for texture replacement. * Renames variables in gfxprint for hd -> alt change. * Update soh/soh/resource/type/Skeleton.cpp --------- Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com> * Fixes kaleido dungeon maps (#67) * skeleton stuff (#69) * comment out wii u build (#70) * bump lus (#71) * Rework readme (#72) * Update README.md * docs * put custom music docs somewhere * Update README.md * Update README.md * Update README.md * Update README.md * dark/light title image * lus * Update README.md * Fixed vanilla minimap (#73) * Fixed vanilla minimap * Workaround for pulsing SD maps with non-broken HD maps. --------- Co-authored-by: Christopher Leggett <chris@leggett.dev> * Skeleton fix fixed (#75) * WIP skelton patcher fix * Fixes skeleton reference change. * Adds const back to name in ResourceMgr_LoadSkeletonByName --------- Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: Kenix <kenixwhisperwind@gmail.com> * Fixes z_message_otr memory leak. * Update soh/soh/z_message_OTR.cpp * Update soh/src/code/game.c * docs: add how to find otr files to switch instructions (#78) * bump lus (#79) * comment out RegisterBlendedTexture in king d (#80) --------- Co-authored-by: Nicholas Estelami <NEstelami@users.noreply.github.com> Co-authored-by: David Chavez <david@dcvz.io> Co-authored-by: briaguya <briaguya@alice> Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com> Co-authored-by: KiritoDv <kiritodev01@gmail.com> Co-authored-by: briaguya <briaguya> Co-authored-by: Ralphie Morell <stratomaster64@gmail.com> Co-authored-by: MelonSpeedruns <melonspeedruns@outlook.com> Co-authored-by: Adam Bird <Archez@users.noreply.github.com> Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com> Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com> Co-authored-by: Rozelette <Rozelette@users.noreply.github.com> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: Lywx <36680385+KiritoDv@users.noreply.github.com>
142 lines
4.9 KiB
C++
142 lines
4.9 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "ZSymbol.h"
|
|
#include "ZTexture.h"
|
|
#include "tinyxml2.h"
|
|
|
|
enum class ZFileMode
|
|
{
|
|
BuildTexture,
|
|
BuildOverlay,
|
|
BuildBlob,
|
|
BuildSourceFile,
|
|
BuildBackground,
|
|
Extract,
|
|
ExternalFile,
|
|
ExtractDirectory,
|
|
Invalid,
|
|
Custom = 1000, // Used for exporter file modes
|
|
};
|
|
|
|
enum class ZGame
|
|
{
|
|
OOT_RETAIL,
|
|
OOT_SW97,
|
|
MM_RETAIL
|
|
};
|
|
|
|
class ZFile
|
|
{
|
|
public:
|
|
std::map<offset_t, Declaration*> declarations;
|
|
std::string defines;
|
|
std::vector<ZResource*> resources;
|
|
|
|
int workerID;
|
|
bool isCompilable = false;
|
|
|
|
// Default to using virtual addresses
|
|
uint32_t segment = 0x80;
|
|
uint32_t baseAddress, rangeStart, rangeEnd;
|
|
bool isExternalFile = false;
|
|
|
|
ZFile(const fs::path& nOutPath, const std::string& nName);
|
|
ZFile(ZFileMode nMode, tinyxml2::XMLElement* reader, const fs::path& nBasePath,
|
|
const fs::path& nOutPath, const std::string& filename, const fs::path& nXmlFilePath, int nWorkerID);
|
|
~ZFile();
|
|
|
|
std::string GetName() const;
|
|
std::string GetOutName() const;
|
|
ZFileMode GetMode() const;
|
|
const fs::path& GetXmlFilePath() const;
|
|
const std::vector<uint8_t>& GetRawData() const;
|
|
void ExtractResources();
|
|
void BuildSourceFile();
|
|
void AddResource(ZResource* res);
|
|
ZResource* FindResource(uint32_t rawDataIndex);
|
|
std::vector<ZResource*> GetResourcesOfType(ZResourceType resType);
|
|
|
|
Declaration* AddDeclaration(offset_t address, DeclarationAlignment alignment, size_t size,
|
|
const std::string& varType, const std::string& varName,
|
|
const std::string& body);
|
|
|
|
Declaration* AddDeclarationArray(offset_t address, DeclarationAlignment alignment, size_t size,
|
|
const std::string& varType, const std::string& varName,
|
|
size_t arrayItemCnt, const std::string& body);
|
|
Declaration* AddDeclarationArray(offset_t address, DeclarationAlignment alignment, size_t size,
|
|
const std::string& varType, const std::string& varName,
|
|
const std::string& arrayItemCntStr, const std::string& body);
|
|
|
|
Declaration* AddDeclarationPlaceholder(offset_t address, const std::string& varName);
|
|
|
|
Declaration* AddDeclarationInclude(offset_t address, const std::string& includePath,
|
|
size_t size, const std::string& varType,
|
|
const std::string& varName);
|
|
Declaration* AddDeclarationIncludeArray(offset_t address, std::string& includePath, size_t size,
|
|
const std::string& varType, const std::string& varName,
|
|
size_t arrayItemCnt);
|
|
|
|
bool GetDeclarationPtrName(segptr_t segAddress, const std::string& expectedType,
|
|
std::string& declName) const;
|
|
bool GetDeclarationArrayIndexedName(segptr_t segAddress, size_t elementSize,
|
|
const std::string& expectedType,
|
|
std::string& declName) const;
|
|
|
|
Declaration* GetDeclaration(uint32_t address) const;
|
|
Declaration* GetDeclarationRanged(uint32_t address) const;
|
|
bool HasDeclaration(uint32_t address);
|
|
|
|
std::string GetHeaderInclude() const;
|
|
std::string GetZRoomHeaderInclude() const;
|
|
std::string GetExternalFileHeaderInclude() const;
|
|
|
|
void GeneratePlaceholderDeclarations();
|
|
|
|
void AddTextureResource(uint32_t offset, ZTexture* tex);
|
|
ZTexture* GetTextureResource(uint32_t offset) const;
|
|
|
|
void AddSymbolResource(uint32_t offset, ZSymbol* sym);
|
|
ZSymbol* GetSymbolResource(uint32_t offset) const;
|
|
ZSymbol* GetSymbolResourceRanged(uint32_t offset) const;
|
|
|
|
fs::path GetSourceOutputFolderPath() const;
|
|
|
|
bool IsOffsetInFileRange(uint32_t offset) const;
|
|
bool IsSegmentedInFilespaceRange(segptr_t segAddress) const;
|
|
|
|
static std::map<std::string, ZResourceFactoryFunc*>* GetNodeMap();
|
|
static void RegisterNode(std::string nodeName, ZResourceFactoryFunc* nodeFunc);
|
|
|
|
protected:
|
|
std::string name;
|
|
fs::path outName = "";
|
|
fs::path basePath;
|
|
fs::path outputPath;
|
|
fs::path xmlFilePath;
|
|
std::vector<uint8_t> rawData;
|
|
|
|
// Keep track of every texture of this ZFile.
|
|
// The pointers declared here are "borrowed" (somebody else is the owner),
|
|
// so ZFile shouldn't delete/free those textures.
|
|
std::map<uint32_t, ZTexture*> texturesResources;
|
|
std::map<uint32_t, ZSymbol*> symbolResources;
|
|
ZFileMode mode = ZFileMode::Invalid;
|
|
|
|
ZFile();
|
|
void ParseXML(tinyxml2::XMLElement* reader, const std::string& filename);
|
|
void DeclareResourceSubReferences();
|
|
void GenerateSourceFiles();
|
|
void GenerateSourceHeaderFiles();
|
|
bool AddDeclarationChecks(uint32_t address, const std::string& varName);
|
|
std::string ProcessDeclarations();
|
|
void ProcessDeclarationText(Declaration* decl);
|
|
std::string ProcessExterns();
|
|
|
|
std::string ProcessTextureIntersections(const std::string& prefix);
|
|
void HandleUnaccountedData();
|
|
bool HandleUnaccountedAddress(offset_t currentAddress, offset_t lastAddr, uint32_t& lastSize);
|
|
};
|