145 lines
5.0 KiB
C++
145 lines
5.0 KiB
C++
|
#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");
|
||
|
}
|
||
|
}
|