⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emu.cpp

📁 bung.cpp bung.dfm bung.h DbgWarn.cpp DbgWarn.dfm DbgWarn.h Debug.cpp Debug.dfm Debug.h Emu.cpp Emu
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                None1->Checked=false;
                Make();
                break;
            }
        }
    }*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::ImagePaint(TObject *Sender)
{
/*    if (!skinImageSm) return;
    if (!skinImageLg) return;
    TRect r;
    r.Left=0; r.Right=Image->Width;
    r.Top=0; r.Bottom=Image->Height;
    if (Image->Width>skinImageSm->Width)
        Image->Canvas->StretchDraw(r,skinImageLg);
    else
        Image->Canvas->StretchDraw(r,skinImageSm);*/
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::WMSizing(TMessage &Msg)
{
/*    RECT *r=(LPRECT)Msg.LParam;
    if (!enforceRatio)
    {
        Msg.Result=false;
        return;
    }
    Normal1xview1->Checked=false;
    Large2xview1->Checked=false;
    int cliW=r->right-r->left-(Width-ClientWidth);
    int cliH=r->bottom-r->top-(Height-ClientHeight);
    int imgW=(skinImageLg)?skinImageLg->Width:(160<<1);
    int imgH=(skinImageLg)?skinImageLg->Height:(144<<1);
    int newW=imgW*cliH/imgH;
    int newH=imgH*cliW/imgW;
    newW+=(Width-ClientWidth);
    newH+=(Height-ClientHeight);
    int dx=abs(newW-(r->right-r->left));
    int dy=abs(newH-(r->bottom-r->top));
    if (((dx>=dy)||(Msg.WParam==WMSZ_LEFT)||(Msg.WParam==WMSZ_RIGHT))&&
        ((Msg.WParam!=WMSZ_TOP)&&(Msg.WParam!=WMSZ_BOTTOM)))
    {
        if (newH<GetSystemMetrics(SM_CYMIN))
            GetWindowRect(Handle,r);
        else
        {
            if ((Msg.WParam==WMSZ_TOP)||
                (Msg.WParam==WMSZ_TOPLEFT)||
                (Msg.WParam==WMSZ_TOPRIGHT))
                r->top=r->bottom-newH;
            else
                r->bottom=r->top+newH;
        }
    }
    else
    {
        if (newW<GetSystemMetrics(SM_CXMIN))
            GetWindowRect(Handle,r);
        else
        {
            if ((Msg.WParam==WMSZ_BOTTOMLEFT)||
                (Msg.WParam==WMSZ_LEFT)||
                (Msg.WParam==WMSZ_TOPLEFT))
                r->left=r->right-newW;
            else
                r->right=r->left+newW;
        }
    }
    Image->Width=r->right-r->left-(Width-ClientWidth);
    Image->Height=r->bottom-r->top-(Height-ClientHeight);
    LCD->Left=skinLcd.left*Image->Width/imgW;
    LCD->Width=(skinLcd.right-skinLcd.left)*Image->Width/imgW;
    LCD->Top=skinLcd.top*Image->Height/imgH;
    LCD->Height=(skinLcd.bottom-skinLcd.top)*Image->Height/imgH;
    if ((LCD->Width>160)&&(scaleFact==1))
    {
//        PauseStart();
        scaleFact=2;
        bmp->Width=160*scaleFact;
        bmp->Height=144*scaleFact;
        bmp->PixelFormat=pf15bit;
        for (int i=0;i<(144*scaleFact);i++)
            ScreenLine[i]=(char *)bmp->ScanLine[i];
//        PauseEnd();
    }
    else if ((LCD->Width<=160)&&(scaleFact==2))
    {
//        PauseStart();
        scaleFact=1;
        bmp->Width=160*scaleFact;
        bmp->Height=144*scaleFact;
        bmp->PixelFormat=pf15bit;
        for (int i=0;i<(144*scaleFact);i++)
            ScreenLine[i]=(char *)bmp->ScanLine[i];
//        PauseEnd();
    }
    Msg.Result=true;*/
}

void __fastcall TEmuWnd::Fullscreenview1Click(TObject *Sender)
{
/*    if (Fullscreenview1->Checked)
    {
        Fullscreenview1->Checked=false;
        Top=5; Left=100;
        Enterdebugger1->Enabled=true;
        Currentskin1->Enabled=true;
        Showpercentageofactualspeed1->Enabled=true;
        Stayontop1->Enabled=true;
        FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
        Make();
        return;
    }
    if (currentSkin!=-1)
    {
        skin[currentSkin].defW=Image->Width;
        skin[currentSkin].defH=Image->Height;
    }
    Fullscreenview1->Checked=true;
    Normal1xview1->Checked=false;
    Large2xview1->Checked=false;
    Enterdebugger1->Enabled=false;
    Currentskin1->Enabled=false;
    Showpercentageofactualspeed1->Enabled=false;
    Stayontop1->Enabled=false;
    DebugWnd->Clearallbreakpoints1Click(Sender);
    Make();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Exitemulator1Click(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Stayontop1Click(TObject *Sender)
{
    Stayontop1->Checked=!Stayontop1->Checked;
    FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
    GBC_SetWindow(Handle);
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::ImageMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TPoint p;
    if (Button==mbLeft)
    {
/*        if (keyHeld!=-1) return;
        int imgW=(skinImageLg)?skinImageLg->Width:(160<<1);
        int imgH=(skinImageLg)?skinImageLg->Height:(144<<1);
        int key=GetKeyAt(X*imgW/Image->Width,
            Y*imgH/Image->Height);
        if (key!=-1)
        {
            kdown(key);
            keyHeld=key;
        }*/
    }
}

void __fastcall TEmuWnd::Enablesound1Click(TObject *Sender)
{
    Enablesound1->Checked=!Enablesound1->Checked;
//    PauseStart();
    if (Enablesound1->Checked)
        GBC_EnableSound();
    else
        GBC_DisableSound();
//    PauseEnd();
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::ImageMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    if (Button==mbLeft)
    {
//        if (keyHeld==-1) return;
//        kup(keyHeld);
//        keyHeld=-1;
    }
}
//---------------------------------------------------------------------------


void __fastcall TEmuWnd::Noframeskip1Click(TObject *Sender)
{
    GBC_SetLCDUpdateFreq(0);
    Noframeskip1->Checked=true;
    Skip1frame1->Checked=false;
    Skip2frames1->Checked=false;
    Skip3frames1->Checked=false;
    Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Skip1frame1Click(TObject *Sender)
{
    GBC_SetLCDUpdateFreq(1);
    Noframeskip1->Checked=false;
    Skip1frame1->Checked=true;
    Skip2frames1->Checked=false;
    Skip3frames1->Checked=false;
    Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Skip2frames1Click(TObject *Sender)
{
    GBC_SetLCDUpdateFreq(2);
    Noframeskip1->Checked=false;
    Skip1frame1->Checked=false;
    Skip2frames1->Checked=true;
    Skip3frames1->Checked=false;
    Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Skip3frames1Click(TObject *Sender)
{
    GBC_SetLCDUpdateFreq(4);
    Noframeskip1->Checked=false;
    Skip1frame1->Checked=false;
    Skip2frames1->Checked=false;
    Skip3frames1->Checked=true;
    Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Lowqualitysound1Click(TObject *Sender)
{
    GBC_SetSoundQuality(1);
    Lowqualitysound1->Checked=true;
    Mediumqualitysound1->Checked=false;
    Highqualitysound1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Mediumqualitysound1Click(TObject *Sender)
{
    GBC_SetSoundQuality(4);
    Lowqualitysound1->Checked=false;
    Mediumqualitysound1->Checked=true;
    Highqualitysound1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Highqualitysound1Click(TObject *Sender)
{
    GBC_SetSoundQuality(16);
    Lowqualitysound1->Checked=false;
    Mediumqualitysound1->Checked=false;
    Highqualitysound1->Checked=true;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Startindebugmode1Click(TObject *Sender)
{
    startInDebug=!startInDebug;
    Startindebugmode1->Checked=startInDebug;    
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::EnableDebugWarnings1Click(TObject *Sender)
{
/*    int oldRun=run;
    run=0;
    if (DebugWarnDlg->ShowModal()==2)
    {
        int enable=0;
        for (int i=0;i<DebugWarnDlg->List->Items->Count;i++)
        {
            debugWarn[i]=DebugWarnDlg->List->Checked[i];
            if (debugWarn[i]) enable=1;
        }
        EnableDebugWarnings1->Checked=enable;
    }
    run=oldRun;*/
    Enabledebugwarnings1->Checked=GBC_DebugWarnDlg();
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Runatmaximumpossiblespeed1Click(TObject *Sender)
{
    Runatmaximumpossiblespeed1->Checked=!Runatmaximumpossiblespeed1->Checked;
    GBC_SetSpeedRestrict(!Runatmaximumpossiblespeed1->Checked);
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Skip8frames1Click(TObject *Sender)
{
    GBC_SetLCDUpdateFreq(8);
    Noframeskip1->Checked=false;
    Skip1frame1->Checked=false;
    Skip2frames1->Checked=false;
    Skip3frames1->Checked=false;
    Skip8frames1->Checked=true;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Showskin1Click(TObject *Sender)
{
    Showskin1->Checked=!Showskin1->Checked;
    showSkin=Showskin1->Checked;
    Make();
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::OnMinimize(TObject *Sender)
{
    paused=1;
}

void __fastcall TEmuWnd::OnRestore(TObject *Sender)
{
    paused=0;
}
void __fastcall TEmuWnd::CloseROM1Click(TObject *Sender)
{
    GBC_CloseROM();
    batt->Visible=false;
    SendtoBungXChanger1->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::SendtoBungXChanger1Click(TObject *Sender)
{
    SendToBung(currentROM);
}
//---------------------------------------------------------------------------


void __fastcall TEmuWnd::Emulateforaccuracy1Click(TObject *Sender)
{
    GBC_SetMode(EMUMODE_ACCURACY);
    Emulateforaccuracy1->Checked=true;
    Emulateforspeed1->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Emulateforspeed1Click(TObject *Sender)
{
    GBC_SetMode(EMUMODE_SPEED);
    Emulateforaccuracy1->Checked=false;
    Emulateforspeed1->Checked=true;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::gbMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    if ((X>=48)&&(X<=73)&&(Y>=297)&&(Y<=321))
        GBC_KeyDown(KEY_UP);
    else if ((X>=26)&&(X<=49)&&(Y>=320)&&(Y<=345))
        GBC_KeyDown(KEY_LEFT);
    else if ((X>=73)&&(X<=95)&&(Y>=320)&&(Y<=345))
        GBC_KeyDown(KEY_RIGHT);
    else if ((X>=48)&&(X<=73)&&(Y>=345)&&(Y<=368))
        GBC_KeyDown(KEY_DOWN);
    else if ((X>=175)&&(X<=209)&&(Y>=325)&&(Y<=359))
        GBC_KeyDown(KEY_B);
    else if ((X>=227)&&(X<=262)&&(Y>=308)&&(Y<=342))
        GBC_KeyDown(KEY_A);
    else if ((X>=151)&&(X<=178)&&(Y>=409)&&(Y<=424))
        GBC_KeyDown(KEY_START);
    else if ((X>=107)&&(X<=135)&&(Y>=409)&&(Y<=424))
        GBC_KeyDown(KEY_SELECT);
    else
    {
        clicked=1;
        clickX=X;
        clickY=Y;
    }
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::gbMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    GBC_KeyUp(KEY_UP);
    GBC_KeyUp(KEY_LEFT);
    GBC_KeyUp(KEY_RIGHT);
    GBC_KeyUp(KEY_DOWN);
    GBC_KeyUp(KEY_B);
    GBC_KeyUp(KEY_A);
    GBC_KeyUp(KEY_START);
    GBC_KeyUp(KEY_SELECT);
    clicked=0;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::gbMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    if (clicked)
    {
        Left+=X-clickX;
        Top+=Y-clickY;
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -