mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-12 03:02:18 -05:00
update to latest LUS main (#4202)
Includes supporting changes from: * https://github.com/HarbourMasters/Shipwright/pull/4197 (alt assets variable changes) * https://github.com/HarbourMasters/Shipwright/pull/4199 (WindowBackend enum changes) * https://github.com/HarbourMasters/Shipwright/pull/4200 (Extract gMtxClear) --------- Co-authored-by: Malkierian <malkierian@gmail.com> Co-authored-by: inspectredc <inspectredc@gmail.com>
This commit is contained in:
parent
b8c7c71578
commit
736dccb00b
@ -16,7 +16,6 @@ set(CVAR_STATS_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.Stats" CACHE STRING "")
|
|||||||
set(CVAR_ENABLE_MULTI_VIEWPORTS "${CVAR_PREFIX_SETTING}.EnableMultiViewports" CACHE STRING "")
|
set(CVAR_ENABLE_MULTI_VIEWPORTS "${CVAR_PREFIX_SETTING}.EnableMultiViewports" CACHE STRING "")
|
||||||
set(CVAR_LOW_RES_MODE "${CVAR_PREFIX_SETTING}.LowResMode" CACHE STRING "")
|
set(CVAR_LOW_RES_MODE "${CVAR_PREFIX_SETTING}.LowResMode" CACHE STRING "")
|
||||||
set(CVAR_SIMULATED_INPUT_LAG "${CVAR_PREFIX_SETTING}.SimulatedInputLag" CACHE STRING "")
|
set(CVAR_SIMULATED_INPUT_LAG "${CVAR_PREFIX_SETTING}.SimulatedInputLag" CACHE STRING "")
|
||||||
set(CVAR_ALT_ASSETS "${CVAR_PREFIX_ENHANCEMENT}.AltAssets" CACHE STRING "")
|
|
||||||
set(CVAR_GAME_OVERLAY_FONT "${CVAR_PREFIX_SETTING}.OverlayFont" CACHE STRING "")
|
set(CVAR_GAME_OVERLAY_FONT "${CVAR_PREFIX_SETTING}.OverlayFont" CACHE STRING "")
|
||||||
set(CVAR_MENU_BAR_OPEN "${CVAR_PREFIX_SETTING}.OpenMenuBar" CACHE STRING "")
|
set(CVAR_MENU_BAR_OPEN "${CVAR_PREFIX_SETTING}.OpenMenuBar" CACHE STRING "")
|
||||||
set(CVAR_PREFIX_CONTROLLERS "${CVAR_PREFIX_SETTING}.Controllers" CACHE STRING "")
|
set(CVAR_PREFIX_CONTROLLERS "${CVAR_PREFIX_SETTING}.Controllers" CACHE STRING "")
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 9def18e62467b4225d26e206e0039a31ed406573
|
Subproject commit fb10cd2feb488cf58899a7d5283195fc50b07b23
|
5
soh/assets/xml/GC_MQ_D/code/sys_matrix.xml
Normal file
5
soh/assets/xml/GC_MQ_D/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0x110CC0" RangeEnd="0x110D00">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0x110CC0"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13E00" TlutOffset="0x13BF8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13E00" TlutOffset="0x13BF8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x14600" TlutOffset="0x13BF8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x14600" TlutOffset="0x13BF8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
5
soh/assets/xml/GC_MQ_PAL_F/code/sys_matrix.xml
Normal file
5
soh/assets/xml/GC_MQ_PAL_F/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0xEAD00" RangeEnd="0xEAD40">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0xEAD00"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13E00" TlutOffset="0x13BF8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13E00" TlutOffset="0x13BF8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x14600" TlutOffset="0x13BF8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x14600" TlutOffset="0x13BF8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
5
soh/assets/xml/GC_NMQ_D/code/sys_matrix.xml
Normal file
5
soh/assets/xml/GC_NMQ_D/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0x110CE0" RangeEnd="0x110D20">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0x110CE0"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
5
soh/assets/xml/GC_NMQ_PAL_F/code/sys_matrix.xml
Normal file
5
soh/assets/xml/GC_NMQ_PAL_F/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0xEAD20" RangeEnd="0xEAD60">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0xEAD20"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
5
soh/assets/xml/N64_PAL_10/code/sys_matrix.xml
Normal file
5
soh/assets/xml/N64_PAL_10/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0xEB620" RangeEnd="0xEB660">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0xEB620"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
5
soh/assets/xml/N64_PAL_11/code/sys_matrix.xml
Normal file
5
soh/assets/xml/N64_PAL_11/code/sys_matrix.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<Root>
|
||||||
|
<File Name="code" OutName="sys_matrix" RangeStart="0xEB660" RangeEnd="0xEB6A0">
|
||||||
|
<Mtx Name="gMtxClear" Offset="0xEB660"/>
|
||||||
|
</File>
|
||||||
|
</Root>
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_scene" Segment="2">
|
<File Name="bdan_scene" Segment="2">
|
||||||
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_013E00" OutName="bdan_sceneTex_013E00" Format="ci8" Width="32" Height="64" Offset="0x13DE0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
<Texture Name="bdan_sceneTex_014600" OutName="bdan_sceneTex_014600" Format="ci8" Width="32" Height="32" Offset="0x145E0" TlutOffset="0x13BD8" AddedByScript="true"/>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="code/sys_matrix.xml" OutPath="code/sys_matrix/"/>
|
||||||
<File Name="bdan_boss_scene" Segment="2">
|
<File Name="bdan_boss_scene" Segment="2">
|
||||||
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
<Scene Name="bdan_boss_scene" Offset="0x0"/>
|
||||||
</File>
|
</File>
|
||||||
|
@ -149,6 +149,8 @@ Color_RGB8 zoraColor = { 0x00, 0xEC, 0x64 };
|
|||||||
|
|
||||||
float previousImGuiScale;
|
float previousImGuiScale;
|
||||||
|
|
||||||
|
bool prevAltAssets = false;
|
||||||
|
|
||||||
// Same as NaviColor type from OoT src (z_actor.c), but modified to be sans alpha channel for Controller LED.
|
// Same as NaviColor type from OoT src (z_actor.c), but modified to be sans alpha channel for Controller LED.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Color_RGB8 inner;
|
Color_RGB8 inner;
|
||||||
@ -320,6 +322,8 @@ OTRGlobals::OTRGlobals() {
|
|||||||
|
|
||||||
// tell LUS to reserve 3 SoH specific threads (Game, Audio, Save)
|
// tell LUS to reserve 3 SoH specific threads (Game, Audio, Save)
|
||||||
context->InitResourceManager(OTRFiles, {}, 3);
|
context->InitResourceManager(OTRFiles, {}, 3);
|
||||||
|
prevAltAssets = CVarGetInteger(CVAR_ENHANCEMENT("AltAssets"), 0);
|
||||||
|
context->GetResourceManager()->SetAltAssetsEnabled(prevAltAssets);
|
||||||
|
|
||||||
context->InitControlDeck({BTN_MODIFIER1, BTN_MODIFIER2});
|
context->InitControlDeck({BTN_MODIFIER1, BTN_MODIFIER2});
|
||||||
context->GetControlDeck()->SetSinglePlayerMappingMode(true);
|
context->GetControlDeck()->SetSinglePlayerMappingMode(true);
|
||||||
@ -468,7 +472,7 @@ bool OTRGlobals::HasOriginal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint32_t OTRGlobals::GetInterpolationFPS() {
|
uint32_t OTRGlobals::GetInterpolationFPS() {
|
||||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::DX11) {
|
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||||
return CVarGetInteger(CVAR_SETTING("InterpolationFPS"), 20);
|
return CVarGetInteger(CVAR_SETTING("InterpolationFPS"), 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,9 +488,6 @@ struct ExtensionEntry {
|
|||||||
std::string ext;
|
std::string ext;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern uintptr_t clearMtx;
|
|
||||||
extern "C" Mtx gMtxClear;
|
|
||||||
extern "C" MtxF gMtxFClear;
|
|
||||||
extern "C" void OTRMessage_Init();
|
extern "C" void OTRMessage_Init();
|
||||||
extern "C" void AudioMgr_CreateNextAudioBuffer(s16* samples, u32 num_samples);
|
extern "C" void AudioMgr_CreateNextAudioBuffer(s16* samples, u32 num_samples);
|
||||||
extern "C" void AudioPlayer_Play(const uint8_t* buf, uint32_t len);
|
extern "C" void AudioPlayer_Play(const uint8_t* buf, uint32_t len);
|
||||||
@ -1145,7 +1146,6 @@ extern "C" void InitOTR() {
|
|||||||
GameInteractorSail::Instance = new GameInteractorSail();
|
GameInteractorSail::Instance = new GameInteractorSail();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
clearMtx = (uintptr_t)&gMtxClear;
|
|
||||||
OTRMessage_Init();
|
OTRMessage_Init();
|
||||||
OTRAudio_Init();
|
OTRAudio_Init();
|
||||||
OTRExtScanner();
|
OTRExtScanner();
|
||||||
@ -1254,8 +1254,6 @@ extern "C" uint64_t GetUnixTimestamp() {
|
|||||||
return (uint64_t)millis.count();
|
return (uint64_t)millis.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool ToggleAltAssetsAtEndOfFrame;
|
|
||||||
|
|
||||||
extern "C" void Graph_StartFrame() {
|
extern "C" void Graph_StartFrame() {
|
||||||
#ifndef __WIIU__
|
#ifndef __WIIU__
|
||||||
using Ship::KbScancode;
|
using Ship::KbScancode;
|
||||||
@ -1337,7 +1335,7 @@ extern "C" void Graph_StartFrame() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
case KbScancode::LUS_KB_TAB: {
|
case KbScancode::LUS_KB_TAB: {
|
||||||
ToggleAltAssetsAtEndOfFrame = true;
|
CVarSetInteger(CVAR_ENHANCEMENT("AltAssets"), !CVarGetInteger(CVAR_ENHANCEMENT("AltAssets"), 0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1420,11 +1418,10 @@ extern "C" void Graph_ProcessGfxCommands(Gfx* commands) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ToggleAltAssetsAtEndOfFrame) {
|
bool curAltAssets = CVarGetInteger(CVAR_ENHANCEMENT("AltAssets"), 0);
|
||||||
ToggleAltAssetsAtEndOfFrame = false;
|
if (prevAltAssets != curAltAssets) {
|
||||||
|
prevAltAssets = curAltAssets;
|
||||||
// Actually update the CVar now before runing the alt asset update listeners
|
Ship::Context::GetInstance()->GetResourceManager()->SetAltAssetsEnabled(curAltAssets);
|
||||||
CVarSetInteger(CVAR_ALT_ASSETS, !CVarGetInteger(CVAR_ALT_ASSETS, 0));
|
|
||||||
gfx_texture_cache_clear();
|
gfx_texture_cache_clear();
|
||||||
SOH::SkeletonPatcher::UpdateSkeletons();
|
SOH::SkeletonPatcher::UpdateSkeletons();
|
||||||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnAssetAltChange>();
|
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnAssetAltChange>();
|
||||||
@ -1610,10 +1607,14 @@ extern "C" uint8_t ResourceMgr_FileAltExists(const char* filePath) {
|
|||||||
return ExtensionCache.contains(path);
|
return ExtensionCache.contains(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" bool ResourceMgr_IsAltAssetsEnabled() {
|
||||||
|
return Ship::Context::GetInstance()->GetResourceManager()->IsAltAssetsEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
// Unloads a resource if an alternate version exists when alt assets are enabled
|
// Unloads a resource if an alternate version exists when alt assets are enabled
|
||||||
// The resource is only removed from the internal cache to prevent it from used in the next resource lookup
|
// The resource is only removed from the internal cache to prevent it from used in the next resource lookup
|
||||||
extern "C" void ResourceMgr_UnloadOriginalWhenAltExists(const char* resName) {
|
extern "C" void ResourceMgr_UnloadOriginalWhenAltExists(const char* resName) {
|
||||||
if (CVarGetInteger(CVAR_ALT_ASSETS, 0) && ResourceMgr_FileAltExists((char*) resName)) {
|
if (ResourceMgr_IsAltAssetsEnabled() && ResourceMgr_FileAltExists((char*)resName)) {
|
||||||
ResourceMgr_UnloadResource((char*) resName);
|
ResourceMgr_UnloadResource((char*) resName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1964,7 +1965,7 @@ extern "C" SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path, Skel
|
|||||||
pathStr = pathStr.substr(sOtr.length());
|
pathStr = pathStr.substr(sOtr.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isAlt = CVarGetInteger(CVAR_ALT_ASSETS, 0);
|
bool isAlt = ResourceMgr_IsAltAssetsEnabled();
|
||||||
|
|
||||||
if (isAlt) {
|
if (isAlt) {
|
||||||
pathStr = Ship::IResource::gAltAssetPrefix + pathStr;
|
pathStr = Ship::IResource::gAltAssetPrefix + pathStr;
|
||||||
|
@ -137,6 +137,7 @@ void Ctx_ReadSaveFile(uintptr_t addr, void* dramAddr, size_t size);
|
|||||||
void Ctx_WriteSaveFile(uintptr_t addr, void* dramAddr, size_t size);
|
void Ctx_WriteSaveFile(uintptr_t addr, void* dramAddr, size_t size);
|
||||||
|
|
||||||
uint64_t GetPerfCounter();
|
uint64_t GetPerfCounter();
|
||||||
|
bool ResourceMgr_IsAltAssetsEnabled();
|
||||||
struct SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path, SkelAnime* skelAnime);
|
struct SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path, SkelAnime* skelAnime);
|
||||||
void ResourceMgr_UnregisterSkeleton(SkelAnime* skelAnime);
|
void ResourceMgr_UnregisterSkeleton(SkelAnime* skelAnime);
|
||||||
void ResourceMgr_ClearSkeletons();
|
void ResourceMgr_ClearSkeletons();
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
#include "Enhancements/resolution-editor/ResolutionEditor.h"
|
#include "Enhancements/resolution-editor/ResolutionEditor.h"
|
||||||
#include "Enhancements/debugger/MessageViewer.h"
|
#include "Enhancements/debugger/MessageViewer.h"
|
||||||
|
|
||||||
bool ToggleAltAssetsAtEndOfFrame = false;
|
|
||||||
bool isBetaQuestEnabled = false;
|
bool isBetaQuestEnabled = false;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
#include "Enhancements/randomizer/randomizer_settings_window.h"
|
#include "Enhancements/randomizer/randomizer_settings_window.h"
|
||||||
#include "Enhancements/resolution-editor/ResolutionEditor.h"
|
#include "Enhancements/resolution-editor/ResolutionEditor.h"
|
||||||
|
|
||||||
extern bool ToggleAltAssetsAtEndOfFrame;
|
|
||||||
extern bool isBetaQuestEnabled;
|
extern bool isBetaQuestEnabled;
|
||||||
|
|
||||||
extern "C" PlayState* gPlayState;
|
extern "C" PlayState* gPlayState;
|
||||||
@ -319,7 +318,7 @@ void DrawSettingsMenu() {
|
|||||||
{ // FPS Slider
|
{ // FPS Slider
|
||||||
const int minFps = 20;
|
const int minFps = 20;
|
||||||
static int maxFps;
|
static int maxFps;
|
||||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::DX11) {
|
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||||
maxFps = 360;
|
maxFps = 360;
|
||||||
} else {
|
} else {
|
||||||
maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
|
maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
|
||||||
@ -387,12 +386,12 @@ void DrawSettingsMenu() {
|
|||||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesOnNextTick();
|
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesOnNextTick();
|
||||||
#else
|
#else
|
||||||
bool matchingRefreshRate =
|
bool matchingRefreshRate =
|
||||||
CVarGetInteger(CVAR_SETTING("MatchRefreshRate"), 0) && Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != Ship::WindowBackend::DX11;
|
CVarGetInteger(CVAR_SETTING("MatchRefreshRate"), 0) && Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != Ship::WindowBackend::FAST3D_DXGI_DX11;
|
||||||
UIWidgets::PaddedEnhancementSliderInt(
|
UIWidgets::PaddedEnhancementSliderInt(
|
||||||
(currentFps == 20) ? "Frame Rate: Original (20 fps)" : "Frame Rate: %d fps",
|
(currentFps == 20) ? "Frame Rate: Original (20 fps)" : "Frame Rate: %d fps",
|
||||||
"##FPSInterpolation", CVAR_SETTING("InterpolationFPS"), minFps, maxFps, "", 20, true, true, false, matchingRefreshRate);
|
"##FPSInterpolation", CVAR_SETTING("InterpolationFPS"), minFps, maxFps, "", 20, true, true, false, matchingRefreshRate);
|
||||||
#endif
|
#endif
|
||||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::DX11) {
|
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||||
UIWidgets::Tooltip(
|
UIWidgets::Tooltip(
|
||||||
"Uses Matrix Interpolation to create extra frames, resulting in smoother graphics.\n"
|
"Uses Matrix Interpolation to create extra frames, resulting in smoother graphics.\n"
|
||||||
"This is purely visual and does not impact game logic, execution of glitches etc.\n"
|
"This is purely visual and does not impact game logic, execution of glitches etc.\n"
|
||||||
@ -407,7 +406,7 @@ void DrawSettingsMenu() {
|
|||||||
}
|
}
|
||||||
} // END FPS Slider
|
} // END FPS Slider
|
||||||
|
|
||||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::DX11) {
|
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||||
UIWidgets::Spacer(0);
|
UIWidgets::Spacer(0);
|
||||||
if (ImGui::Button("Match Frame Rate to Refresh Rate")) {
|
if (ImGui::Button("Match Frame Rate to Refresh Rate")) {
|
||||||
int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
|
int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
|
||||||
@ -421,7 +420,7 @@ void DrawSettingsMenu() {
|
|||||||
}
|
}
|
||||||
UIWidgets::Tooltip("Matches interpolation value to the game window's current refresh rate.");
|
UIWidgets::Tooltip("Matches interpolation value to the game window's current refresh rate.");
|
||||||
|
|
||||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::DX11) {
|
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||||
UIWidgets::PaddedEnhancementSliderInt(CVarGetInteger(CVAR_SETTING("ExtraLatencyThreshold"), 80) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS",
|
UIWidgets::PaddedEnhancementSliderInt(CVarGetInteger(CVAR_SETTING("ExtraLatencyThreshold"), 80) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS",
|
||||||
"##ExtraLatencyThreshold", CVAR_SETTING("ExtraLatencyThreshold"), 0, 360, "", 80, true, true, false);
|
"##ExtraLatencyThreshold", CVAR_SETTING("ExtraLatencyThreshold"), 0, 360, "", 80, true, true, false);
|
||||||
UIWidgets::Tooltip(
|
UIWidgets::Tooltip(
|
||||||
@ -444,17 +443,16 @@ void DrawSettingsMenu() {
|
|||||||
UIWidgets::PaddedSeparator(true, true, 3.0f, 3.0f);
|
UIWidgets::PaddedSeparator(true, true, 3.0f, 3.0f);
|
||||||
|
|
||||||
static std::unordered_map<Ship::WindowBackend, const char*> windowBackendNames = {
|
static std::unordered_map<Ship::WindowBackend, const char*> windowBackendNames = {
|
||||||
{ Ship::WindowBackend::DX11, "DirectX" },
|
{ Ship::WindowBackend::FAST3D_DXGI_DX11, "DirectX" },
|
||||||
{ Ship::WindowBackend::SDL_OPENGL, "OpenGL"},
|
{ Ship::WindowBackend::FAST3D_SDL_OPENGL, "OpenGL"},
|
||||||
{ Ship::WindowBackend::SDL_METAL, "Metal" },
|
{ Ship::WindowBackend::FAST3D_SDL_METAL, "Metal" }
|
||||||
{ Ship::WindowBackend::GX2, "GX2"}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ImGui::Text("Renderer API (Needs reload)");
|
ImGui::Text("Renderer API (Needs reload)");
|
||||||
Ship::WindowBackend runningWindowBackend = Ship::Context::GetInstance()->GetWindow()->GetWindowBackend();
|
Ship::WindowBackend runningWindowBackend = Ship::Context::GetInstance()->GetWindow()->GetWindowBackend();
|
||||||
Ship::WindowBackend configWindowBackend;
|
Ship::WindowBackend configWindowBackend;
|
||||||
int configWindowBackendId = Ship::Context::GetInstance()->GetConfig()->GetInt("Window.Backend.Id", -1);
|
int configWindowBackendId = Ship::Context::GetInstance()->GetConfig()->GetInt("Window.Backend.Id", -1);
|
||||||
if (configWindowBackendId != -1 && configWindowBackendId < static_cast<int>(Ship::WindowBackend::BACKEND_COUNT)) {
|
if (Ship::Context::GetInstance()->GetWindow()->IsAvailableWindowBackend(configWindowBackendId)) {
|
||||||
configWindowBackend = static_cast<Ship::WindowBackend>(configWindowBackendId);
|
configWindowBackend = static_cast<Ship::WindowBackend>(configWindowBackendId);
|
||||||
} else {
|
} else {
|
||||||
configWindowBackend = runningWindowBackend;
|
configWindowBackend = runningWindowBackend;
|
||||||
@ -1086,12 +1084,7 @@ void DrawEnhancementsMenu() {
|
|||||||
if (ImGui::BeginMenu("Graphics"))
|
if (ImGui::BeginMenu("Graphics"))
|
||||||
{
|
{
|
||||||
if (ImGui::BeginMenu("Mods")) {
|
if (ImGui::BeginMenu("Mods")) {
|
||||||
if (UIWidgets::PaddedEnhancementCheckbox("Use Alternate Assets", CVAR_ALT_ASSETS, false, false)) {
|
UIWidgets::PaddedEnhancementCheckbox("Use Alternate Assets", CVAR_ENHANCEMENT("AltAssets"), false, false);
|
||||||
// The checkbox will flip the alt asset CVar, but we instead want it to change at the end of the game frame
|
|
||||||
// We toggle it back while setting the flag to update the CVar later
|
|
||||||
CVarSetInteger(CVAR_ALT_ASSETS, !CVarGetInteger(CVAR_ALT_ASSETS, 0));
|
|
||||||
ToggleAltAssetsAtEndOfFrame = true;
|
|
||||||
}
|
|
||||||
UIWidgets::Tooltip("Toggle between standard assets and alternate assets. Usually mods will indicate if this setting has to be used or not.");
|
UIWidgets::Tooltip("Toggle between standard assets and alternate assets. Usually mods will indicate if this setting has to be used or not.");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Disable Bomb Billboarding", CVAR_ENHANCEMENT("DisableBombBillboarding"), true, false);
|
UIWidgets::PaddedEnhancementCheckbox("Disable Bomb Billboarding", CVAR_ENHANCEMENT("DisableBombBillboarding"), true, false);
|
||||||
UIWidgets::Tooltip("Disables bombs always rotating to face the camera. To be used in conjunction with mods that want to replace bombs with 3D objects.");
|
UIWidgets::Tooltip("Disables bombs always rotating to face the camera. To be used in conjunction with mods that want to replace bombs with 3D objects.");
|
||||||
|
@ -65,12 +65,11 @@ void SkeletonPatcher::ClearSkeletons()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SkeletonPatcher::UpdateSkeletons() {
|
void SkeletonPatcher::UpdateSkeletons() {
|
||||||
bool isHD = CVarGetInteger(CVAR_ALT_ASSETS, 0);
|
auto resourceMgr = Ship::Context::GetInstance()->GetResourceManager();
|
||||||
|
bool isHD = resourceMgr->IsAltAssetsEnabled();
|
||||||
for (auto skel : skeletons) {
|
for (auto skel : skeletons) {
|
||||||
Skeleton* newSkel =
|
Skeleton* newSkel =
|
||||||
(Skeleton*)Ship::Context::GetInstance()->GetResourceManager()
|
(Skeleton*)resourceMgr->LoadResource((isHD ? Ship::IResource::gAltAssetPrefix : "") + skel.vanillaSkeletonPath, true).get();
|
||||||
->LoadResource((isHD ? Ship::IResource::gAltAssetPrefix : "") + skel.vanillaSkeletonPath, true)
|
|
||||||
.get();
|
|
||||||
|
|
||||||
if (newSkel != nullptr) {
|
if (newSkel != nullptr) {
|
||||||
skel.skelAnime->skeleton = newSkel->skeletonData.skeletonHeader.segment;
|
skel.skelAnime->skeleton = newSkel->skeletonData.skeletonHeader.segment;
|
||||||
|
@ -467,7 +467,7 @@ void GameState_Destroy(GameState* gameState) {
|
|||||||
// Performing clear skeletons before unload resources fixes an actor heap corruption crash due to the skeleton patching system.
|
// Performing clear skeletons before unload resources fixes an actor heap corruption crash due to the skeleton patching system.
|
||||||
ResourceMgr_ClearSkeletons();
|
ResourceMgr_ClearSkeletons();
|
||||||
|
|
||||||
if (CVarGetInteger(CVAR_ALT_ASSETS, 0)) {
|
if (ResourceMgr_IsAltAssetsEnabled()) {
|
||||||
ResourceUnloadDirectory("alt/*");
|
ResourceUnloadDirectory("alt/*");
|
||||||
gfx_texture_cache_clear();
|
gfx_texture_cache_clear();
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ static const ALIGN_ASSET(2) char rGfxPrintFontDataAlt[] = drGfxPrintFontDataAlt;
|
|||||||
// https://github.com/HarbourMasters/Shipwright/issues/2762
|
// https://github.com/HarbourMasters/Shipwright/issues/2762
|
||||||
typedef enum {hardcoded, otrDefault, otrAlt} font_texture_t;
|
typedef enum {hardcoded, otrDefault, otrAlt} font_texture_t;
|
||||||
font_texture_t GfxPrint_TextureToUse() {
|
font_texture_t GfxPrint_TextureToUse() {
|
||||||
if (CVarGetInteger(CVAR_ALT_ASSETS, 0) && ResourceMgr_FileExists(rGfxPrintFontDataAlt)) {
|
if (ResourceMgr_IsAltAssetsEnabled() && ResourceMgr_FileExists(rGfxPrintFontDataAlt)) {
|
||||||
// If we have alt assets enabled, and we have alt prefixed font texture, use that
|
// If we have alt assets enabled, and we have alt prefixed font texture, use that
|
||||||
return otrAlt;
|
return otrAlt;
|
||||||
} else if (ResourceMgr_FileExists(rGfxPrintFontData)) {
|
} else if (ResourceMgr_FileExists(rGfxPrintFontData)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user