Esempio n. 1
0
void FieldBrowser::OnPaint(wxPaintEvent& event)
{
    wxBufferedPaintDC dc(this);
    PrepareDC(dc);
    auto& config = CalChartConfiguration::GetGlobalConfig();
    dc.SetBackgroundMode(wxTRANSPARENT);
    dc.Clear();

    // let's draw the boxes
    auto offset_x = 0;
    auto offset_y = 0;

    for (auto sheet = mDoc->GetSheetBegin(); sheet != mDoc->GetSheetEnd(); ++sheet) {

        dc.SetUserScale(1, 1);
        dc.SetBrush((config.Get_CalChartBrushAndPen(COLOR_FIELD).first));
        dc.DrawText(sheet->GetName(), offset_x + x_left_padding, offset_y + y_upper_padding);
        offset_y += y_upper_padding + y_name_size + y_name_padding;
        auto mode_size = mDoc->GetMode().Size();
        auto current_size_x = GetSize().x - x_left_padding - x_right_padding;
        auto box_size_y = mode_size.y * (current_size_x / double(mode_size.x));

        dc.SetPen(*wxBLACK_PEN);
        if (mDoc->GetCurrentSheet() == sheet) {
            auto copy_of_pen = *wxYELLOW_PEN;
            copy_of_pen.SetWidth(5);
            dc.SetPen(copy_of_pen);
        }

        dc.DrawRectangle(offset_x + x_left_padding, offset_y, current_size_x, box_size_y);
        dc.SetPen(*wxBLACK_PEN);

        auto origin = dc.GetDeviceOrigin();
        auto userScale = CalcUserScale({ current_size_x, int(box_size_y) }, mode_size);
        dc.SetUserScale(userScale, userScale);
        dc.SetDeviceOrigin(origin.x + offset_x + x_left_padding, origin.y + offset_y);

        dc.SetPen(config.Get_CalChartBrushAndPen(COLOR_FIELD_DETAIL).second);
        DrawMode(dc, config, mDoc->GetMode(), ShowMode_kAnimation);
        for (auto i = 0; i < mDoc->GetNumPoints(); ++i) {
            auto brushAndPen = config.Get_CalChartBrushAndPen(COLOR_POINT_ANIM_FRONT);
            dc.SetBrush(brushAndPen.first);
            dc.SetPen(brushAndPen.second);
            auto position = sheet->GetPoint(i).GetPos();
            auto x = position.x + mDoc->GetMode().Offset().x;
            auto y = position.y + mDoc->GetMode().Offset().y;
            dc.DrawRectangle(x - Int2CoordUnits(1) / 2, y - Int2CoordUnits(1) / 2, Int2CoordUnits(1), Int2CoordUnits(1));
        }
        dc.SetDeviceOrigin(origin.x, origin.y);

        offset_y += box_size_y;
    }
}
Esempio n. 2
0
//---------------------------------------------------------------------------
void __fastcall TRxViewDlg::StatusBarDrawPanel(TStatusBar *StatusBar,
      TStatusPanel *Panel, const TRect &Rect)
{
	if( !m_pRxSet ) return;

	if( Panel == StatusBar->Panels->Items[sbMODE] ){
		m_rcBar[sbMODE] = Rect;
        DrawMode();
	}
	else if( Panel == StatusBar->Panels->Items[sbSN] ){
		m_rcBar[sbSN] = Rect;
        DrawSN();
	}
	else if( Panel == StatusBar->Panels->Items[sbFREQ] ){
		m_rcBar[sbFREQ] = Rect;
        DrawFREQ();
	}
	else if( Panel == StatusBar->Panels->Items[sbLEVEL] ){
		if( !m_pBitmapLevel || ((Rect.Right-Rect.Left) != m_pBitmapLevel->Width) ){
			m_rcBar[sbLEVEL] = Rect;
			m_levelXW = Rect.Right - Rect.Left;
	    	m_levelYW = Rect.Bottom - Rect.Top;
			if( !m_pBitmapLevel ){
				m_pBitmapLevel = new Graphics::TBitmap;
	        }
    	    m_pBitmapLevel->Width = m_levelXW;
        	m_pBitmapLevel->Height = m_levelYW;
	    }
		StatusBar->Canvas->Draw(m_rcBar[sbLEVEL].Left, m_rcBar[sbLEVEL].Top, m_pBitmapLevel);
    }
	else if( Panel == StatusBar->Panels->Items[sbWATER] ){
		if( !m_pBitmapFFT || ((Rect.Right-Rect.Left) != m_pBitmapFFT->Width) ){
			m_rcBar[sbWATER] = Rect;
			m_fftXW = Rect.Right - Rect.Left;
	    	m_fftYW = Rect.Bottom - Rect.Top;
			if( !m_pBitmapFFT ){
				m_pBitmapFFT = new Graphics::TBitmap;
	        }
    	    m_pBitmapFFT->Width = m_fftXW;
        	m_pBitmapFFT->Height = m_fftYW;
            DrawWater(TRUE);
	    }
		StatusBar->Canvas->Draw(m_rcBar[sbWATER].Left, m_rcBar[sbWATER].Top, m_pBitmapFFT);
        DrawWaterCursor();
    }
	else if( Panel == StatusBar->Panels->Items[sbEND] ){
		AnsiString as = PC->Font->Name;
//		TFontStyles fs = PC->Font->Style;
//	    AddStyle(as, PC->Font->Charset, FontStyle2Code(fs));
	    AddStyle(as, PC->Font->Charset, 0);
        StatusBar->Canvas->TextRect(Rect, Rect.Left + 1, Rect.Top + 1, as.c_str());
    }
}
Esempio n. 3
0
wxImage
GetOmniLinesImage(const CalChartConfiguration& config, const ShowMode& mode)
{
    auto fieldsize = mode.FieldSize();
    wxBitmap bmp(fieldsize.x, fieldsize.y, 32);
    wxMemoryDC dc;
    dc.SelectObject(bmp);
    dc.SetBackground(*wxTRANSPARENT_BRUSH);
    dc.Clear();
    DrawMode(dc, config, mode, ShowMode_kOmniView);
    return bmp.ConvertToImage();
}
Esempio n. 4
0
//---------------------------------------------------------------------------
void __fastcall TRxViewDlg::UpdateStatus(void)
{
	if( !m_pRxSet ) return;

	DrawMode();
    DrawSN();
    DrawFREQ();
	if( m_pBitmapLevel ){
	    DrawLevel();
		StatusBar->Canvas->Draw(m_rcBar[sbLEVEL].Left, m_rcBar[sbLEVEL].Top, m_pBitmapLevel);
    }
	if( m_pBitmapFFT ){
	    DrawWater(FALSE);
		StatusBar->Canvas->Draw(m_rcBar[sbWATER].Left, m_rcBar[sbWATER].Top, m_pBitmapFFT);
        DrawWaterCursor();
    }
}
Esempio n. 5
0
void DrawForPrintingHelper(wxDC& dc, const CalChartConfiguration& config, const CalChartDoc& show, const CC_sheet& sheet, unsigned ref, bool landscape)
{
    // set up everything to be restored after we print
    SaveAndRestore_DeviceOrigin orig_dev(dc);
    SaveAndRestore_UserScale orig_scale(dc);
    SaveAndRestore_Font orig_font(dc);

    // get the page dimensions
    int pageW, pageH;
    dc.GetSize(&pageW, &pageH);

    dc.Clear();
    dc.SetLogicalFunction(wxCOPY);

    // Print the field:
    // create a field for drawing:
    const auto pts = sheet.GetPoints();
    auto boundingBox = GetMarcherBoundingBox(pts);
    auto mode = CreateFieldForPrinting(Coord2Int(boundingBox.first.x), Coord2Int(boundingBox.second.x), landscape);

    // set the origin and scaling for drawing the field
    dc.SetDeviceOrigin(kFieldBorderOffset*pageW, kFieldTop*pageH);
    auto scale = (pageW-2*kFieldBorderOffset*pageW)/(double)mode->Size().x;
    dc.SetUserScale(scale, scale);

    // draw the field.
    DrawMode(dc, config, *mode, ShowMode_kPrinting);
    wxFont *pointLabelFont = wxTheFontList->FindOrCreateFont((int)Float2Coord(config.Get_DotRatio() * config.Get_NumRatio()), wxSWISS, wxNORMAL, wxNORMAL);
    dc.SetFont(*pointLabelFont);
    for (auto i = 0u; i < pts.size(); i++)
    {
        const auto point = pts.at(i);
        const auto pos = point.GetPos(ref) + mode->Offset();
        dc.SetBrush(*wxBLACK_BRUSH);
        DrawPointHelper(dc, config, pos, point, show.GetPointLabel(i));
    }

    // now reset everything to draw the rest of the text
    dc.SetDeviceOrigin(Int2Coord(0), Int2Coord(0));
    dc.SetBrush(*wxTRANSPARENT_BRUSH);

    // set the page for drawing:
    dc.GetSize(&pageW, &pageH);
    if (landscape)
    {
        dc.SetUserScale(pageW/kSizeXLandscape, pageH/kSizeYLandscape);
        pageW = kSizeXLandscape;
        pageH = kSizeYLandscape;
    }
    else
    {
        dc.SetUserScale(pageW/kSizeX, pageH/kSizeY);
        pageW = kSizeX;
        pageH = kSizeY;
    }

    // draw the header
    dc.SetFont(*wxTheFontList->FindOrCreateFont(16, wxROMAN, wxNORMAL, wxBOLD));
    dc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1, wxSOLID));

    DrawCenteredText(dc, kHeader, wxPoint(pageW*kHeaderLocation[landscape][0], pageH*kHeaderLocation[landscape][1]));

    DrawCenteredText(dc, sheet.GetNumber(), wxPoint(pageW*kUpperNumberPosition[landscape][0], pageH*kUpperNumberPosition[landscape][1]));
    DrawCenteredText(dc, sheet.GetNumber(), wxPoint(pageW*kLowerNumberPosition[landscape][0], pageH*kLowerNumberPosition[landscape][1]));
    dc.DrawRectangle(pageW*kLowerNumberBox[landscape][0], pageH*kLowerNumberBox[landscape][1], pageW*kLowerNumberBox[landscape][2], pageH*kLowerNumberBox[landscape][3]);

    dc.SetFont(*wxTheFontList->FindOrCreateFont(8, wxSWISS, wxNORMAL, wxNORMAL));

    DrawLineOverText(dc, kMusicLabel, wxPoint(pageW*kMusicLabelPosition[landscape][0], pageH*kMusicLabelPosition[landscape][1]), pageW*kMusicLabelPosition[landscape][2]);
    DrawLineOverText(dc, kFormationLabel, wxPoint(pageW*kFormationLabelPosition[landscape][0], pageH*kFormationLabelPosition[landscape][1]), pageW*kFormationLabelPosition[landscape][2]);
    DrawLineOverText(dc, kGameLabel, wxPoint(pageW*kGameLabelPosition[landscape][0], pageH*kGameLabelPosition[landscape][1]), pageW*kGameLabelPosition[landscape][2]);
    DrawLineOverText(dc, kPageLabel, wxPoint(pageW*kPageLabelPosition[landscape][0], pageH*kPageLabelPosition[landscape][1]), pageW*kPageLabelPosition[landscape][2]);
    DrawCenteredText(dc, kSideLabel, wxPoint(pageW*kSideLabelPosition[landscape][0], pageH*kSideLabelPosition[landscape][1]));

    // draw arrows
    DrawCenteredText(dc, kUpperSouthLabel, wxPoint(pageW*kUpperSouthPosition[landscape][0], pageH*kUpperSouthPosition[landscape][1]));
    DrawArrow(dc, wxPoint(pageW*kUpperSouthArrow[landscape][0], pageH*kUpperSouthArrow[landscape][1]), pageW*kUpperSouthArrow[landscape][2], false);
    DrawCenteredText(dc, kUpperNorthLabel, wxPoint(pageW*kUpperNorthPosition[landscape][0], pageH*kUpperNorthPosition[landscape][1]));
    DrawArrow(dc, wxPoint(pageW*kUpperNorthArrow[landscape][0], pageH*kUpperNorthArrow[landscape][1]), pageW*kUpperNorthArrow[landscape][2], true);
    DrawCenteredText(dc, kLowerSouthLabel, wxPoint(pageW*kLowerSouthPosition[landscape][0], pageH*kLowerSouthPosition[landscape][1]));
    DrawArrow(dc, wxPoint(pageW*kLowerSouthArrow[landscape][0], pageH*kLowerSouthArrow[landscape][1]), pageW*kLowerSouthArrow[landscape][2], false);
    DrawCenteredText(dc, kLowerNorthLabel, wxPoint(pageW*kLowerNorthPosition[landscape][0], pageH*kLowerNorthPosition[landscape][1]));
    DrawArrow(dc, wxPoint(pageW*kLowerNorthArrow[landscape][0], pageH*kLowerNorthArrow[landscape][1]), pageW*kLowerNorthArrow[landscape][2], true);

    DrawCont(dc, sheet.GetPrintableContinuity(), wxRect(wxPoint(10, pageH*kContinuityStart[landscape]), wxSize(pageW-20, pageH-pageH*kContinuityStart[landscape])), landscape);
}
void SelectSong(void)
{
	DWORD count,i;
	static DWORD current;
	static DWORD SelectCurrent;
	static int Selected, zoom,toggle,speed;

	RECT	lRect;
	int ModeTemp1p, ModeTemp2p;
	
	static	time_t t;
	
	static	int a,b,c;

	static	int iMove;

	RECT DiscSize,Screen;

	char s[50];

	if(First==0)
	{
		startTimer=timeGetTime();
		if(Start1p==FALSE)
		{
			HighSpeed1p=1;
			bModeMirror1p=FALSE;
			bModeNonstep1p=FALSE;
			bModeSynchro=FALSE;
			bModeUnion1p=FALSE;
			bModeRandom1p=FALSE;
			b4dMix1p=FALSE;
				HighSpeed1p_1=1;
				HighSpeed1p_3=1;
				HighSpeed1p_5=1;
				HighSpeed1p_7=1;
				HighSpeed1p_9=1;
			bModeVanish1p=FALSE;
			bModeSuddenR1p=FALSE;
			bModeRandomS1p=FALSE;

		}
		if(Start2p==FALSE)
		{
			HighSpeed2p=1;
			bModeMirror2p=FALSE;
			bModeNonstep2p=FALSE;
			bModeUnion2p=FALSE;
			bModeRandom2p=FALSE;
			b4dMix2p=FALSE;
				HighSpeed2p_1=1;
				HighSpeed2p_3=1;
				HighSpeed2p_5=1;
				HighSpeed2p_7=1;
				HighSpeed2p_9=1;
			bModeVanish2p=FALSE;
			bModeSuddenR1p=FALSE;
			bModeRandomS1p=FALSE;
		}
		DDFillSurface(g_pDDSPrimary,0);
		DDFillSurface(g_pDDSBack,0);
		
		//FadeToSurface(SelectBack);
		g_pDDSBack->BltFast(0,0, SelectBack, NULL, DDBLTFAST_NOCOLORKEY);
		
		a=Start1p;b=Start2p;
		First++;

		if(g_dsSelectSong)g_dsSelectSong->Play(0,0,DSBPLAY_LOOPING);
	}

	DiscSize.top=0;
	DiscSize.left=0;
	DiscSize.right=300;
	DiscSize.bottom=200;

	for(count=0;;count++)
	{
		if(count!=0)CSONG[count].Prev=count-1;
		
		CSONG[count].Next=count+1;
		
		if(CSONG[count].bpm==0)
		{
			CSONG[count].Prev=0;
			count--;
			CSONG[count].Next=0;
			CSONG[0].Prev=count;
			break;
		}
	}

	if(speed==1) //일단은 변수를 이용합니다. 곧 타이머 형식으로 바꾸도록 합시다. 
	{
		speed=0;
		if(toggle==0)
		{
			if(zoom==10)toggle=1;
			else zoom++;
		}
		else if(toggle==1)
		{
			if(zoom==0)toggle=0;
			else zoom--;
		}
	}
	else speed++; 

	ReadGameInput();

	if(PressedKey1p[5]==TRUE)
	{
		if(Start1p==FALSE)
		{
			Start1p=TRUE;
		}
	}
	if(PressedKey2p[5]==TRUE)
	{
		if(Start2p==FALSE)
		{
			Start2p=TRUE;
		}
	}

	ModeTemp1p=ScanHiddenMode1p();

	if(ModeTemp1p)if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}

	switch(ModeTemp1p)
	{
		case HMODE_SUDDENR:
			bModeSuddenR1p=TRUE;
			bModeVanish1p=FALSE;

			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_RANDOMS:
			bModeRandomS1p=TRUE;
			HighSpeed1p=1;

			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_2X:
			HighSpeed1p=2;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_4X:
			HighSpeed1p=4;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_8X:
			HighSpeed1p=8;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_MIRROR:
			bModeMirror1p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_NONSTEP:
			bModeNonstep1p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_SYNCHRO:
			bModeSynchro=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_UNION:
			bModeUnion1p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_RANDOM:
			bModeRandom1p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_4DMIX:
			srand((unsigned) time(&t));

			HighSpeed1p_1=1+rand()%8;
			HighSpeed1p_3=1+rand()%8;
			HighSpeed1p_5=1+rand()%8;
			HighSpeed1p_7=1+rand()%8;
			HighSpeed1p_9=1+rand()%8;

			b4dMix1p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_VANISH:
			bModeVanish1p=TRUE;
			bModeSuddenR2p=FALSE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
/*		case HMODE_NONSTOPDOUBLE:
			if(Start1p&&Start2p)break;
			Double=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;*/
		case HMODE_CANCEL:
			if(g_dsCancel)g_dsCancel->Play(0,0,0);
			HighSpeed1p=1;
			bModeMirror1p=FALSE;
			bModeNonstep1p=FALSE;
			bModeSynchro=FALSE;
			bModeUnion1p=FALSE;
			bModeRandom1p=FALSE;
			b4dMix1p=FALSE;
				HighSpeed1p_1=1;
				HighSpeed1p_3=1;
				HighSpeed1p_5=1;
				HighSpeed1p_7=1;
				HighSpeed1p_9=1;
			bModeVanish1p=FALSE;
			bModeSuddenR1p=FALSE;
			bModeRandomS1p=FALSE;
			Double=FALSE;
			break;
	}

	ModeTemp2p=ScanHiddenMode2p();
	if(ModeTemp2p)if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
	
	switch(ModeTemp2p)
	{
		case HMODE_SUDDENR:
			bModeSuddenR2p=TRUE;
			bModeVanish2p=FALSE;

			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_RANDOMS:
			bModeRandomS2p=TRUE;
			HighSpeed2p=1;

			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_2X:
			HighSpeed2p=2;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_4X:
			HighSpeed2p=4;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_8X:
			HighSpeed2p=8;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_MIRROR:
			bModeMirror2p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_NONSTEP:
			bModeNonstep2p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_SYNCHRO:
			bModeSynchro=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_UNION:
			bModeUnion2p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_RANDOM:
			bModeRandom2p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_4DMIX:

			srand((unsigned) time(&t));

			HighSpeed2p_1=1+rand()%8;
			HighSpeed2p_3=1+rand()%8;
			HighSpeed2p_5=1+rand()%8;
			HighSpeed2p_7=1+rand()%8;
			HighSpeed2p_9=1+rand()%8;

			b4dMix2p=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
		case HMODE_VANISH:
			bModeVanish2p=TRUE;
			bModeSuddenR2p=FALSE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
			break;
/*		case HMODE_NONSTOPDOUBLE:
			if(Start1p&&Start2p)break;
			Double=TRUE;
			if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);}
*/			break;

		case HMODE_CANCEL:
			if(g_dsCancel)g_dsCancel->Play(0,0,0);
			HighSpeed2p=1;
			bModeMirror2p=FALSE;
			bModeNonstep2p=FALSE;
			bModeUnion2p=FALSE;
			bModeRandom2p=FALSE;
			b4dMix2p=FALSE;
				HighSpeed2p_1=1;
				HighSpeed2p_3=1;
				HighSpeed2p_5=1;
				HighSpeed2p_7=1;
				HighSpeed2p_9=1;
			bModeVanish2p=FALSE;
			bModeSuddenR2p=FALSE;
			bModeRandomS2p=FALSE;
			Double=FALSE;
			break;
	}

	if((Start1p && PressedKey1p[1]) || (Start2p && PressedKey2p[1]))
	{
		if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
		if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);}

		Selected=0;

		iMove=1;
		current=CSONG[CSONG[current].Prev].Prev;
	}

	if((Start1p && PressedKey1p[3]) || (Start2p && PressedKey2p[3]))
	{
		if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
		if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);}

		Selected=0;

		iMove=-1;
		current=CSONG[CSONG[current].Next].Next;
	}
	
	if((Start1p && PressedKey1p[7]) || (Start2p && PressedKey2p[7]))
	{
		if(Selected==7)
		{
			SelectCurrent=current;
			PressedKey1p[0]=3;
		}
		else
		{
			if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
			if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);}
/*			if(CSONG[current].Int_Song)
			{
				if(g_dsSelectSong)g_dsSelectSong->Stop();
				g_Cur_Song=CSONG[current].Int_Song;
				g_Cur_Song->SetCurrentPosition(0);
				g_Cur_Song->Play(0,0,0);
			}
			else*/ if(access(CSONG[current].WavsName,04)==0)
			{
				IntroFlag=TRUE;
				intro= new CMedia;
				intro->OpenMediaFile(CSONG[current].WavsName);
				intro->OnMediaPlay();
			}
			else if(access(CSONG[current].Wavs3Name,04)==0)
			{
				IntroFlag=TRUE;
				intro= new CMedia;
				intro->OpenMediaFile(CSONG[current].Wavs3Name);
				intro->OnMediaPlay();
			}

			Selected=7;
		}
	}
	
	if((Start1p && PressedKey1p[9]) || (Start2p && PressedKey2p[9]))
	{
		if(Selected==9)
		{
			SelectCurrent=CSONG[current].Next;
			PressedKey1p[0]=3;
		}
		else
		{
			if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
			if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);}
/*			if(CSONG[CSONG[current].Next].Int_Song)
			{
				if(g_dsSelectSong)g_dsSelectSong->Stop();
				g_Cur_Song=CSONG[CSONG[current].Next].Int_Song;
				g_Cur_Song->SetCurrentPosition(0);
				g_Cur_Song->Play(0,0,0);
			}
			else */if(access(CSONG[CSONG[current].Next].WavsName,04)==0)
			{
				IntroFlag=TRUE;
				intro= new CMedia;
				intro->OpenMediaFile(CSONG[CSONG[current].Next].WavsName);
				intro->OnMediaPlay();
			}
			else if(access(CSONG[CSONG[current].Next].Wavs3Name,04)==0)
			{
				IntroFlag=TRUE;
				intro= new CMedia;
				intro->OpenMediaFile(CSONG[CSONG[current].Next].Wavs3Name);
				intro->OnMediaPlay();
			}

			Selected=9;
		}
	}

	if(PressedKey1p[0]==3)
	{
		PressedKey1p[0]=0;

		if(CSONG[SelectCurrent].HaveCrazy==TRUE)GameMode=MODE_CRAZY,Double=FALSE;
	   	else if(CSONG[SelectCurrent].HaveDouble==TRUE)GameMode=MODE_DOUBLE,Double=TRUE;
	   	else if(CSONG[SelectCurrent].HaveEasy==TRUE)GameMode=MODE_EASY,Double=FALSE;
	   	else if(CSONG[SelectCurrent].HaveHard==TRUE)GameMode=MODE_HARD,Double=FALSE;
		else return;

		if(Start1p && Start2p)
		{
			Couple=TRUE;
			if(CSONG[SelectCurrent].HaveCouple==FALSE)bModeSynchro=TRUE;
		} else Couple=FALSE;

		if(SongBack)
		{
			SongBack->Release();
			SongBack=NULL;
		}
		
		if(g_dsCancel)
		{
			g_dsCancel->Stop();
			g_dsCancel->Play(0,0,0);
		}

		if(SongTitle)
		{
			SongTitle->Release();
			SongTitle=NULL;
		}
		SongTitle = DDLoadBitmap(g_pDD,CSONG[SelectCurrent].TitlePath,0,0);
		SongBack = DDLoadBitmap(g_pDD,CSONG[SelectCurrent].BMPPath,0,0);
		if(SongBack == NULL)
		{
			if(SongTitle)SongBack=DDLoadBitmap(g_pDD,CSONG[SelectCurrent].TitlePath,0,0);
			else SongBack=DDLoadBitmap(g_pDD, "Images\\Back.bmp",0,0);
		}
		if(SongTitle == NULL)
		{
			SongTitle=DDLoadBitmap(g_pDD,"Images\\NoTitle.bmp",0,0);
			if(SongTitle)g_pDDSPrimary->BltFast(0,0,SongTitle,NULL,DDBLTFAST_NOCOLORKEY);
		}
		else g_pDDSPrimary->BltFast(0,0,SongTitle,NULL,DDBLTFAST_NOCOLORKEY);

		if(GameMode == MODE_DOUBLE)
		{
			memcpy(&Data_Double,&CSONG[SelectCurrent].Data_Double,sizeof(CSONG[SelectCurrent].Data_Double));
		}
		else if(Couple==TRUE)
		{
			switch(GameMode)
			{
				case MODE_CRAZY:
					if(bModeSynchro)
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Crazy,sizeof(CSONG[SelectCurrent].Data_Crazy));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Crazy,sizeof(CSONG[SelectCurrent].Data_Crazy));

						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data1[i][0];
							Data1[i][6]=Data1[i][1];
							Data1[i][7]=Data1[i][2];
							Data1[i][8]=Data1[i][3];
							Data1[i][9]=Data1[i][4];
						}
					}
					else
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Crazy1,sizeof(CSONG[SelectCurrent].Data_Crazy1));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Crazy1,sizeof(CSONG[SelectCurrent].Data_Crazy1));
					}
					break;
				case MODE_EASY:
					if(bModeSynchro)
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Easy,sizeof(CSONG[SelectCurrent].Data_Easy));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Easy,sizeof(CSONG[SelectCurrent].Data_Easy));
						
						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data1[i][0];
							Data1[i][6]=Data1[i][1];
							Data1[i][7]=Data1[i][2];
							Data1[i][8]=Data1[i][3];
							Data1[i][9]=Data1[i][4];
						}
					}
					else
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Easy1,sizeof(CSONG[SelectCurrent].Data_Easy1));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Easy1,sizeof(CSONG[SelectCurrent].Data_Easy1));
					}
					break;
				case MODE_HARD:
					if(bModeSynchro)
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Hard,sizeof(CSONG[SelectCurrent].Data_Hard));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Hard,sizeof(CSONG[SelectCurrent].Data_Hard));
						
						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data1[i][0];
							Data1[i][6]=Data1[i][1];
							Data1[i][7]=Data1[i][2];
							Data1[i][8]=Data1[i][3];
							Data1[i][9]=Data1[i][4];
						}
					}
					else
					{
						memcpy(&Data,&CSONG[SelectCurrent].Data_Hard1,sizeof(CSONG[SelectCurrent].Data_Hard1));
						memcpy(&Data1,&CSONG[SelectCurrent].Data_Hard1,sizeof(CSONG[SelectCurrent].Data_Hard1));
					}
					break;
			}
		}
		else 
		{
			switch(GameMode)
			{
				case MODE_CRAZY:
					if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Crazy,sizeof(Data));
					else
					{
						memcpy(&Data,CSONG[SelectCurrent].Data_Crazy,sizeof(Data));
						memcpy(&Data1,CSONG[SelectCurrent].Data_Crazy,sizeof(Data));
						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data[i][0];
							Data1[i][6]=Data[i][1];
							Data1[i][7]=Data[i][2];
							Data1[i][8]=Data[i][3];
							Data1[i][9]=Data[i][4];
						}
					}
					break;
				case MODE_EASY:
					if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Easy,sizeof(Data));
					else
					{
						memcpy(&Data,CSONG[SelectCurrent].Data_Easy,sizeof(Data));
						memcpy(&Data1,CSONG[SelectCurrent].Data_Easy,sizeof(Data));
						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data[i][0];
							Data1[i][6]=Data[i][1];
							Data1[i][7]=Data[i][2];
							Data1[i][8]=Data[i][3];
							Data1[i][9]=Data[i][4];
						}
					}
					break;
				case MODE_HARD:
					if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Hard,sizeof(Data));
					else
					{
						memcpy(&Data,CSONG[SelectCurrent].Data_Hard,sizeof(Data));
						memcpy(&Data1,CSONG[SelectCurrent].Data_Hard,sizeof(Data));
						for(i=0;i<MAX_DATA;i++)
						{
							Data1[i][5]=Data[i][0];
							Data1[i][6]=Data[i][1];
							Data1[i][7]=Data[i][2];
							Data1[i][8]=Data[i][3];
							Data1[i][9]=Data[i][4];
						}
					}
					break;
			}
		}

		bpm=CSONG[SelectCurrent].bpm;
		bpm2=CSONG[SelectCurrent].bpm2;
		bpm3=CSONG[SelectCurrent].bpm3;
		bunki=CSONG[SelectCurrent].Bunki;
		bunki2=CSONG[SelectCurrent].Bunki2;
		
		switch(GameMode)
		{
			case MODE_CRAZY:
				start=CSONG[SelectCurrent].Crazy_Start;
				start2=CSONG[SelectCurrent].Crazy_Start2;
				start3=CSONG[SelectCurrent].Crazy_Start3;
				tick=CSONG[SelectCurrent].Crazy_Tick;
				break;
			case MODE_HARD:
				start=CSONG[SelectCurrent].Hard_Start;
				start2=CSONG[SelectCurrent].Hard_Start2;
				start3=CSONG[SelectCurrent].Hard_Start3;
				tick=CSONG[SelectCurrent].Hard_Tick;
				break;
			case MODE_EASY:
				start=CSONG[SelectCurrent].Easy_Start;
				start2=CSONG[SelectCurrent].Easy_Start2;
				start3=CSONG[SelectCurrent].Easy_Start3;
				tick=CSONG[SelectCurrent].Easy_Tick;
				break;
			case MODE_DOUBLE:
				start=CSONG[SelectCurrent].Double_Start;
				start2=CSONG[SelectCurrent].Double_Start2;
				start3=CSONG[SelectCurrent].Double_Start3;
				tick=CSONG[SelectCurrent].Double_Tick;
				break;
		}

		strcpy(SongName,CSONG[SelectCurrent].WavName);
		strcpy(SongName2,CSONG[SelectCurrent].MP3Name);
		strcpy(SongName3,CSONG[SelectCurrent].MPGName);
		strcpy(Title,CSONG[SelectCurrent].SongTitle);

		Judgement1p=NONE;
		Judgement2p=NONE;

		if(GameMode==MODE_DOUBLE)ProgramState=DOUBLE;
//		else if(Couple)ProgramState=COUPLE;
		else ProgramState=STAGE1;
		
		if(GameMode==MODE_DOUBLE)
		{
			if(Start1p && Start2p) Start2p=FALSE;
		}
		Selected=0;
		
		if(g_dsSelectSong)g_dsSelectSong->Stop();
		if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;}
		
		if(access(SongName,04)==0)
		{
			SongFlag=TRUE;
			song=new CMedia;
			song->OpenMediaFile(SongName);
		}
		else if(access(SongName2,04)==0)
		{
			SongFlag=TRUE;
			song=new CMedia;
			song->OpenMediaFile(SongName2);
		}
		else SongFlag=FALSE;

		DDFillSurface(g_pDDSBack, 0); // ????

		First=0;
		Combo1p=0;
		Combo2p=0;

		cPerfect1p=0;
		cGreat1p=0;
		cGood1p=0;
		cBad1p=0;
		cMiss1p=0;
		cMaxCombo1p=0;

		cPerfect2p=0;
		cGreat2p=0;
		cGood2p=0;
		cBad2p=0;
		cMiss2p=0;
		cMaxCombo2p=0;

		dwState=0;
		dwState2=0;

		start1=0;

		PressedKey1p[0]=0;
		PressedKey2p[0]=0;
		SelectCurrent=0;

		return;
		
	}

	g_pDDSBack->BltFast(0,0,SelectBack,NULL,DDBLTFAST_NOCOLORKEY);

	curTimer=timeGetTime();

	int i2;

	i2=(int)(curTimer-startTimer)/1000;
	sprintf(s,"%02d", (40 - i2));
	//sprintf(s, "99");

	if(0>=(40-i2))
	{
		if(Selected==7)SelectCurrent=current,PressedKey1p[0]=3;
		else if(Selected==9)SelectCurrent=CSONG[current].Next, PressedKey1p[0]=3;
		else SelectCurrent=current,PressedKey1p[0]=3;
	}
		
	DisplayNumber(560,8,s);
	
	if(Selected==7)
	{
			Screen.top=50-zoom;
			Screen.bottom=50+DISCSIZE_Y+zoom;
			Screen.left=10-zoom;
			Screen.right=10+DISCSIZE_X+zoom;
	}
	else
	{
		Screen.top=50;
		Screen.bottom=50+DISCSIZE_Y;
		Screen.left=10;
		Screen.right=10+DISCSIZE_X;
	}
	
	if(iMove<0)
	{
		if(iMove<=-640)iMove=0;
		else 
		{
			iMove-=8;

			ClpBlt3(10+iMove,50,CSONG[CSONG[CSONG[current].Prev].Prev].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY);
			ClpBlt3(650+iMove,50,CSONG[current].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY);
		}
	}
	else if(iMove>0)
	{
		if(iMove>=640)iMove=0;
		else
		{
			iMove+=8;
		
			ClpBlt3(-630+iMove,50,CSONG[current].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY);
			ClpBlt3(10+iMove,50,CSONG[CSONG[CSONG[current].Next].Next].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY);
		}
	}
	else if(iMove==0)g_pDDSBack->Blt(&Screen,CSONG[current].DiskImage, &DiscSize, DDBLT_KEYSRC,NULL);
	
	if(Selected==9)
	{
			Screen.top=50-zoom;
			Screen.bottom=50+DISCSIZE_Y+zoom;
			Screen.left=330-zoom;
			Screen.right=330+DISCSIZE_X+zoom;
	}
	else
	{
		Screen.top=50;
		Screen.bottom=50+DISCSIZE_Y;
		Screen.left=330;
		Screen.right=330+DISCSIZE_X;
	}
	if(iMove<0)
	{
		if(iMove<=-640)iMove=0;
		else
		{
			iMove-=8;

			ClpBlt3(330+iMove,50,CSONG[CSONG[CSONG[CSONG[current].Prev].Prev].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY);
			ClpBlt3(970+iMove,50,CSONG[CSONG[current].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY);
		}
	}
	else if(iMove>0)
	{
		if(iMove>=640)iMove=0;
		else
		{
			iMove+=8;
		
			ClpBlt3(-310+iMove,50,CSONG[CSONG[current].Next].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY);
			ClpBlt3(330+iMove,50,CSONG[CSONG[CSONG[CSONG[current].Next].Next].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY);
		}
	}
	else if(iMove==0)g_pDDSBack->Blt(&Screen,CSONG[CSONG[current].Next].DiskImage, &DiscSize, DDBLT_KEYSRC,NULL);

	g_pDDSBack->BltFast(0,250,ShiftLeft,NULL,DDBLTFAST_SRCCOLORKEY);
	g_pDDSBack->BltFast(320,250,ShiftRight,NULL,DDBLTFAST_SRCCOLORKEY);
	
/*	if(PressedKey2p[0]==6)
	{
		switch(GameMode)
		{
			case MODE_EASY:GameMode=MODE_HARD;
				break;
			case MODE_HARD:GameMode=MODE_EASY;
				break;
		}
		PressedKey2p[0]=0;
	}

	else if(PressedKey2p[0]==4)
	{
		switch(GameMode)
		{
			case MODE_EASY:GameMode=MODE_HARD;
				break;
			case MODE_HARD:GameMode=MODE_EASY;
				break;
		}
		PressedKey2p[0]=0;
	} */
/*	switch(GameMode)
	{
		case MODE_EASY:DisplayMessage(200,460,"EASY");break;
		case MODE_HARD:DisplayMessage(200,460,"HARD");break;
	}
	switch(Couple)
	{
		case TRUE:DisplayMessage(100,460,"COUPLE MODE");break;
		case FALSE:DisplayMessage(100,460,"SINGLE MODE");break;
	}
*/	
	if(Selected==7)DisplayMessage(200,300,CSONG[current].SongTitle);
	else if(Selected==9)DisplayMessage(200,300,CSONG[CSONG[current].Next].SongTitle);

	if(bModeMirror1p)DrawMode(0,200,HMODE_MIRROR);
	if(bModeNonstep1p)DrawMode(0,240,HMODE_NONSTEP);
	if(bModeSynchro)DrawMode(0,280,HMODE_SYNCHRO);
	if(bModeUnion1p)DrawMode(0,320,HMODE_UNION);
	if(bModeRandom1p)DrawMode(0,360,HMODE_RANDOM);
	if(bModeVanish1p)DrawMode(0,400,HMODE_VANISH);

	if(HighSpeed1p>1)DrawMode(0,160,HMODE_2X);

	if(bModeMirror2p)DrawMode(600,200,HMODE_MIRROR);
	if(bModeNonstep2p)DrawMode(600,240,HMODE_NONSTEP);
	if(bModeUnion2p)DrawMode(600,320,HMODE_UNION);
	if(bModeRandom2p)DrawMode(600,360,HMODE_RANDOM);
	if(bModeVanish2p)DrawMode(600,400,HMODE_VANISH);

	if(HighSpeed2p>1)DrawMode(600,160,HMODE_2X);

	if(CSONG[current].HaveDouble && iMove==0 )g_pDDSBack->BltFast(0,50, DoubleIcon,NULL, DDBLTFAST_SRCCOLORKEY);
	if(CSONG[CSONG[current].Next].HaveDouble && iMove==0 )g_pDDSBack->BltFast(320,50, DoubleIcon, NULL, DDBLTFAST_SRCCOLORKEY);

	if(CSONG[current].HaveCrazy && iMove==0 )g_pDDSBack->BltFast(0,50, CrazyIcon,NULL, DDBLTFAST_SRCCOLORKEY);
	if(CSONG[CSONG[current].Next].HaveCrazy && iMove==0 )g_pDDSBack->BltFast(320,50, CrazyIcon, NULL, DDBLTFAST_SRCCOLORKEY);

	if(CSONG[current].HaveHard && iMove==0 )g_pDDSBack->BltFast(0,50, HardIcon,NULL, DDBLTFAST_SRCCOLORKEY);
	if(CSONG[CSONG[current].Next].HaveHard && iMove==0 )g_pDDSBack->BltFast(320,50, HardIcon, NULL, DDBLTFAST_SRCCOLORKEY);

	if(CSONG[current].HaveEasy && iMove==0 )g_pDDSBack->BltFast(0,50, EasyIcon,NULL, DDBLTFAST_SRCCOLORKEY);
	if(CSONG[CSONG[current].Next].HaveEasy && iMove==0 )g_pDDSBack->BltFast(320,50, EasyIcon, NULL, DDBLTFAST_SRCCOLORKEY);

/*	int DiffL,DiffR;

	DiffL=0,DiffR=0;
	if(CSONG[current].Double_Diff)DiffL=CSONG[current].Double_Diff;
	else if(CSONG[current].Easy_Diff)DiffL=CSONG[current].Easy_Diff;
	else if(CSONG[current].Hard_Diff)DiffL=CSONG[current].Hard_Diff;
	else if(CSONG[current].Crazy_Diff)DiffL=CSONG[current].Crazy_Diff;

	if(CSONG[CSONG[current].Next].Double_Diff)DiffR=CSONG[CSONG[current].Next].Double_Diff;
	else if(CSONG[CSONG[current].Next].Easy_Diff)DiffR=CSONG[CSONG[current].Next].Easy_Diff;
	else if(CSONG[CSONG[current].Next].Hard_Diff)DiffR=CSONG[CSONG[current].Next].Hard_Diff;
	else if(CSONG[CSONG[current].Next].Crazy_Diff)DiffR=CSONG[CSONG[current].Next].Crazy_Diff;

	if(iMove==0)
	for(i=DiffL;;i--)
	{
		if(i==0)break;
		if(i==1)g_pDDSBack->BltFast(285,145,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==2)g_pDDSBack->BltFast(283,125,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==3)g_pDDSBack->BltFast(283,165,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==4)g_pDDSBack->BltFast(281,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==5)g_pDDSBack->BltFast(281,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==6)g_pDDSBack->BltFast(279,85,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==7)g_pDDSBack->BltFast(279,185,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
	}

	if(iMove==0)
	for(i=DiffR;;i--)
	{
		if(i==0)break;
		if(i==1)g_pDDSBack->BltFast(330,145,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==2)g_pDDSBack->BltFast(332,125,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==3)g_pDDSBack->BltFast(332,165,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==4)g_pDDSBack->BltFast(334,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==5)g_pDDSBack->BltFast(334,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY);

		if(i==6)g_pDDSBack->BltFast(336,85,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
		if(i==7)g_pDDSBack->BltFast(336,185,Diff,NULL,DDBLTFAST_SRCCOLORKEY);
	}
*/
//	DrawMode(0,0,HMODE_UNION);


	g_pDDSBack->BltFast(210,450,CFont, &lRect, DDBLTFAST_SRCCOLORKEY);

	if(Start1p)
	{
		if(a==0)
		{
			a++;
			if(Start1p && Start2p)Couple=TRUE;
			else Couple=FALSE;
		}
	}
	if(Start2p)
	{
		if(b==0)
		{
			b++;
			if(Start1p && Start2p)Couple=TRUE;
			else Couple=FALSE;
		}
	}

	if(Start1p==FALSE)
	{
		lRect.top=0;
		lRect.left=0;
		lRect.right=220;
		lRect.bottom=23;

		TransAlphaImproved(CFont, g_pDDSBack, 10, 450, lRect, ALPHA, CKey_CFont, 16);
	}
	if(Start2p==FALSE)//DisplayMessageC(320,480-20,"PRESS CENTER STEP");
	{
		lRect.top=0;
		lRect.left=0;
		lRect.right=220;
		lRect.bottom=23;

		TransAlphaImproved(CFont, g_pDDSBack, 410, 450, lRect, ALPHA, CKey_CFont, 16);
	}

	ALPHA += inc;
	if (ALPHA > 256)
	{
		ALPHA = 256;
		inc = -10;
	}
	else if (ALPHA < 0)
	{
		ALPHA = 0;
		inc = 10;
	}

	Flipp();

}