summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp
diff options
context:
space:
mode:
authorbushing <bushing@gmail.com>2008-12-08 05:25:12 +0000
committerbushing <bushing@gmail.com>2008-12-08 05:25:12 +0000
commit901fe7c00fec5e2aaf55d184edbcb6d092345d52 (patch)
treea1d207a639c02dd34a4285a9c757799f2379ea2b /Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp
parent9146b9b261c34f476c9f83934e6da6a463ad51c7 (diff)
set svn:eol-style=native for Plugins/**.cpp
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1441 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp')
-rw-r--r--Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp1382
1 files changed, 691 insertions, 691 deletions
diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp
index fcd69bc3d7..0b7326871a 100644
--- a/Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp
+++ b/Source/Plugins/Plugin_DSP_HLE/Src/Debugger/Debugger.cpp
@@ -1,691 +1,691 @@
-//////////////////////////////////////////////////////////////////////////////////////////
-//
-// Licensetype: GNU General Public License (GPL)
-//
-// 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/
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-// includes
-#include <iostream>
-#include <fstream>
-#include <sstream>
-
-#ifndef _WIN32
-#include <stdlib.h>
-#endif
-
-#include "Debugger.h"
-#include "PBView.h"
-#include "IniFile.h"
-#include "FileUtil.h"
-#include "StringUtil.h"
-#include "FileSearch.h"
-#include "../Logging/Console.h" // open and close console
-
-
-// externals that are needed even in Release builds
-bool gSSBM = true;
-bool gSSBMremedy1 = true;
-bool gSSBMremedy2 = true;
-bool gSequenced = true;
-bool gVolume = true;
-bool gReset = false;
-
-
-// =======================================================================================
-// Declare events
-BEGIN_EVENT_TABLE(CDebugger,wxDialog)
- EVT_CLOSE(CDebugger::OnClose) // on close event
-
- EVT_BUTTON(ID_UPD,CDebugger::OnUpdate) // buttons
-
- // left cotrols
- EVT_CHECKLISTBOX(IDC_CHECKLIST5, CDebugger::OnOptions) // options
- EVT_CHECKLISTBOX(IDC_CHECKLIST6, CDebugger::OnShowAll)
- EVT_RADIOBOX(IDC_RADIO0,CDebugger::ShowBase) // update frequency
-
- // right cotrols
- EVT_RADIOBOX(IDC_RADIO0,CDebugger::ShowBase)
- EVT_RADIOBOX(IDC_RADIO1,CDebugger::ChangeFrequency) // update frequency
- EVT_RADIOBOX(IDC_RADIO2,CDebugger::ChangePreset) // presets
- EVT_CHECKLISTBOX(IDC_CHECKLIST1, CDebugger::OnSettingsCheck) // settings
-
- EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, CDebugger::UpdateMail) // mails
- EVT_RADIOBOX(IDC_RADIO3,CDebugger::ChangeMail)
- EVT_CHECKLISTBOX(IDC_CHECKLIST2, CDebugger::OnGameChange) // gc
- EVT_CHECKLISTBOX(IDC_CHECKLIST3, CDebugger::OnGameChange) // wii
- EVT_CHECKLISTBOX(IDC_CHECKLIST4, CDebugger::MailSettings) // settings
-
- //EVT_RIGHT_DOWN(CDebugger::ScrollBlocks)
- //EVT_LEFT_DOWN(CDebugger::ScrollBlocks)
- //EVT_MOUSE_EVENTS(CDebugger::ScrollBlocks)
- //EVT_MOTION(CDebugger::ScrollBlocks)
-
- //EVT_SCROLL(CDebugger::ScrollBlocks)
- //EVT_SCROLLWIN(CDebugger::ScrollBlocks)
-END_EVENT_TABLE()
-// =======================================================================================
-
-
-CDebugger::CDebugger(wxWindow *parent, wxWindowID id, const wxString &title,
- const wxPoint &position, const wxSize& size, long style)
- : wxDialog(parent, id, title, position, size, style)
- , m_GPRListView(NULL)
- //, gUpdFreq(5) // loaded from file
- , giShowAll(-1)
- , gPreset(0)
-
-
- , upd95(false) // block view settings
- , upd94(false)
- , upd93(false)
- , upd92(false)
-{
- CreateGUIControls();
-
- // load ini...
- IniFile file;
- file.Load(DEBUGGER_CONFIG_FILE);
- this->Load(file);
-
- // append block names
- PBn.resize(266/2);
- PBn[10] = "mixer";
- PBn[34] = "initial_time_delay";
- PBn[41] = "updates";
- PBn[46] = "dpop";
- PBn[58] = "vol_env";
- PBn[60] = "audio_addr";
- PBn[68] = "adpcm";
- PBn[88] = "src";
- PBn[95] = "adpcm_loop_info";
- PBn[98] = "lpf";
- PBn[102] = "hpf";
- PBn[106] = "pad";
-
- PBp.resize(266/2);
- PBp[10] = "volume_left, unknown";
-
- PBp[58] = "cur_volume, cur_volume_delta"; // PBVolumeEnvelope
-
-
- PBp[60] = "looping, sample_format"; // PBAudioAddr
- PBp[62] = "loop_addr_hi, loop_addr_lo";
- PBp[64] = "end_addr_hi, end_addr_lo";
- PBp[66] = "cur_addr_hi, cur_addr_lo";
-
- PBp[68] = "coef[0], coef[1]"; // PBADPCMInfo
-
- PBp[94] = "cur_addr_frac, last_samples[0]";
-
- PBp[94] = "last_samples[3], pred_scale";
- PBp[96] = "yn1, yn2";
-
- //wxEVT_RIGHT_DOWN, wxEVT_MOUSEWHEEL, wxEVT_LEFT_UP,
- //m_bl95, m_PageBlock, sBlock
-
- m_bl95->Connect(wxID_ANY, wxEVT_SCROLLWIN_THUMBTRACK,
- wxScrollWinEventHandler(CDebugger::ScrollBlocksCursor), (wxObject*)NULL, this);
- m_bl95->Connect(wxID_ANY, wxEVT_SCROLLWIN_THUMBRELEASE,
- wxScrollWinEventHandler(CDebugger::ScrollBlocksCursor), (wxObject*)NULL, this);
- m_bl95->Connect(wxID_ANY, wxEVT_MOTION,
- wxMouseEventHandler(CDebugger::ScrollBlocksMouse), (wxObject*)NULL, this);
- m_bl95->Connect(wxID_ANY, wxEVT_MOUSEWHEEL,
- wxMouseEventHandler(CDebugger::ScrollBlocksMouse), (wxObject*)NULL, this);
-}
-
-CDebugger::~CDebugger()
-{
- // empty
- IniFile file;
- file.Load(DEBUGGER_CONFIG_FILE);
- this->Save(file);
- file.Save(DEBUGGER_CONFIG_FILE);
-}
-
-void CDebugger::Save(IniFile& _IniFile) const
-{
- // TODO2: get the screen resolution and make limits from that
- if(GetPosition().x < 1000 && GetPosition().y < 1000
- && GetSize().GetWidth() < 1000 && GetSize().GetHeight() < 1000
- )
- {
- _IniFile.Set("SoundWindow", "x", GetPosition().x);
- _IniFile.Set("SoundWindow", "y", GetPosition().y);
- _IniFile.Set("SoundWindow", "w", GetSize().GetWidth());
- _IniFile.Set("SoundWindow", "h", GetSize().GetHeight());
- }
- _IniFile.Set("SoundWindow", "Console", m_options->IsChecked(3)); // save settings
- _IniFile.Set("SoundWindow", "UpdateFrequency", m_RadioBox[1]->GetSelection());
- _IniFile.Set("SoundWindow", "ScanMails", m_gcwiiset->IsChecked(0));
- _IniFile.Set("SoundWindow", "StoreMails", m_gcwiiset->IsChecked(1));
- _IniFile.Set("SoundWindow", "ShowBase", m_RadioBox[0]->GetSelection() ? false : true);
-}
-
-
-void CDebugger::Load(IniFile& _IniFile)
-{
- int x,y,w,h;
- _IniFile.Get("SoundWindow", "x", &x, GetPosition().x);
- _IniFile.Get("SoundWindow", "y", &y, GetPosition().y);
- _IniFile.Get("SoundWindow", "w", &w, GetSize().GetWidth());
- _IniFile.Get("SoundWindow", "h", &h, GetSize().GetHeight());
- SetSize(x, y, w, h);
-
- // Show console or not
- bool Console;
- _IniFile.Get("SoundWindow", "Console", &Console, m_options->IsChecked(3));
- m_options->Check(3, Console);
- DoShowHideConsole();
-
- // Show number base
- _IniFile.Get("SoundWindow", "ShowBase", &bShowBase, !m_RadioBox[0]->GetSelection());
- m_RadioBox[0]->SetSelection(!bShowBase);
-
- _IniFile.Get("SoundWindow", "UpdateFrequency", &gUpdFreq, m_RadioBox[1]->GetSelection());
- m_RadioBox[1]->SetSelection(gUpdFreq);
- DoChangeFrequency();
-
- // Read and store mails on/off
- _IniFile.Get("SoundWindow", "ScanMails", &ScanMails, m_gcwiiset->IsChecked(0));
- m_gcwiiset->Check(0, ScanMails);
- _IniFile.Get("SoundWindow", "StoreMails", &StoreMails, m_gcwiiset->IsChecked(1));
- m_gcwiiset->Check(1, StoreMails);
-}
-
-void CDebugger::CreateGUIControls()
-{
-SetTitle(wxT("Sound Debugging"));
-
- // Basic settings
- SetIcon(wxNullIcon);
- SetSize(8, 8, 200, 100); // these will become the minimin sizes allowed by resizing
- Center();
-
-
- // Declarations
- wxBoxSizer * sMAIN, * sMain, *_sMail, * sBlock;
-
- wxButton* m_Upd;
- wxButton* m_SelC;
- wxButton* m_Presets;
-
- wxStaticBoxSizer* sLeft;
-
- int m_radioBoxNChoices[3];
-
-
- // Notebook -----------------------------------------------------
- m_Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize);
- m_PageMain = new wxPanel(m_Notebook, ID_PAGEMAIN, wxDefaultPosition, wxDefaultSize);
- m_Notebook->AddPage(m_PageMain, wxT("Main"));
- m_PageMail = new wxPanel(m_Notebook, ID_PAGEMAIL, wxDefaultPosition, wxDefaultSize);
- m_Notebook->AddPage(m_PageMail, wxT("Mail"));
- m_PageBlock = new wxPanel(m_Notebook, ID_PAGEBLOCK, wxDefaultPosition, wxDefaultSize);
- m_Notebook->AddPage(m_PageBlock, wxT("Blocks"));
-
-
-
-
- // ===================================================================
- // Blocks Page
-
- wxStaticBoxSizer * m_bl0Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block"));
- m_bl0 = new wxTextCtrl(m_PageBlock, ID_BL0, _T(""), wxDefaultPosition, wxSize(250, 120),
- wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
- m_bl0Sizer->Add(m_bl0, 1, wxEXPAND | wxALL, 0);
-
- wxStaticBoxSizer * m_bl1Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block 95"));
- m_bl95 = new wxTextCtrl(m_PageBlock, ID_BL95, _T(""), wxDefaultPosition, wxSize(300, 120),
- wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
- m_bl1Sizer->Add(m_bl95, 1, wxEXPAND | wxALL, 0);
-
- wxStaticBoxSizer * m_bl2Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block 94"));
- m_bl94 = new wxTextCtrl(m_PageBlock, ID_BL94, _T(""), wxDefaultPosition, wxSize(300, 120),
- wxTE_RICH | wxTE_MULTILINE | wxTE_DONTWRAP | wxNO_BORDER );
- m_bl2Sizer->Add(m_bl94, 1, wxEXPAND | wxALL, 0);
-
-
-
-
-
- // ===================================================================
- // Mail Page
-
- wxStaticBoxSizer * m_m1Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMail, wxT("Entire mail"));
- m_log = new wxTextCtrl(m_PageMail, ID_LOG, _T(""), wxDefaultPosition, wxSize(175, 120),
- wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
- m_m1Sizer->Add(m_log, 1, wxEXPAND | wxALL, 0);
-
- wxStaticBoxSizer * m_m2Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMail, wxT("Logged mail"));
- m_log1 = new wxTextCtrl(m_PageMail, ID_LOG1, _T(""), wxDefaultPosition, wxSize(300, 120),
- wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER );
- m_m2Sizer->Add(m_log1, 1, wxEXPAND | wxALL, 0);
-
- // Show different mails, make room for five mails, in usual circumstances it's two or three
- wxString m_radioBoxChoices3[] = { wxT("0"), wxT("1"), wxT("2"), wxT("3"), wxT("4") };
- m_radioBoxNChoices[3] = sizeof( m_radioBoxChoices3 ) / sizeof( wxString );
- m_RadioBox[3] = new wxRadioBox( m_PageMail, IDC_RADIO3, wxT("Show mail"),
- wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[3], m_radioBoxChoices3, 1, wxRA_SPECIFY_COLS);
- m_RadioBox[3]->Enable(false);
-
- // Games checkboxes (m_PageMail) -----------------------------
- wxStaticBoxSizer * m_gameSizer1 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("GC"));
- m_gc = new wxCheckListBox(m_PageMail, IDC_CHECKLIST2, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER | wxLB_SINGLE);
- m_gameSizer1->Add(m_gc, 1, wxEXPAND | wxALL, 0);
-
- wxStaticBoxSizer * m_gameSizer2 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Wii"));
- m_wii = new wxCheckListBox(m_PageMail, IDC_CHECKLIST3, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER | wxLB_SINGLE);
- m_gameSizer2->Add(m_wii, 1, wxEXPAND | wxALL, 0);
-
- // Settings
- wxStaticBoxSizer * m_gameSizer3 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Settings"));
- m_gcwiiset = new wxCheckListBox(m_PageMail, IDC_CHECKLIST4, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER | wxLB_SINGLE);
- m_gameSizer3->Add(m_gcwiiset, 0, 0, 0);
- m_gcwiiset->Append(wxT("Scan mails"));
- m_gcwiiset->Append(wxT("Store mails"));
-
-
-
- // ===================================================================
- // Main Page
-
- // Options checkboxlist (m_PageMain) -----------------------------------
- wxStaticBoxSizer * m_checkSizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMain, wxT("Options"));
- m_options = new wxCheckListBox(m_PageMain, IDC_CHECKLIST5, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER);
-
- // checkboxes
- m_options->Append(wxT("Save to file"));
- m_options->Append(wxT("Only looping"));
- m_options->Append(wxT("Show all"));
- m_options->Append(wxT("Show console"));
-
- m_options->Check(0, gSaveFile);
- m_options->Check(1, gOnlyLooping);
- m_options->Check(2, gShowAll);
- m_options->Check(3, gSaveFile);
-
- m_options->SetMinSize(wxSize(m_options->GetSize().GetWidth() - 40,
- m_options->GetCount() * 15));
-
- m_checkSizer->Add(m_options, 0, 0, 0);
- // ------------------------
-
-
- // Options checkboxlist (m_PageMain) -----------------------------------
- wxStaticBoxSizer * m_showallSizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMain, wxT("Show all"));
- m_opt_showall = new wxCheckListBox(m_PageMain, IDC_CHECKLIST6, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER);
-
- // checkboxes
- m_opt_showall->Append(wxT("Part 1"));
- m_opt_showall->Append(wxT("Part 2"));
- m_opt_showall->Append(wxT("Part 3"));
- m_opt_showall->Append(wxT("Part 4"));
-
- m_opt_showall->SetMinSize(wxSize(m_opt_showall->GetSize().GetWidth() - 40,
- m_opt_showall->GetCount() * 15));
-
- m_showallSizer->Add(m_opt_showall, 0, 0, 0);
-
-
- // Update frequency, numeric base, presets radio boxes --------------------
- wxString m_radioBoxChoices0[] = { wxT("Show base 10"), wxT("Show base 16") };
- m_radioBoxNChoices[0] = sizeof( m_radioBoxChoices0 ) / sizeof( wxString );
- m_RadioBox[0] = new wxRadioBox( m_PageMain, IDC_RADIO0, wxT("Show base"),
- wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[0], m_radioBoxChoices0, 1, wxRA_SPECIFY_COLS);
-
- wxString m_radioBoxChoices1[] = { wxT("Never"), wxT("5 times/s"), wxT("15 times/s"), wxT("30 times/s") };
- m_radioBoxNChoices[1] = sizeof( m_radioBoxChoices1 ) / sizeof( wxString );
- m_RadioBox[1] = new wxRadioBox( m_PageMain, IDC_RADIO1, wxT("Update freq."),
- wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[1], m_radioBoxChoices1, 1, wxRA_SPECIFY_COLS);
-
- wxString m_radioBoxChoices2[] = { wxT("Preset 1"), wxT("Updates"), wxT("Looping"), wxT("Mixer") };
- m_radioBoxNChoices[2] = sizeof( m_radioBoxChoices2 ) / sizeof( wxString );
- m_RadioBox[2] = new wxRadioBox( m_PageMain, IDC_RADIO2, wxT("Presets"),
- wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[2], m_radioBoxChoices2, 1, wxRA_SPECIFY_COLS);
- // ------------------------
-
-
- // --------------------------------------------------------------------
- // Settings checkboxes (m_PageMain)
- // -------------------------
- wxStaticBoxSizer * m_checkSizer2 = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Settings"));
- m_settings = new wxCheckListBox(m_PageMain, IDC_CHECKLIST1, wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxNO_BORDER);
-
- m_settings->Append(wxT("SSBM fix"));
- m_settings->Append(wxT("SSBM remedy 1"));
- m_settings->Append(wxT("SSBM remedy 2"));
- m_settings->Append(wxT("Sequenced"));
- m_settings->Append(wxT("Volume delta"));
- m_settings->Append(wxT("Reset all"));
-
- m_settings->Check(0, gSSBM);
- m_settings->Check(1, gSSBMremedy1);
- m_settings->Check(2, gSSBMremedy2);
- m_settings->Check(3, gSequenced);
- m_settings->Check(4, gVolume);
- m_settings->Check(5, gReset);
-
- // because the wxCheckListBox is a little underdeveloped we have to help it with this
- // to bad there's no windows xp styles for the checkboxes
- m_settings->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
- m_settings->SetMinSize(wxSize(m_settings->GetSize().GetWidth() - 40,
- m_settings->GetCount() * 15));
-#ifdef _WIN32
- //for (int i = 0; i < m_settings->GetCount(); ++i)
- // m_settings->GetItem(i)->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
-#endif
- m_checkSizer2->Add(m_settings, 0, 0, 0);
- // ------------------------
-
-
- // --------------------------------------------------------------------
- // Buttons
- // ------------------------
- m_Upd = new wxButton(m_PageMain, ID_UPD, wxT("Update"),
- wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
- m_SelC = new wxButton(m_PageMain, ID_SELC, wxT("Select Columns"),
- wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
- m_SelC->Enable(false);
- m_Presets = new wxButton(m_PageMain, ID_PRESETS, wxT("Presets"),
- wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
- m_Presets->Enable(false);
- // --------------------------------------------------------------------
-
-
- // --------------------------------------------------------------------
- // Left buttons and checkboxes (MAIN
- // ------------------------
- wxBoxSizer* sButtons;
- sButtons = new wxBoxSizer(wxVERTICAL);
-
- sButtons->AddSpacer(5); // to set a minimum margin
-
- sButtons->Add(m_Upd, 0, 0, 5);
- sButtons->Add(m_SelC, 0, 0, 5);
- sButtons->Add(m_Presets, 0, 0, 5);
-
- sButtons->AddStretchSpacer(1);
- sButtons->Add(m_checkSizer, 0, 0, 5);
- sButtons->AddStretchSpacer(1);
- sButtons->Add(m_showallSizer, 0, 0, 5);
- sButtons->AddStretchSpacer(1);
- sButtons->Add(m_RadioBox[0], 0, 0, 5);
-
- sButtons->AddSpacer(5);
- // ------------------------
-
-
- // --------------------------------------------------------------------
- // Right buttons and checkboxes (MAIN)
- // ------------------------
- wxBoxSizer* sButtons2;
- sButtons2 = new wxBoxSizer(wxVERTICAL);
-
- sButtons2->AddStretchSpacer(1);
- sButtons2->Add(m_RadioBox[1], 0, 0, 5); // Update freq.
- sButtons2->AddStretchSpacer(1);
- sButtons2->Add(m_RadioBox[2], 0, 0, 5);
- sButtons2->AddStretchSpacer(1);
- sButtons2->Add(m_checkSizer2, 0, 0, 5);
- sButtons2->AddStretchSpacer(1);
- // ------------------------
-
-
- // --------------------------------------------------------------------
- // Parameter tables view (MAIN)
- sLeft = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Current Status"));
-
- // The big window that holds the parameter tables
- m_GPRListView = new CPBView(m_PageMain, ID_GPR, wxDefaultPosition, GetSize(),
- wxLC_REPORT | wxSUNKEN_BORDER | wxLC_ALIGN_LEFT | wxLC_SINGLE_SEL | wxLC_SORT_ASCENDING);
-
- sLeft->Add(m_GPRListView, 1, wxEXPAND|wxALL, 5);
-
- sMain = new wxBoxSizer(wxHORIZONTAL);
- sMain->Add(sLeft, 1, wxEXPAND | wxALL, 5); // margin = 5
- sMain->Add(sButtons, 0, wxALL, 0);
- sMain->Add(sButtons2, 0, wxALL, 5); // margin = 5
- // --------------------------------------------------------------------
-
-
- // --------------------------------------------------------------------
- // Add all stuff to the mail container (MAIL)
- // -----------------------------
- // For the buttons on the right
- wxBoxSizer * sMailRight = new wxBoxSizer(wxVERTICAL);
- //wxStaticBoxSizer * sMailRight = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Current"));
-
- _sMail = new wxBoxSizer(wxHORIZONTAL);
- _sMail->Add(m_m1Sizer, 0, wxEXPAND | (wxUP | wxDOWN), 5); // margin = 5
- _sMail->Add(m_m2Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 5); // margin = 5
- _sMail->Add(sMailRight, 0, wxEXPAND | wxALL, 0); // margin = 0
-
- sMailRight->Add(m_RadioBox[3], 0, wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer1, 1, wxEXPAND | wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer2, 1, wxEXPAND | wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer3, 0, wxALL, 5); // margin = 5
- // --------------------------------------------------------------------
-
-
- // --------------------------------------------------------------------
- // The blocks view container (BLOCKS)
- // -----------------------------
- // For the buttons on the right
- //wxBoxSizer * sMailRight = new wxBoxSizer(wxVERTICAL);
- //wxStaticBoxSizer * sMailRight = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Current"));
-
- sBlock = new wxBoxSizer(wxHORIZONTAL);
- sBlock->Add(m_bl0Sizer, 0, wxEXPAND | (wxUP | wxDOWN), 5); // margin = 5
- sBlock->Add(m_bl1Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 5); // margin = 5
- sBlock->Add(m_bl2Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxRIGHT), 5); // margin = 5
- //sBlock->Add(sMailRight, 0, wxEXPAND | wxALL, 0); // margin = 0
-
- /*sMailRight->Add(m_RadioBox[3], 0, wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer1, 1, wxEXPAND | wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer2, 1, wxEXPAND | wxALL, 5); // margin = 5
- sMailRight->Add(m_gameSizer3, 0, wxALL, 5); // margin = 5*/
- // --------------------------------------------------------------------
-
-
- // --------------------------------------------------------------------
- // Main containers
- // -----------------------------
- sMAIN = new wxBoxSizer(wxVERTICAL);
- sMAIN->Add(m_Notebook, 1, wxEXPAND | wxALL, 5);
- //sMAIN->SetSizeHints(this);
-
- m_PageMain->SetSizer(sMain);
- m_PageMail->SetSizer(_sMail);
- m_PageBlock->SetSizer(sBlock);
- //sMain->Layout();
-
- this->SetSizer(sMAIN);
- //this->Layout();
-
- NotifyUpdate();
- // --------------------------------------------------------------------
-}
-
-// ========================================================================
-// System functions
-// --------------
-void CDebugger::OnClose(wxCloseEvent& /*event*/)
-{
- // save the window position when we hide the window to
- IniFile file;
- file.Load(DEBUGGER_CONFIG_FILE);
- this->Save(file);
- file.Save(DEBUGGER_CONFIG_FILE);
-
- EndModal(0);
- CloseConsole(); // Take the console window with it
-}
-
-void CDebugger::DoHide()
-{
- Hide();
- CloseConsole(); // The console goes with the wx window
-}
-
-void CDebugger::DoShow()
-{
- Show();
- DoShowHideConsole(); // The console goes with the wx window
-}
-
-void CDebugger::OnUpdate(wxCommandEvent& /*event*/)
-{
- this->NotifyUpdate();
-}
-// ===============
-
-
-// =======================================================================================
-// Settings
-// --------------
-void CDebugger::OnSettingsCheck(wxCommandEvent& event)
-{
- gSSBM = m_settings->IsChecked(0);
- gSSBMremedy1 = m_settings->IsChecked(1);
- gSSBMremedy2 = m_settings->IsChecked(2);
- gSequenced = m_settings->IsChecked(3);
- gVolume = m_settings->IsChecked(4);
- gReset = m_settings->IsChecked(5);
-
-}
-// =======================================================================================
-
-
-// =======================================================================================
-// Change preset
-// --------------
-void CDebugger::ChangePreset(wxCommandEvent& event)
-{
- DoChangePreset();
-}
-
-void CDebugger::DoChangePreset()
-{
- if(m_RadioBox[2]->GetSelection() == 0)
- gPreset = 0;
- else if(m_RadioBox[2]->GetSelection() == 1)
- gPreset = 1;
- else if(m_RadioBox[2]->GetSelection() == 2)
- gPreset = 2;
- else if(m_RadioBox[2]->GetSelection() == 3)
- gPreset = 3;
-}
-// ==============
-
-
-// =======================================================================================
-// Show base
-// --------------
-void CDebugger::ShowBase(wxCommandEvent& event)
-{
- if(m_RadioBox[0]->GetSelection() == 0)
- bShowBase = true;
- else if(m_RadioBox[0]->GetSelection() == 1)
- bShowBase = false;
-}
-// ==============
-
-
-// =======================================================================================
-// Change update frequency
-// --------------
-void CDebugger::ChangeFrequency(wxCommandEvent& event)
-{
- DoChangeFrequency();
-}
-
-void CDebugger::DoChangeFrequency()
-{
- if(m_RadioBox[1]->GetSelection() == 0)
- gUpdFreq = 0;
- else if(m_RadioBox[1]->GetSelection() == 1)
- gUpdFreq = 5;
- else if(m_RadioBox[1]->GetSelection() == 2)
- gUpdFreq = 15;
- else if(m_RadioBox[1]->GetSelection() == 3)
- gUpdFreq = 30;
-}
-// ==============
-
-
-// =======================================================================================
-// Options
-// --------------
-void CDebugger::OnOptions(wxCommandEvent& event)
-{
- gSaveFile = m_options->IsChecked(0);
- gOnlyLooping = m_options->IsChecked(1);
- gShowAll = m_options->IsChecked(2);
- gSaveFile = m_options->IsChecked(3);
-
- if(event.GetInt() == 3) DoShowHideConsole();
-}
-
-void CDebugger::OnShowAll(wxCommandEvent& event)
-{
- /// Only allow one selection at a time
- for (u32 i = 0; i < m_opt_showall->GetCount(); ++i)
- if(i != (u32)event.GetInt()) m_opt_showall->Check(i, false);
-
- if(m_opt_showall->IsChecked(0)) giShowAll = 0;
- else if(m_opt_showall->IsChecked(1)) giShowAll = 1;
- else if(m_opt_showall->IsChecked(2)) giShowAll = 2;
- else if(m_opt_showall->IsChecked(3)) giShowAll = 3;
- else giShowAll = -1;
-}
-
-// --------------
-
-
-// =======================================================================================
-// Show or hide console window
-// --------------
-void CDebugger::ShowHideConsole(wxCommandEvent& event)
-{
- DoShowHideConsole();
-}
-
-void CDebugger::DoShowHideConsole()
-{
- if(m_options->IsChecked(3))
- OpenConsole();
- else
- CloseConsole();
-}
-// ==============
-
-
-void CDebugger::NotifyUpdate()
-{
- if (m_GPRListView != NULL)
- {
- m_GPRListView->Update();
- }
-}
-
+//////////////////////////////////////////////////////////////////////////////////////////
+//
+// Licensetype: GNU General Public License (GPL)
+//
+// 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/
+//
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// includes
+#include <iostream>
+#include <fstream>
+#include <sstream>
+
+#ifndef _WIN32
+#include <stdlib.h>
+#endif
+
+#include "Debugger.h"
+#include "PBView.h"
+#include "IniFile.h"
+#include "FileUtil.h"
+#include "StringUtil.h"
+#include "FileSearch.h"
+#include "../Logging/Console.h" // open and close console
+
+
+// externals that are needed even in Release builds
+bool gSSBM = true;
+bool gSSBMremedy1 = true;
+bool gSSBMremedy2 = true;
+bool gSequenced = true;
+bool gVolume = true;
+bool gReset = false;
+
+
+// =======================================================================================
+// Declare events
+BEGIN_EVENT_TABLE(CDebugger,wxDialog)
+ EVT_CLOSE(CDebugger::OnClose) // on close event
+
+ EVT_BUTTON(ID_UPD,CDebugger::OnUpdate) // buttons
+
+ // left cotrols
+ EVT_CHECKLISTBOX(IDC_CHECKLIST5, CDebugger::OnOptions) // options
+ EVT_CHECKLISTBOX(IDC_CHECKLIST6, CDebugger::OnShowAll)
+ EVT_RADIOBOX(IDC_RADIO0,CDebugger::ShowBase) // update frequency
+
+ // right cotrols
+ EVT_RADIOBOX(IDC_RADIO0,CDebugger::ShowBase)
+ EVT_RADIOBOX(IDC_RADIO1,CDebugger::ChangeFrequency) // update frequency
+ EVT_RADIOBOX(IDC_RADIO2,CDebugger::ChangePreset) // presets
+ EVT_CHECKLISTBOX(IDC_CHECKLIST1, CDebugger::OnSettingsCheck) // settings
+
+ EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, CDebugger::UpdateMail) // mails
+ EVT_RADIOBOX(IDC_RADIO3,CDebugger::ChangeMail)
+ EVT_CHECKLISTBOX(IDC_CHECKLIST2, CDebugger::OnGameChange) // gc
+ EVT_CHECKLISTBOX(IDC_CHECKLIST3, CDebugger::OnGameChange) // wii
+ EVT_CHECKLISTBOX(IDC_CHECKLIST4, CDebugger::MailSettings) // settings
+
+ //EVT_RIGHT_DOWN(CDebugger::ScrollBlocks)
+ //EVT_LEFT_DOWN(CDebugger::ScrollBlocks)
+ //EVT_MOUSE_EVENTS(CDebugger::ScrollBlocks)
+ //EVT_MOTION(CDebugger::ScrollBlocks)
+
+ //EVT_SCROLL(CDebugger::ScrollBlocks)
+ //EVT_SCROLLWIN(CDebugger::ScrollBlocks)
+END_EVENT_TABLE()
+// =======================================================================================
+
+
+CDebugger::CDebugger(wxWindow *parent, wxWindowID id, const wxString &title,
+ const wxPoint &position, const wxSize& size, long style)
+ : wxDialog(parent, id, title, position, size, style)
+ , m_GPRListView(NULL)
+ //, gUpdFreq(5) // loaded from file
+ , giShowAll(-1)
+ , gPreset(0)
+
+
+ , upd95(false) // block view settings
+ , upd94(false)
+ , upd93(false)
+ , upd92(false)
+{
+ CreateGUIControls();
+
+ // load ini...
+ IniFile file;
+ file.Load(DEBUGGER_CONFIG_FILE);
+ this->Load(file);
+
+ // append block names
+ PBn.resize(266/2);
+ PBn[10] = "mixer";
+ PBn[34] = "initial_time_delay";
+ PBn[41] = "updates";
+ PBn[46] = "dpop";
+ PBn[58] = "vol_env";
+ PBn[60] = "audio_addr";
+ PBn[68] = "adpcm";
+ PBn[88] = "src";
+ PBn[95] = "adpcm_loop_info";
+ PBn[98] = "lpf";
+ PBn[102] = "hpf";
+ PBn[106] = "pad";
+
+ PBp.resize(266/2);
+ PBp[10] = "volume_left, unknown";
+
+ PBp[58] = "cur_volume, cur_volume_delta"; // PBVolumeEnvelope
+
+
+ PBp[60] = "looping, sample_format"; // PBAudioAddr
+ PBp[62] = "loop_addr_hi, loop_addr_lo";
+ PBp[64] = "end_addr_hi, end_addr_lo";
+ PBp[66] = "cur_addr_hi, cur_addr_lo";
+
+ PBp[68] = "coef[0], coef[1]"; // PBADPCMInfo
+
+ PBp[94] = "cur_addr_frac, last_samples[0]";
+
+ PBp[94] = "last_samples[3], pred_scale";
+ PBp[96] = "yn1, yn2";
+
+ //wxEVT_RIGHT_DOWN, wxEVT_MOUSEWHEEL, wxEVT_LEFT_UP,
+ //m_bl95, m_PageBlock, sBlock
+
+ m_bl95->Connect(wxID_ANY, wxEVT_SCROLLWIN_THUMBTRACK,
+ wxScrollWinEventHandler(CDebugger::ScrollBlocksCursor), (wxObject*)NULL, this);
+ m_bl95->Connect(wxID_ANY, wxEVT_SCROLLWIN_THUMBRELEASE,
+ wxScrollWinEventHandler(CDebugger::ScrollBlocksCursor), (wxObject*)NULL, this);
+ m_bl95->Connect(wxID_ANY, wxEVT_MOTION,
+ wxMouseEventHandler(CDebugger::ScrollBlocksMouse), (wxObject*)NULL, this);
+ m_bl95->Connect(wxID_ANY, wxEVT_MOUSEWHEEL,
+ wxMouseEventHandler(CDebugger::ScrollBlocksMouse), (wxObject*)NULL, this);
+}
+
+CDebugger::~CDebugger()
+{
+ // empty
+ IniFile file;
+ file.Load(DEBUGGER_CONFIG_FILE);
+ this->Save(file);
+ file.Save(DEBUGGER_CONFIG_FILE);
+}
+
+void CDebugger::Save(IniFile& _IniFile) const
+{
+ // TODO2: get the screen resolution and make limits from that
+ if(GetPosition().x < 1000 && GetPosition().y < 1000
+ && GetSize().GetWidth() < 1000 && GetSize().GetHeight() < 1000
+ )
+ {
+ _IniFile.Set("SoundWindow", "x", GetPosition().x);
+ _IniFile.Set("SoundWindow", "y", GetPosition().y);
+ _IniFile.Set("SoundWindow", "w", GetSize().GetWidth());
+ _IniFile.Set("SoundWindow", "h", GetSize().GetHeight());
+ }
+ _IniFile.Set("SoundWindow", "Console", m_options->IsChecked(3)); // save settings
+ _IniFile.Set("SoundWindow", "UpdateFrequency", m_RadioBox[1]->GetSelection());
+ _IniFile.Set("SoundWindow", "ScanMails", m_gcwiiset->IsChecked(0));
+ _IniFile.Set("SoundWindow", "StoreMails", m_gcwiiset->IsChecked(1));
+ _IniFile.Set("SoundWindow", "ShowBase", m_RadioBox[0]->GetSelection() ? false : true);
+}
+
+
+void CDebugger::Load(IniFile& _IniFile)
+{
+ int x,y,w,h;
+ _IniFile.Get("SoundWindow", "x", &x, GetPosition().x);
+ _IniFile.Get("SoundWindow", "y", &y, GetPosition().y);
+ _IniFile.Get("SoundWindow", "w", &w, GetSize().GetWidth());
+ _IniFile.Get("SoundWindow", "h", &h, GetSize().GetHeight());
+ SetSize(x, y, w, h);
+
+ // Show console or not
+ bool Console;
+ _IniFile.Get("SoundWindow", "Console", &Console, m_options->IsChecked(3));
+ m_options->Check(3, Console);
+ DoShowHideConsole();
+
+ // Show number base
+ _IniFile.Get("SoundWindow", "ShowBase", &bShowBase, !m_RadioBox[0]->GetSelection());
+ m_RadioBox[0]->SetSelection(!bShowBase);
+
+ _IniFile.Get("SoundWindow", "UpdateFrequency", &gUpdFreq, m_RadioBox[1]->GetSelection());
+ m_RadioBox[1]->SetSelection(gUpdFreq);
+ DoChangeFrequency();
+
+ // Read and store mails on/off
+ _IniFile.Get("SoundWindow", "ScanMails", &ScanMails, m_gcwiiset->IsChecked(0));
+ m_gcwiiset->Check(0, ScanMails);
+ _IniFile.Get("SoundWindow", "StoreMails", &StoreMails, m_gcwiiset->IsChecked(1));
+ m_gcwiiset->Check(1, StoreMails);
+}
+
+void CDebugger::CreateGUIControls()
+{
+SetTitle(wxT("Sound Debugging"));
+
+ // Basic settings
+ SetIcon(wxNullIcon);
+ SetSize(8, 8, 200, 100); // these will become the minimin sizes allowed by resizing
+ Center();
+
+
+ // Declarations
+ wxBoxSizer * sMAIN, * sMain, *_sMail, * sBlock;
+
+ wxButton* m_Upd;
+ wxButton* m_SelC;
+ wxButton* m_Presets;
+
+ wxStaticBoxSizer* sLeft;
+
+ int m_radioBoxNChoices[3];
+
+
+ // Notebook -----------------------------------------------------
+ m_Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize);
+ m_PageMain = new wxPanel(m_Notebook, ID_PAGEMAIN, wxDefaultPosition, wxDefaultSize);
+ m_Notebook->AddPage(m_PageMain, wxT("Main"));
+ m_PageMail = new wxPanel(m_Notebook, ID_PAGEMAIL, wxDefaultPosition, wxDefaultSize);
+ m_Notebook->AddPage(m_PageMail, wxT("Mail"));
+ m_PageBlock = new wxPanel(m_Notebook, ID_PAGEBLOCK, wxDefaultPosition, wxDefaultSize);
+ m_Notebook->AddPage(m_PageBlock, wxT("Blocks"));
+
+
+
+
+ // ===================================================================
+ // Blocks Page
+
+ wxStaticBoxSizer * m_bl0Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block"));
+ m_bl0 = new wxTextCtrl(m_PageBlock, ID_BL0, _T(""), wxDefaultPosition, wxSize(250, 120),
+ wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
+ m_bl0Sizer->Add(m_bl0, 1, wxEXPAND | wxALL, 0);
+
+ wxStaticBoxSizer * m_bl1Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block 95"));
+ m_bl95 = new wxTextCtrl(m_PageBlock, ID_BL95, _T(""), wxDefaultPosition, wxSize(300, 120),
+ wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
+ m_bl1Sizer->Add(m_bl95, 1, wxEXPAND | wxALL, 0);
+
+ wxStaticBoxSizer * m_bl2Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageBlock, wxT("Block 94"));
+ m_bl94 = new wxTextCtrl(m_PageBlock, ID_BL94, _T(""), wxDefaultPosition, wxSize(300, 120),
+ wxTE_RICH | wxTE_MULTILINE | wxTE_DONTWRAP | wxNO_BORDER );
+ m_bl2Sizer->Add(m_bl94, 1, wxEXPAND | wxALL, 0);
+
+
+
+
+
+ // ===================================================================
+ // Mail Page
+
+ wxStaticBoxSizer * m_m1Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMail, wxT("Entire mail"));
+ m_log = new wxTextCtrl(m_PageMail, ID_LOG, _T(""), wxDefaultPosition, wxSize(175, 120),
+ wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER);
+ m_m1Sizer->Add(m_log, 1, wxEXPAND | wxALL, 0);
+
+ wxStaticBoxSizer * m_m2Sizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMail, wxT("Logged mail"));
+ m_log1 = new wxTextCtrl(m_PageMail, ID_LOG1, _T(""), wxDefaultPosition, wxSize(300, 120),
+ wxTE_RICH | wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP | wxNO_BORDER );
+ m_m2Sizer->Add(m_log1, 1, wxEXPAND | wxALL, 0);
+
+ // Show different mails, make room for five mails, in usual circumstances it's two or three
+ wxString m_radioBoxChoices3[] = { wxT("0"), wxT("1"), wxT("2"), wxT("3"), wxT("4") };
+ m_radioBoxNChoices[3] = sizeof( m_radioBoxChoices3 ) / sizeof( wxString );
+ m_RadioBox[3] = new wxRadioBox( m_PageMail, IDC_RADIO3, wxT("Show mail"),
+ wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[3], m_radioBoxChoices3, 1, wxRA_SPECIFY_COLS);
+ m_RadioBox[3]->Enable(false);
+
+ // Games checkboxes (m_PageMail) -----------------------------
+ wxStaticBoxSizer * m_gameSizer1 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("GC"));
+ m_gc = new wxCheckListBox(m_PageMail, IDC_CHECKLIST2, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER | wxLB_SINGLE);
+ m_gameSizer1->Add(m_gc, 1, wxEXPAND | wxALL, 0);
+
+ wxStaticBoxSizer * m_gameSizer2 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Wii"));
+ m_wii = new wxCheckListBox(m_PageMail, IDC_CHECKLIST3, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER | wxLB_SINGLE);
+ m_gameSizer2->Add(m_wii, 1, wxEXPAND | wxALL, 0);
+
+ // Settings
+ wxStaticBoxSizer * m_gameSizer3 = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Settings"));
+ m_gcwiiset = new wxCheckListBox(m_PageMail, IDC_CHECKLIST4, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER | wxLB_SINGLE);
+ m_gameSizer3->Add(m_gcwiiset, 0, 0, 0);
+ m_gcwiiset->Append(wxT("Scan mails"));
+ m_gcwiiset->Append(wxT("Store mails"));
+
+
+
+ // ===================================================================
+ // Main Page
+
+ // Options checkboxlist (m_PageMain) -----------------------------------
+ wxStaticBoxSizer * m_checkSizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMain, wxT("Options"));
+ m_options = new wxCheckListBox(m_PageMain, IDC_CHECKLIST5, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER);
+
+ // checkboxes
+ m_options->Append(wxT("Save to file"));
+ m_options->Append(wxT("Only looping"));
+ m_options->Append(wxT("Show all"));
+ m_options->Append(wxT("Show console"));
+
+ m_options->Check(0, gSaveFile);
+ m_options->Check(1, gOnlyLooping);
+ m_options->Check(2, gShowAll);
+ m_options->Check(3, gSaveFile);
+
+ m_options->SetMinSize(wxSize(m_options->GetSize().GetWidth() - 40,
+ m_options->GetCount() * 15));
+
+ m_checkSizer->Add(m_options, 0, 0, 0);
+ // ------------------------
+
+
+ // Options checkboxlist (m_PageMain) -----------------------------------
+ wxStaticBoxSizer * m_showallSizer = new wxStaticBoxSizer (wxVERTICAL, m_PageMain, wxT("Show all"));
+ m_opt_showall = new wxCheckListBox(m_PageMain, IDC_CHECKLIST6, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER);
+
+ // checkboxes
+ m_opt_showall->Append(wxT("Part 1"));
+ m_opt_showall->Append(wxT("Part 2"));
+ m_opt_showall->Append(wxT("Part 3"));
+ m_opt_showall->Append(wxT("Part 4"));
+
+ m_opt_showall->SetMinSize(wxSize(m_opt_showall->GetSize().GetWidth() - 40,
+ m_opt_showall->GetCount() * 15));
+
+ m_showallSizer->Add(m_opt_showall, 0, 0, 0);
+
+
+ // Update frequency, numeric base, presets radio boxes --------------------
+ wxString m_radioBoxChoices0[] = { wxT("Show base 10"), wxT("Show base 16") };
+ m_radioBoxNChoices[0] = sizeof( m_radioBoxChoices0 ) / sizeof( wxString );
+ m_RadioBox[0] = new wxRadioBox( m_PageMain, IDC_RADIO0, wxT("Show base"),
+ wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[0], m_radioBoxChoices0, 1, wxRA_SPECIFY_COLS);
+
+ wxString m_radioBoxChoices1[] = { wxT("Never"), wxT("5 times/s"), wxT("15 times/s"), wxT("30 times/s") };
+ m_radioBoxNChoices[1] = sizeof( m_radioBoxChoices1 ) / sizeof( wxString );
+ m_RadioBox[1] = new wxRadioBox( m_PageMain, IDC_RADIO1, wxT("Update freq."),
+ wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[1], m_radioBoxChoices1, 1, wxRA_SPECIFY_COLS);
+
+ wxString m_radioBoxChoices2[] = { wxT("Preset 1"), wxT("Updates"), wxT("Looping"), wxT("Mixer") };
+ m_radioBoxNChoices[2] = sizeof( m_radioBoxChoices2 ) / sizeof( wxString );
+ m_RadioBox[2] = new wxRadioBox( m_PageMain, IDC_RADIO2, wxT("Presets"),
+ wxDefaultPosition, wxDefaultSize, m_radioBoxNChoices[2], m_radioBoxChoices2, 1, wxRA_SPECIFY_COLS);
+ // ------------------------
+
+
+ // --------------------------------------------------------------------
+ // Settings checkboxes (m_PageMain)
+ // -------------------------
+ wxStaticBoxSizer * m_checkSizer2 = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Settings"));
+ m_settings = new wxCheckListBox(m_PageMain, IDC_CHECKLIST1, wxDefaultPosition, wxDefaultSize,
+ 0, NULL, wxNO_BORDER);
+
+ m_settings->Append(wxT("SSBM fix"));
+ m_settings->Append(wxT("SSBM remedy 1"));
+ m_settings->Append(wxT("SSBM remedy 2"));
+ m_settings->Append(wxT("Sequenced"));
+ m_settings->Append(wxT("Volume delta"));
+ m_settings->Append(wxT("Reset all"));
+
+ m_settings->Check(0, gSSBM);
+ m_settings->Check(1, gSSBMremedy1);
+ m_settings->Check(2, gSSBMremedy2);
+ m_settings->Check(3, gSequenced);
+ m_settings->Check(4, gVolume);
+ m_settings->Check(5, gReset);
+
+ // because the wxCheckListBox is a little underdeveloped we have to help it with this
+ // to bad there's no windows xp styles for the checkboxes
+ m_settings->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+ m_settings->SetMinSize(wxSize(m_settings->GetSize().GetWidth() - 40,
+ m_settings->GetCount() * 15));
+#ifdef _WIN32
+ //for (int i = 0; i < m_settings->GetCount(); ++i)
+ // m_settings->GetItem(i)->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+#endif
+ m_checkSizer2->Add(m_settings, 0, 0, 0);
+ // ------------------------
+
+
+ // --------------------------------------------------------------------
+ // Buttons
+ // ------------------------
+ m_Upd = new wxButton(m_PageMain, ID_UPD, wxT("Update"),
+ wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
+ m_SelC = new wxButton(m_PageMain, ID_SELC, wxT("Select Columns"),
+ wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
+ m_SelC->Enable(false);
+ m_Presets = new wxButton(m_PageMain, ID_PRESETS, wxT("Presets"),
+ wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);
+ m_Presets->Enable(false);
+ // --------------------------------------------------------------------
+
+
+ // --------------------------------------------------------------------
+ // Left buttons and checkboxes (MAIN
+ // ------------------------
+ wxBoxSizer* sButtons;
+ sButtons = new wxBoxSizer(wxVERTICAL);
+
+ sButtons->AddSpacer(5); // to set a minimum margin
+
+ sButtons->Add(m_Upd, 0, 0, 5);
+ sButtons->Add(m_SelC, 0, 0, 5);
+ sButtons->Add(m_Presets, 0, 0, 5);
+
+ sButtons->AddStretchSpacer(1);
+ sButtons->Add(m_checkSizer, 0, 0, 5);
+ sButtons->AddStretchSpacer(1);
+ sButtons->Add(m_showallSizer, 0, 0, 5);
+ sButtons->AddStretchSpacer(1);
+ sButtons->Add(m_RadioBox[0], 0, 0, 5);
+
+ sButtons->AddSpacer(5);
+ // ------------------------
+
+
+ // --------------------------------------------------------------------
+ // Right buttons and checkboxes (MAIN)
+ // ------------------------
+ wxBoxSizer* sButtons2;
+ sButtons2 = new wxBoxSizer(wxVERTICAL);
+
+ sButtons2->AddStretchSpacer(1);
+ sButtons2->Add(m_RadioBox[1], 0, 0, 5); // Update freq.
+ sButtons2->AddStretchSpacer(1);
+ sButtons2->Add(m_RadioBox[2], 0, 0, 5);
+ sButtons2->AddStretchSpacer(1);
+ sButtons2->Add(m_checkSizer2, 0, 0, 5);
+ sButtons2->AddStretchSpacer(1);
+ // ------------------------
+
+
+ // --------------------------------------------------------------------
+ // Parameter tables view (MAIN)
+ sLeft = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Current Status"));
+
+ // The big window that holds the parameter tables
+ m_GPRListView = new CPBView(m_PageMain, ID_GPR, wxDefaultPosition, GetSize(),
+ wxLC_REPORT | wxSUNKEN_BORDER | wxLC_ALIGN_LEFT | wxLC_SINGLE_SEL | wxLC_SORT_ASCENDING);
+
+ sLeft->Add(m_GPRListView, 1, wxEXPAND|wxALL, 5);
+
+ sMain = new wxBoxSizer(wxHORIZONTAL);
+ sMain->Add(sLeft, 1, wxEXPAND | wxALL, 5); // margin = 5
+ sMain->Add(sButtons, 0, wxALL, 0);
+ sMain->Add(sButtons2, 0, wxALL, 5); // margin = 5
+ // --------------------------------------------------------------------
+
+
+ // --------------------------------------------------------------------
+ // Add all stuff to the mail container (MAIL)
+ // -----------------------------
+ // For the buttons on the right
+ wxBoxSizer * sMailRight = new wxBoxSizer(wxVERTICAL);
+ //wxStaticBoxSizer * sMailRight = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Current"));
+
+ _sMail = new wxBoxSizer(wxHORIZONTAL);
+ _sMail->Add(m_m1Sizer, 0, wxEXPAND | (wxUP | wxDOWN), 5); // margin = 5
+ _sMail->Add(m_m2Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 5); // margin = 5
+ _sMail->Add(sMailRight, 0, wxEXPAND | wxALL, 0); // margin = 0
+
+ sMailRight->Add(m_RadioBox[3], 0, wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer1, 1, wxEXPAND | wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer2, 1, wxEXPAND | wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer3, 0, wxALL, 5); // margin = 5
+ // --------------------------------------------------------------------
+
+
+ // --------------------------------------------------------------------
+ // The blocks view container (BLOCKS)
+ // -----------------------------
+ // For the buttons on the right
+ //wxBoxSizer * sMailRight = new wxBoxSizer(wxVERTICAL);
+ //wxStaticBoxSizer * sMailRight = new wxStaticBoxSizer(wxVERTICAL, m_PageMail, wxT("Current"));
+
+ sBlock = new wxBoxSizer(wxHORIZONTAL);
+ sBlock->Add(m_bl0Sizer, 0, wxEXPAND | (wxUP | wxDOWN), 5); // margin = 5
+ sBlock->Add(m_bl1Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxLEFT), 5); // margin = 5
+ sBlock->Add(m_bl2Sizer, 1, wxEXPAND | (wxUP | wxDOWN | wxRIGHT), 5); // margin = 5
+ //sBlock->Add(sMailRight, 0, wxEXPAND | wxALL, 0); // margin = 0
+
+ /*sMailRight->Add(m_RadioBox[3], 0, wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer1, 1, wxEXPAND | wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer2, 1, wxEXPAND | wxALL, 5); // margin = 5
+ sMailRight->Add(m_gameSizer3, 0, wxALL, 5); // margin = 5*/
+ // --------------------------------------------------------------------
+
+
+ // --------------------------------------------------------------------
+ // Main containers
+ // -----------------------------
+ sMAIN = new wxBoxSizer(wxVERTICAL);
+ sMAIN->Add(m_Notebook, 1, wxEXPAND | wxALL, 5);
+ //sMAIN->SetSizeHints(this);
+
+ m_PageMain->SetSizer(sMain);
+ m_PageMail->SetSizer(_sMail);
+ m_PageBlock->SetSizer(sBlock);
+ //sMain->Layout();
+
+ this->SetSizer(sMAIN);
+ //this->Layout();
+
+ NotifyUpdate();
+ // --------------------------------------------------------------------
+}
+
+// ========================================================================
+// System functions
+// --------------
+void CDebugger::OnClose(wxCloseEvent& /*event*/)
+{
+ // save the window position when we hide the window to
+ IniFile file;
+ file.Load(DEBUGGER_CONFIG_FILE);
+ this->Save(file);
+ file.Save(DEBUGGER_CONFIG_FILE);
+
+ EndModal(0);
+ CloseConsole(); // Take the console window with it
+}
+
+void CDebugger::DoHide()
+{
+ Hide();
+ CloseConsole(); // The console goes with the wx window
+}
+
+void CDebugger::DoShow()
+{
+ Show();
+ DoShowHideConsole(); // The console goes with the wx window
+}
+
+void CDebugger::OnUpdate(wxCommandEvent& /*event*/)
+{
+ this->NotifyUpdate();
+}
+// ===============
+
+
+// =======================================================================================
+// Settings
+// --------------
+void CDebugger::OnSettingsCheck(wxCommandEvent& event)
+{
+ gSSBM = m_settings->IsChecked(0);
+ gSSBMremedy1 = m_settings->IsChecked(1);
+ gSSBMremedy2 = m_settings->IsChecked(2);
+ gSequenced = m_settings->IsChecked(3);
+ gVolume = m_settings->IsChecked(4);
+ gReset = m_settings->IsChecked(5);
+
+}
+// =======================================================================================
+
+
+// =======================================================================================
+// Change preset
+// --------------
+void CDebugger::ChangePreset(wxCommandEvent& event)
+{
+ DoChangePreset();
+}
+
+void CDebugger::DoChangePreset()
+{
+ if(m_RadioBox[2]->GetSelection() == 0)
+ gPreset = 0;
+ else if(m_RadioBox[2]->GetSelection() == 1)
+ gPreset = 1;
+ else if(m_RadioBox[2]->GetSelection() == 2)
+ gPreset = 2;
+ else if(m_RadioBox[2]->GetSelection() == 3)
+ gPreset = 3;
+}
+// ==============
+
+
+// =======================================================================================
+// Show base
+// --------------
+void CDebugger::ShowBase(wxCommandEvent& event)
+{
+ if(m_RadioBox[0]->GetSelection() == 0)
+ bShowBase = true;
+ else if(m_RadioBox[0]->GetSelection() == 1)
+ bShowBase = false;
+}
+// ==============
+
+
+// =======================================================================================
+// Change update frequency
+// --------------
+void CDebugger::ChangeFrequency(wxCommandEvent& event)
+{
+ DoChangeFrequency();
+}
+
+void CDebugger::DoChangeFrequency()
+{
+ if(m_RadioBox[1]->GetSelection() == 0)
+ gUpdFreq = 0;
+ else if(m_RadioBox[1]->GetSelection() == 1)
+ gUpdFreq = 5;
+ else if(m_RadioBox[1]->GetSelection() == 2)
+ gUpdFreq = 15;
+ else if(m_RadioBox[1]->GetSelection() == 3)
+ gUpdFreq = 30;
+}
+// ==============
+
+
+// =======================================================================================
+// Options
+// --------------
+void CDebugger::OnOptions(wxCommandEvent& event)
+{
+ gSaveFile = m_options->IsChecked(0);
+ gOnlyLooping = m_options->IsChecked(1);
+ gShowAll = m_options->IsChecked(2);
+ gSaveFile = m_options->IsChecked(3);
+
+ if(event.GetInt() == 3) DoShowHideConsole();
+}
+
+void CDebugger::OnShowAll(wxCommandEvent& event)
+{
+ /// Only allow one selection at a time
+ for (u32 i = 0; i < m_opt_showall->GetCount(); ++i)
+ if(i != (u32)event.GetInt()) m_opt_showall->Check(i, false);
+
+ if(m_opt_showall->IsChecked(0)) giShowAll = 0;
+ else if(m_opt_showall->IsChecked(1)) giShowAll = 1;
+ else if(m_opt_showall->IsChecked(2)) giShowAll = 2;
+ else if(m_opt_showall->IsChecked(3)) giShowAll = 3;
+ else giShowAll = -1;
+}
+
+// --------------
+
+
+// =======================================================================================
+// Show or hide console window
+// --------------
+void CDebugger::ShowHideConsole(wxCommandEvent& event)
+{
+ DoShowHideConsole();
+}
+
+void CDebugger::DoShowHideConsole()
+{
+ if(m_options->IsChecked(3))
+ OpenConsole();
+ else
+ CloseConsole();
+}
+// ==============
+
+
+void CDebugger::NotifyUpdate()
+{
+ if (m_GPRListView != NULL)
+ {
+ m_GPRListView->Update();
+ }
+}
+