AxibugEmuOnline/References/VirtuaNESex_src_191105/NES/PadEX/EXPAD_FamlyTrainer.cpp
2024-08-05 17:58:53 +08:00

72 lines
2.3 KiB
C++

//////////////////////////////////////////////////////////////////////////
// Famly Trainer //
//////////////////////////////////////////////////////////////////////////
void EXPAD_FamlyTrainer::Reset()
{
outbits = 0;
padbits = 0;
}
BYTE EXPAD_FamlyTrainer::Read4017()
{
return outbits;
}
void EXPAD_FamlyTrainer::Write4016( BYTE data )
{
outbits = 0;
if( !(data & 0x04) ) {
outbits = (BYTE)((~padbits<<1)&0x1E);
}
if( !(data & 0x02) ) {
outbits = (BYTE)((~padbits>>3)&0x1E);
}
if( !(data & 0x01) ) {
outbits = (BYTE)((~padbits>>7)&0x1E);
}
}
void EXPAD_FamlyTrainer::Sync()
{
padbits = 0;
if( nes->pad->GetExController() == PAD::EXCONTROLLER_FAMILYTRAINER_A ) {
if( Config.ExButtonCheck( 1, 3 ) ) padbits |= 1<<3;
if( Config.ExButtonCheck( 1, 2 ) ) padbits |= 1<<2;
if( Config.ExButtonCheck( 1, 1 ) ) padbits |= 1<<1;
if( Config.ExButtonCheck( 1, 0 ) ) padbits |= 1<<0;
if( Config.ExButtonCheck( 1, 7 ) ) padbits |= 1<<7;
if( Config.ExButtonCheck( 1, 6 ) ) padbits |= 1<<6;
if( Config.ExButtonCheck( 1, 5 ) ) padbits |= 1<<5;
if( Config.ExButtonCheck( 1, 4 ) ) padbits |= 1<<4;
if( Config.ExButtonCheck( 1, 11 ) ) padbits |= 1<<11;
if( Config.ExButtonCheck( 1, 10 ) ) padbits |= 1<<10;
if( Config.ExButtonCheck( 1, 9 ) ) padbits |= 1<<9;
if( Config.ExButtonCheck( 1, 8 ) ) padbits |= 1<<8;
}
if( nes->pad->GetExController() == PAD::EXCONTROLLER_FAMILYTRAINER_B ) {
if( Config.ExButtonCheck( 1, 0 ) ) padbits |= 1<<3;
if( Config.ExButtonCheck( 1, 1 ) ) padbits |= 1<<2;
if( Config.ExButtonCheck( 1, 2 ) ) padbits |= 1<<1;
if( Config.ExButtonCheck( 1, 3 ) ) padbits |= 1<<0;
if( Config.ExButtonCheck( 1, 4 ) ) padbits |= 1<<7;
if( Config.ExButtonCheck( 1, 5 ) ) padbits |= 1<<6;
if( Config.ExButtonCheck( 1, 6 ) ) padbits |= 1<<5;
if( Config.ExButtonCheck( 1, 7 ) ) padbits |= 1<<4;
if( Config.ExButtonCheck( 1, 8 ) ) padbits |= 1<<11;
if( Config.ExButtonCheck( 1, 9 ) ) padbits |= 1<<10;
if( Config.ExButtonCheck( 1, 10 ) ) padbits |= 1<<9;
if( Config.ExButtonCheck( 1, 11 ) ) padbits |= 1<<8;
}
}
void EXPAD_FamlyTrainer::SetSyncData( INT type, LONG data )
{
padbits = (DWORD)data;
}
LONG EXPAD_FamlyTrainer::GetSyncData( INT type )
{
return (LONG)padbits;
}