Update to spice2x-26-02-17 (pre-apply)
> broken commit
This commit is contained in:
+176
-37
@@ -3,12 +3,14 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include <assert.h>
|
||||
#include <shlwapi.h>
|
||||
#include <cfg/configurator.h>
|
||||
|
||||
#include "api/modules/capture.h"
|
||||
#include "acio/acio.h"
|
||||
#include "acio/icca/icca.h"
|
||||
#include "acio/mdxf/mdxf.h"
|
||||
#include "api/controller.h"
|
||||
#include "avs/automap.h"
|
||||
#include "avs/core.h"
|
||||
@@ -20,7 +22,9 @@
|
||||
#include "cfg/screen_resize.h"
|
||||
#include "easrv/easrv.h"
|
||||
#include "external/cardio/cardio_runner.h"
|
||||
#ifndef NO_SCARD
|
||||
#include "external/scard/scard.h"
|
||||
#endif
|
||||
#include "games/game.h"
|
||||
#include "games/io.h"
|
||||
#include "games/bbc/bbc.h"
|
||||
@@ -84,6 +88,7 @@
|
||||
#include "misc/device.h"
|
||||
#include "misc/eamuse.h"
|
||||
#include "misc/extdev.h"
|
||||
#include "misc/ami2000.h"
|
||||
#include "misc/sciunit.h"
|
||||
#include "misc/sde.h"
|
||||
#include "misc/wintouchemu.h"
|
||||
@@ -102,6 +107,7 @@
|
||||
#include "util/libutils.h"
|
||||
#include "util/logging.h"
|
||||
#include "util/peb.h"
|
||||
#include "util/socd_cleaner.h"
|
||||
#include "util/sysutils.h"
|
||||
#include "util/tapeled.h"
|
||||
#include "util/time.h"
|
||||
@@ -191,6 +197,7 @@ int main_implementation(int argc, char *argv[]) {
|
||||
bool attach_icca = false;
|
||||
bool attach_device = false;
|
||||
bool attach_extdev = false;
|
||||
bool attach_ami2000 = false;
|
||||
bool attach_sciunit = false;
|
||||
bool attach_cpusbxpkm_printer = false;
|
||||
bool attach_iidx = false;
|
||||
@@ -263,7 +270,8 @@ int main_implementation(int argc, char *argv[]) {
|
||||
|
||||
// detect model used to load option overrides
|
||||
auto options_version = launcher::detect_gameversion(
|
||||
LAUNCHER_OPTIONS->at(launcher::Options::PathToEa3Config).value
|
||||
LAUNCHER_OPTIONS->at(launcher::Options::PathToEa3Config).value,
|
||||
LAUNCHER_OPTIONS->at(launcher::Options::PathToBootstrap).value
|
||||
);
|
||||
if (!options_version.model.empty() && options_version.model.size() < 4) {
|
||||
if (options_version.dest.size() == 1) {
|
||||
@@ -297,25 +305,13 @@ int main_implementation(int argc, char *argv[]) {
|
||||
cfg_run = true;
|
||||
}
|
||||
|
||||
// -ea, but ignored if -url is set
|
||||
if (options[launcher::Options::EAmusementEmulation].value_bool() &&
|
||||
options[launcher::Options::ServiceURL].is_active() &&
|
||||
!cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal(
|
||||
"launcher",
|
||||
"BAD EAMUSE SETTINGS ERROR\n\n\n"
|
||||
"-------------------------------------------------------------------\n"
|
||||
"WARNING - WARNING - WARNING - WARNING - WARNING - WARNING - WARNING\n"
|
||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
|
||||
"A service URL is set **AND** E-Amusement emulation is enabled.\n"
|
||||
"Either remove the service URL, or disable E-Amusement emulation.\n"
|
||||
"Otherwise you may experience problems logging in.\n"
|
||||
"-------------------------------------------------------------------\n\n\n"
|
||||
);
|
||||
}
|
||||
if (options[launcher::Options::EAmusementEmulation].value_bool()) {
|
||||
!options[launcher::Options::ServiceURL].is_active()) {
|
||||
avs::ea3::URL_SLASH = 1;
|
||||
easrv_port = 8080;
|
||||
}
|
||||
|
||||
if (options[launcher::Options::SmartEAmusement].value_bool()) {
|
||||
easrv_smart = true;
|
||||
}
|
||||
@@ -331,6 +327,10 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::GraphicsForceRefresh].is_active()) {
|
||||
GRAPHICS_FORCE_REFRESH = options[launcher::Options::GraphicsForceRefresh].value_uint32();
|
||||
}
|
||||
if (options[launcher::Options::FullscreenSubRefreshRate].is_active()) {
|
||||
GRAPHICS_FORCE_REFRESH_SUB =
|
||||
options[launcher::Options::FullscreenSubRefreshRate].value_uint32();
|
||||
}
|
||||
if (options[launcher::Options::GraphicsForceSingleAdapter].value_bool()) {
|
||||
GRAPHICS_FORCE_SINGLE_ADAPTER = true;
|
||||
}
|
||||
@@ -351,8 +351,13 @@ int main_implementation(int argc, char *argv[]) {
|
||||
GRAPHICS_FORCE_SINGLE_ADAPTER = true;
|
||||
GRAPHICS_PREVENT_SECONDARY_WINDOW = true;
|
||||
}
|
||||
if (options[launcher::Options::DisplayAdapter].is_active()) {
|
||||
if (options[launcher::Options::DisplayAdapter].is_active() &&
|
||||
options[launcher::Options::DisplayAdapter].value_uint32() != D3DADAPTER_DEFAULT) {
|
||||
D3D9_ADAPTER = options[launcher::Options::DisplayAdapter].value_uint32();
|
||||
|
||||
// when we fix up adapter numbers, we only fix the first adapter, and not any subsequent
|
||||
// adapters, so we can't deal with multi-monitor games
|
||||
GRAPHICS_FORCE_SINGLE_ADAPTER = true;
|
||||
}
|
||||
if (options[launcher::Options::CaptureCursor].value_bool()) {
|
||||
GRAPHICS_CAPTURE_CURSOR = true;
|
||||
@@ -430,8 +435,8 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::EnableEXTDEVModule].value_bool()) {
|
||||
attach_extdev = true;
|
||||
}
|
||||
if (options[launcher::Options::EnableSCIUNITModule].value_bool()) {
|
||||
attach_sciunit = true;
|
||||
if (options[launcher::Options::EnableAMI2000Module].value_bool()) {
|
||||
attach_ami2000 = true;
|
||||
}
|
||||
if (options[launcher::Options::EnableDevicePassthrough].value_bool()) {
|
||||
hooks::device::ENABLE = false;
|
||||
@@ -471,14 +476,26 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::IIDXCameraOrderFlip].value_bool()) {
|
||||
games::iidx::FLIP_CAMS = true;
|
||||
}
|
||||
|
||||
// IIDX CONNECT_CAMERA logic here for cases where user is running without -iidx module
|
||||
// for now, we assume that user may be running on a cab
|
||||
// (games::iidx::DISABLE_CAMS starts out as false unless user overrides)
|
||||
// we will check again in IIDX module with a different default
|
||||
assert(!games::iidx::DISABLE_CAMS.has_value());
|
||||
if (options[launcher::Options::IIDXDisableCameras].value_bool()) {
|
||||
games::iidx::DISABLE_CAMS = true;
|
||||
}
|
||||
if (options[launcher::Options::IIDXCabCamAccess].is_active() &&
|
||||
options[launcher::Options::IIDXCabCamAccess].value_text() == "off") {
|
||||
games::iidx::DISABLE_CAMS = true;
|
||||
}
|
||||
if (options[launcher::Options::IIDXCamHook].value_bool()) {
|
||||
games::iidx::TDJ_CAMERA = true;
|
||||
// Disable legacy behaviour to avoid conflict
|
||||
games::iidx::DISABLE_CAMS = true;
|
||||
}
|
||||
// CONNECT_CAMERA env var will be set once logging is enabled
|
||||
|
||||
if (options[launcher::Options::IIDXCamHookOverride].is_active()) {
|
||||
games::iidx::TDJ_CAMERA_OVERRIDE = options[launcher::Options::IIDXCamHookOverride].value_text();
|
||||
}
|
||||
@@ -518,6 +535,9 @@ int main_implementation(int argc, char *argv[]) {
|
||||
overlay::windows::IIDX_SEGMENT_LOCATION =
|
||||
options[launcher::Options::spice2x_IIDXLEDPos].value_text();
|
||||
}
|
||||
if (options[launcher::Options::IIDXLEDBorderless].value_bool()) {
|
||||
overlay::windows::IIDX_SEGMENT_BORDERLESS = true;
|
||||
}
|
||||
if (options[launcher::Options::spice2x_IIDXNoESpec].value_bool()) {
|
||||
games::iidx::DISABLE_ESPEC_IO = true;
|
||||
}
|
||||
@@ -535,6 +555,9 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::IIDXRecQuality].is_active()) {
|
||||
nvenc_hook::VIDEO_CQP_STRING_OVERRIDE = options[launcher::Options::IIDXRecQuality].value_text();
|
||||
}
|
||||
if (options[launcher::Options::IIDXRecDisable].value_bool()) {
|
||||
nvenc_hook::FORCE_DISABLE = true;
|
||||
}
|
||||
#endif
|
||||
if (options[launcher::Options::LoadJubeatModule].value_bool()) {
|
||||
attach_jb = true;
|
||||
@@ -566,6 +589,25 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::GitaDoraCabinetType].is_active()) {
|
||||
games::gitadora::CAB_TYPE = options[launcher::Options::GitaDoraCabinetType].value_uint32();
|
||||
}
|
||||
if (options[launcher::Options::GitaDoraArenaSingleWindow].value_bool() && GRAPHICS_WINDOWED) {
|
||||
games::gitadora::ARENA_SINGLE_WINDOW = true;
|
||||
}
|
||||
if (options[launcher::Options::GitaDoraWailHold].is_active()) {
|
||||
socd::TILT_HOLD_MS = options[launcher::Options::GitaDoraWailHold].value_uint32();
|
||||
}
|
||||
if (options[launcher::Options::GitaDoraPickAlgo].is_active()) {
|
||||
const auto text = options[launcher::Options::GitaDoraPickAlgo].value_text();
|
||||
if (text == "legacy") {
|
||||
games::gitadora::PICK_ALGO.reset();
|
||||
} else if (text == "neutral") {
|
||||
games::gitadora::PICK_ALGO = socd::SocdAlgorithm::Neutral;
|
||||
} else if (text == "raw") {
|
||||
games::gitadora::PICK_ALGO = socd::SocdAlgorithm::None;
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::GitaDoraSubOverlaySize].is_active()) {
|
||||
games::gitadora::SUBSCREEN_OVERLAY_SIZE = options[launcher::Options::GitaDoraSubOverlaySize].value_text();
|
||||
}
|
||||
if (options[launcher::Options::LoadNostalgiaModule].value_bool()) {
|
||||
attach_nostalgia = true;
|
||||
}
|
||||
@@ -587,6 +629,17 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::GitaDoraTwoChannelAudio].value_bool()) {
|
||||
games::gitadora::TWOCHANNEL = true;
|
||||
}
|
||||
if (options[launcher::Options::GitaDoraLefty].is_active()) {
|
||||
const auto text = options[launcher::Options::GitaDoraLefty].value_text();
|
||||
if (text == "p1") {
|
||||
games::gitadora::P1_LEFTY = true;
|
||||
} else if (text == "p2") {
|
||||
games::gitadora::P2_LEFTY = true;
|
||||
} else if (text == "both") {
|
||||
games::gitadora::P1_LEFTY = true;
|
||||
games::gitadora::P2_LEFTY = true;
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::LoadDDRModule].value_bool()) {
|
||||
attach_ddr = true;
|
||||
}
|
||||
@@ -736,6 +789,9 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::DisableAvsVfsDriveMountRedirection].is_active()) {
|
||||
hooks::avs::config::DISABLE_VFS_DRIVE_REDIRECTION = true;
|
||||
}
|
||||
if (options[launcher::Options::DisableAvsCache].is_active()) {
|
||||
hooks::avs::config::DISABLE_CACHE = true;
|
||||
}
|
||||
if (options[launcher::Options::ScreenResizeConfigPath].is_active()) {
|
||||
cfg::SCREEN_RESIZE_CFG_PATH_OVERRIDE =
|
||||
options[launcher::Options::ScreenResizeConfigPath].value_text();
|
||||
@@ -816,6 +872,7 @@ int main_implementation(int argc, char *argv[]) {
|
||||
for (auto &sextet : options[launcher::Options::SextetStreamPort].values_text()) {
|
||||
sextet_devices.emplace_back(sextet);
|
||||
}
|
||||
#ifndef NO_SCARD
|
||||
if (options[launcher::Options::HIDSmartCard].value_bool()) {
|
||||
WINSCARD_CONFIG.cardinfo_callback = eamuse_scard_callback;
|
||||
scard_threadstart();
|
||||
@@ -835,6 +892,7 @@ int main_implementation(int argc, char *argv[]) {
|
||||
WINSCARD_CONFIG.add_padding_to_felica = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (options[launcher::Options::CardIOHIDReaderOrderFlip].value_bool()) {
|
||||
CARDIO_RUNNER_FLIP = true;
|
||||
}
|
||||
@@ -936,8 +994,19 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::DisableOverlay].value_bool()) {
|
||||
overlay::ENABLED = false;
|
||||
}
|
||||
if (options[launcher::Options::OverlayScaling].is_active() && !cfg::CONFIGURATOR_STANDALONE && !cfg_run) {
|
||||
const auto val = options[launcher::Options::OverlayScaling].value_uint32();
|
||||
if (10 <= val && val <= 400 && val != 100) {
|
||||
overlay::UI_SCALE_PERCENT = options[launcher::Options::OverlayScaling].value_uint32();
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::DisableAudioHooks].value_bool()) {
|
||||
hooks::audio::ENABLED = false;
|
||||
deferredlogs::defer_error_messages({
|
||||
"audio hooks are forcibly disabled by user (-audiohookdisable)",
|
||||
" having hooks disabled means some required audio fixes are not being applied",
|
||||
" if you have audio-related crashes, you should try again after clearing this option"
|
||||
});
|
||||
}
|
||||
if (options[launcher::Options::spice2x_DisableVolumeHook].value_bool()) {
|
||||
hooks::audio::VOLUME_HOOK_ENABLED = false;
|
||||
@@ -1014,8 +1083,8 @@ int main_implementation(int argc, char *argv[]) {
|
||||
std::pair<uint32_t, uint32_t> result;
|
||||
if (parse_width_height(options[launcher::Options::spice2x_WindowSize].value_text(), result)) {
|
||||
GRAPHICS_WINDOW_SIZE = result;
|
||||
} else {
|
||||
log_warning("launcher", "failed to parse -windowsize");
|
||||
} else if (!cfg_run && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal("launcher", "failed to parse -windowsize");
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::spice2x_WindowPosition].is_active()) {
|
||||
@@ -1059,6 +1128,9 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::spice2x_DRSTransposeTouch].value_bool()) {
|
||||
games::drs::TRANSPOSE_TOUCH = true;
|
||||
}
|
||||
if (options[launcher::Options::DRSRGBCameraHook].value_bool()) {
|
||||
games::drs::RGB_CAMERA_HOOK = true;
|
||||
}
|
||||
if (options[launcher::Options::spice2x_AutoCard].is_active()) {
|
||||
const auto text = options[launcher::Options::spice2x_AutoCard].value_text();
|
||||
if (text == "p1") {
|
||||
@@ -1135,6 +1207,13 @@ int main_implementation(int argc, char *argv[]) {
|
||||
rawinput::RAWINPUT_REQUIRE_FOCUS = false;
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::DDRP4IOBufferMode].is_active()) {
|
||||
if (options[launcher::Options::DDRP4IOBufferMode].value_text() == "thread") {
|
||||
acio::MDXF_BUFFER_FILL_MODE = acio::MDXFBufferFillMode::THREAD_MODE;
|
||||
} else if (options[launcher::Options::DDRP4IOBufferMode].value_text() == "backfill") {
|
||||
acio::MDXF_BUFFER_FILL_MODE = acio::MDXFBufferFillMode::BACKFILL_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
if (options[launcher::Options::MidiAlgoVer].is_active()) {
|
||||
if (options[launcher::Options::MidiAlgoVer].value_text() == "legacy") {
|
||||
@@ -1200,15 +1279,28 @@ int main_implementation(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
// log
|
||||
#ifdef SPICE64
|
||||
log_info("launcher", "SpiceTools Bootstrap (x64) (spice2x)");
|
||||
#elif SPICE32_LARGE_ADDRESS_AWARE
|
||||
log_info("launcher", "SpiceTools Bootstrap (x32) (Large Address Aware) (spice2x)");
|
||||
#ifndef SPICE_LINUX
|
||||
#ifdef SPICE64
|
||||
log_info("launcher", "SpiceTools Bootstrap (x64) (spice2x)");
|
||||
#elif SPICE32_LARGE_ADDRESS_AWARE
|
||||
log_info("launcher", "SpiceTools Bootstrap (x32 - Large Address Aware) (spice2x)");
|
||||
#else
|
||||
log_info("launcher", "SpiceTools Bootstrap (x32) (spice2x)");
|
||||
#endif
|
||||
#else
|
||||
log_info("launcher", "SpiceTools Bootstrap (x32) (spice2x)");
|
||||
#ifdef SPICE64
|
||||
log_info("launcher", "SpiceTools Bootstrap (x64) (spice2x) for Linux");
|
||||
#else
|
||||
log_info("launcher", "SpiceTools Bootstrap (x32) (spice2x) for Linux");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
log_info("launcher", "{}", VERSION_STRING);
|
||||
|
||||
// note: distribution of modified version of this software without providing source is GPLv3 license violation.
|
||||
log_info("launcher", "spice2x is free & open source; if you paid money for it, you got scammed");
|
||||
log_info("launcher", "visit https://spice2x.github.io to download the latest version for free");
|
||||
|
||||
// log command line arguments
|
||||
std::ostringstream arguments;
|
||||
for (auto &root_option : options) {
|
||||
@@ -1252,18 +1344,19 @@ int main_implementation(int argc, char *argv[]) {
|
||||
for (const auto &option : options) {
|
||||
if (option.conflicting && option.get_definition().type != OptionType::Bool) {
|
||||
conflicts += 1;
|
||||
const auto& value = option.get_definition().sensitive ? "*****" : option.value;
|
||||
if (launcher::USE_CMD_OVERRIDE) {
|
||||
log_warning(
|
||||
"launcher",
|
||||
"multiple values for -{}, command line args take precedence: {}",
|
||||
option.get_definition().name,
|
||||
option.value);
|
||||
value);
|
||||
} else {
|
||||
log_warning(
|
||||
"launcher",
|
||||
"multiple values for -{}, spicecfg values take precedence: {}",
|
||||
option.get_definition().name,
|
||||
option.value);
|
||||
value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1292,18 +1385,39 @@ int main_implementation(int argc, char *argv[]) {
|
||||
);
|
||||
}
|
||||
|
||||
if (launcher::signal::DISABLE && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_warning(
|
||||
"launcher",
|
||||
"WARNING - user specified -signaldisable option\n\n\n"
|
||||
"!!! !!!\n"
|
||||
"!!! Using -signaldisable option disables all exception handling, !!!\n"
|
||||
"!!! which means when the game crashes it will likely just vanish !!!\n"
|
||||
"!!! without troubleshooting information in the logs. !!!\n"
|
||||
"!!! !!!\n"
|
||||
);
|
||||
}
|
||||
|
||||
if (options[launcher::Options::FullscreenResolution].is_active()) {
|
||||
std::pair<uint32_t, uint32_t> result;
|
||||
if (parse_width_height(options[launcher::Options::FullscreenResolution].value_text(), result)) {
|
||||
GRAPHICS_FS_CUSTOM_RESOLUTION = result;
|
||||
} else {
|
||||
log_warning("launcher", "failed to parse -forceres");
|
||||
} else if (!cfg_run && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal("launcher", "failed to parse -forceres");
|
||||
}
|
||||
}
|
||||
|
||||
if (options[launcher::Options::FullscreenSubResolution].is_active()) {
|
||||
std::pair<uint32_t, uint32_t> result;
|
||||
if (parse_width_height(options[launcher::Options::FullscreenSubResolution].value_text(), result)) {
|
||||
GRAPHICS_FS_CUSTOM_RESOLUTION_SUB = result;
|
||||
} else if (!cfg_run && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal("launcher", "failed to parse -forceressub");
|
||||
}
|
||||
}
|
||||
|
||||
// SDVXFullscreenLandscape disabled due to it messing with in-game camera angle
|
||||
// FullscreenOrientationFlip continues to live on, however.
|
||||
if (options[launcher::Options::SDVXFullscreenLandscape].value_bool()) {
|
||||
if (options[launcher::Options::SDVXFullscreenLandscape].value_bool() && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal("launcher", "-sdvxlandscape removed due to a camera bug in SDVX!");
|
||||
}
|
||||
// if (options[launcher::Options::SDVXFullscreenLandscape].value_bool() && !GRAPHICS_WINDOWED) {
|
||||
@@ -1318,8 +1432,15 @@ int main_implementation(int argc, char *argv[]) {
|
||||
GRAPHICS_FS_ORIENTATION_SWAP = true;
|
||||
}
|
||||
|
||||
if (games::iidx::DISABLE_CAMS.has_value() &&
|
||||
games::iidx::DISABLE_CAMS.value() &&
|
||||
!cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_misc("launcher", "CONNECT_CAMERA env var set to 0");
|
||||
SetEnvironmentVariable("CONNECT_CAMERA", "0");
|
||||
}
|
||||
|
||||
// deleted options
|
||||
if (options[launcher::Options::OpenKFControl].value_bool()) {
|
||||
if (options[launcher::Options::OpenKFControl].value_bool() && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_fatal("launcher", "KFControl has been removed from spice2x; please use an older version.");
|
||||
}
|
||||
if (options[launcher::Options::VREnable].value_bool()) {
|
||||
@@ -1586,6 +1707,7 @@ int main_implementation(int argc, char *argv[]) {
|
||||
attach_io = true;
|
||||
attach_device = true;
|
||||
attach_extdev = true;
|
||||
attach_ami2000 = true;
|
||||
attach_gitadora = true;
|
||||
break;
|
||||
}
|
||||
@@ -1647,6 +1769,14 @@ int main_implementation(int argc, char *argv[]) {
|
||||
attach_io = true;
|
||||
attach_mfc = true;
|
||||
break;
|
||||
|
||||
// Mahjong Fight Club - 2025?
|
||||
// they removed allinone.dll and moved i/o into system.dll
|
||||
} else if (check_dll("system.dll") && fileutils::file_exists("data/mfc.ini")) {
|
||||
avs::game::DLL_NAME = "system.dll";
|
||||
attach_io = true;
|
||||
attach_mfc = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// FutureTomTom
|
||||
@@ -1758,7 +1888,7 @@ int main_implementation(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
// Polaris Chord
|
||||
if (check_dll("kamunity.dll") && fileutils::dir_exists("game/svm_Data")) {
|
||||
if (check_dll("kamunity.dll") && fileutils::file_exists("game/svm.exe")) {
|
||||
avs::game::DLL_NAME = "kamunity.dll";
|
||||
attach_io = true;
|
||||
attach_pc = true;
|
||||
@@ -1791,14 +1921,16 @@ int main_implementation(int argc, char *argv[]) {
|
||||
// usage error
|
||||
if (!cfg::CONFIGURATOR_STANDALONE
|
||||
&& (!CHECK_DLL_IGNORE_ARCH)) {
|
||||
log_fatal(
|
||||
log_warning(
|
||||
"launcher",
|
||||
"module auto detection failed!\n\n"
|
||||
"This usually means one of the following:\n\n"
|
||||
" 1. You put spice executables in the wrong place, or\n"
|
||||
" 2. XML files in prop directory are malformed or missing, or\n"
|
||||
" 3. You passed in invalid options (usually, path overrides like -exec)\n\n"
|
||||
" 3. You passed in invalid options (do not specify -exec or -modules if you don't know what you're doing)\n\n"
|
||||
);
|
||||
|
||||
log_fatal("launcher", "module auto detection failed, see log.txt for troubleshooting");
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2138,6 +2270,11 @@ int main_implementation(int argc, char *argv[]) {
|
||||
extdev_attach();
|
||||
}
|
||||
|
||||
// ami 2000 card reader attach
|
||||
if (attach_io || attach_ami2000) {
|
||||
ami2000_attach();
|
||||
}
|
||||
|
||||
// sci unit attach
|
||||
if (attach_io || attach_sciunit) {
|
||||
sciunit_attach();
|
||||
@@ -2314,8 +2451,10 @@ int main_implementation(int argc, char *argv[]) {
|
||||
// debug hook
|
||||
debughook::detach();
|
||||
|
||||
#ifndef NO_SCARD
|
||||
// scard
|
||||
scard_fini();
|
||||
#endif
|
||||
|
||||
// stop reader thread in case it was running
|
||||
stop_reader_thread();
|
||||
@@ -2426,7 +2565,7 @@ void dump_button_bindings(std::vector<Button> *buttons) {
|
||||
button->getName(),
|
||||
button->getDeviceIdentifier(),
|
||||
button->getVKey(),
|
||||
button->getAnalogType()
|
||||
static_cast<uint32_t>(button->getAnalogType())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2439,7 +2578,7 @@ void dump_button_bindings(std::vector<Button> *buttons) {
|
||||
button->getName(),
|
||||
alt.isNaive() ? "Naive" : alt.getDeviceIdentifier(),
|
||||
alt.getVKey(),
|
||||
alt.getAnalogType()
|
||||
static_cast<uint32_t>(alt.getAnalogType())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user