diff options
author | 2022-09-13 08:52:06 -0800 | |
---|---|---|
committer | 2022-09-14 02:52:06 +1000 | |
commit | 2fee8982e78da9b8ca3406043700c1cc70119db0 (patch) | |
tree | 7599fedeeb2f9669a7e92ed242b7f53919cdefb4 | |
parent | 92b95bd0dad30579d46079cac7f4820352a5342f (diff) |
bus/nes_ctrl: Corrected Arkanoid 2 paddle expansion port signal routing.
-rw-r--r-- | src/devices/bus/nes_ctrl/arkpaddle.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/devices/bus/nes_ctrl/arkpaddle.cpp b/src/devices/bus/nes_ctrl/arkpaddle.cpp index 67d1d42de7f..cad203bc45e 100644 --- a/src/devices/bus/nes_ctrl/arkpaddle.cpp +++ b/src/devices/bus/nes_ctrl/arkpaddle.cpp @@ -12,6 +12,14 @@ Known differences: NES and Ark2 paddles have screws to adjust range of returned values, Ark2 paddle has an extra expansion port. + The Ark2 paddle's expansion port is NOT a passthru. OUT0 ($4016 bit 0) + is passed along when writing. Pins 13 and 7 (normally read as bit 1 + from $4016 and $4017) are read from the daisy chained device and passed + to the Famicom expansion port pins 5 and 4 (i.e. the Famicom sees them + as bits 3,4 at $4017). Due to the limited pin connections the Famicom + Keyboard cannot be daisy chained, so the Data Recorder cannot be used + simultaneously with the paddle when saving and loading user made levels. + All paddles return the ones' complement of a 9-bit value from their potentiometers, MSB first. The three commercial releases, Arkanoids and Chase HQ, only read 8-bits, ignoring the LSB. @@ -129,8 +137,8 @@ u8 nes_vausfc_device::read_exp(offs_t offset) { ret = (m_latch & 0x100) >> 7; m_latch <<= 1; - ret |= m_daisychain->read_exp(0) << 2; - ret |= m_daisychain->read_exp(1) << 3; + ret |= (m_daisychain->read_exp(0) & 0x02) << 2; + ret |= (m_daisychain->read_exp(1) & 0x02) << 3; } return ret; } @@ -147,6 +155,6 @@ void nes_vaus_device::write(u8 data) void nes_vausfc_device::write(u8 data) { - m_daisychain->write(data); + m_daisychain->write(data & 1); nes_vaus_device::write(data); } |