void LightsDriver_LinuxParallel::Set( const LightsState *ls )
{
	// Set LightState to port
	RString s;

	// Prepare Screen Output too for debugging
	s += "LinuxParallel Lights Driver Debug\n";
	s += "Lights Mode: " + LightsModeToString(LIGHTSMAN->GetLightsMode()) + "\n";

	// Cabinet Lights
	int i = 0;
	unsigned char output = 0;
	s += "Cabinet Bits: ";
	FOREACH_CabinetLight( cl )
	{
		s += ls->m_bCabinetLights[cl] ? '1' : '0';
		if ( ls->m_bCabinetLights[cl] )
			output += (unsigned char)pow((double)2,i);
		i++;
	}
	s += "\n";

	int iNumGameButtonsToShow = INPUTMAPPER->GetInputScheme()->ButtonNameToIndex( "Start" );
	if( iNumGameButtonsToShow == GameButton_Invalid )
		iNumGameButtonsToShow = INPUTMAPPER->GetInputScheme()->m_iButtonsPerController;
	FOREACH_ENUM( GameController,  gc )
	{
		s += ssprintf("Controller%d Bits: ",gc+1);
		for( int gb=0; gb<iNumGameButtonsToShow; gb++ )
			s += ls->m_bGameButtonLights[gc][gb] ? '1' : '0';
		s += "\n";
	}
void LightsDriver_SystemMessage::Set( const LightsState *ls )
{
	if( !PREFSMAN->m_bDebugLights )
		return;

	CString s;
	
	s += LightsModeToString(LIGHTSMAN->GetLightsMode()) + "\n";

	s += "Cabinet: ";
	FOREACH_CabinetLight( cl )
	{
		s += ls->m_bCabinetLights[cl] ? '1' : '0';
	}
	s += "\n";

	int iNumGameButtonsToShow = GAMESTATE->m_pCurGame->GetNumGameplayButtons() + GAME_BUTTON_NEXT;
	
	FOREACH_GameController( gc )
	{
		s += ssprintf("Controller%d: ",gc+1);
		for( int gb= int(GAME_BUTTON_NEXT); gb<iNumGameButtonsToShow; gb++ )
		{
			s += ls->m_bGameButtonLights[gc][gb] ? '1' : '0';
		}
		s += "\n";
	}

	if( SCREENMAN )
		SCREENMAN->SystemMessageNoAnimate( s );
}