bus/msx: Fixed mislabeled button on FM Towns 6-button Pad.

This commit is contained in:
Vas Crabb 2022-12-20 08:27:18 +11:00
parent 24ed0b7319
commit 27229733d3
4 changed files with 31 additions and 11 deletions

View file

@ -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"

View file

@ -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")

View file

@ -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;
}

View file

@ -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')