void ReplicatedStore::StateMachine::Abort()
    {
        WriteNoise(
            TraceComponent, 
            "{0} aborting",
            this->TraceId);

        AcquireExclusiveLock lock(stateLock_);

        ChangeState(ReplicatedStoreState::Closed);
    }
Example #2
0
void	APU_INTERNAL::Write( WORD addr, BYTE data )
{
	switch( addr ) {
		// CH0,1 rectangle
		case	0x4000:	case	0x4001:
		case	0x4002:	case	0x4003:
		case	0x4004:	case	0x4005:
		case	0x4006:	case	0x4007:
			WriteRectangle( (addr<0x4004)?0:1, addr, data );
			break;

		// CH2 triangle
		case	0x4008:	case	0x4009:
		case	0x400A:	case	0x400B:
			WriteTriangle( addr, data );
			break;

		// CH3 noise
		case	0x400C:	case	0x400D:
		case	0x400E:	case	0x400F:
			WriteNoise( addr, data );
			break;

		// CH4 DPCM
		case	0x4010:	case	0x4011:
		case	0x4012:	case	0x4013:
			WriteDPCM( addr, data );
			break;

		case	0x4015:
			reg4015 = data;

			if( !(data&(1<<0)) ) {
				ch0.enable    = 0;
				ch0.len_count = 0;
			}
			if( !(data&(1<<1)) ) {
				ch1.enable    = 0;
				ch1.len_count = 0;
			}
			if( !(data&(1<<2)) ) {
				ch2.enable        = 0;
				ch2.len_count     = 0;
				ch2.lin_count     = 0;
				ch2.counter_start = 0;
			}
			if( !(data&(1<<3)) ) {
				ch3.enable    = 0;
				ch3.len_count = 0;
			}
			if( !(data&(1<<4)) ) {
				ch4.enable    = 0;
				ch4.dmalength = 0;
			} else {
				ch4.enable = 0xFF;
				if( !ch4.dmalength ) {
					ch4.address   = ch4.cache_addr;
					ch4.dmalength = ch4.cache_dmalength;
					ch4.phaseacc  = 0;
				}
			}
			break;

		case	0x4017:
			break;

		// VirtuaNES固有ポート
		case	0x4018:
			UpdateRectangle( ch0, (INT)data );
			UpdateRectangle( ch1, (INT)data );
			UpdateTriangle ( (INT)data );
			UpdateNoise    ( (INT)data );
			break;

		default:
			break;
	}
}