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

📄 debug.cpp

📁 bung.cpp bung.dfm bung.h DbgWarn.cpp DbgWarn.dfm DbgWarn.h Debug.cpp Debug.dfm Debug.h Emu.cpp Emu
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    Update();
    #endif
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::Break1Click(TObject *Sender)
{
    if (!romLoaded) return;
    debug=1; run=0;
//    while (emuRunning)
//        Sleep(0);
    debugStartPC=regPC;//R.PC.D;
    Update();
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol0KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if (!romLoaded) return;
    if (Key=='G')
        MemGotoClick(Sender);
    else if (Key=='S')
        Searchforvalue1Click(Sender);
    else if (Key==VK_PRIOR)
    {
        int row=((TListBox*)Sender)->ItemIndex;
        debugStartMem-=0x30;
        UpdateMem();
        ((TListBox*)Sender)->ItemIndex=row;
        Key=0;
    }
    else if (Key==VK_NEXT)
    {
        int row=((TListBox*)Sender)->ItemIndex;
        debugStartMem+=0x30;
        UpdateMem();
        ((TListBox*)Sender)->ItemIndex=row;
        Key=0;
    }
    else if (Key==VK_DOWN)
    {
        if (((TListBox *)Sender)->ItemIndex==5)
        {
            debugStartMem+=8;
            UpdateMem();
            ((TListBox *)Sender)->ItemIndex=5;
        }
    }
    else if (Key==VK_UP)
    {
        if (((TListBox *)Sender)->ItemIndex==0)
        {
            debugStartMem-=8;
            UpdateMem();
            ((TListBox *)Sender)->ItemIndex=0;
        }
    }
    else if (Key==VK_LEFT)
    {
        if (Sender==MemCol1)
        {
            MemCol0->ItemIndex=MemCol1->ItemIndex;
            MemCol1->ItemIndex=-1;
            ActiveControl=MemCol0;
        }
        else if (Sender==MemCol2)
        {
            MemCol1->ItemIndex=MemCol2->ItemIndex;
            MemCol2->ItemIndex=-1;
            ActiveControl=MemCol1;
        }
        else if (Sender==MemCol3)
        {
            MemCol2->ItemIndex=MemCol3->ItemIndex;
            MemCol3->ItemIndex=-1;
            ActiveControl=MemCol2;
        }
        else if (Sender==MemCol4)
        {
            MemCol3->ItemIndex=MemCol4->ItemIndex;
            MemCol4->ItemIndex=-1;
            ActiveControl=MemCol3;
        }
        else if (Sender==MemCol5)
        {
            MemCol4->ItemIndex=MemCol5->ItemIndex;
            MemCol5->ItemIndex=-1;
            ActiveControl=MemCol4;
        }
        else if (Sender==MemCol6)
        {
            MemCol5->ItemIndex=MemCol6->ItemIndex;
            MemCol6->ItemIndex=-1;
            ActiveControl=MemCol5;
        }
        else if (Sender==MemCol7)
        {
            MemCol6->ItemIndex=MemCol7->ItemIndex;
            MemCol7->ItemIndex=-1;
            ActiveControl=MemCol6;
        }
        Key=0;
    }
    else if (Key==VK_RIGHT)
    {
        if (Sender==MemCol0)
        {
            MemCol1->ItemIndex=MemCol0->ItemIndex;
            MemCol0->ItemIndex=-1;
            ActiveControl=MemCol1;
        }
        else if (Sender==MemCol1)
        {
            MemCol2->ItemIndex=MemCol1->ItemIndex;
            MemCol1->ItemIndex=-1;
            ActiveControl=MemCol2;
        }
        else if (Sender==MemCol2)
        {
            MemCol3->ItemIndex=MemCol2->ItemIndex;
            MemCol2->ItemIndex=-1;
            ActiveControl=MemCol3;
        }
        else if (Sender==MemCol3)
        {
            MemCol4->ItemIndex=MemCol3->ItemIndex;
            MemCol3->ItemIndex=-1;
            ActiveControl=MemCol4;
        }
        else if (Sender==MemCol4)
        {
            MemCol5->ItemIndex=MemCol4->ItemIndex;
            MemCol4->ItemIndex=-1;
            ActiveControl=MemCol5;
        }
        else if (Sender==MemCol5)
        {
            MemCol6->ItemIndex=MemCol5->ItemIndex;
            MemCol5->ItemIndex=-1;
            ActiveControl=MemCol6;
        }
        else if (Sender==MemCol6)
        {
            MemCol7->ItemIndex=MemCol6->ItemIndex;
            MemCol6->ItemIndex=-1;
            ActiveControl=MemCol7;
        }
        Key=0;
    }
    else if (Key==VK_RETURN)
    {
        if (Sender==MemCol0)
            MemDblClick(0,MemCol0->ItemIndex);
        else if (Sender==MemCol1)
            MemDblClick(1,MemCol1->ItemIndex);
        else if (Sender==MemCol2)
            MemDblClick(2,MemCol2->ItemIndex);
        else if (Sender==MemCol3)
            MemDblClick(3,MemCol3->ItemIndex);
        else if (Sender==MemCol4)
            MemDblClick(4,MemCol4->ItemIndex);
        else if (Sender==MemCol5)
            MemDblClick(5,MemCol5->ItemIndex);
        else if (Sender==MemCol6)
            MemDblClick(6,MemCol6->ItemIndex);
        else if (Sender==MemCol7)
            MemDblClick(7,MemCol7->ItemIndex);
    }
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemGotoClick(TObject *Sender)
{
    if (!romLoaded) return;
    #ifdef DEMO
    MessageBox(NULL,"This feature is disabled in the demo version.","VGBC",MB_OK|MB_TASKMODAL);
    return;
    #else
    GoToDlg->Address->Text="";
    if (GoToDlg->ShowModal()==1)
    {
        sscanf(GoToDlg->Address->Text.c_str(),"%x",&debugStartMem);
        UpdateMem();
    }
    #endif
}

void __fastcall TDebugWnd::MemCol0Click(TObject *Sender)
{
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol1Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol2Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol3Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol4Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol5Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol6Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol7->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol7Click(TObject *Sender)
{
    MemCol0->ItemIndex=-1;
    MemCol1->ItemIndex=-1;
    MemCol2->ItemIndex=-1;
    MemCol3->ItemIndex=-1;
    MemCol4->ItemIndex=-1;
    MemCol5->ItemIndex=-1;
    MemCol6->ItemIndex=-1;
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemDblClick(int col,int selindx)
{
    if (!romLoaded) return;
    if (selindx==-1) return;
    #ifdef DEMO
    MessageBox(NULL,"Memory editing is disabled in the demo version.","VGBC",MB_OK|MB_TASKMODAL);
    return;
    #else
    int addr=debugStartMem+col+(selindx<<3);
    char str[4];
    sprintf(str,"%2.2X",getmem_direct(addr)&0xff);
    NewValueDlg->Address->Text=str;
    NewValueDlg->Address->SelectAll();
    NewValueDlg->ActiveControl=NewValueDlg->Address;
    if (NewValueDlg->ShowModal()==1)
    {
        int v;
        sscanf(NewValueDlg->Address->Text.c_str(),"%x",&v);
        putmem_direct(addr&0xffffff,v);
        int row=selindx;
        UpdateMem();
        switch(col)
        {
            case 0: MemCol0->ItemIndex=row; break;
            case 1: MemCol1->ItemIndex=row; break;
            case 2: MemCol2->ItemIndex=row; break;
            case 3: MemCol3->ItemIndex=row; break;
            case 4: MemCol4->ItemIndex=row; break;
            case 5: MemCol5->ItemIndex=row; break;
            case 6: MemCol6->ItemIndex=row; break;
            case 7: MemCol7->ItemIndex=row; break;
        }
    }
    #endif
}

void __fastcall TDebugWnd::MemCol0DblClick(TObject *Sender)
{
    MemDblClick(0,MemCol0->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol1DblClick(TObject *Sender)
{
    MemDblClick(1,MemCol1->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol2DblClick(TObject *Sender)
{
    MemDblClick(2,MemCol2->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol3DblClick(TObject *Sender)
{
    MemDblClick(3,MemCol3->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol4DblClick(TObject *Sender)
{
    MemDblClick(4,MemCol4->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol5DblClick(TObject *Sender)
{
    MemDblClick(5,MemCol5->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol6DblClick(TObject *Sender)
{
    MemDblClick(6,MemCol6->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::MemCol7DblClick(TObject *Sender)
{
    MemDblClick(7,MemCol7->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::Setbreakpoint1Click(TObject *Sender)
{
    if (!romLoaded) return;
    if (Code->ItemIndex==-1) return;
    #ifdef DEMO
    MessageBox(NULL,"This feature is disabled in the demo version.","VGBC",MB_OK|MB_TASKMODAL);
    return;
    #else
    int pc,i,j;
//    PauseStart();
    sscanf(Code->Items->Strings[Code->ItemIndex].c_str(),
        "%x",&pc);
    for (i=0;i<debugCodeBreakCount;i++)
    {
        if (debugCodeBreak[i]==pc)
        {
            for (j=i;j<(debugCodeBreakCount-1);j++)
                debugCodeBreak[j]=debugCodeBreak[j+1];
            debugCodeBreakCount--;
            Code->Repaint();
//            PauseEnd();
            return;
        }
    }
    debugCodeBreak[debugCodeBreakCount++]=pc;
    Code->Repaint();
//    PauseEnd();
    #endif
}
//---------------------------------------------------------------------------

void __fastcall TDebugWnd::CodeDrawItem(TWinControl *Control, int Index,
      TRect &Rect, TOwnerDrawState State)
{
    if (!romLoaded) return;
    TBrush *brush=new TBrush;
    TBrush *oldBrush=Code->Canvas->Brush;
    brush->Style=bsSolid;
    TPen *pen=new TPen;
    TPen *oldPen=Code->Canvas->Pen;
    int pos,bp=0;
    int txt=0;
    if (Code->Items->Strings[Index].c_str()[0]!='@')
    {
        sscanf(Code->Items->Strings[Index].c_str(),
            "%X",&pos);
        for (int i=0;i<debugCodeBreakCount;i++)
        {
            if (pos==debugCodeBreak[i])
                bp=1;
        }
    }
    else
        txt=1;
    if (State.Contains(odSelected))
    {
        if ((!txt)&&(Code->Items->Strings[Index].c_str()[4]=='-'))
        {
            if (bp)
            {
                brush->Color=clDkGray;

⌨️ 快捷键说明

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