|
|
@ -38,6 +38,15 @@ typedef struct IPCMemoryInfo IPCMemoryInfo;
|
|
|
|
static HANDLE FileMappingHandle;
|
|
|
|
static HANDLE FileMappingHandle;
|
|
|
|
IPCMemoryInfo* FileMapping;
|
|
|
|
IPCMemoryInfo* FileMapping;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef uint8_t AirFileIPCData;
|
|
|
|
|
|
|
|
static HANDLE AirFileMappingHandle;
|
|
|
|
|
|
|
|
AirFileIPCData* AirFileMapping;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API uint16_t chuni_io_get_api_version(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return 0x0101;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void initSharedMemory()
|
|
|
|
void initSharedMemory()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (FileMapping)
|
|
|
|
if (FileMapping)
|
|
|
@ -54,6 +63,16 @@ void initSharedMemory()
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((AirFileMappingHandle = CreateFileMappingA(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, sizeof(AirFileIPCData), "Local\\BROKENITHM_AIR_BITS")) == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((AirFileMapping = (AirFileIPCData*)MapViewOfFile(AirFileMappingHandle, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(AirFileIPCData))) == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
memset(FileMapping, 0, sizeof(IPCMemoryInfo));
|
|
|
|
memset(FileMapping, 0, sizeof(IPCMemoryInfo));
|
|
|
|
SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_CONTINUOUS);
|
|
|
|
SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_CONTINUOUS);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -99,7 +118,7 @@ API void chuni_io_jvs_read_coin_counter(uint16_t* out)
|
|
|
|
|
|
|
|
|
|
|
|
API void chuni_io_jvs_poll(uint8_t* opbtn, uint8_t* beams)
|
|
|
|
API void chuni_io_jvs_poll(uint8_t* opbtn, uint8_t* beams)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
size_t i;
|
|
|
|
//size_t i;
|
|
|
|
|
|
|
|
|
|
|
|
if ((FileMapping && FileMapping->testBtn) || GetAsyncKeyState(chuni_io_cfg.vk_test))
|
|
|
|
if ((FileMapping && FileMapping->testBtn) || GetAsyncKeyState(chuni_io_cfg.vk_test))
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -111,13 +130,7 @@ API void chuni_io_jvs_poll(uint8_t* opbtn, uint8_t* beams)
|
|
|
|
*opbtn |= 0x02; /* Service */
|
|
|
|
*opbtn |= 0x02; /* Service */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 6; i++)
|
|
|
|
*beams = *AirFileMapping;
|
|
|
|
{
|
|
|
|
|
|
|
|
if (FileMapping && FileMapping->airIoStatus[i])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
*beams |= (1 << i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
API void chuni_io_jvs_set_coin_blocker(bool open)
|
|
|
|
API void chuni_io_jvs_set_coin_blocker(bool open)
|
|
|
|