From 27229733d3c28c8067abb7ff5a2421addc8d3360 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 20 Dec 2022 08:27:18 +1100 Subject: bus/msx: Fixed mislabeled button on FM Towns 6-button Pad. --- src/devices/bus/msx/ctrl/sgadapt.cpp | 19 +++++++++++++++++++ src/devices/bus/msx/ctrl/towns6b.cpp | 4 ++-- src/devices/bus/sms_ctrl/md6bt.cpp | 2 +- src/devices/machine/micomxe1a.cpp | 17 +++++++++-------- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/devices/bus/msx/ctrl/sgadapt.cpp b/src/devices/bus/msx/ctrl/sgadapt.cpp index cc1225d37e8..76101f4a3aa 100644 --- a/src/devices/bus/msx/ctrl/sgadapt.cpp +++ b/src/devices/bus/msx/ctrl/sgadapt.cpp @@ -4,6 +4,25 @@ Sega controller adapter emulation + Simple wired adapter: + + PC Pin Sega pin + Up 1 1 Up + Down 2 2 Down + Left 3 3 Left + Right 4 4 Right + +5V 5 5 +5V + Trigger 1 6 6 TL + Trigger 2 7 9 TR + Strobe 8 7 TH + GND 9 8 GND + + An adapter with this wiring was included with the game Chelnov + for Sharp X68000, to be used with a 3-button Sega Mega Drive + Control Pad. The same adapters were supported by Super Street + Figher II for Sharp X68000 for use with 6-button Sega Mega + Drive controllers. + **********************************************************************/ #include "emu.h" diff --git a/src/devices/bus/msx/ctrl/towns6b.cpp b/src/devices/bus/msx/ctrl/towns6b.cpp index cf03850bfc6..08bab6a4ac8 100644 --- a/src/devices/bus/msx/ctrl/towns6b.cpp +++ b/src/devices/bus/msx/ctrl/towns6b.cpp @@ -24,8 +24,8 @@ INPUT_PORTS_START(fm_towns_6b) PORT_START("BUTTONS") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_NAME("%p Z") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("%p X") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("%p Y") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("%p Y") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("%p X") PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("%p C") PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("%p A") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("%p B") diff --git a/src/devices/bus/sms_ctrl/md6bt.cpp b/src/devices/bus/sms_ctrl/md6bt.cpp index 01c75c2ed05..0e8ee72a258 100644 --- a/src/devices/bus/sms_ctrl/md6bt.cpp +++ b/src/devices/bus/sms_ctrl/md6bt.cpp @@ -151,7 +151,7 @@ void sms_md6button_device::device_start() void sms_md6button_device::device_reset() { - // TODO: doesn't work reset happens before inputs are read + // TODO: doesn't work - reset happens before host inputs are read for the first time if (!m_mode) m_mode = BIT(m_pad->read(), 11) | 0x02; } diff --git a/src/devices/machine/micomxe1a.cpp b/src/devices/machine/micomxe1a.cpp index 4b6b4d5c4da..36a971c804a 100644 --- a/src/devices/machine/micomxe1a.cpp +++ b/src/devices/machine/micomxe1a.cpp @@ -13,16 +13,16 @@ 7 TRIG2 9 TR In Ack 8 STROBE 7 TH Out Req - In analog mode, data is shifted out as eleven nybbles: + In analog mode, data is shifted out as twelve nybbles: - _ ____________________________________________ + _ ________________________________________________________________ Req \_________/ - ____ __ __ __ __ __ __ __ __ - Ack \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ - _____ _____ _____ _____ - L/H XX\____/ \_____/ \_____/ \_____/ \_____/ - ____ _____ _____ _____ _____ _____ _____ _____ _____ - D XXX____X_____X_____X_____X_____X_____X_____X_____X_____X + ____ __ __ __ __ __ __ __ __ __ __ __ __ + Ack \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ + _____ _____ _____ _____ _____ _____ + L/H _______/ \_____/ \_____/ \_____/ \_____/ \_____/ \__ + _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ + D XXXX_____X_____X_____X_____X_____X_____X_____X_____X_____X_____X_____X_____X The falling edge on Req causes data output to start. The host can't control the speed, it just polls the L/H and Ack lines to @@ -81,6 +81,7 @@ * Estimate thresholds in digital modes. * Implement trigger A/B rapid fire switches. * Implement channel shift switch (Y->X, X->Z, Z->X). + * Does channel shift affect digital mode? * Implement special modes (holding buttons on power-on): - Double displacement modes: + X/Y (hold SELECT + A') -- cgit v1.2.3