ref: 09bca230962f46990719e80c11eceac28e825486
parent: ee2c0cede5b54b1748d56e000db3af073cfdac4e
author: Jean-André Santoni <jean.andre.santoni@gmail.com>
date: Mon Jul 15 16:33:15 EDT 2024
inputs
--- a/dat.h
+++ b/dat.h
@@ -17,6 +17,9 @@
extern uint32_t cramc[64];
extern int vdpx, vdpy, frame, intla;
+extern uint8_t portDC;
+extern uint8_t portDD;
+
enum {MODE1 = 0x00,
MODE2 = 0x01,
--- a/mem.c
+++ b/mem.c
@@ -111,6 +111,7 @@
}
}
+uint8_t portDC = 0x00;
uint8_t portDD = 0xff;
uint8_t port3E = 0x00;
uint8_t port3F = 0x00;
@@ -133,10 +134,11 @@
else
return vdpstatus();
else
- if ((port & 0x01) == 0x00)
- return 0xff; // port dc
- else
- return (portDD & 0x3f) | (port3F & 0xc0); // port dd
+ if ((port & 0x01) == 0x00){+ printf(" read port DC: %x\n", portDC);+ return portDC;
+ }else
+ return (portDD & 0x3f) | (port3F & 0xc0);
}
void
--- a/sms.c
+++ b/sms.c
@@ -86,9 +86,31 @@
return true;
}
+uint8_t keys[2];
+
+static const int retro_bind[] = {+ [RETRO_DEVICE_ID_JOYPAD_UP] = 0,
+ [RETRO_DEVICE_ID_JOYPAD_DOWN] = 1<<1,
+ [RETRO_DEVICE_ID_JOYPAD_LEFT] = 1<<2,
+ [RETRO_DEVICE_ID_JOYPAD_RIGHT] = 1<<3,
+ [RETRO_DEVICE_ID_JOYPAD_A] = 1<<4,
+ [RETRO_DEVICE_ID_JOYPAD_B] = 1<<5,
+ [RETRO_DEVICE_ID_JOYPAD_START] = 1<<6,
+};
+
void
process_inputs()
{+ for(int p = 0; p < 2; p++)
+ {+ keys[p] = 0xff;
+ for(int id = 0; id < RETRO_DEVICE_ID_JOYPAD_X; id++)
+ if(input_state_cb(p, RETRO_DEVICE_JOYPAD, 0, id))
+ keys[p] = keys[p] & ~retro_bind[id];
+ }
+
+ portDC = (keys[0] & 0x3f) + ((keys[1] << 6) & 0xc0);
+ portDD = ((keys[1] >> 2) & 0x0f) | 0xf0;
}
int counter = 0;
--
⑨