mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 22:30:42 -07:00
iidx: turn off camera access by default (#428)
## Link to GitHub Issue, if one exists For #345 Similar idea as https://github.com/spice2x/spice2x.github.io/pull/350 ## Description of change Disable camera access by default by setting `CONNECT_CAMERA` environment var to 0 before launching. This was one of those "required" things people clicked on, but now it's done automatically to reduce friction for new users. On cab setups (i.e., running without -iidx module), cameras will remain on, unless user overrides it. On franken setups (partial I/O) - user will need to specify what they want via the new option, we can't guess correctly. ## Testing
This commit is contained in:
@@ -53,7 +53,7 @@ namespace games::iidx {
|
|||||||
|
|
||||||
// settings
|
// settings
|
||||||
bool FLIP_CAMS = false;
|
bool FLIP_CAMS = false;
|
||||||
bool DISABLE_CAMS = false;
|
std::optional<bool> DISABLE_CAMS;
|
||||||
bool TDJ_CAMERA = false;
|
bool TDJ_CAMERA = false;
|
||||||
bool TDJ_CAMERA_PREFER_16_9 = true;
|
bool TDJ_CAMERA_PREFER_16_9 = true;
|
||||||
bool TDJ_MODE = false;
|
bool TDJ_MODE = false;
|
||||||
@@ -334,11 +334,6 @@ namespace games::iidx {
|
|||||||
wintouchemu::INJECT_MOUSE_AS_WM_TOUCH = true;
|
wintouchemu::INJECT_MOUSE_AS_WM_TOUCH = true;
|
||||||
wintouchemu::hook_title_ends("beatmania IIDX", "main", avs::game::DLL_INSTANCE);
|
wintouchemu::hook_title_ends("beatmania IIDX", "main", avs::game::DLL_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// prevent crash on TDJ mode without correct DLL
|
|
||||||
if (!GetModuleHandle("nvcuda.dll")) {
|
|
||||||
DISABLE_CAMS = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// insert BI2X hooks
|
// insert BI2X hooks
|
||||||
@@ -399,7 +394,10 @@ namespace games::iidx {
|
|||||||
"RegQueryValueExA", RegQueryValueExA_hook, avs::game::DLL_INSTANCE);
|
"RegQueryValueExA", RegQueryValueExA_hook, avs::game::DLL_INSTANCE);
|
||||||
|
|
||||||
// check if cam hook should be enabled
|
// check if cam hook should be enabled
|
||||||
if (!DISABLE_CAMS) {
|
if (!DISABLE_CAMS.has_value()) {
|
||||||
|
log_fatal("iidx", "assertion failure - DISABLE_CAMS not set during attach");
|
||||||
|
}
|
||||||
|
if (!DISABLE_CAMS.value()) {
|
||||||
init_legacy_camera_hook(FLIP_CAMS);
|
init_legacy_camera_hook(FLIP_CAMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,15 +407,31 @@ namespace games::iidx {
|
|||||||
|
|
||||||
void IIDXGame::pre_attach() {
|
void IIDXGame::pre_attach() {
|
||||||
Game::pre_attach();
|
Game::pre_attach();
|
||||||
|
auto options = games::get_options(eamuse_get_game());
|
||||||
|
|
||||||
// environment variables must be set before the DLL is loaded as the VC++ runtime copies all
|
// environment variables must be set before the DLL is loaded as the VC++ runtime copies all
|
||||||
// environment variables at startup
|
// environment variables at startup
|
||||||
if (SCREEN_MODE.has_value()) {
|
if (SCREEN_MODE.has_value()) {
|
||||||
|
log_misc("iidx", "SCREEN_MODE env var set to {}", SCREEN_MODE.value().c_str());
|
||||||
SetEnvironmentVariable("SCREEN_MODE", SCREEN_MODE.value().c_str());
|
SetEnvironmentVariable("SCREEN_MODE", SCREEN_MODE.value().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for cab camera access for the second time (first time was in launcher.cpp)
|
||||||
|
// this time, we are inside -iidx module hook, which means the user is likely NOT on a cab
|
||||||
|
// therefore, start with cams OFF by default, and allow user to forcibly override to ON
|
||||||
|
if (!games::iidx::DISABLE_CAMS.has_value()) {
|
||||||
|
games::iidx::DISABLE_CAMS = true;
|
||||||
|
if (options->at(launcher::Options::IIDXCabCamAccess).is_active() &&
|
||||||
|
options->at(launcher::Options::IIDXCabCamAccess).value_text() == "on") {
|
||||||
|
games::iidx::DISABLE_CAMS = false;
|
||||||
|
}
|
||||||
|
if (games::iidx::DISABLE_CAMS.value()) {
|
||||||
|
log_misc("iidx", "CONNECT_CAMERA env var set to 0");
|
||||||
|
SetEnvironmentVariable("CONNECT_CAMERA", "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// windowed subscreen, enabled by default, unless turned off by user
|
// windowed subscreen, enabled by default, unless turned off by user
|
||||||
auto options = games::get_options(eamuse_get_game());
|
|
||||||
if (GRAPHICS_WINDOWED && !options->at(launcher::Options::spice2x_IIDXNoSub).value_bool()) {
|
if (GRAPHICS_WINDOWED && !options->at(launcher::Options::spice2x_IIDXNoSub).value_bool()) {
|
||||||
GRAPHICS_IIDX_WSUB = true;
|
GRAPHICS_IIDX_WSUB = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace games::iidx {
|
|||||||
// settings
|
// settings
|
||||||
|
|
||||||
extern bool FLIP_CAMS;
|
extern bool FLIP_CAMS;
|
||||||
extern bool DISABLE_CAMS;
|
extern std::optional<bool> DISABLE_CAMS;
|
||||||
extern bool TDJ_CAMERA;
|
extern bool TDJ_CAMERA;
|
||||||
extern bool TDJ_CAMERA_PREFER_16_9;
|
extern bool TDJ_CAMERA_PREFER_16_9;
|
||||||
extern std::optional<std::string> TDJ_CAMERA_OVERRIDE;
|
extern std::optional<std::string> TDJ_CAMERA_OVERRIDE;
|
||||||
|
|||||||
@@ -213,6 +213,8 @@ namespace games::iidx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void init_legacy_camera_hook(bool flip_cams) {
|
void init_legacy_camera_hook(bool flip_cams) {
|
||||||
|
log_info("iidx::cam", "initializing legacy camera hook");
|
||||||
|
|
||||||
should_flip_cams = flip_cams;
|
should_flip_cams = flip_cams;
|
||||||
|
|
||||||
// camera media framework hook
|
// camera media framework hook
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <shlwapi.h>
|
#include <shlwapi.h>
|
||||||
#include <cfg/configurator.h>
|
#include <cfg/configurator.h>
|
||||||
|
|
||||||
@@ -458,17 +459,26 @@ int main_implementation(int argc, char *argv[]) {
|
|||||||
if (options[launcher::Options::IIDXCameraOrderFlip].value_bool()) {
|
if (options[launcher::Options::IIDXCameraOrderFlip].value_bool()) {
|
||||||
games::iidx::FLIP_CAMS = true;
|
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()) {
|
if (options[launcher::Options::IIDXDisableCameras].value_bool()) {
|
||||||
games::iidx::DISABLE_CAMS = true;
|
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()) {
|
if (options[launcher::Options::IIDXCamHook].value_bool()) {
|
||||||
games::iidx::TDJ_CAMERA = true;
|
games::iidx::TDJ_CAMERA = true;
|
||||||
// Disable legacy behaviour to avoid conflict
|
// Disable legacy behaviour to avoid conflict
|
||||||
games::iidx::DISABLE_CAMS = true;
|
games::iidx::DISABLE_CAMS = true;
|
||||||
}
|
}
|
||||||
if (games::iidx::DISABLE_CAMS) {
|
// CONNECT_CAMERA env var will be set once logging is enabled
|
||||||
SetEnvironmentVariable("CONNECT_CAMERA", "0");
|
|
||||||
}
|
|
||||||
if (options[launcher::Options::IIDXCamHookOverride].is_active()) {
|
if (options[launcher::Options::IIDXCamHookOverride].is_active()) {
|
||||||
games::iidx::TDJ_CAMERA_OVERRIDE = options[launcher::Options::IIDXCamHookOverride].value_text();
|
games::iidx::TDJ_CAMERA_OVERRIDE = options[launcher::Options::IIDXCamHookOverride].value_text();
|
||||||
}
|
}
|
||||||
@@ -1348,6 +1358,13 @@ int main_implementation(int argc, char *argv[]) {
|
|||||||
GRAPHICS_FS_ORIENTATION_SWAP = true;
|
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
|
// deleted options
|
||||||
if (options[launcher::Options::OpenKFControl].value_bool() && !cfg::CONFIGURATOR_STANDALONE) {
|
if (options[launcher::Options::OpenKFControl].value_bool() && !cfg::CONFIGURATOR_STANDALONE) {
|
||||||
log_fatal("launcher", "KFControl has been removed from spice2x; please use an older version.");
|
log_fatal("launcher", "KFControl has been removed from spice2x; please use an older version.");
|
||||||
|
|||||||
@@ -456,13 +456,30 @@ static const std::vector<OptionDefinition> OPTION_DEFINITIONS = {
|
|||||||
.category = "Game Options (Advanced)",
|
.category = "Game Options (Advanced)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.title = "IIDX Disable Cameras",
|
// IIDXDisableCameras
|
||||||
|
.title = "IIDX Disable Cameras (DEPRECATED - no longer needed)",
|
||||||
.name = "iidxdisablecams",
|
.name = "iidxdisablecams",
|
||||||
.desc = "Disables cameras",
|
.desc = "Disables cameras",
|
||||||
.type = OptionType::Bool,
|
.type = OptionType::Bool,
|
||||||
|
.hidden = true,
|
||||||
.game_name = "Beatmania IIDX",
|
.game_name = "Beatmania IIDX",
|
||||||
.category = "Game Options",
|
.category = "Game Options",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// IIDXCabCamAccess
|
||||||
|
.title = "IIDX Use Official AC Cams",
|
||||||
|
.name = "iidxcabcams",
|
||||||
|
.desc = "For IIDX25+, allow direct access to cameras from real arcade cabinets. "
|
||||||
|
"Only turn this on if you have OFFICIAL arcade cameras connected to the correct USB ports. Default: auto",
|
||||||
|
.type = OptionType::Enum,
|
||||||
|
.game_name = "Beatmania IIDX",
|
||||||
|
.category = "Game Options (Advanced)",
|
||||||
|
.elements = {
|
||||||
|
{"auto", ""},
|
||||||
|
{"off", ""},
|
||||||
|
{"on", ""}
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
// IIDXCamHook
|
// IIDXCamHook
|
||||||
.title = "IIDX Cam Hook",
|
.title = "IIDX Cam Hook",
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ namespace launcher {
|
|||||||
LoadIIDXModule,
|
LoadIIDXModule,
|
||||||
IIDXCameraOrderFlip,
|
IIDXCameraOrderFlip,
|
||||||
IIDXDisableCameras,
|
IIDXDisableCameras,
|
||||||
|
IIDXCabCamAccess,
|
||||||
IIDXCamHook,
|
IIDXCamHook,
|
||||||
IIDXCamHookRatio,
|
IIDXCamHookRatio,
|
||||||
IIDXCamHookOverride,
|
IIDXCamHookOverride,
|
||||||
|
|||||||
Reference in New Issue
Block a user