diff --git a/src/spice2x/games/iidx/iidx.cpp b/src/spice2x/games/iidx/iidx.cpp index f4856e8..4c59cd3 100644 --- a/src/spice2x/games/iidx/iidx.cpp +++ b/src/spice2x/games/iidx/iidx.cpp @@ -27,6 +27,7 @@ #include "util/memutils.h" #include "util/sigscan.h" #include "util/utils.h" +#include "launcher/signal.h" #include "external/robin_hood.h" @@ -232,6 +233,9 @@ namespace games::iidx { } else if (data.find(" W:touch: missing trigger:") != std::string::npos) { out.clear(); return true; + } else if (data.find("SuperstepSound: Audio device is not available") != std::string::npos) { + launcher::signal::SUPERSTEP_SOUND_ERROR = TRUE; + return false; } else { return false; } diff --git a/src/spice2x/games/sdvx/sdvx.cpp b/src/spice2x/games/sdvx/sdvx.cpp index 1936142..41baf6f 100644 --- a/src/spice2x/games/sdvx/sdvx.cpp +++ b/src/spice2x/games/sdvx/sdvx.cpp @@ -24,6 +24,7 @@ #include "io.h" #include "acioemu/handle.h" #include "cfg/configurator.h" +#include "launcher/signal.h" static decltype(RegCloseKey) *RegCloseKey_orig = nullptr; static decltype(RegEnumKeyA) *RegEnumKeyA_orig = nullptr; @@ -209,6 +210,10 @@ namespace games::sdvx { out = ""; return true; } + if (data.find("SuperstepSound: Audio device is not available") != std::string::npos) { + launcher::signal::SUPERSTEP_SOUND_ERROR = TRUE; + return false; + } return false; } diff --git a/src/spice2x/launcher/signal.cpp b/src/spice2x/launcher/signal.cpp index 4291c4f..41b3dc7 100644 --- a/src/spice2x/launcher/signal.cpp +++ b/src/spice2x/launcher/signal.cpp @@ -29,6 +29,9 @@ namespace launcher::signal { // settings bool DISABLE = false; bool USE_VEH_WORKAROUND = false; + + // states + bool SUPERSTEP_SOUND_ERROR = false; } #define V(variant) case variant: return #variant @@ -111,6 +114,13 @@ static LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *Exception " RivaTuner Statistics Server (RTSS), MSI Afterburner, kernel mode anti-cheat"); } + if (launcher::signal::SUPERSTEP_SOUND_ERROR) { + log_warning("signal", "audio initialization error was previously detected during boot!"); + log_warning("signal", " (W:SuperstepSound: Audio device is not available!!!)"); + log_warning("signal", " this crash is most likely related to audio init failure"); + log_warning("signal", " fix your audio device, double check your audio options/patches, and try again"); + } + // walk the exception chain struct _EXCEPTION_RECORD *record_cause = ExceptionRecord->ExceptionRecord; while (record_cause != nullptr) { diff --git a/src/spice2x/launcher/signal.h b/src/spice2x/launcher/signal.h index f8bc719..5d7ff09 100644 --- a/src/spice2x/launcher/signal.h +++ b/src/spice2x/launcher/signal.h @@ -5,6 +5,7 @@ namespace launcher::signal { // settings extern bool DISABLE; extern bool USE_VEH_WORKAROUND; + extern bool SUPERSTEP_SOUND_ERROR; //void print_stacktrace(); void attach();