diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 80da98b..6d38589 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -155,8 +155,9 @@ set(SWA_PATCHES_CXX_SOURCES "patches/aspect_ratio_patches.cpp" "patches/audio_patches.cpp" "patches/camera_patches.cpp" - "patches/CGameModeStageTitle_patches.cpp" + "patches/CGameModeStageTitle_patches.cpp" "patches/fps_patches.cpp" + "patches/input_patches.cpp" "patches/inspire_patches.cpp" "patches/misc_patches.cpp" "patches/object_patches.cpp" @@ -197,22 +198,22 @@ set(SWA_INSTALL_CXX_SOURCES set(SWA_USER_CXX_SOURCES "user/achievement_data.cpp" "user/config.cpp" -) - -set(SWA_MOD_CXX_SOURCES - "mod/mod_loader.cpp" +) + +set(SWA_MOD_CXX_SOURCES + "mod/mod_loader.cpp" ) set(SWA_THIRDPARTY_SOURCES "${SWA_THIRDPARTY_ROOT}/imgui/backends/imgui_impl_sdl2.cpp" - "${SWA_THIRDPARTY_ROOT}/imgui/imgui.cpp" + "${SWA_THIRDPARTY_ROOT}/imgui/imgui.cpp" "${SWA_THIRDPARTY_ROOT}/imgui/imgui_demo.cpp" "${SWA_THIRDPARTY_ROOT}/imgui/imgui_draw.cpp" "${SWA_THIRDPARTY_ROOT}/imgui/imgui_tables.cpp" "${SWA_THIRDPARTY_ROOT}/imgui/imgui_widgets.cpp" - "${SWA_THIRDPARTY_ROOT}/implot/implot.cpp" - "${SWA_THIRDPARTY_ROOT}/implot/implot_demo.cpp" - "${SWA_THIRDPARTY_ROOT}/implot/implot_items.cpp" + "${SWA_THIRDPARTY_ROOT}/implot/implot.cpp" + "${SWA_THIRDPARTY_ROOT}/implot/implot_demo.cpp" + "${SWA_THIRDPARTY_ROOT}/implot/implot_items.cpp" "${SWA_THIRDPARTY_ROOT}/libmspack/libmspack/mspack/lzxd.c" "${SWA_THIRDPARTY_ROOT}/tiny-AES-c/aes.c" "${SWA_TOOLS_ROOT}/ShaderRecomp/thirdparty/smol-v/source/smolv.cpp" @@ -221,7 +222,7 @@ set(SWA_THIRDPARTY_SOURCES set(SWA_THIRDPARTY_INCLUDES "${SWA_THIRDPARTY_ROOT}/concurrentqueue" "${SWA_THIRDPARTY_ROOT}/ddspp" - "${SWA_THIRDPARTY_ROOT}/imgui" + "${SWA_THIRDPARTY_ROOT}/imgui" "${SWA_THIRDPARTY_ROOT}/implot" "${SWA_THIRDPARTY_ROOT}/libmspack/libmspack/mspack" "${SWA_THIRDPARTY_ROOT}/magic_enum/include" @@ -248,7 +249,7 @@ set(SWA_CXX_SOURCES "exports.cpp" "main.cpp" "misc_impl.cpp" - "stdafx.cpp" + "stdafx.cpp" "version.cpp" ${SWA_KERNEL_CXX_SOURCES} @@ -261,7 +262,7 @@ set(SWA_CXX_SOURCES ${SWA_PATCHES_CXX_SOURCES} ${SWA_UI_CXX_SOURCES} ${SWA_INSTALL_CXX_SOURCES} - ${SWA_USER_CXX_SOURCES} + ${SWA_USER_CXX_SOURCES} ${SWA_MOD_CXX_SOURCES} ${SWA_THIRDPARTY_SOURCES} ) @@ -275,7 +276,7 @@ else() add_executable(UnleashedRecomp ${SWA_CXX_SOURCES}) endif() -set_target_properties(UnleashedRecomp PROPERTIES OUTPUT_NAME ${TARGET_NAME}) +set_target_properties(UnleashedRecomp PROPERTIES OUTPUT_NAME ${TARGET_NAME}) if (SWA_FLATPAK) target_compile_definitions(UnleashedRecomp PRIVATE "GAME_INSTALL_DIRECTORY=\"/var/data\"") @@ -381,8 +382,8 @@ function(compile_pixel_shader FILE_PATH) endfunction() compile_vertex_shader(copy_vs) -compile_pixel_shader(csd_filter_ps) -compile_vertex_shader(csd_no_tex_vs) +compile_pixel_shader(csd_filter_ps) +compile_vertex_shader(csd_no_tex_vs) compile_vertex_shader(csd_vs) compile_pixel_shader(enhanced_motion_blur_ps) compile_pixel_shader(gaussian_blur_3x3) @@ -426,21 +427,21 @@ generate_aggregate_header( "${CMAKE_CURRENT_SOURCE_DIR}/api" "${CMAKE_CURRENT_SOURCE_DIR}/api/SWA.h" ) - -# Only show build type if not Release. -set(IS_BUILD_TYPE_IN_VER_STRING 0) -if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") - set(IS_BUILD_TYPE_IN_VER_STRING 1) -endif() - -include("version.cmake") -GenerateVersionSources( - OUTPUT_DIR "${PROJECT_SOURCE_DIR}" - VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt" - H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template" - CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template" - BUILD_TYPE ${CMAKE_BUILD_TYPE} - IS_BUILD_TYPE_IN_VER_STRING ${IS_BUILD_TYPE_IN_VER_STRING} + +# Only show build type if not Release. +set(IS_BUILD_TYPE_IN_VER_STRING 0) +if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") + set(IS_BUILD_TYPE_IN_VER_STRING 1) +endif() + +include("version.cmake") +GenerateVersionSources( + OUTPUT_DIR "${PROJECT_SOURCE_DIR}" + VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt" + H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template" + CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template" + BUILD_TYPE ${CMAKE_BUILD_TYPE} + IS_BUILD_TYPE_IN_VER_STRING ${IS_BUILD_TYPE_IN_VER_STRING} IS_GIT_REPO 1 ) @@ -470,7 +471,6 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/in BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/pulse_install.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/pulse_install.dds" ARRAY_NAME "g_pulse_install" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" ARRAY_NAME "g_achievement_notifications" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input.dds" ARRAY_NAME "g_allow_background_input" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_dpad_movement.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_dpad_movement.dds" ARRAY_NAME "g_allow_dpad_movement" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing.dds" ARRAY_NAME "g_antialiasing" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" ARRAY_NAME "g_aspect_ratio" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/battle_theme.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/battle_theme.dds" ARRAY_NAME "g_battle_theme" COMPRESSION_TYPE "zstd") diff --git a/UnleashedRecomp/locale/config_locale.cpp b/UnleashedRecomp/locale/config_locale.cpp index cf0d4db..6d95c97 100644 --- a/UnleashedRecomp/locale/config_locale.cpp +++ b/UnleashedRecomp/locale/config_locale.cpp @@ -117,11 +117,6 @@ CONFIG_DEFINE_LOCALE(AllowBackgroundInput) { ELanguage::English, { "Allow Background Input", "Allow controller input whilst the game window is unfocused." } } }; -CONFIG_DEFINE_LOCALE(AllowDPadMovement) -{ - { ELanguage::English, { "Allow D-Pad Movement", "Allow the player to also be controlled using the directional pad." } } -}; - CONFIG_DEFINE_LOCALE(MasterVolume) { { ELanguage::English, { "Master Volume", "Adjust the overall volume." } } diff --git a/UnleashedRecomp/patches/input_patches.cpp b/UnleashedRecomp/patches/input_patches.cpp new file mode 100644 index 0000000..5e6fda8 --- /dev/null +++ b/UnleashedRecomp/patches/input_patches.cpp @@ -0,0 +1,35 @@ +#include + +static void SetDPadAnalogDirectionX(PPCRegister& pPadState, PPCRegister& x, bool negate) +{ + auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32); + + if (pGuestPadState->IsDown(SWA::eKeyState_DpadLeft)) + x.f64 = negate ? 1.0f : -1.0f; + + if (pGuestPadState->IsDown(SWA::eKeyState_DpadRight)) + x.f64 = negate ? -1.0f : 1.0f; +} + +static void SetDPadAnalogDirectionY(PPCRegister& pPadState, PPCRegister& y, bool negate) +{ + auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32); + + if (pGuestPadState->IsDown(SWA::eKeyState_DpadUp)) + y.f64 = negate ? -1.0f : 1.0f; + + if (pGuestPadState->IsDown(SWA::eKeyState_DpadDown)) + y.f64 = negate ? 1.0f : -1.0f; +} + +void PostureDPadSupportMidAsmHook(PPCRegister& pPadState, PPCRegister& x, PPCRegister& y) +{ + SetDPadAnalogDirectionX(pPadState, x, false); + SetDPadAnalogDirectionY(pPadState, y, true); +} + +void PostureDPadSupportPathLocalMidAsmHook(PPCRegister& pPadState, PPCRegister& x, PPCRegister& y) +{ + SetDPadAnalogDirectionX(pPadState, x, false); + SetDPadAnalogDirectionY(pPadState, y, false); +} diff --git a/UnleashedRecomp/patches/player_patches.cpp b/UnleashedRecomp/patches/player_patches.cpp index 5dfafd5..67a46db 100644 --- a/UnleashedRecomp/patches/player_patches.cpp +++ b/UnleashedRecomp/patches/player_patches.cpp @@ -10,26 +10,6 @@ static uint32_t g_lastTrickScore; static float g_lastDarkGaiaEnergy; static bool g_isUnleashCancelled; -void PostureDPadSupportMidAsmHook(PPCRegister& r3) -{ - if (!Config::AllowDPadMovement) - return; - - auto pPadState = (SWA::SPadState*)g_memory.Translate(r3.u32); - - if (pPadState->IsDown(SWA::eKeyState_DpadUp)) - pPadState->LeftStickVertical = 1.0f; - - if (pPadState->IsDown(SWA::eKeyState_DpadDown)) - pPadState->LeftStickVertical = -1.0f; - - if (pPadState->IsDown(SWA::eKeyState_DpadLeft)) - pPadState->LeftStickHorizontal = -1.0f; - - if (pPadState->IsDown(SWA::eKeyState_DpadRight)) - pPadState->LeftStickHorizontal = 1.0f; -} - /* Hook function for when checkpoints are activated to preserve the current checkpoint score. */ PPC_FUNC_IMPL(__imp__sub_82624308); diff --git a/UnleashedRecomp/ui/options_menu.cpp b/UnleashedRecomp/ui/options_menu.cpp index d0e9b93..4d409dc 100644 --- a/UnleashedRecomp/ui/options_menu.cpp +++ b/UnleashedRecomp/ui/options_menu.cpp @@ -894,7 +894,6 @@ static void DrawConfigOptions() DrawConfigOption(rowCount++, yOffset, &Config::InvertCameraY, true); DrawConfigOption(rowCount++, yOffset, &Config::Vibration, true); DrawConfigOption(rowCount++, yOffset, &Config::AllowBackgroundInput, true); - DrawConfigOption(rowCount++, yOffset, &Config::AllowDPadMovement, true); DrawConfigOption(rowCount++, yOffset, &Config::ControllerIcons, true); break; diff --git a/UnleashedRecomp/ui/options_menu_thumbnails.cpp b/UnleashedRecomp/ui/options_menu_thumbnails.cpp index 40f238e..2d1b30d 100644 --- a/UnleashedRecomp/ui/options_menu_thumbnails.cpp +++ b/UnleashedRecomp/ui/options_menu_thumbnails.cpp @@ -4,7 +4,6 @@ // TODO (Hyper): lower the resolution of these textures once final. #include #include -#include #include #include #include @@ -78,7 +77,6 @@ void LoadThumbnails() g_configThumbnails[&Config::InvertCameraY] = LOAD_ZSTD_TEXTURE(g_invert_camera_y); g_configThumbnails[&Config::Vibration] = LOAD_ZSTD_TEXTURE(g_vibration); g_configThumbnails[&Config::AllowBackgroundInput] = LOAD_ZSTD_TEXTURE(g_allow_background_input); - g_configThumbnails[&Config::AllowDPadMovement] = LOAD_ZSTD_TEXTURE(g_allow_dpad_movement); g_configThumbnails[&Config::ControllerIcons] = LOAD_ZSTD_TEXTURE(g_controller_icons); g_configThumbnails[&Config::MasterVolume] = LOAD_ZSTD_TEXTURE(g_master_volume); g_configThumbnails[&Config::MusicVolume] = LOAD_ZSTD_TEXTURE(g_music_volume); diff --git a/UnleashedRecomp/user/config.h b/UnleashedRecomp/user/config.h index d51ee15..367b9da 100644 --- a/UnleashedRecomp/user/config.h +++ b/UnleashedRecomp/user/config.h @@ -614,7 +614,6 @@ public: CONFIG_DEFINE_LOCALISED("Input", bool, InvertCameraY, false); CONFIG_DEFINE_LOCALISED("Input", bool, Vibration, true); CONFIG_DEFINE_LOCALISED("Input", bool, AllowBackgroundInput, false); - CONFIG_DEFINE_LOCALISED("Input", bool, AllowDPadMovement, false); CONFIG_DEFINE_ENUM_LOCALISED("Input", EControllerIcons, ControllerIcons, EControllerIcons::Auto); CONFIG_DEFINE_LOCALISED("Audio", float, MasterVolume, 1.0f); diff --git a/UnleashedRecompLib/config/SWA.toml b/UnleashedRecompLib/config/SWA.toml index f92595b..cbb8971 100644 --- a/UnleashedRecompLib/config/SWA.toml +++ b/UnleashedRecompLib/config/SWA.toml @@ -551,26 +551,38 @@ address = 0x824DC9D4 # CPlayerSpeedPostureInputOnPath [[midasm_hook]] name = "PostureDPadSupportMidAsmHook" -address = 0x8234F174 -registers = ["r3"] +address = 0x8234F194 +registers = ["r31", "f13", "f0"] # CPlayerSpeedPostureInputOnPathLocal [[midasm_hook]] -name = "PostureDPadSupportMidAsmHook" -address = 0x8234F518 -registers = ["r3"] +name = "PostureDPadSupportPathLocalMidAsmHook" +address = 0x8234F610 +registers = ["r30", "f0", "f13"] # CPlayerSpeedPostureInput3DStandard [[midasm_hook]] name = "PostureDPadSupportMidAsmHook" -address = 0x8234EEC8 -registers = ["r3"] +address = 0x8234EEE8 +registers = ["r31", "f12", "f13"] # CEvilPostureInputStandard [[midasm_hook]] name = "PostureDPadSupportMidAsmHook" -address = 0x823CDA2C -registers = ["r3"] +address = 0x823CDA60 +registers = ["r3", "f11", "f12"] + +# CEvilPostureInputStandard +[[midasm_hook]] +name = "PostureDPadSupportXMidAsmHook" +address = 0x823CDA74 +registers = ["r3", "f0"] + +# CEvilPostureInputStandard +[[midasm_hook]] +name = "PostureDPadSupportYMidAsmHook" +address = 0x823CDA88 +registers = ["r3", "f12"] [[midasm_hook]] name = "LoadingUpdateMidAsmHook"