void IlluminateButton( uint8_t theId ) { volatile t_ATime* KeyTimer = GetKeyTimer( theId ); volatile uint8_t* SequenceState = GetSequenceState( theId ); if ( ( MaturedTimer( KeyTimer ) ) || ( SequenceState == 0 ) ) { volatile t_Sequences Sequence = GetSequence( theId ); switch ( GetColour( Sequence, SequenceState, KeyTimer ) ) { case e_Off: ColourNone( theId ); break; case e_ColourA: ColourA( theId ); break; case e_ColourB: ColourB( theId ); break; } } }
bool CChannelHandlerVRC6::HandleInstrument(int Instrument, bool Trigger, bool NewInstrument) { CFamiTrackerDoc *pDocument = m_pSoundGen->GetDocument(); CInstrumentContainer<CInstrumentVRC6> instContainer(pDocument, Instrument); CInstrumentVRC6 *pInstrument = instContainer(); if (!pInstrument) return false; // Setup instrument for (int i = 0; i < CInstrumentVRC6::SEQUENCE_COUNT; ++i) { const CSequence *pSequence = pDocument->GetSequence(SNDCHIP_VRC6, pInstrument->GetSeqIndex(i), i); if (Trigger || !IsSequenceEqual(i, pSequence) || pInstrument->GetSeqEnable(i) > GetSequenceState(i)) { if (pInstrument->GetSeqEnable(i) == 1) SetupSequence(i, pSequence); else ClearSequence(i); } } return true; }