Skip to content

Commit d5b1b06

Browse files
authored
Update Iop_NamcoSys246.cpp
add Taiko drum controller mapping
1 parent 9e43d26 commit d5b1b06

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

Source/iop/namco_sys246/Iop_NamcoSys246.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,11 @@ void CSys246::ProcessJvsPacket(const uint8* input, uint8* output)
439439
(*output++) = static_cast<uint8>(m_jvsDrumChannels[i] >> 8);
440440
(*output++) = static_cast<uint8>(m_jvsDrumChannels[i]);
441441
}
442+
// Reset drum channels after sending — drum inputs are pulses, not held states
443+
for(int i = 0; i < JVS_DRUM_CHANNEL_MAX; i++)
444+
{
445+
m_jvsDrumChannels[i] = 0;
446+
}
442447
}
443448
else if(m_jvsMode == JVS_MODE::DRIVE)
444449
{
@@ -591,20 +596,22 @@ void CSys246::SetButtonState(unsigned int padNumber, PS2::CControllerInfo::BUTTO
591596
}
592597
else if(m_jvsMode == JVS_MODE::DRUM)
593598
{
594-
if(button == PS2::CControllerInfo::L1) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_DL] = pressed ? drumPressValue << 6 : 0;
595-
if(button == PS2::CControllerInfo::L2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_KL] = pressed ? drumPressValue << 6 : 0;
596-
if(button == PS2::CControllerInfo::R1) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_DR] = pressed ? drumPressValue << 6 : 0;
597-
if(button == PS2::CControllerInfo::R2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_KR] = pressed ? drumPressValue << 6 : 0;
599+
// Taiko no Tatsujin: DPAD_LEFT=Left Men, L2=Left Fuchi, CROSS=Right Men, R2=Right Fuchi
600+
if(button == PS2::CControllerInfo::DPAD_LEFT) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_DL] = pressed ? drumPressValue << 6 : 0;
601+
if(button == PS2::CControllerInfo::L2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_KL] = pressed ? drumPressValue << 6 : 0;
602+
if(button == PS2::CControllerInfo::CROSS) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_DR] = pressed ? drumPressValue << 6 : 0;
603+
if(button == PS2::CControllerInfo::R2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_1P_KR] = pressed ? drumPressValue << 6 : 0;
598604
}
599605
}
600606
else if(padNumber == 1)
601607
{
602608
if(m_jvsMode == JVS_MODE::DRUM)
603609
{
604-
if(button == PS2::CControllerInfo::L1) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_DL] = pressed ? drumPressValue << 6 : 0;
605-
if(button == PS2::CControllerInfo::L2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_KL] = pressed ? drumPressValue << 6 : 0;
606-
if(button == PS2::CControllerInfo::R1) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_DR] = pressed ? drumPressValue << 6 : 0;
607-
if(button == PS2::CControllerInfo::R2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_KR] = pressed ? drumPressValue << 6 : 0;
610+
// Taiko no Tatsujin: DPAD_LEFT=Left Men, L2=Left Fuchi, CROSS=Right Men, R2=Right Fuchi
611+
if(button == PS2::CControllerInfo::DPAD_LEFT) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_DL] = pressed ? drumPressValue << 6 : 0;
612+
if(button == PS2::CControllerInfo::L2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_KL] = pressed ? drumPressValue << 6 : 0;
613+
if(button == PS2::CControllerInfo::CROSS) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_DR] = pressed ? drumPressValue << 6 : 0;
614+
if(button == PS2::CControllerInfo::R2) m_jvsDrumChannels[JVS_DRUM_CHANNEL_2P_KR] = pressed ? drumPressValue << 6 : 0;
608615
}
609616
}
610617
}
@@ -686,6 +693,7 @@ void CSys246::SetAxisState(unsigned int padNumber, PS2::CControllerInfo::BUTTON
686693
break;
687694
}
688695
}
696+
689697
}
690698

691699
void CSys246::SetScreenPosition(float x, float y)

0 commit comments

Comments
 (0)