spicetools/hooks/unisintrhook.cpp

145 lines
5.0 KiB
C++
Raw Normal View History

2024-08-28 15:10:34 +00:00
#include "unisintrhook.h"
#include "avs/game.h"
#include "util/detour.h"
#include "util/logging.h"
#include "util/libutils.h"
bool CreateInstance() {
return true;
}
int GetGMT() {
// fallback to avs clock
return -1;
}
int GetQRcodeLen(void*) {
return 0;
}
void GetQRcodeURL(void*, char* dest) {
}
void InitModel(char* model, int) {
}
void InitPlayerCount(int players) {
}
void InitPrivilege(int) {
}
void InitVersion(int unis_ver_major, int unis_ver_minor) {
}
bool IsConnectServer(void) {
if (avs::game::is_model("KFC") || avs::game::is_model("REC")) {
return false;
}
return true;
}
bool IsInComm(void) {
return true;
}
bool IsPlayerForbidState(int) {
return false;
}
void RcfAddCoin(void* callback) {}
void RcfCommFailed(void* callback) {}
void RcfCommSucceed(void* callback) {}
void RcfCountdown(void* callback) {}
void RcfDebugLog(void* callback) {}
void RcfGameSwitch(void* callback) {}
void RcfMachineEffects(void* callback) {}
void RcfMachineMode(void* callback) {}
void RcfOtherInfo(void* callback) {}
void RcfPayoutFailed(void* callback) {}
void RcfPayoutSucceed(void* callback) {}
void RcfPlayerInfo(void* callback) {}
void RcfPrintTicket(void* callback) {}
void RcfPrivilege(void* callback) {}
void RcfRankingResult(void* callback) {}
void RcfRecvComm(void* callback) {}
void RcfRecvPayout(void* callback) {}
void RcfRecvTransp(void* callback) {}
void RcfTranspFailed(void* callback) {}
void RcfTranspSucceed(void* callback) {}
void RcfWinPrize(void* callback) {}
int RefreshPlayerState(int player) {
return 0;
}
void ReleaseInstance(void) {
}
int SendCoinSignal(int, int, int) {
return 0;
}
int SendTransp(int, int) {
return 1;
}
void StartDevice(void) {
}
void unisintrhook_init(void) {
// check for module
auto unisintr = libutils::try_module("unisintr.dll");
if (unisintr != nullptr) {
log_info("unisintrhook", "attaching...");
// TODO: SDVX CN doesn't like this...?
if (!avs::game::is_model("KFC")) {
detour::iat_try("GetGMT", GetGMT, nullptr, "unisintr.dll");
}
// hooks
detour::iat_try("CreateInstance", CreateInstance, nullptr, "unisintr.dll");
detour::iat_try("GetQRcodeLen", GetQRcodeLen, nullptr, "unisintr.dll");
detour::iat_try("GetQRcodeURL", GetQRcodeURL, nullptr, "unisintr.dll");
detour::iat_try("InitModel", InitModel, nullptr, "unisintr.dll");
detour::iat_try("InitPlayerCount", InitPlayerCount, nullptr, "unisintr.dll");
detour::iat_try("InitPrivilege", InitPrivilege, nullptr, "unisintr.dll");
detour::iat_try("InitVersion", InitVersion, nullptr, "unisintr.dll");
detour::iat_try("IsConnectServer", IsConnectServer, nullptr, "unisintr.dll");
detour::iat_try("IsInComm", IsInComm, nullptr, "unisintr.dll");
detour::iat_try("IsPlayerForbidState", IsPlayerForbidState, nullptr, "unisintr.dll");
detour::iat_try("RcfAddCoin", RcfAddCoin, nullptr, "unisintr.dll");
detour::iat_try("RcfCommFailed", RcfCommFailed, nullptr, "unisintr.dll");
detour::iat_try("RcfCommSucceed", RcfCommSucceed, nullptr, "unisintr.dll");
detour::iat_try("RcfCountdown", RcfCountdown, nullptr, "unisintr.dll");
detour::iat_try("RcfDebugLog", RcfDebugLog, nullptr, "unisintr.dll");
detour::iat_try("RcfGameSwitch", RcfGameSwitch, nullptr, "unisintr.dll");
detour::iat_try("RcfMachineEffects", RcfMachineEffects, nullptr, "unisintr.dll");
detour::iat_try("RcfMachineMode", RcfMachineMode, nullptr, "unisintr.dll");
detour::iat_try("RcfOtherInfo", RcfOtherInfo, nullptr, "unisintr.dll");
detour::iat_try("RcfPayoutFailed", RcfPayoutFailed, nullptr, "unisintr.dll");
detour::iat_try("RcfPayoutSucceed", RcfPayoutSucceed, nullptr, "unisintr.dll");
detour::iat_try("RcfPlayerInfo", RcfPlayerInfo, nullptr, "unisintr.dll");
detour::iat_try("RcfPrintTicket", RcfPrintTicket, nullptr, "unisintr.dll");
detour::iat_try("RcfPrivilege", RcfPrivilege, nullptr, "unisintr.dll");
detour::iat_try("RcfRankingResult", RcfRankingResult, nullptr, "unisintr.dll");
detour::iat_try("RcfRecvComm", RcfRecvComm, nullptr, "unisintr.dll");
detour::iat_try("RcfRecvPayout", RcfRecvPayout, nullptr, "unisintr.dll");
detour::iat_try("RcfRecvTransp", RcfRecvTransp, nullptr, "unisintr.dll");
detour::iat_try("RcfTranspFailed", RcfTranspFailed, nullptr, "unisintr.dll");
detour::iat_try("RcfTranspSucceed", RcfTranspSucceed, nullptr, "unisintr.dll");
detour::iat_try("RcfWinPrize", RcfWinPrize, nullptr, "unisintr.dll");
detour::iat_try("RefreshPlayerState", RefreshPlayerState, nullptr, "unisintr.dll");
detour::iat_try("ReleaseInstance", ReleaseInstance, nullptr, "unisintr.dll");
detour::iat_try("SendCoinSignal", SendCoinSignal, nullptr, "unisintr.dll");
detour::iat_try("SendTransp", SendTransp, nullptr, "unisintr.dll");
detour::iat_try("StartDevice", StartDevice, nullptr, "unisintr.dll");
log_info("unisintrhook", "attached");
}
}