From 9742c844de2c53536944de62edfa972586de17f5 Mon Sep 17 00:00:00 2001 From: Luna Nightshade Date: Mon, 22 May 2023 22:42:00 +0100 Subject: [PATCH] add air bits mmio code --- chuniio/chuniio.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/chuniio/chuniio.c b/chuniio/chuniio.c index 32a9333..cb90302 100644 --- a/chuniio/chuniio.c +++ b/chuniio/chuniio.c @@ -38,6 +38,15 @@ typedef struct IPCMemoryInfo IPCMemoryInfo; static HANDLE FileMappingHandle; IPCMemoryInfo* FileMapping; +typedef uint8_t AirFileIPCData; +static HANDLE AirFileMappingHandle; +AirFileIPCData* AirFileMapping; + +API uint16_t chuni_io_get_api_version(void) +{ + return 0x0101; +} + void initSharedMemory() { if (FileMapping) @@ -54,6 +63,16 @@ void initSharedMemory() 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)); 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) { - size_t i; + //size_t i; 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 */ } - for (i = 0; i < 6; i++) - { - if (FileMapping && FileMapping->airIoStatus[i]) - { - *beams |= (1 << i); - } - } + *beams = *AirFileMapping; } API void chuni_io_jvs_set_coin_blocker(bool open)