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

📄 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 页
字号:
void __fastcall TEmuWnd::FormDeactivate(TObject *Sender)
{
    if ((Fullscreenview1->Checked)&&(minimizeOnDeactivate))
        Application->Minimize();
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Enterdebugmode1Click(TObject *Sender)
{
/*    debug=1; run=0;
    debugStartPC=regPC;//R.PC.D;
    DebugWnd->Show();
    DebugWnd->Update();*/
    GBC_EnterDebug();
}

void __fastcall TEmuWnd::Savestateimage1Click(TObject *Sender)
{
/*    PauseStart();
    TSaveDialog *dlog=new TSaveDialog(this);
    dlog->DefaultExt="sav";
    char str[256];
    strcpy(str,romImage[currentROM].file);
    str[strlen(str)-3]='s';
    str[strlen(str)-2]='a';
    str[strlen(str)-1]='v';
    dlog->FileName=str;
    dlog->Options.Clear();
    dlog->Filter="State files (*.sav)|*.sav";
    dlog->FilterIndex=1;
    char cwd[256];
    getcwd(cwd,256);
    dlog->InitialDir=cwd;
    if (dlog->Execute())
        SaveState(dlog->FileName.c_str());
    delete dlog;
    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Loadstateimage1Click(TObject *Sender)
{
//    PauseStart();
    TOpenDialog *dlog=new TOpenDialog(this);
    dlog->DefaultExt="sav";
    dlog->FileName="*.sav";
    dlog->Options.Clear();
    dlog->Options << ofFileMustExist << ofPathMustExist;
    dlog->Filter="State files (*.sav)|*.sav";
    dlog->FilterIndex=1;
    char cwd[256];
    getcwd(cwd,256);
    dlog->InitialDir=cwd;
    if (dlog->Execute())
    {
/*        FILE *fp=fopen(dlog->FileName.c_str(),"rb");
        char str[9],romName[56];
        fread(str,8,1,fp);
        fread(romName,56,1,fp);
        fclose(fp);
        str[8]=0;
        if (strcmp(str,"VTIv2.0 "))
        {
            MessageBox(NULL,"Unrecognized file format","State Load Error",MB_OK|MB_ICONSTOP);
            PauseEnd();
            chdir(old);
            return;
        }
        if (!strcmp(romName,romImage[currentROM].name))
            hw->LoadState(dlog->FileName.c_str());
        else
        {
            SaveState();
            int newROM=-1;
            for (int i=0;i<romImageCount;i++)
            {
                if (!strcmp(romImage[i].name,romName))
                {
                    newROM=i;
                    break;
                }
            }
            if (newROM==-1)
            {
                MessageBox(NULL,"Required ROM not present","State Load Error",MB_OK|MB_ICONSTOP);
                PauseEnd();
                chdir(old);
                return;
            }
            CloseSkin();
            CloseEmu();
            InitEmu(newROM);
            TRegistry *reg=new TRegistry;
            reg->RootKey=HKEY_LOCAL_MACHINE;
            reg->OpenKey("\\Software\\ACZ\\Virtual TI\\Skins",true);
            char keyName[24];
            switch (calc)
            {
                case 73: strcpy(keyName,"DefaultSkin73"); break;
                case 82: strcpy(keyName,"DefaultSkin82"); break;
                case 83: strcpy(keyName,"DefaultSkin83"); break;
                case 84: strcpy(keyName,"DefaultSkin83Plus"); break;
                case 85: strcpy(keyName,"DefaultSkin85"); break;
                case 86: strcpy(keyName,"DefaultSkin86"); break;
                case 89: strcpy(keyName,"DefaultSkin89"); break;
                case 92: case 93: strcpy(keyName,"DefaultSkin92"); break;
                case 94: strcpy(keyName,"DefaultSkin92Plus"); break;
            }
            if (reg->ValueExists(keyName))
            {
                char skinName[32];
                strcpy(skinName,reg->ReadString(keyName).c_str());
                int found=-1;
                for (int i=0;i<skinCount;i++)
                {
                    if (!strcmp(skinName,skin[i].file))
                    {
                        found=i;
                        break;
                    }
                }
                if (found!=-1)
                    LoadSkin(found);
            }
            else
            {
                for (int i=0;i<skinCount;i++)
                {
                    if ((calc==skin[i].calc)||
                        ((calc>=92)&&(skin[i].calc>=92)))
                    {
                        LoadSkin(i);
                        break;
                    }
                }
            }
            reg->CloseKey();
            delete reg;
            hw->LoadState(dlog->FileName.c_str());
            Make();
            AboutDlg->UpdateText();
        }*/
    }
    delete dlog;
//    PauseEnd();
}

void __fastcall TEmuWnd::FormKeyDown(TMessage &Msg)
{
    int Key;
    Key=Msg.WParam;
    if ((Key==VK_F11)&&(Enterdebugger1->Enabled))
        Enterdebugmode1Click(NULL);
    else if (Key==VK_F10)
        SendFile1Click(NULL);
    else if (Key==VK_F12)
        EnableDebugWarnings1Click(NULL);
    else if (Key=='Z')
        GBC_KeyDown(KEY_B);
    else if (Key=='X')
        GBC_KeyDown(KEY_A);
    else if (Key==13)
        GBC_KeyDown(KEY_START);
    else if (Key=='S')
        GBC_KeyDown(KEY_SELECT);
    else if (Key==VK_LEFT)
        GBC_KeyDown(KEY_LEFT);
    else if (Key==VK_RIGHT)
        GBC_KeyDown(KEY_RIGHT);
    else if (Key==VK_UP)
        GBC_KeyDown(KEY_UP);
    else if (Key==VK_DOWN)
        GBC_KeyDown(KEY_DOWN);
    Msg.Result=0;
}
//---------------------------------------------------------------------------void __fastcall TEmuWnd::FormKeyUp(TObject *Sender, WORD &Key,
void __fastcall TEmuWnd::FormKeyUp(TMessage &Msg)
{
    int Key;
    Key=Msg.WParam;
    if (Key=='Z')
        GBC_KeyUp(KEY_B);
    else if (Key=='X')
        GBC_KeyUp(KEY_A);
    else if (Key==13)
        GBC_KeyUp(KEY_START);
    else if (Key=='S')
        GBC_KeyUp(KEY_SELECT);
    else if (Key==VK_LEFT)
        GBC_KeyUp(KEY_LEFT);
    else if (Key==VK_RIGHT)
        GBC_KeyUp(KEY_RIGHT);
    else if (Key==VK_UP)
        GBC_KeyUp(KEY_UP);
    else if (Key==VK_DOWN)
        GBC_KeyUp(KEY_DOWN);
}

void __fastcall TEmuWnd::Large2xcalculatorimage1Click(TObject *Sender)
{
    if (Fullscreenview1->Checked)
    {
        Fullscreenview1->Checked=false;
        Top=5; Left=100;
        Enterdebugger1->Enabled=true;
        Showpercentageofactualspeed1->Enabled=true;
        Stayontop1->Enabled=true;
        FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
    }
    Normal1xview1->Checked=false;
    Large2xview1->Checked=true;
    scaleFact=2;
    GBC_LCDScaleFact(2);
    Make();
    Speed->Left=442-Speed->Width;
    Speed->Top=90-Speed->Height;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Showpercentageofactualspeed1Click(
      TObject *Sender)
{
    showSpeed=!showSpeed;
    Speed->Visible=showSpeed;
    Showpercentageofactualspeed1->Checked=showSpeed;
    Caption="";
    Application->Title=Caption;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::LCDonlyblackwhiteBMP1Click(TObject *Sender)
{
/*//    PauseStart();
    TSaveDialog *dlog=new TSaveDialog(this);
    dlog->DefaultExt="bmp";
    dlog->FileName="screen.bmp";
    dlog->Options.Clear();
    dlog->Options << ofOverwritePrompt << ofPathMustExist
        << ofNoChangeDir;
    dlog->Filter="Bitmap files (*.bmp)|*.bmp";
    dlog->FilterIndex=1;
    char cwd[256];
    getcwd(cwd,256);
    dlog->InitialDir=cwd;
    if (dlog->Execute())
    {
        Graphics::TBitmap *bmp=GetLCD_BW();
        bmp->SaveToStream(&TFileStream(dlog->FileName,
            fmCreate));
        delete bmp;
    }
    delete dlog;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::LCDonlytruecolorsBMP1Click(TObject *Sender)
{
/*//    PauseStart();
    TSaveDialog *dlog=new TSaveDialog(this);
    dlog->DefaultExt="bmp";
    dlog->FileName="screen.bmp";
    dlog->Options.Clear();
    dlog->Options << ofOverwritePrompt << ofPathMustExist
        << ofNoChangeDir;
    dlog->Filter="Bitmap files (*.bmp)|*.bmp";
    dlog->FilterIndex=1;
    char cwd[256];
    getcwd(cwd,256);
    dlog->InitialDir=cwd;
    if (dlog->Execute())
    {
        Graphics::TBitmap *bmp=GetLCD_True();
        bmp->SaveToStream(&TFileStream(dlog->FileName,
            fmCreate));
        delete bmp;
    }
    delete dlog;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------


void __fastcall TEmuWnd::LCDonlyblackwhiteClipboard1Click(
      TObject *Sender)
{
/*//    PauseStart();
    Graphics::TBitmap *bmp=GetLCD_BW();
    int DataHandle;
    HPALETTE APalette;
    unsigned short format;
    bmp->SaveToClipboardFormat(format,DataHandle,APalette);
    Clipboard()->SetAsHandle(format,DataHandle);
    delete bmp;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::LCDonlytruecolorsClipboard1Click(
      TObject *Sender)
{
/*//    PauseStart();
    Graphics::TBitmap *bmp=GetLCD_True();
    int DataHandle;
    HPALETTE APalette;
    unsigned short format;
    bmp->SaveToClipboardFormat(format,DataHandle,APalette);
    Clipboard()->SetAsHandle(format,DataHandle);
    delete bmp;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::CalculatorimageBMP1Click(TObject *Sender)
{
/*//    PauseStart();
    TSaveDialog *dlog=new TSaveDialog(this);
    dlog->DefaultExt="bmp";
    dlog->FileName="screen.bmp";
    dlog->Options.Clear();
    dlog->Options << ofOverwritePrompt << ofPathMustExist
        << ofNoChangeDir;
    dlog->Filter="Bitmap files (*.bmp)|*.bmp";
    dlog->FilterIndex=1;
    char cwd[256];
    getcwd(cwd,256);
    dlog->InitialDir=cwd;
    if (dlog->Execute())
    {
        Graphics::TBitmap *bmp=GetLCD_Calc(calcImage);
        bmp->SaveToStream(&TFileStream(dlog->FileName,
            fmCreate));
        delete bmp;
    }
    delete dlog;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::CalculatorimageClipboard1Click(TObject *Sender)
{
/*//    PauseStart();
    Graphics::TBitmap *bmp=GetLCD_Calc(calcImage);
    int DataHandle;
    HPALETTE APalette;
    unsigned short format;
    bmp->SaveToClipboardFormat(format,DataHandle,APalette);
    Clipboard()->SetAsHandle(format,DataHandle);
    delete bmp;
//    PauseEnd();*/
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::Normal1xview1Click(TObject *Sender)
{
    if (Fullscreenview1->Checked)
    {
        Fullscreenview1->Checked=false;
        Top=5; Left=100;
        Enterdebugger1->Enabled=true;
        Showpercentageofactualspeed1->Enabled=true;
        Stayontop1->Enabled=true;
        FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
    }
    Normal1xview1->Checked=true;
    Large2xview1->Checked=false;
    scaleFact=1;
    GBC_LCDScaleFact(1);
    Make();
    Speed->Left=221-Speed->Width;
    Speed->Top=45-Speed->Height;
}

void __fastcall TEmuWnd::OnKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    TMessage msg;
    msg.WParam=Key;
    msg.LParam=0;
    FormKeyDown(msg);
    Key=0;
}
//---------------------------------------------------------------------------

void __fastcall TEmuWnd::OnKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    TMessage msg;
    msg.WParam=Key;
    msg.LParam=0;
    FormKeyUp(msg);
    Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::OnSkinSelect(TObject *Sender)
{
/*    int indx=((TMenuItem*)Sender)->Parent->
        IndexOf((TMenuItem*)Sender);
    for (int i=0;i<skinCount;i++)
    {
        if ((calc==skin[i].calc)||((calc>=92)&&
            (skin[i].calc>=92)))
        {
            indx--;
            if (!indx)
            {
                PauseStart();
                LoadSkin(i);
                PauseEnd();

⌨️ 快捷键说明

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