mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
gitadora: Added support for GITADORA Delta (#476)
## Link to GitHub Issue, if one exists None ## Description of change - Added bi2x_hook - Added J32D (drum) and J33I (guitar) emulations - AMI2000 card reader (this game uses this instead of ICCA) ## Testing Played through a 15-minute session on Drummania. Guitar mode works with keyboard input.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#include "ami2000.h"
|
||||
#include "util/utils.h"
|
||||
#include "util/detour.h"
|
||||
#include "util/libutils.h"
|
||||
#include "misc/eamuse.h"
|
||||
#include "acio/icca/icca.h"
|
||||
|
||||
|
||||
static int CARD_TYPE = 0;
|
||||
static uint8_t CARD_UID[8];
|
||||
|
||||
static void __fastcall AMI2000_Initialize() {
|
||||
log_info("ami2000", "ami2000 initialize.");
|
||||
}
|
||||
|
||||
static void __fastcall AMI2000_Startup() {
|
||||
log_info("ami2000", "ami2000 startup.");
|
||||
}
|
||||
|
||||
static void __fastcall AMI2000_Cleanup() {
|
||||
log_info("ami2000", "ami2000 cleanup.");
|
||||
}
|
||||
|
||||
static int __fastcall AMI2000_IsDeviceError() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __fastcall AMI2000_ReadCtrl() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char *__fastcall AMI2000_GetRomVersion() {
|
||||
return "DUMMY";
|
||||
}
|
||||
|
||||
static int __fastcall AMI2000_GetCardType() {
|
||||
return CARD_TYPE;
|
||||
}
|
||||
|
||||
static uint64_t __fastcall AMI2000_GetCardIdentifier() {
|
||||
if (eamuse_card_insert_consume(1, 0)) {
|
||||
eamuse_get_card(1, 0, CARD_UID);
|
||||
CARD_TYPE = is_card_uid_felica(CARD_UID) ? 2 : 1;
|
||||
log_info("ami2000", "AMI2000_GetCardIdentifier: {:X}", bswap64(*(uint64_t*)CARD_UID));
|
||||
} else {
|
||||
CARD_TYPE = 0;
|
||||
return 0;
|
||||
}
|
||||
return bswap64(*(uint64_t *)CARD_UID);
|
||||
}
|
||||
|
||||
|
||||
void ami2000_attach() {
|
||||
auto ami2000 = libutils::try_module("iccr-ami2000-api.dll");
|
||||
|
||||
if (!ami2000) {
|
||||
log_warning("ami2000", "module not found, skipping.");
|
||||
return;
|
||||
}
|
||||
|
||||
// card unit
|
||||
detour::inline_hook((void *)AMI2000_Initialize, libutils::try_proc(
|
||||
ami2000, "AMI2000_Initialize"));
|
||||
detour::inline_hook((void *)AMI2000_Startup, libutils::try_proc(
|
||||
ami2000, "AMI2000_Startup"));
|
||||
detour::inline_hook((void *)AMI2000_IsDeviceError, libutils::try_proc(
|
||||
ami2000, "AMI2000_IsDeviceError"));
|
||||
detour::inline_hook((void *)AMI2000_ReadCtrl, libutils::try_proc(
|
||||
ami2000, "AMI2000_ReadCtrl"));
|
||||
detour::inline_hook((void *)AMI2000_Cleanup, libutils::try_proc(
|
||||
ami2000, "AMI2000_Cleanup"));
|
||||
detour::inline_hook((void *)AMI2000_GetRomVersion, libutils::try_proc(
|
||||
ami2000, "AMI2000_GetRomVersion"));
|
||||
detour::inline_hook((void *)AMI2000_GetCardType, libutils::try_proc(
|
||||
ami2000, "AMI2000_GetCardType"));
|
||||
detour::inline_hook((void *)AMI2000_GetCardIdentifier, libutils::try_proc(
|
||||
ami2000, "AMI2000_GetCardIdentifier"));
|
||||
|
||||
log_info("ami2000", "attached");
|
||||
}
|
||||
|
||||
void ami2000_detach()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
void ami2000_attach();
|
||||
void ami2000_detach();
|
||||
Reference in New Issue
Block a user