// Copyright (C) 2003-2009 Dolphin Project. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, version 2.0. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License 2.0 for more details. // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ // Official SVN repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ #ifndef _DSP_DEBUGGER_LLE_H #define _DSP_DEBUGGER_LLE_H // general things #include #include #include #include #include #include #include #include #include #include #include #include #include #include "disassemble.h" #include "gdsp_interpreter.h" #include "gdsp_memory.h" #include "../DSPDebugInterface.h" class DSPRegisterView; class CCodeView; class DSPDebuggerLLE : public wxFrame { public: DSPDebuggerLLE(wxWindow *parent, wxWindowID id = wxID_ANY, const wxString &title = wxT("DSP LLE Debugger"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE); virtual ~DSPDebuggerLLE(); bool CanDoStep(); void DebugBreak(); void Refresh(); private: DECLARE_EVENT_TABLE(); enum { // Toolbar ID_TOOLBAR = 1000, ID_RUNTOOL, ID_STEPTOOL, ID_SHOWPCTOOL, ID_ADDRBOX, ID_JUMPTOTOOL, ID_DISASMDUMPTOOL, ID_CHECK_ASSERTINT, ID_CHECK_HALT, ID_CHECK_INIT, ID_SYMBOLLIST, // Code view ID_CODEVIEW, // Register View ID_DSP_REGS, }; // Disasm listctrl columns enum { COLUMN_BP, COLUMN_FUNCTION, COLUMN_ADDRESS, COLUMN_MNEMONIC, COLUMN_OPCODE, COLUMN_EXT, COLUMN_PARAM, }; enum EState { PAUSE, STEP, RUN, RUN_START // ignores breakpoints and switches after one step to RUN }; EState m_State; DSPDebugInterface debug_interface; u64 m_CachedStepCounter; u16 m_CachedCR; u32 m_CachedUCodeCRC; // GUI updaters void UpdateDisAsmListView(); void UpdateRegisterFlags(); void UpdateSymbolMap(); void UpdateState(); // GUI items wxToolBar* m_Toolbar; CCodeView* m_CodeView; DSPRegisterView* m_Regs; wxListBox* m_SymbolList; void OnClose(wxCloseEvent& event); void OnChangeState(wxCommandEvent& event); void OnShowPC(wxCommandEvent& event); void OnRightClick(wxListEvent& event); void OnDoubleClick(wxListEvent& event); void OnAddrBoxChange(wxCommandEvent& event); void OnSymbolListChange(wxCommandEvent& event); bool JumpToAddress(u16 addr); void CreateGUIControls(); void FocusOnPC(); void UnselectAll(); }; #endif //_DSP_DEBUGGER_LLE_H