forked from sin365/AxibugEmuOnline
49 lines
2.7 KiB
C++
49 lines
2.7 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
||
// Crazy climber //
|
||
//////////////////////////////////////////////////////////////////////////
|
||
void EXPAD_CrazyClimber::Strobe()
|
||
{
|
||
nes->pad->pad1bit &= ~0xF0;
|
||
nes->pad->pad1bit |= bits & 0xF0;
|
||
nes->pad->pad2bit &= ~0xF0;
|
||
nes->pad->pad2bit |= (bits & 0x0F)<<4;
|
||
}
|
||
|
||
void EXPAD_CrazyClimber::Sync()
|
||
{
|
||
bits = 0;
|
||
|
||
// Left
|
||
if( Config.ExButtonCheck( 0, 0 ) ) bits |= 1<<6;
|
||
if( Config.ExButtonCheck( 0, 1 ) ) bits |= 1<<7;
|
||
if( Config.ExButtonCheck( 0, 2 ) ) bits |= 1<<5;
|
||
if( Config.ExButtonCheck( 0, 3 ) ) bits |= 1<<4;
|
||
|
||
// Right
|
||
if( Config.ExButtonCheck( 0, 4 ) ) bits |= 1<<2;
|
||
if( Config.ExButtonCheck( 0, 5 ) ) bits |= 1<<3;
|
||
if( Config.ExButtonCheck( 0, 6 ) ) bits |= 1<<1;
|
||
if( Config.ExButtonCheck( 0, 7 ) ) bits |= 1<<0;
|
||
|
||
// 同時入力を禁止する
|
||
if( (bits&((1<<0)|(1<<1))) == ((1<<0)|(1<<1)) )
|
||
bits &= ~((1<<0)|(1<<1));
|
||
if( (bits&((1<<2)|(1<<3))) == ((1<<2)|(1<<3)) )
|
||
bits &= ~((1<<2)|(1<<3));
|
||
if( (bits&((1<<4)|(1<<5))) == ((1<<4)|(1<<5)) )
|
||
bits &= ~((1<<4)|(1<<5));
|
||
if( (bits&((1<<6)|(1<<7))) == ((1<<6)|(1<<7)) )
|
||
bits &= ~((1<<6)|(1<<7));
|
||
}
|
||
|
||
void EXPAD_CrazyClimber::SetSyncData( INT type, LONG data )
|
||
{
|
||
bits = (BYTE)data;
|
||
}
|
||
|
||
LONG EXPAD_CrazyClimber::GetSyncData( INT type )
|
||
{
|
||
return bits;
|
||
}
|
||
|