Initial re-upload of spice2x-24-08-24
This commit is contained in:
156
acio/pjec/pjec.cpp
Normal file
156
acio/pjec/pjec.cpp
Normal file
@@ -0,0 +1,156 @@
|
||||
#include "pjec.h"
|
||||
#include "launcher/launcher.h"
|
||||
#include "rawinput/rawinput.h"
|
||||
#include "util/utils.h"
|
||||
#include "avs/game.h"
|
||||
#include "games/we/io.h"
|
||||
|
||||
//using namespace GameAPI;
|
||||
|
||||
// static stuff
|
||||
static uint8_t STATUS_BUFFER[72];
|
||||
static bool STATUS_BUFFER_FREEZE = false;
|
||||
|
||||
/*
|
||||
* Implementations
|
||||
*/
|
||||
|
||||
static bool __cdecl ac_io_pjec_get_ps2() {
|
||||
return true;
|
||||
}
|
||||
|
||||
static void __cdecl ac_io_pjec_get_control_status_buffer(uint8_t *buffer) {
|
||||
memcpy(buffer, STATUS_BUFFER, sizeof(STATUS_BUFFER));
|
||||
}
|
||||
|
||||
static bool __cdecl ac_io_pjec_update_control_status_buffer() {
|
||||
|
||||
// check freeze
|
||||
if (STATUS_BUFFER_FREEZE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// clear buffer
|
||||
memset(STATUS_BUFFER, 0, sizeof(STATUS_BUFFER));
|
||||
|
||||
// Winning Eleven
|
||||
if (avs::game::is_model({ "KCK", "NCK" })) {
|
||||
auto &buttons = games::we::get_buttons();
|
||||
auto &analogs = games::we::get_analogs();
|
||||
|
||||
/*
|
||||
* Device Types
|
||||
* 0x00 - Unknown Device
|
||||
* 0x01 - Mouse
|
||||
* 0x02 - Rotate Controller
|
||||
* 0x03 - Gun Controller K
|
||||
* 0x04 - Digital Controller <- Accepted
|
||||
* 0x05 - Analog Joystick
|
||||
* 0x06 - Gun Controller N
|
||||
* 0x07 - Analog Controller <- Accepted
|
||||
* 0x08 - USB Analog Controller
|
||||
*/
|
||||
|
||||
// set device type
|
||||
STATUS_BUFFER[0] = 0x07;
|
||||
|
||||
// set device present
|
||||
STATUS_BUFFER[2] = 0x5A;
|
||||
|
||||
// reset analogs to center
|
||||
STATUS_BUFFER[8] = 0x7F;
|
||||
STATUS_BUFFER[9] = 0x7F;
|
||||
STATUS_BUFFER[10] = 0x7F;
|
||||
STATUS_BUFFER[11] = 0x7F;
|
||||
|
||||
// apply analogs
|
||||
if (analogs[games::we::Analogs::PadStickLeftX].isSet()) {
|
||||
STATUS_BUFFER[8] = (uint8_t) (GameAPI::Analogs::getState(RI_MGR,
|
||||
analogs[games::we::Analogs::PadStickLeftX]) * 255.9999f);
|
||||
}
|
||||
if (analogs[games::we::Analogs::PadStickLeftY].isSet()) {
|
||||
STATUS_BUFFER[9] = (uint8_t) (GameAPI::Analogs::getState(RI_MGR,
|
||||
analogs[games::we::Analogs::PadStickLeftY]) * 255.9999f);
|
||||
}
|
||||
if (analogs[games::we::Analogs::PadStickRightX].isSet()) {
|
||||
STATUS_BUFFER[10] = (uint8_t) (GameAPI::Analogs::getState(RI_MGR,
|
||||
analogs[games::we::Analogs::PadStickRightX]) * 255.9999f);
|
||||
}
|
||||
if (analogs[games::we::Analogs::PadStickRightY].isSet()) {
|
||||
STATUS_BUFFER[11] = (uint8_t) (GameAPI::Analogs::getState(RI_MGR,
|
||||
analogs[games::we::Analogs::PadStickRightY]) * 255.9999f);
|
||||
}
|
||||
|
||||
// apply buttons
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadStart])) {
|
||||
STATUS_BUFFER[4] |= 0x08;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadSelect])) {
|
||||
STATUS_BUFFER[4] |= 0x01;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadUp])) {
|
||||
STATUS_BUFFER[4] |= 0x10;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadDown])) {
|
||||
STATUS_BUFFER[4] |= 0x40;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadLeft])) {
|
||||
STATUS_BUFFER[4] |= 0x80;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadRight])) {
|
||||
STATUS_BUFFER[4] |= 0x20;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadTriangle])) {
|
||||
STATUS_BUFFER[5] |= 0x10;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadCross])) {
|
||||
STATUS_BUFFER[5] |= 0x40;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadSquare])) {
|
||||
STATUS_BUFFER[5] |= 0x80;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadCircle])) {
|
||||
STATUS_BUFFER[5] |= 0x20;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadL1])) {
|
||||
STATUS_BUFFER[5] |= 0x04;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadL2])) {
|
||||
STATUS_BUFFER[5] |= 0x01;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadL3])) {
|
||||
STATUS_BUFFER[4] |= 0x02;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadR1])) {
|
||||
STATUS_BUFFER[5] |= 0x08;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadR2])) {
|
||||
STATUS_BUFFER[5] |= 0x02;
|
||||
}
|
||||
if (GameAPI::Buttons::getState(RI_MGR, buttons[games::we::Buttons::PadR3])) {
|
||||
STATUS_BUFFER[4] |= 0x04;
|
||||
}
|
||||
}
|
||||
|
||||
// success
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Module stuff
|
||||
*/
|
||||
|
||||
acio::PJECModule::PJECModule(HMODULE module, acio::HookMode hookMode) : ACIOModule("PJEC", module, hookMode) {
|
||||
this->status_buffer = STATUS_BUFFER;
|
||||
this->status_buffer_size = sizeof(STATUS_BUFFER);
|
||||
this->status_buffer_freeze = &STATUS_BUFFER_FREEZE;
|
||||
}
|
||||
|
||||
void acio::PJECModule::attach() {
|
||||
ACIOModule::attach();
|
||||
|
||||
// hooks
|
||||
ACIO_MODULE_HOOK(ac_io_pjec_get_ps2);
|
||||
ACIO_MODULE_HOOK(ac_io_pjec_get_control_status_buffer);
|
||||
ACIO_MODULE_HOOK(ac_io_pjec_update_control_status_buffer);
|
||||
}
|
||||
13
acio/pjec/pjec.h
Normal file
13
acio/pjec/pjec.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "../module.h"
|
||||
|
||||
namespace acio {
|
||||
|
||||
class PJECModule : public ACIOModule {
|
||||
public:
|
||||
PJECModule(HMODULE module, HookMode hookMode);
|
||||
|
||||
virtual void attach() override;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user