mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 22:30:42 -07:00
@@ -19,11 +19,13 @@
|
|||||||
#include "util/sysutils.h"
|
#include "util/sysutils.h"
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
#include "util/deferlog.h"
|
#include "util/deferlog.h"
|
||||||
|
#include "misc/nativetouchhook.h"
|
||||||
#include "misc/wintouchemu.h"
|
#include "misc/wintouchemu.h"
|
||||||
|
|
||||||
namespace games::popn {
|
namespace games::popn {
|
||||||
|
|
||||||
bool SHOW_PIKA_MONITOR_WARNING = false;
|
bool SHOW_PIKA_MONITOR_WARNING = false;
|
||||||
|
bool NATIVE_TOUCH = false;
|
||||||
|
|
||||||
#if SPICE64 && !SPICE_XP
|
#if SPICE64 && !SPICE_XP
|
||||||
|
|
||||||
@@ -670,9 +672,13 @@ namespace games::popn {
|
|||||||
// set third column to 0 and it will work with BIO2
|
// set third column to 0 and it will work with BIO2
|
||||||
|
|
||||||
if (!GRAPHICS_WINDOWED) {
|
if (!GRAPHICS_WINDOWED) {
|
||||||
wintouchemu::FORCE = true;
|
if (NATIVE_TOUCH) {
|
||||||
wintouchemu::INJECT_MOUSE_AS_WM_TOUCH = true;
|
nativetouchhook::hook(avs::game::DLL_INSTANCE);
|
||||||
wintouchemu::hook_title_ends("", "Main Screen", avs::game::DLL_INSTANCE);
|
} else {
|
||||||
|
wintouchemu::FORCE = true;
|
||||||
|
wintouchemu::INJECT_MOUSE_AS_WM_TOUCH = true;
|
||||||
|
wintouchemu::hook_title_ends("", "Main Screen", avs::game::DLL_INSTANCE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sysutils::hook_EnumDisplayDevicesA();
|
sysutils::hook_EnumDisplayDevicesA();
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace games::popn {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern bool SHOW_PIKA_MONITOR_WARNING;
|
extern bool SHOW_PIKA_MONITOR_WARNING;
|
||||||
|
extern bool NATIVE_TOUCH;
|
||||||
|
|
||||||
class POPNGame : public games::Game {
|
class POPNGame : public games::Game {
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -597,6 +597,9 @@ int main_implementation(int argc, char *argv[]) {
|
|||||||
if (options[launcher::Options::PopnSubMonitorOverride].is_active()) {
|
if (options[launcher::Options::PopnSubMonitorOverride].is_active()) {
|
||||||
sysutils::SECOND_MONITOR_OVERRIDE = options[launcher::Options::PopnSubMonitorOverride].value_text();
|
sysutils::SECOND_MONITOR_OVERRIDE = options[launcher::Options::PopnSubMonitorOverride].value_text();
|
||||||
}
|
}
|
||||||
|
if (options[launcher::Options::PopnNativeTouch].value_bool()) {
|
||||||
|
games::popn::NATIVE_TOUCH = true;
|
||||||
|
}
|
||||||
if (options[launcher::Options::LoadMetalGearArcadeModule].value_bool()) {
|
if (options[launcher::Options::LoadMetalGearArcadeModule].value_bool()) {
|
||||||
attach_mga = true;
|
attach_mga = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1008,6 +1008,18 @@ static const std::vector<OptionDefinition> OPTION_DEFINITIONS = {
|
|||||||
.category = "Monitor",
|
.category = "Monitor",
|
||||||
.picker = OptionPickerType::Monitor,
|
.picker = OptionPickerType::Monitor,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// PopnNativeTouch
|
||||||
|
.title = "Pop'n Music PikaPika Native Touch Handling",
|
||||||
|
.name = "popnnativetouch",
|
||||||
|
.desc = "Disables touch hooks and lets the game access a touch screen directly. "
|
||||||
|
"Requires a touch screen to be connected as a secondary monitor. "
|
||||||
|
"Touch input must be routed to the primary screen via Windows Tablet PC settings. "
|
||||||
|
"Enable this when you get duplicate touch inputs from an actual touch screen.",
|
||||||
|
.type = OptionType::Bool,
|
||||||
|
.game_name = "Pop'n Music",
|
||||||
|
.category = "Game Options (Advanced)",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.title = "Force Load HELLO! Pop'n Music Module",
|
.title = "Force Load HELLO! Pop'n Music Module",
|
||||||
.name = "hpm",
|
.name = "hpm",
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ namespace launcher {
|
|||||||
PopnMusicForceSDMode,
|
PopnMusicForceSDMode,
|
||||||
PopnNoSub,
|
PopnNoSub,
|
||||||
PopnSubMonitorOverride,
|
PopnSubMonitorOverride,
|
||||||
|
PopnNativeTouch,
|
||||||
LoadHelloPopnMusicModule,
|
LoadHelloPopnMusicModule,
|
||||||
LoadGitaDoraModule,
|
LoadGitaDoraModule,
|
||||||
GitaDoraTwoChannelAudio,
|
GitaDoraTwoChannelAudio,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "external/imgui/misc/cpp/imgui_stdlib.h"
|
#include "external/imgui/misc/cpp/imgui_stdlib.h"
|
||||||
#include "games/io.h"
|
#include "games/io.h"
|
||||||
#include "games/sdvx/sdvx.h"
|
#include "games/sdvx/sdvx.h"
|
||||||
|
#include "games/popn/popn.h"
|
||||||
#include "avs/core.h"
|
#include "avs/core.h"
|
||||||
#include "avs/ea3.h"
|
#include "avs/ea3.h"
|
||||||
#include "avs/game.h"
|
#include "avs/game.h"
|
||||||
@@ -283,18 +284,8 @@ namespace overlay::windows {
|
|||||||
|
|
||||||
// keypad buttons
|
// keypad buttons
|
||||||
ImGui::TextUnformatted("");
|
ImGui::TextUnformatted("");
|
||||||
if (this->games_selected_name == "Beatmania IIDX") {
|
this->build_keypad_warning();
|
||||||
ImGui::Indent(INDENT);
|
|
||||||
ImGui::TextColored(
|
|
||||||
ImVec4(1, 0.5f, 0.5f, 1.f),
|
|
||||||
"WARNING: Lightning Model (TDJ) I/O will ignore the keypad!");
|
|
||||||
ImGui::TextWrapped(
|
|
||||||
"Use Toggle Sub Screen button to show the overlay and use your mouse, "
|
|
||||||
"connect using SpiceCompanion app, or connect a touch screen to enter "
|
|
||||||
"the PIN.");
|
|
||||||
ImGui::Unindent(INDENT);
|
|
||||||
ImGui::TextUnformatted("");
|
|
||||||
}
|
|
||||||
auto keypad_buttons = games::get_buttons_keypads(this->games_selected_name);
|
auto keypad_buttons = games::get_buttons_keypads(this->games_selected_name);
|
||||||
auto keypad_count = eamuse_get_game_keypads_name();
|
auto keypad_count = eamuse_get_game_keypads_name();
|
||||||
if (keypad_count == 1) {
|
if (keypad_count == 1) {
|
||||||
@@ -602,6 +593,34 @@ namespace overlay::windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Config::build_keypad_warning() {
|
||||||
|
// not checking the -iidxtdj option here, we could do that in the future
|
||||||
|
const bool is_tdj = this->games_selected_name == "Beatmania IIDX";
|
||||||
|
|
||||||
|
// not using games::popn::is_pikapika_model() here since that always returns false on 32-bit
|
||||||
|
const bool is_popn = this->games_selected_name == "Pop'n Music" && avs::game::SPEC[0] == 'D';
|
||||||
|
if (!is_tdj && !is_popn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Indent(INDENT);
|
||||||
|
if (is_tdj) {
|
||||||
|
ImGui::TextColored(
|
||||||
|
ImVec4(1, 0.5f, 0.5f, 1.f),
|
||||||
|
"WARNING: Lightning Model (TDJ) I/O will ignore keypad number input!");
|
||||||
|
} else if (is_popn) {
|
||||||
|
ImGui::TextColored(
|
||||||
|
ImVec4(1, 0.5f, 0.5f, 1.f),
|
||||||
|
"WARNING: PikaPika Pop-Kun model will ignore keypad number input!");
|
||||||
|
}
|
||||||
|
ImGui::TextWrapped(
|
||||||
|
"Use Toggle Sub Screen button (Overlay tab) to show the overlay and use your mouse, "
|
||||||
|
"connect using SpiceCompanion app, or connect a touch screen to enter "
|
||||||
|
"the PIN.");
|
||||||
|
ImGui::Unindent(INDENT);
|
||||||
|
ImGui::TextUnformatted("");
|
||||||
|
}
|
||||||
|
|
||||||
void Config::build_buttons(const std::string &name, std::vector<Button> *buttons, int min, int max) {
|
void Config::build_buttons(const std::string &name, std::vector<Button> *buttons, int min, int max) {
|
||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
ImGui::TextColored(ImVec4(1.f, 0.7f, 0, 1), "%s Buttons", name.c_str());
|
ImGui::TextColored(ImVec4(1.f, 0.7f, 0, 1), "%s Buttons", name.c_str());
|
||||||
|
|||||||
@@ -193,13 +193,15 @@ namespace overlay::windows {
|
|||||||
std::vector<Option> *options, const std::string &category, const std::string *filter=nullptr);
|
std::vector<Option> *options, const std::string &category, const std::string *filter=nullptr);
|
||||||
void build_about();
|
void build_about();
|
||||||
void build_launcher();
|
void build_launcher();
|
||||||
void launch_shell(LPCSTR app, LPCSTR file=nullptr);
|
void build_keypad_warning();
|
||||||
|
|
||||||
|
void launch_shell(LPCSTR app, LPCSTR file=nullptr);
|
||||||
|
|
||||||
void build_menu(int *game_selected);
|
void build_menu(int *game_selected);
|
||||||
void shutdown_system(bool force, bool reboot_instead);
|
void shutdown_system(bool force, bool reboot_instead);
|
||||||
|
|
||||||
void set_alternating_row_colors(const int row_index);
|
void set_alternating_row_colors(const int row_index);
|
||||||
|
|
||||||
bool validate_ea_card(char card_number[16]);
|
bool validate_ea_card(char card_number[16]);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
Reference in New Issue
Block a user