mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-26 12:21:39 +00:00
Merge branch 'main' into update-checker
This commit is contained in:
commit
805a25c26e
17 changed files with 322 additions and 89 deletions
|
|
@ -501,8 +501,7 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/op
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" ARRAY_NAME "g_gi_texture_filtering_bilinear" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" ARRAY_NAME "g_gi_texture_filtering_bilinear" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" ARRAY_NAME "g_gi_texture_filtering_bicubic" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" ARRAY_NAME "g_gi_texture_filtering_bicubic" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/hints.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/hints.dds" ARRAY_NAME "g_hints" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/hints.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/hints.dds" ARRAY_NAME "g_hints" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/invert_camera_x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/invert_camera_x.dds" ARRAY_NAME "g_invert_camera_x" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" ARRAY_NAME "g_horizontal_camera" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/invert_camera_y.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/invert_camera_y.dds" ARRAY_NAME "g_invert_camera_y" COMPRESSION_TYPE "zstd")
|
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/language.dds" ARRAY_NAME "g_language" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/language.dds" ARRAY_NAME "g_language" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/master_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/master_volume.dds" ARRAY_NAME "g_master_volume" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/master_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/master_volume.dds" ARRAY_NAME "g_master_volume" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/monitor.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/monitor.dds" ARRAY_NAME "g_monitor" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/monitor.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/monitor.dds" ARRAY_NAME "g_monitor" COMPRESSION_TYPE "zstd")
|
||||||
|
|
@ -525,6 +524,7 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/op
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" ARRAY_NAME "g_transparency_antialiasing_false" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" ARRAY_NAME "g_transparency_antialiasing_false" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" ARRAY_NAME "g_transparency_antialiasing_true" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" ARRAY_NAME "g_transparency_antialiasing_true" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_scale_mode.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_scale_mode.dds" ARRAY_NAME "g_ui_scale_mode" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_scale_mode.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_scale_mode.dds" ARRAY_NAME "g_ui_scale_mode" COMPRESSION_TYPE "zstd")
|
||||||
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vertical_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vertical_camera.dds" ARRAY_NAME "g_vertical_camera" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/voice_language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/voice_language.dds" ARRAY_NAME "g_voice_language" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/voice_language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/voice_language.dds" ARRAY_NAME "g_voice_language" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration.dds" ARRAY_NAME "g_vibration" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration.dds" ARRAY_NAME "g_vibration" COMPRESSION_TYPE "zstd")
|
||||||
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync.dds" ARRAY_NAME "g_vsync" COMPRESSION_TYPE "zstd")
|
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync.dds" ARRAY_NAME "g_vsync" COMPRESSION_TYPE "zstd")
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@
|
||||||
#include "SWA/Camera/Camera.h"
|
#include "SWA/Camera/Camera.h"
|
||||||
#include "SWA/Camera/CameraController.h"
|
#include "SWA/Camera/CameraController.h"
|
||||||
#include "SWA/CharacterUtility/CharacterProxy.h"
|
#include "SWA/CharacterUtility/CharacterProxy.h"
|
||||||
|
#include "SWA/Globals.h"
|
||||||
#include "SWA/HUD/GeneralWindow/GeneralWindow.h"
|
#include "SWA/HUD/GeneralWindow/GeneralWindow.h"
|
||||||
#include "SWA/HUD/Loading/Loading.h"
|
#include "SWA/HUD/Loading/Loading.h"
|
||||||
#include "SWA/HUD/Pause/HudPause.h"
|
#include "SWA/HUD/Pause/HudPause.h"
|
||||||
|
|
|
||||||
69
UnleashedRecomp/api/SWA/Globals.h
Normal file
69
UnleashedRecomp/api/SWA/Globals.h
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <SWA.inl>
|
||||||
|
|
||||||
|
namespace SWA
|
||||||
|
{
|
||||||
|
struct SGlobals
|
||||||
|
{
|
||||||
|
// ms_DrawLightFieldSamplingPoint: サンプリング点をデバッグ表示
|
||||||
|
static inline bool* ms_DrawLightFieldSamplingPoint;
|
||||||
|
|
||||||
|
// ms_IgnoreLightFieldData: データを無視する
|
||||||
|
static inline bool* ms_IgnoreLightFieldData;
|
||||||
|
|
||||||
|
// IsCollisionRender
|
||||||
|
static inline bool* ms_IsCollisionRender;
|
||||||
|
|
||||||
|
// N/A
|
||||||
|
static inline bool* ms_IsLoading;
|
||||||
|
|
||||||
|
// IsObjectCollisionRender
|
||||||
|
static inline bool* ms_IsObjectCollisionRender;
|
||||||
|
|
||||||
|
// ms_IsRenderDebugDraw: デバッグ描画
|
||||||
|
static inline bool* ms_IsRenderDebugDraw;
|
||||||
|
|
||||||
|
// ms_IsRenderDebugDrawText: デバッグ文字描画
|
||||||
|
static inline bool* ms_IsRenderDebugDrawText;
|
||||||
|
|
||||||
|
// ms_IsRenderDebugPositionDraw: デバッグ位置描画
|
||||||
|
static inline bool* ms_IsRenderDebugPositionDraw;
|
||||||
|
|
||||||
|
// ms_IsRenderGameMainHud: ゲームメインHUD 描画
|
||||||
|
static inline bool* ms_IsRenderGameMainHud;
|
||||||
|
|
||||||
|
// ms_IsRenderHud: 全 HUD 描画
|
||||||
|
static inline bool* ms_IsRenderHud;
|
||||||
|
|
||||||
|
// ms_IsRenderHudPause: ポーズメニュー 描画
|
||||||
|
static inline bool* ms_IsRenderHudPause;
|
||||||
|
|
||||||
|
// IsTriggerRender
|
||||||
|
static inline bool* ms_IsTriggerRender;
|
||||||
|
|
||||||
|
// ms_LightFieldDebug: 値をデバッグ表示
|
||||||
|
static inline bool* ms_LightFieldDebug;
|
||||||
|
|
||||||
|
// VisualizeLoadedLevel: ミップレベルを視覚化 赤=0, 緑=1, 青=2, 黄=未ロード
|
||||||
|
static inline bool* ms_VisualizeLoadedLevel;
|
||||||
|
|
||||||
|
static void Init()
|
||||||
|
{
|
||||||
|
ms_DrawLightFieldSamplingPoint = (bool*)MmGetHostAddress(0x83367BCE);
|
||||||
|
ms_IgnoreLightFieldData = (bool*)MmGetHostAddress(0x83367BCF);
|
||||||
|
ms_IsCollisionRender = (bool*)MmGetHostAddress(0x833678A6);
|
||||||
|
ms_IsLoading = (bool*)MmGetHostAddress(0x83367A4C);
|
||||||
|
ms_IsObjectCollisionRender = (bool*)MmGetHostAddress(0x83367905);
|
||||||
|
ms_IsRenderDebugDraw = (bool*)MmGetHostAddress(0x8328BB23);
|
||||||
|
ms_IsRenderDebugDrawText = (bool*)MmGetHostAddress(0x8328BB25);
|
||||||
|
ms_IsRenderDebugPositionDraw = (bool*)MmGetHostAddress(0x8328BB24);
|
||||||
|
ms_IsRenderGameMainHud = (bool*)MmGetHostAddress(0x8328BB27);
|
||||||
|
ms_IsRenderHud = (bool*)MmGetHostAddress(0x8328BB26);
|
||||||
|
ms_IsRenderHudPause = (bool*)MmGetHostAddress(0x8328BB28);
|
||||||
|
ms_IsTriggerRender = (bool*)MmGetHostAddress(0x83367904);
|
||||||
|
ms_LightFieldDebug = (bool*)MmGetHostAddress(0x83367BCD);
|
||||||
|
ms_VisualizeLoadedLevel = (bool*)MmGetHostAddress(0x833678C1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <app.h>
|
#include "app.h"
|
||||||
|
#include <api/SWA.h>
|
||||||
#include <gpu/video.h>
|
#include <gpu/video.h>
|
||||||
#include <install/installer.h>
|
#include <install/installer.h>
|
||||||
#include <kernel/function.h>
|
#include <kernel/function.h>
|
||||||
|
|
@ -34,6 +35,8 @@ PPC_FUNC(sub_824EB490)
|
||||||
App::s_isInit = true;
|
App::s_isInit = true;
|
||||||
App::s_isMissingDLC = !Installer::checkAllDLC(GetGamePath());
|
App::s_isMissingDLC = !Installer::checkAllDLC(GetGamePath());
|
||||||
App::s_language = Config::Language;
|
App::s_language = Config::Language;
|
||||||
|
|
||||||
|
SWA::SGlobals::Init();
|
||||||
Registry::Save();
|
Registry::Save();
|
||||||
|
|
||||||
__imp__sub_824EB490(ctx, base);
|
__imp__sub_824EB490(ctx, base);
|
||||||
|
|
|
||||||
|
|
@ -3435,7 +3435,7 @@ static RenderPipeline* CreateGraphicsPipelineInRenderThread(PipelineState pipeli
|
||||||
pipeline = CreateGraphicsPipeline(pipelineState);
|
pipeline = CreateGraphicsPipeline(pipelineState);
|
||||||
|
|
||||||
#ifdef ASYNC_PSO_DEBUG
|
#ifdef ASYNC_PSO_DEBUG
|
||||||
bool loading = *reinterpret_cast<bool*>(g_memory.Translate(0x83367A4C));
|
bool loading = *SWA::SGlobals::ms_IsLoading;
|
||||||
|
|
||||||
if (loading)
|
if (loading)
|
||||||
++g_pipelinesCreatedAsynchronously;
|
++g_pipelinesCreatedAsynchronously;
|
||||||
|
|
@ -5407,7 +5407,7 @@ static void PipelineCompilerThread()
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int newThreadPriority = threadPriority;
|
int newThreadPriority = threadPriority;
|
||||||
|
|
||||||
bool loading = *reinterpret_cast<bool*>(g_memory.Translate(0x83367A4C));
|
bool loading = *SWA::SGlobals::ms_IsLoading;
|
||||||
if (loading)
|
if (loading)
|
||||||
newThreadPriority = THREAD_PRIORITY_HIGHEST;
|
newThreadPriority = THREAD_PRIORITY_HIGHEST;
|
||||||
else
|
else
|
||||||
|
|
@ -5468,7 +5468,7 @@ static void EnqueueGraphicsPipelineCompilation(
|
||||||
|
|
||||||
if (shouldCompile)
|
if (shouldCompile)
|
||||||
{
|
{
|
||||||
bool loading = *reinterpret_cast<bool*>(g_memory.Translate(0x83367A4C));
|
bool loading = *SWA::SGlobals::ms_IsLoading;
|
||||||
if (!loading && isPrecompiledPipeline)
|
if (!loading && isPrecompiledPipeline)
|
||||||
{
|
{
|
||||||
// We can just compile here during the logos.
|
// We can just compile here during the logos.
|
||||||
|
|
@ -5805,7 +5805,7 @@ static void CompileMeshPipeline(const Mesh& mesh, CompilationArgs& args)
|
||||||
|
|
||||||
// We cannot rely on this being accurate during loading as SceneEffect.prm.xml gets loaded a bit later.
|
// We cannot rely on this being accurate during loading as SceneEffect.prm.xml gets loaded a bit later.
|
||||||
bool planarReflectionEnabled = *reinterpret_cast<bool*>(g_memory.Translate(0x832FA0D8));
|
bool planarReflectionEnabled = *reinterpret_cast<bool*>(g_memory.Translate(0x832FA0D8));
|
||||||
bool loading = *reinterpret_cast<bool*>(g_memory.Translate(0x83367A4C));
|
bool loading = *SWA::SGlobals::ms_IsLoading;
|
||||||
bool compileNoMsaaPipeline = pipelineState.sampleCount != 1 && (loading || planarReflectionEnabled);
|
bool compileNoMsaaPipeline = pipelineState.sampleCount != 1 && (loading || planarReflectionEnabled);
|
||||||
|
|
||||||
auto noMsaaPipeline = pipelineState;
|
auto noMsaaPipeline = pipelineState;
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,52 @@ CONFIG_DEFINE_ENUM_LOCALE(ELanguage)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CONFIG_DEFINE_ENUM_LOCALE(EVoiceLanguage)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELanguage::English,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "ENGLISH", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "JAPANESE", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELanguage::Japanese,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "英語", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "日本語", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELanguage::German,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "ENGLISCH", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "JAPANISCH", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELanguage::French,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "ANGLAIS", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "JAPONAIS", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELanguage::Spanish,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "INGLÉS", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "JAPONÉS", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELanguage::Italian,
|
||||||
|
{
|
||||||
|
{ EVoiceLanguage::English, { "INGLESE", "" } },
|
||||||
|
{ EVoiceLanguage::Japanese, { "GIAPPONESE", "" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALE(Hints)
|
CONFIG_DEFINE_LOCALE(Hints)
|
||||||
{
|
{
|
||||||
{ ELanguage::English, { "Hints", "Show hint rings in stages." } }
|
{ ELanguage::English, { "Hints", "Show hint rings in stages." } }
|
||||||
|
|
@ -97,14 +143,25 @@ CONFIG_DEFINE_ENUM_LOCALE(EControllerIcons)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALE(InvertCameraX)
|
CONFIG_DEFINE_LOCALE(HorizontalCamera)
|
||||||
{
|
{
|
||||||
{ ELanguage::English, { "Invert Camera X", "Toggle between inverted left and right camera movement." } }
|
{ ELanguage::English, { "Horizontal Camera", "Change how the camera moves left and right." } }
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALE(InvertCameraY)
|
CONFIG_DEFINE_LOCALE(VerticalCamera)
|
||||||
{
|
{
|
||||||
{ ELanguage::English, { "Invert Camera Y", "Toggle between inverted up and down camera movement." } }
|
{ ELanguage::English, { "Vertical Camera", "Change how the camera moves up and down." } }
|
||||||
|
};
|
||||||
|
|
||||||
|
CONFIG_DEFINE_ENUM_LOCALE(ECameraRotationMode)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELanguage::English,
|
||||||
|
{
|
||||||
|
{ ECameraRotationMode::Normal, { "NORMAL", "" } },
|
||||||
|
{ ECameraRotationMode::Reverse, { "REVERSE", "" } }
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALE(Vibration)
|
CONFIG_DEFINE_LOCALE(Vibration)
|
||||||
|
|
@ -158,17 +215,6 @@ CONFIG_DEFINE_LOCALE(VoiceLanguage)
|
||||||
{ ELanguage::English, { "Voice Language", "Change the language used for character voices." } }
|
{ ELanguage::English, { "Voice Language", "Change the language used for character voices." } }
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_ENUM_LOCALE(EVoiceLanguage)
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELanguage::English,
|
|
||||||
{
|
|
||||||
{ EVoiceLanguage::English, { "ENGLISH", "" } },
|
|
||||||
{ EVoiceLanguage::Japanese, { "日本語", "" } }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALE(Subtitles)
|
CONFIG_DEFINE_LOCALE(Subtitles)
|
||||||
{
|
{
|
||||||
{ ELanguage::English, { "Subtitles", "Show subtitles during dialogue." } }
|
{ ELanguage::English, { "Subtitles", "Show subtitles during dialogue." } }
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_lo
|
||||||
{
|
{
|
||||||
"Installer_Page_SelectGameAndUpdate",
|
"Installer_Page_SelectGameAndUpdate",
|
||||||
{
|
{
|
||||||
{ ELanguage::English, "Add the sources for your copy of the game and its title update." }
|
{ ELanguage::English, "Add the sources for the game and its title update." }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -161,9 +161,7 @@ PPC_FUNC(sub_824B0930)
|
||||||
{
|
{
|
||||||
g_achievementMenuIntroTime = 0;
|
g_achievementMenuIntroTime = 0;
|
||||||
|
|
||||||
const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26);
|
if (*SWA::SGlobals::ms_IsRenderHud && pHudPause->m_IsShown && !pHudPause->m_Submenu && pHudPause->m_Transition == SWA::eTransitionType_Undefined)
|
||||||
|
|
||||||
if (*ms_IsRenderHud && pHudPause->m_IsShown && !pHudPause->m_Submenu && pHudPause->m_Transition == SWA::eTransitionType_Undefined)
|
|
||||||
{
|
{
|
||||||
ButtonGuide::Open(Button(Localise("Achievements_Name"), EButtonIcon::Back, EButtonAlignment::Left, EFontQuality::Low));
|
ButtonGuide::Open(Button(Localise("Achievements_Name"), EButtonIcon::Back, EButtonAlignment::Left, EFontQuality::Low));
|
||||||
g_isClosed = false;
|
g_isClosed = false;
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,8 @@ PPC_FUNC(sub_824697B0)
|
||||||
{
|
{
|
||||||
auto pCamera = (SWA::CCamera*)g_memory.Translate(ctx.r3.u32);
|
auto pCamera = (SWA::CCamera*)g_memory.Translate(ctx.r3.u32);
|
||||||
|
|
||||||
pCamera->m_InvertX = Config::InvertCameraX;
|
pCamera->m_InvertX = Config::HorizontalCamera == ECameraRotationMode::Reverse;
|
||||||
pCamera->m_InvertY = Config::InvertCameraY;
|
pCamera->m_InvertY = Config::VerticalCamera == ECameraRotationMode::Reverse;
|
||||||
|
|
||||||
__imp__sub_824697B0(ctx, base);
|
__imp__sub_824697B0(ctx, base);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ bool LoadingUpdateMidAsmHook(PPCRegister& r31)
|
||||||
g_ppcContext->f1.f64 = deltaTime;
|
g_ppcContext->f1.f64 = deltaTime;
|
||||||
g_memory.FindFunction(update)(*g_ppcContext, base);
|
g_memory.FindFunction(update)(*g_ppcContext, base);
|
||||||
|
|
||||||
bool loading = PPC_LOAD_U8(0x83367A4C);
|
bool loading = *SWA::SGlobals::ms_IsLoading;
|
||||||
if (loading)
|
if (loading)
|
||||||
{
|
{
|
||||||
now = std::chrono::steady_clock::now();
|
now = std::chrono::steady_clock::now();
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,9 @@ public:
|
||||||
if (event->key.keysym.sym != SDLK_F8 || m_isF8KeyDown)
|
if (event->key.keysym.sym != SDLK_F8 || m_isF8KeyDown)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// アプリケーション設定 / 開発用 / デバッグ / HUD / 全 HUD 描画
|
*SWA::SGlobals::ms_IsRenderHud = !*SWA::SGlobals::ms_IsRenderHud;
|
||||||
const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26);
|
|
||||||
|
|
||||||
*ms_IsRenderHud = !*ms_IsRenderHud;
|
LOGFN("HUD {}", *SWA::SGlobals::ms_IsRenderHud ? "ON" : "OFF");
|
||||||
|
|
||||||
LOGFN("HUD {}", *ms_IsRenderHud ? "ON" : "OFF");
|
|
||||||
|
|
||||||
m_isF8KeyDown = true;
|
m_isF8KeyDown = true;
|
||||||
|
|
||||||
|
|
@ -38,4 +35,5 @@ public:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} g_frontendlistener;
|
}
|
||||||
|
g_frontendListener;
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ static constexpr double MILES_ELECTRIC_FOREGROUND_FADE_DURATION = 6.0;
|
||||||
static constexpr double MILES_ELECTRIC_FOREGROUND_FADE_IN_TIME = MILES_ELECTRIC_SCALE_DURATION - 2.0;
|
static constexpr double MILES_ELECTRIC_FOREGROUND_FADE_IN_TIME = MILES_ELECTRIC_SCALE_DURATION - 2.0;
|
||||||
static constexpr double MILES_ELECTRIC_FOREGROUND_FADE_OUT_TIME = MILES_ELECTRIC_FOREGROUND_FADE_IN_TIME + MILES_ELECTRIC_FOREGROUND_FADE_DURATION;
|
static constexpr double MILES_ELECTRIC_FOREGROUND_FADE_OUT_TIME = MILES_ELECTRIC_FOREGROUND_FADE_IN_TIME + MILES_ELECTRIC_FOREGROUND_FADE_DURATION;
|
||||||
|
|
||||||
|
static constexpr double VALUE_SLIDER_INTRO_DURATION = 20.0;
|
||||||
|
|
||||||
static constexpr double CONTAINER_LINE_ANIMATION_DURATION = 8.0;
|
static constexpr double CONTAINER_LINE_ANIMATION_DURATION = 8.0;
|
||||||
|
|
||||||
static constexpr double CONTAINER_OUTER_TIME = CONTAINER_LINE_ANIMATION_DURATION + 8.0; // 8 frame delay
|
static constexpr double CONTAINER_OUTER_TIME = CONTAINER_LINE_ANIMATION_DURATION + 8.0; // 8 frame delay
|
||||||
|
|
@ -70,6 +72,7 @@ static bool g_rightWasHeld;
|
||||||
static bool g_downWasHeld;
|
static bool g_downWasHeld;
|
||||||
|
|
||||||
static bool g_lockedOnOption;
|
static bool g_lockedOnOption;
|
||||||
|
static double g_lockedOnTime;
|
||||||
static double g_lastTappedTime;
|
static double g_lastTappedTime;
|
||||||
static double g_lastIncrementTime;
|
static double g_lastIncrementTime;
|
||||||
static double g_lastIncrementSoundTime;
|
static double g_lastIncrementSoundTime;
|
||||||
|
|
@ -589,6 +592,132 @@ static bool DrawCategories()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void DrawSelectionArrows(ImVec2 min, ImVec2 max, bool isLeftTapped, bool isRightTapped, bool isSlider)
|
||||||
|
{
|
||||||
|
static constexpr double sizeMotionDuration = 16.0;
|
||||||
|
|
||||||
|
static bool isLeftArrowMotion = false;
|
||||||
|
static bool isRightArrowMotion = false;
|
||||||
|
|
||||||
|
auto drawList = ImGui::GetForegroundDrawList();
|
||||||
|
auto gridSize = Scale(GRID_SIZE);
|
||||||
|
auto width = gridSize * 2.5f;
|
||||||
|
auto padding = gridSize;
|
||||||
|
|
||||||
|
auto bgMotion = (isLeftArrowMotion || isRightArrowMotion)
|
||||||
|
? ComputeMotion(g_lastTappedTime, 8.0, sizeMotionDuration)
|
||||||
|
: 0;
|
||||||
|
|
||||||
|
if (isLeftTapped)
|
||||||
|
{
|
||||||
|
isLeftArrowMotion = true;
|
||||||
|
isRightArrowMotion = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isRightTapped)
|
||||||
|
{
|
||||||
|
isLeftArrowMotion = false;
|
||||||
|
isRightArrowMotion = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bgMotion >= 1.0 || isSlider)
|
||||||
|
{
|
||||||
|
isLeftArrowMotion = false;
|
||||||
|
isRightArrowMotion = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto getBgColour = [&](bool isAnim) -> ImU32
|
||||||
|
{
|
||||||
|
return IM_COL32(0, 97, 0, Lerp(96, 255, isAnim ? bgMotion : 1));
|
||||||
|
};
|
||||||
|
|
||||||
|
auto bgLeftColour = getBgColour(isLeftArrowMotion);
|
||||||
|
auto bgRightColour = getBgColour(isRightArrowMotion);
|
||||||
|
|
||||||
|
auto invertMotion = isSlider ? ComputeMotion(g_lockedOnTime, 0, VALUE_SLIDER_INTRO_DURATION) : 0;
|
||||||
|
auto invertMotionX = invertMotion > 0.5 ? 1.0 : 0.0; // Arrow side point invert animation
|
||||||
|
|
||||||
|
auto xAdd = Hermite(0, Scale(10), sin(invertMotion * M_PI)); // Arrow jump animation
|
||||||
|
auto y = (min.y + max.y) / 2.0f;
|
||||||
|
|
||||||
|
// Left triangle vertices
|
||||||
|
auto leftX = Lerp(min.x - padding, min.x - padding - width, invertMotionX) - xAdd;
|
||||||
|
auto leftV1Y = Hermite(min.y, max.y, invertMotion);
|
||||||
|
auto leftV2Y = Hermite(max.y, min.y, invertMotion);
|
||||||
|
auto leftV3X = Hermite(min.x - padding - width, min.x - padding, invertMotionX) - xAdd;
|
||||||
|
|
||||||
|
// Right triangle vertices
|
||||||
|
auto rightX = Lerp(max.x + padding, max.x + padding + width, invertMotionX) + xAdd;
|
||||||
|
auto rightV1Y = Hermite(max.y, min.y, invertMotion);
|
||||||
|
auto rightV2Y = Hermite(min.y, max.y, invertMotion);
|
||||||
|
auto rightV3X = Hermite(max.x + padding + width, max.x + padding, invertMotionX) + xAdd;
|
||||||
|
|
||||||
|
auto drawLeftArrow = [&](ImU32 col)
|
||||||
|
{
|
||||||
|
drawList->AddTriangleFilled({ leftX, leftV1Y }, { leftX, leftV2Y }, { leftV3X, y }, col);
|
||||||
|
};
|
||||||
|
|
||||||
|
auto drawRightArrow = [&](ImU32 col)
|
||||||
|
{
|
||||||
|
drawList->AddTriangleFilled({ rightX, rightV1Y }, { rightX, rightV2Y }, { rightV3X, y }, col);
|
||||||
|
};
|
||||||
|
|
||||||
|
drawLeftArrow(bgLeftColour);
|
||||||
|
drawRightArrow(bgRightColour);
|
||||||
|
|
||||||
|
// Additive gradient colours
|
||||||
|
auto c0 = IM_COL32(255, 0, 255, 255);
|
||||||
|
auto c1 = IM_COL32(255, 128, 255, 255);
|
||||||
|
|
||||||
|
SetAdditive(true);
|
||||||
|
|
||||||
|
// Apply additive gradients
|
||||||
|
SetGradient({ leftX, leftV1Y }, { leftV3X, y }, c0, c1, c1, c0);
|
||||||
|
drawLeftArrow(bgLeftColour);
|
||||||
|
SetGradient({ rightX, rightV1Y }, { rightV3X, y }, c0, c1, c1, c0);
|
||||||
|
drawRightArrow(bgRightColour);
|
||||||
|
ResetGradient();
|
||||||
|
|
||||||
|
if (isSlider)
|
||||||
|
{
|
||||||
|
auto col = IM_COL32(0, 97, 0, 255 * invertMotion);
|
||||||
|
|
||||||
|
drawLeftArrow(col);
|
||||||
|
drawRightArrow(col);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto fgMotion = ComputeMotion(g_lastTappedTime, 0, sizeMotionDuration);
|
||||||
|
auto fgMotionSine = sin(fgMotion * M_PI);
|
||||||
|
auto fgScale = Lerp(0, Scale(4), fgMotionSine);
|
||||||
|
auto fgColour = IM_COL32(0, 97, 0, 255 * fgMotionSine);
|
||||||
|
|
||||||
|
if (isLeftArrowMotion)
|
||||||
|
{
|
||||||
|
drawList->AddTriangleFilled
|
||||||
|
(
|
||||||
|
{ min.x - padding, min.y - fgScale },
|
||||||
|
{ min.x - padding, max.y + fgScale },
|
||||||
|
{ min.x - padding - width - (fgScale + Scale(2)), (min.y + max.y) / 2.0f },
|
||||||
|
fgColour
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isRightArrowMotion)
|
||||||
|
{
|
||||||
|
drawList->AddTriangleFilled
|
||||||
|
(
|
||||||
|
{ max.x + padding, max.y + fgScale },
|
||||||
|
{ max.x + padding, min.y - fgScale },
|
||||||
|
{ max.x + padding + width + (fgScale + Scale(2)), (min.y + max.y) / 2.0f },
|
||||||
|
fgColour
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetAdditive(false);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* config,
|
static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* config,
|
||||||
bool isAccessible, std::string* inaccessibleReason = nullptr,
|
bool isAccessible, std::string* inaccessibleReason = nullptr,
|
||||||
|
|
@ -601,15 +730,15 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
|
|
||||||
constexpr float OPTION_NARROW_GRID_COUNT = 36.0f;
|
constexpr float OPTION_NARROW_GRID_COUNT = 36.0f;
|
||||||
constexpr float OPTION_WIDE_GRID_COUNT = 54.0f;
|
constexpr float OPTION_WIDE_GRID_COUNT = 54.0f;
|
||||||
|
constexpr bool IS_SLIDER_TYPE = std::is_same_v<T, float> || std::is_same_v<T, int32_t>;
|
||||||
|
|
||||||
|
auto isValueSlider = IS_SLIDER_TYPE && isSlider;
|
||||||
auto gridSize = Scale(GRID_SIZE);
|
auto gridSize = Scale(GRID_SIZE);
|
||||||
auto optionWidth = gridSize * floor(Lerp(OPTION_NARROW_GRID_COUNT, OPTION_WIDE_GRID_COUNT, g_aspectRatioNarrowScale));
|
auto optionWidth = gridSize * floor(Lerp(OPTION_NARROW_GRID_COUNT, OPTION_WIDE_GRID_COUNT, g_aspectRatioNarrowScale));
|
||||||
auto optionHeight = gridSize * 5.5f;
|
auto optionHeight = gridSize * 5.5f;
|
||||||
auto optionPadding = gridSize * 0.5f;
|
auto optionPadding = gridSize * 0.5f;
|
||||||
auto valueWidth = Scale(192.0f);
|
auto valueWidth = Scale(192.0f);
|
||||||
auto valueHeight = gridSize * 3.0f;
|
auto valueHeight = gridSize * 3.0f;
|
||||||
auto triangleWidth = gridSize * 2.5f;
|
|
||||||
auto trianglePadding = gridSize;
|
|
||||||
|
|
||||||
// Left side
|
// Left side
|
||||||
ImVec2 min = { clipRectMin.x, clipRectMin.y + (optionHeight + optionPadding) * rowIndex + yOffset };
|
ImVec2 min = { clipRectMin.x, clipRectMin.y + (optionHeight + optionPadding) * rowIndex + yOffset };
|
||||||
|
|
@ -623,6 +752,7 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
ImVec4 textClipRect = { min.x, min.y, max.x, max.y };
|
ImVec4 textClipRect = { min.x, min.y, max.x, max.y };
|
||||||
|
|
||||||
bool lockedOnOption = false;
|
bool lockedOnOption = false;
|
||||||
|
|
||||||
if (g_selectedRowIndex == rowIndex)
|
if (g_selectedRowIndex == rowIndex)
|
||||||
{
|
{
|
||||||
g_selectedItem = config;
|
g_selectedItem = config;
|
||||||
|
|
@ -657,6 +787,7 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
|
|
||||||
if (g_lockedOnOption)
|
if (g_lockedOnOption)
|
||||||
{
|
{
|
||||||
|
g_lockedOnTime = ImGui::GetTime();
|
||||||
g_leftWasHeld = false;
|
g_leftWasHeld = false;
|
||||||
g_rightWasHeld = false;
|
g_rightWasHeld = false;
|
||||||
|
|
||||||
|
|
@ -725,9 +856,7 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
auto textColour = IM_COL32(255, 255, 255, 255 * alpha);
|
auto textColour = IM_COL32(255, 255, 255, 255 * alpha);
|
||||||
|
|
||||||
if (Config::Language == ELanguage::Japanese)
|
if (Config::Language == ELanguage::Japanese)
|
||||||
{
|
|
||||||
textPos.y += Scale(10.0f);
|
textPos.y += Scale(10.0f);
|
||||||
}
|
|
||||||
|
|
||||||
if (g_selectedItem == config)
|
if (g_selectedItem == config)
|
||||||
{
|
{
|
||||||
|
|
@ -788,12 +917,19 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
{
|
{
|
||||||
if constexpr (std::is_same_v<T, float> || std::is_same_v<T, int32_t>)
|
if constexpr (std::is_same_v<T, float> || std::is_same_v<T, int32_t>)
|
||||||
{
|
{
|
||||||
|
if (lockedOnOption)
|
||||||
|
{
|
||||||
|
SetAdditive(true);
|
||||||
|
drawList->AddRectFilled(min, max, IM_COL32(192, 192, 0, 96 * ComputeMotion(g_lockedOnTime, 0, VALUE_SLIDER_INTRO_DURATION)));
|
||||||
|
SetAdditive(false);
|
||||||
|
}
|
||||||
|
|
||||||
// Inner container of slider
|
// Inner container of slider
|
||||||
const uint32_t innerColor0 = IM_COL32(0, 65, 0, 255 * alpha);
|
const uint32_t innerColor0 = IM_COL32(0, 65, 0, 255 * alpha);
|
||||||
const uint32_t innerColor1 = IM_COL32(0, 32, 0, 255 * alpha);
|
const uint32_t innerColor1 = IM_COL32(0, 32, 0, 255 * alpha);
|
||||||
|
|
||||||
float xPadding = Scale(6.0f);
|
float xPadding = Scale(6);
|
||||||
float yPadding = Scale(3.0f);
|
float yPadding = Scale(3);
|
||||||
|
|
||||||
drawList->AddRectFilledMultiColor
|
drawList->AddRectFilledMultiColor
|
||||||
(
|
(
|
||||||
|
|
@ -809,8 +945,8 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
const uint32_t sliderColor0 = IM_COL32(57, 241, 0, 255 * alpha);
|
const uint32_t sliderColor0 = IM_COL32(57, 241, 0, 255 * alpha);
|
||||||
const uint32_t sliderColor1 = IM_COL32(2, 106, 0, 255 * alpha);
|
const uint32_t sliderColor1 = IM_COL32(2, 106, 0, 255 * alpha);
|
||||||
|
|
||||||
xPadding += Scale(1.0f);
|
xPadding += Scale(2);
|
||||||
yPadding += Scale(1.0f);
|
yPadding += Scale(2);
|
||||||
|
|
||||||
ImVec2 sliderMin = { min.x + xPadding, min.y + yPadding };
|
ImVec2 sliderMin = { min.x + xPadding, min.y + yPadding };
|
||||||
ImVec2 sliderMax = { max.x - xPadding, max.y - yPadding };
|
ImVec2 sliderMax = { max.x - xPadding, max.y - yPadding };
|
||||||
|
|
@ -835,26 +971,6 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
// Selection triangles
|
// Selection triangles
|
||||||
if (lockedOnOption)
|
if (lockedOnOption)
|
||||||
{
|
{
|
||||||
constexpr uint32_t COLOR = IM_COL32(0, 97, 0, 255);
|
|
||||||
|
|
||||||
// Left
|
|
||||||
drawList->AddTriangleFilled
|
|
||||||
(
|
|
||||||
{ min.x - trianglePadding, min.y },
|
|
||||||
{ min.x - trianglePadding, max.y },
|
|
||||||
{ min.x - trianglePadding - triangleWidth, (min.y + max.y) / 2.0f },
|
|
||||||
COLOR
|
|
||||||
);
|
|
||||||
|
|
||||||
// Right
|
|
||||||
drawList->AddTriangleFilled
|
|
||||||
(
|
|
||||||
{ max.x + trianglePadding, max.y },
|
|
||||||
{ max.x + trianglePadding, min.y },
|
|
||||||
{ max.x + trianglePadding + triangleWidth, (min.y + max.y) / 2.0f },
|
|
||||||
COLOR
|
|
||||||
);
|
|
||||||
|
|
||||||
bool leftIsHeld = padState.IsDown(SWA::eKeyState_DpadLeft) || padState.LeftStickHorizontal < -0.5f;
|
bool leftIsHeld = padState.IsDown(SWA::eKeyState_DpadLeft) || padState.LeftStickHorizontal < -0.5f;
|
||||||
bool rightIsHeld = padState.IsDown(SWA::eKeyState_DpadRight) || padState.LeftStickHorizontal > 0.5f;
|
bool rightIsHeld = padState.IsDown(SWA::eKeyState_DpadRight) || padState.LeftStickHorizontal > 0.5f;
|
||||||
|
|
||||||
|
|
@ -872,6 +988,8 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
||||||
g_leftWasHeld = leftIsHeld;
|
g_leftWasHeld = leftIsHeld;
|
||||||
g_rightWasHeld = rightIsHeld;
|
g_rightWasHeld = rightIsHeld;
|
||||||
|
|
||||||
|
DrawSelectionArrows(min, max, leftTapped, rightTapped, isValueSlider);
|
||||||
|
|
||||||
if constexpr (std::is_enum_v<T>)
|
if constexpr (std::is_enum_v<T>)
|
||||||
{
|
{
|
||||||
auto it = config->EnumTemplateReverse.find(config->Value);
|
auto it = config->EnumTemplateReverse.find(config->Value);
|
||||||
|
|
@ -1058,8 +1176,8 @@ static void DrawConfigOptions()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: // INPUT
|
case 1: // INPUT
|
||||||
DrawConfigOption(rowCount++, yOffset, &Config::InvertCameraX, true);
|
DrawConfigOption(rowCount++, yOffset, &Config::HorizontalCamera, true);
|
||||||
DrawConfigOption(rowCount++, yOffset, &Config::InvertCameraY, true);
|
DrawConfigOption(rowCount++, yOffset, &Config::VerticalCamera, true);
|
||||||
DrawConfigOption(rowCount++, yOffset, &Config::Vibration, true);
|
DrawConfigOption(rowCount++, yOffset, &Config::Vibration, true);
|
||||||
DrawConfigOption(rowCount++, yOffset, &Config::AllowBackgroundInput, true);
|
DrawConfigOption(rowCount++, yOffset, &Config::AllowBackgroundInput, true);
|
||||||
DrawConfigOption(rowCount++, yOffset, &Config::ControllerIcons, true);
|
DrawConfigOption(rowCount++, yOffset, &Config::ControllerIcons, true);
|
||||||
|
|
@ -1312,7 +1430,7 @@ static void DrawInfoPanel(ImVec2 infoMin, ImVec2 infoMax)
|
||||||
static void SetOptionsMenuVisible(bool isVisible)
|
static void SetOptionsMenuVisible(bool isVisible)
|
||||||
{
|
{
|
||||||
OptionsMenu::s_isVisible = isVisible;
|
OptionsMenu::s_isVisible = isVisible;
|
||||||
*(bool*)g_memory.Translate(0x8328BB26) = !isVisible;
|
*SWA::SGlobals::ms_IsRenderHud = !isVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool DrawMilesElectric()
|
static bool DrawMilesElectric()
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,7 @@
|
||||||
#include <res/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds.h>
|
#include <res/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds.h>
|
#include <res/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/hints.dds.h>
|
#include <res/images/options_menu/thumbnails/hints.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/invert_camera_x.dds.h>
|
#include <res/images/options_menu/thumbnails/horizontal_camera.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/invert_camera_y.dds.h>
|
|
||||||
#include <res/images/options_menu/thumbnails/language.dds.h>
|
#include <res/images/options_menu/thumbnails/language.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/master_volume.dds.h>
|
#include <res/images/options_menu/thumbnails/master_volume.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/monitor.dds.h>
|
#include <res/images/options_menu/thumbnails/monitor.dds.h>
|
||||||
|
|
@ -41,6 +40,7 @@
|
||||||
#include <res/images/options_menu/thumbnails/transparency_antialiasing_false.dds.h>
|
#include <res/images/options_menu/thumbnails/transparency_antialiasing_false.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/transparency_antialiasing_true.dds.h>
|
#include <res/images/options_menu/thumbnails/transparency_antialiasing_true.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/ui_scale_mode.dds.h>
|
#include <res/images/options_menu/thumbnails/ui_scale_mode.dds.h>
|
||||||
|
#include <res/images/options_menu/thumbnails/vertical_camera.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/voice_language.dds.h>
|
#include <res/images/options_menu/thumbnails/voice_language.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/vibration.dds.h>
|
#include <res/images/options_menu/thumbnails/vibration.dds.h>
|
||||||
#include <res/images/options_menu/thumbnails/vsync.dds.h>
|
#include <res/images/options_menu/thumbnails/vsync.dds.h>
|
||||||
|
|
@ -74,8 +74,8 @@ void LoadThumbnails()
|
||||||
g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::Xbox] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_xbox);
|
g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::Xbox] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_xbox);
|
||||||
g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::PlayStation] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_playstation);
|
g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::PlayStation] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_playstation);
|
||||||
|
|
||||||
g_configThumbnails[&Config::InvertCameraX] = LOAD_ZSTD_TEXTURE(g_invert_camera_x);
|
g_configThumbnails[&Config::HorizontalCamera] = LOAD_ZSTD_TEXTURE(g_horizontal_camera);
|
||||||
g_configThumbnails[&Config::InvertCameraY] = LOAD_ZSTD_TEXTURE(g_invert_camera_y);
|
g_configThumbnails[&Config::VerticalCamera] = LOAD_ZSTD_TEXTURE(g_vertical_camera);
|
||||||
g_configThumbnails[&Config::Vibration] = LOAD_ZSTD_TEXTURE(g_vibration);
|
g_configThumbnails[&Config::Vibration] = LOAD_ZSTD_TEXTURE(g_vibration);
|
||||||
g_configThumbnails[&Config::AllowBackgroundInput] = LOAD_ZSTD_TEXTURE(g_allow_background_input);
|
g_configThumbnails[&Config::AllowBackgroundInput] = LOAD_ZSTD_TEXTURE(g_allow_background_input);
|
||||||
g_configThumbnails[&Config::ControllerIcons] = LOAD_ZSTD_TEXTURE(g_controller_icons);
|
g_configThumbnails[&Config::ControllerIcons] = LOAD_ZSTD_TEXTURE(g_controller_icons);
|
||||||
|
|
|
||||||
|
|
@ -18,18 +18,18 @@ CONFIG_DEFINE_ENUM_TEMPLATE(ELanguage)
|
||||||
{ "Italian", ELanguage::Italian }
|
{ "Italian", ELanguage::Italian }
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_ENUM_TEMPLATE(EUnleashGaugeBehaviour)
|
|
||||||
{
|
|
||||||
{ "Original", EUnleashGaugeBehaviour::Original },
|
|
||||||
{ "Revised", EUnleashGaugeBehaviour::Revised }
|
|
||||||
};
|
|
||||||
|
|
||||||
CONFIG_DEFINE_ENUM_TEMPLATE(ETimeOfDayTransition)
|
CONFIG_DEFINE_ENUM_TEMPLATE(ETimeOfDayTransition)
|
||||||
{
|
{
|
||||||
{ "Xbox", ETimeOfDayTransition::Xbox },
|
{ "Xbox", ETimeOfDayTransition::Xbox },
|
||||||
{ "PlayStation", ETimeOfDayTransition::PlayStation }
|
{ "PlayStation", ETimeOfDayTransition::PlayStation }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CONFIG_DEFINE_ENUM_TEMPLATE(ECameraRotationMode)
|
||||||
|
{
|
||||||
|
{ "Normal", ECameraRotationMode::Normal },
|
||||||
|
{ "Reverse", ECameraRotationMode::Reverse },
|
||||||
|
};
|
||||||
|
|
||||||
CONFIG_DEFINE_ENUM_TEMPLATE(EControllerIcons)
|
CONFIG_DEFINE_ENUM_TEMPLATE(EControllerIcons)
|
||||||
{
|
{
|
||||||
{ "Auto", EControllerIcons::Auto },
|
{ "Auto", EControllerIcons::Auto },
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,10 @@ public:
|
||||||
|
|
||||||
extern std::vector<IConfigDef*> g_configDefinitions;
|
extern std::vector<IConfigDef*> g_configDefinitions;
|
||||||
|
|
||||||
enum class EUnleashGaugeBehaviour : uint32_t
|
enum class EVoiceLanguage : uint32_t
|
||||||
{
|
{
|
||||||
Original,
|
English,
|
||||||
Revised
|
Japanese
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ETimeOfDayTransition : uint32_t
|
enum class ETimeOfDayTransition : uint32_t
|
||||||
|
|
@ -41,6 +41,12 @@ enum class ETimeOfDayTransition : uint32_t
|
||||||
PlayStation
|
PlayStation
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class ECameraRotationMode : uint32_t
|
||||||
|
{
|
||||||
|
Normal,
|
||||||
|
Reverse
|
||||||
|
};
|
||||||
|
|
||||||
enum class EControllerIcons : uint32_t
|
enum class EControllerIcons : uint32_t
|
||||||
{
|
{
|
||||||
Auto,
|
Auto,
|
||||||
|
|
@ -54,12 +60,6 @@ enum class EChannelConfiguration : uint32_t
|
||||||
Surround
|
Surround
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class EVoiceLanguage : uint32_t
|
|
||||||
{
|
|
||||||
English,
|
|
||||||
Japanese
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class EGraphicsAPI : uint32_t
|
enum class EGraphicsAPI : uint32_t
|
||||||
{
|
{
|
||||||
#ifdef UNLEASHED_RECOMP_D3D12
|
#ifdef UNLEASHED_RECOMP_D3D12
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ CONFIG_DEFINE_LOCALISED("System", bool, AchievementNotifications, true);
|
||||||
CONFIG_DEFINE_ENUM_LOCALISED("System", ETimeOfDayTransition, TimeOfDayTransition, ETimeOfDayTransition::Xbox);
|
CONFIG_DEFINE_ENUM_LOCALISED("System", ETimeOfDayTransition, TimeOfDayTransition, ETimeOfDayTransition::Xbox);
|
||||||
CONFIG_DEFINE("System", bool, ShowConsole, false);
|
CONFIG_DEFINE("System", bool, ShowConsole, false);
|
||||||
|
|
||||||
CONFIG_DEFINE_LOCALISED("Input", bool, InvertCameraX, false);
|
CONFIG_DEFINE_ENUM_LOCALISED("Input", ECameraRotationMode, HorizontalCamera, ECameraRotationMode::Normal);
|
||||||
CONFIG_DEFINE_LOCALISED("Input", bool, InvertCameraY, false);
|
CONFIG_DEFINE_ENUM_LOCALISED("Input", ECameraRotationMode, VerticalCamera, ECameraRotationMode::Normal);
|
||||||
CONFIG_DEFINE_LOCALISED("Input", bool, Vibration, true);
|
CONFIG_DEFINE_LOCALISED("Input", bool, Vibration, true);
|
||||||
CONFIG_DEFINE_LOCALISED("Input", bool, AllowBackgroundInput, false);
|
CONFIG_DEFINE_LOCALISED("Input", bool, AllowBackgroundInput, false);
|
||||||
CONFIG_DEFINE_ENUM_LOCALISED("Input", EControllerIcons, ControllerIcons, EControllerIcons::Auto);
|
CONFIG_DEFINE_ENUM_LOCALISED("Input", EControllerIcons, ControllerIcons, EControllerIcons::Auto);
|
||||||
|
|
@ -81,9 +81,9 @@ CONFIG_DEFINE_HIDDEN("Exports", bool, DisableDLCIcon, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, DisableDWMRoundedCorners, false);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, DisableDWMRoundedCorners, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, FixUnleashOutOfControlDrain, false);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, FixUnleashOutOfControlDrain, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, HomingAttackOnBoost, true);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, HomingAttackOnBoost, true);
|
||||||
|
CONFIG_DEFINE_HIDDEN("Exports", bool, HUDToggleHotkey, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, SaveScoreAtCheckpoints, false);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, SaveScoreAtCheckpoints, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, SkipIntroLogos, false);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, SkipIntroLogos, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, UseOfficialTitleOnTitleBar, false);
|
CONFIG_DEFINE_HIDDEN("Exports", bool, UseOfficialTitleOnTitleBar, false);
|
||||||
CONFIG_DEFINE_HIDDEN("Exports", bool, HUDToggleHotkey, false);
|
|
||||||
|
|
||||||
CONFIG_DEFINE("Update", time_t, LastChecked, 0);
|
CONFIG_DEFINE("Update", time_t, LastChecked, 0);
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 66a238a20da25725ea3252949fdab3a94c509e36
|
Subproject commit 2d135d175dfbedd84d78fb846bcc7de4a859f8ef
|
||||||
Loading…
Add table
Reference in a new issue