Implemented some cellSysutil audio functions, added configurable controls (draft/ugly implementation), and minor changes in cellAudio and ConLog

This commit is contained in:
O1L 2013-12-27 14:55:11 +04:00
parent eb2ab73e16
commit 286254a10a
15 changed files with 1057 additions and 55 deletions

View file

@ -28,6 +28,7 @@ enum IDs
id_sys_send_open_menu,
id_sys_send_exit,
id_config_emu,
id_config_pad,
id_config_vfs_manager,
id_config_vhdd_manager,
id_tools_compiler,
@ -36,6 +37,26 @@ enum IDs
id_update_dbg,
};
enum PadIDs
{
id_pad_left,
id_pad_down,
id_pad_right,
id_pad_up,
id_pad_start,
id_pad_r3,
id_pad_l3,
id_pad_select,
id_pad_square,
id_pad_cross,
id_pad_circle,
id_pad_triangle,
id_pad_r1,
id_pad_l1,
id_pad_r2,
id_pad_l2,
};
wxString GetPaneName()
{
static int pane_num = 0;
@ -122,6 +143,7 @@ MainFrame::MainFrame()
menu_sys.Append(id_sys_send_exit, "Send exit cmd")->Enable(false);
menu_conf.Append(id_config_emu, "Settings");
menu_conf.Append(id_config_pad, "PAD Settings");
menu_conf.AppendSeparator();
menu_conf.Append(id_config_vfs_manager, "Virtual File System Manager");
menu_conf.Append(id_config_vhdd_manager, "Virtual HDD Manager");
@ -146,6 +168,7 @@ MainFrame::MainFrame()
Connect( id_sys_send_exit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::SendExit) );
Connect( id_config_emu, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::Config) );
Connect( id_config_pad, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::ConfigPad) );
Connect( id_config_vfs_manager, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::ConfigVFS) );
Connect( id_config_vhdd_manager,wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::ConfigVHDD) );
@ -208,7 +231,7 @@ void MainFrame::BootGame(wxCommandEvent& WXUNUSED(event))
if(Emu.BootGame(ctrl.GetPath().c_str()))
{
ConLog.Write("Game: boot done.");
ConLog.Success("Game: boot done.");
}
else
{
@ -274,7 +297,7 @@ void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
// Save the title ID.
Emu.SetTitleID(titleID);
ConLog.Write("PKG: extract done.");
ConLog.Success("PKG: extract done.");
// Travel to the main dir.
wxSetWorkingDirectory(mainDir);
@ -315,7 +338,7 @@ void MainFrame::BootElf(wxCommandEvent& WXUNUSED(event))
Emu.SetPath(ctrl.GetPath());
Emu.Load();
ConLog.Write("(S)ELF: boot done.");
ConLog.Success("(S)ELF: boot done.");
}
void MainFrame::Pause(wxCommandEvent& WXUNUSED(event))
@ -382,6 +405,9 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
wxStaticBoxSizer* s_round_pad_handler( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Pad Handler") ) );
wxStaticBoxSizer* s_round_keyboard_handler( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Keyboard Handler") ) );
wxStaticBoxSizer* s_round_mouse_handler( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Mouse Handler") ) );
wxStaticBoxSizer* s_round_audio( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Audio") ) );
wxStaticBoxSizer* s_round_audio_out( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Audio Out") ) );
wxComboBox* cbox_cpu_decoder = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_gs_render = new wxComboBox(&diag, wxID_ANY);
@ -390,6 +416,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
wxComboBox* cbox_pad_handler = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_keyboard_handler = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_mouse_handler = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_audio_out = new wxComboBox(&diag, wxID_ANY);
wxCheckBox* chbox_cpu_ignore_rwerrors = new wxCheckBox(&diag, wxID_ANY, "Ignore Read/Write errors");
wxCheckBox* chbox_gs_dump_depth = new wxCheckBox(&diag, wxID_ANY, "Dump Depth Buffer");
@ -424,6 +451,8 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
cbox_mouse_handler->Append("Windows");
//cbox_mouse_handler->Append("DirectInput");
cbox_audio_out->Append("Null");
chbox_cpu_ignore_rwerrors->SetValue(Ini.CPUIgnoreRWErrors.GetValue());
chbox_gs_dump_depth->SetValue(Ini.GSDumpDepthBuffer.GetValue());
chbox_gs_dump_color->SetValue(Ini.GSDumpColorBuffers.GetValue());
@ -436,6 +465,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
cbox_pad_handler->SetSelection(Ini.PadHandlerMode.GetValue());
cbox_keyboard_handler->SetSelection(Ini.KeyboardHandlerMode.GetValue());
cbox_mouse_handler->SetSelection(Ini.MouseHandlerMode.GetValue());
cbox_audio_out->SetSelection(Ini.AudioOutMode.GetValue());
s_round_cpu_decoder->Add(cbox_cpu_decoder, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_cpu->Add(s_round_cpu_decoder, wxSizerFlags().Border(wxALL, 5).Expand());
@ -458,6 +488,9 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
s_round_io->Add(s_round_keyboard_handler, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_io->Add(s_round_mouse_handler, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_audio_out->Add(cbox_audio_out, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_audio->Add(s_round_audio_out, wxSizerFlags().Border(wxALL, 5).Expand());
wxBoxSizer* s_b_panel(new wxBoxSizer(wxHORIZONTAL));
s_b_panel->Add(new wxButton(&diag, wxID_OK), wxSizerFlags().Border(wxALL, 5).Center());
@ -468,6 +501,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
s_subpanel1->Add(s_round_cpu, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel1->Add(s_round_gs, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel2->Add(s_round_io, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel2->Add(s_round_audio, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel1->Add(s_b_panel, wxSizerFlags().Border(wxALL, 8).Expand());
s_subpanel2->AddSpacer(180);
@ -489,6 +523,195 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
Ini.PadHandlerMode.SetValue(cbox_pad_handler->GetSelection());
Ini.KeyboardHandlerMode.SetValue(cbox_keyboard_handler->GetSelection());
Ini.MouseHandlerMode.SetValue(cbox_mouse_handler->GetSelection());
Ini.AudioOutMode.SetValue(cbox_audio_out->GetSelection());
Ini.Save();
}
if(paused) Emu.Resume();
}
void MainFrame::ConfigPad(wxCommandEvent& WXUNUSED(event))
{
bool paused = false;
if(Emu.IsRunning())
{
Emu.Pause();
paused = true;
}
wxDialog diag(this, wxID_ANY, "PAD Settings", wxDefaultPosition);
wxBoxSizer* s_panel(new wxBoxSizer(wxHORIZONTAL));
wxBoxSizer* s_subpanel1(new wxBoxSizer(wxVERTICAL));
wxBoxSizer* s_subpanel2(new wxBoxSizer(wxVERTICAL));
wxBoxSizer* s_subpanel3(new wxBoxSizer(wxVERTICAL));
wxBoxSizer* s_subpanel4(new wxBoxSizer(wxVERTICAL));
wxBoxSizer* s_subpanel5(new wxBoxSizer(wxVERTICAL));
wxStaticBoxSizer* s_round_pad_controls( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Controls") ) );
wxStaticBoxSizer* s_round_pad_left( new wxStaticBoxSizer( wxVERTICAL, &diag, _("LEFT") ) );
wxStaticBoxSizer* s_round_pad_down( new wxStaticBoxSizer( wxVERTICAL, &diag, _("DOWN") ) );
wxStaticBoxSizer* s_round_pad_right( new wxStaticBoxSizer( wxVERTICAL, &diag, _("RIGHT") ) );
wxStaticBoxSizer* s_round_pad_up( new wxStaticBoxSizer( wxVERTICAL, &diag, _("UP") ) );
wxStaticBoxSizer* s_round_pad_shifts_l( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Shifts") ) );
wxStaticBoxSizer* s_round_pad_l1( new wxStaticBoxSizer( wxVERTICAL, &diag, _("L1") ) );
wxStaticBoxSizer* s_round_pad_l2( new wxStaticBoxSizer( wxVERTICAL, &diag, _("L2") ) );
wxStaticBoxSizer* s_round_pad_l3( new wxStaticBoxSizer( wxVERTICAL, &diag, _("L3") ) );
wxStaticBoxSizer* s_round_pad_system( new wxStaticBoxSizer( wxVERTICAL, &diag, _("System") ) );
wxStaticBoxSizer* s_round_pad_select( new wxStaticBoxSizer( wxVERTICAL, &diag, _("SELECT") ) );
wxStaticBoxSizer* s_round_pad_start( new wxStaticBoxSizer( wxVERTICAL, &diag, _("START") ) );
wxStaticBoxSizer* s_round_pad_shifts_r( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Shifts") ) );
wxStaticBoxSizer* s_round_pad_r1( new wxStaticBoxSizer( wxVERTICAL, &diag, _("R1") ) );
wxStaticBoxSizer* s_round_pad_r2( new wxStaticBoxSizer( wxVERTICAL, &diag, _("R2") ) );
wxStaticBoxSizer* s_round_pad_r3( new wxStaticBoxSizer( wxVERTICAL, &diag, _("R3") ) );
wxStaticBoxSizer* s_round_pad_buttons( new wxStaticBoxSizer( wxVERTICAL, &diag, _("Buttons") ) );
wxStaticBoxSizer* s_round_pad_square( new wxStaticBoxSizer( wxVERTICAL, &diag, _("SQUARE") ) );
wxStaticBoxSizer* s_round_pad_cross( new wxStaticBoxSizer( wxVERTICAL, &diag, _("CROSS") ) );
wxStaticBoxSizer* s_round_pad_circle( new wxStaticBoxSizer( wxVERTICAL, &diag, _("CIRCLE") ) );
wxStaticBoxSizer* s_round_pad_triangle( new wxStaticBoxSizer( wxVERTICAL, &diag, _("TRIANGLE") ) );
wxComboBox* cbox_pad_left = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_down = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_right = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_up = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_start = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_r3 = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_l3 = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_select = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_square = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_cross = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_circle = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_triangle = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_r1 = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_l1 = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_r2 = new wxComboBox(&diag, wxID_ANY);
wxComboBox* cbox_pad_l2 = new wxComboBox(&diag, wxID_ANY);
for(int i=0; i<128; i++)
{
cbox_pad_left->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_down->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_right->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_up->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_r3->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_l3->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_square->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_cross->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_circle->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_triangle->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_r1->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_l1->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_r2->Append (wxString::Format("%c", static_cast<char>(i) ) );
cbox_pad_l2->Append (wxString::Format("%c", static_cast<char>(i) ) );
}
cbox_pad_start->Append("Enter");
cbox_pad_select->Append("Space");
cbox_pad_left->SetSelection (Ini.PadHandlerLeft.GetValue());
cbox_pad_down->SetSelection (Ini.PadHandlerDown.GetValue());
cbox_pad_right->SetSelection (Ini.PadHandlerRight.GetValue());
cbox_pad_up->SetSelection (Ini.PadHandlerUp.GetValue());
cbox_pad_start->SetSelection (Ini.PadHandlerStart.GetValue());
cbox_pad_r3->SetSelection (Ini.PadHandlerR3.GetValue());
cbox_pad_l3->SetSelection (Ini.PadHandlerL3.GetValue());
cbox_pad_select->SetSelection (Ini.PadHandlerSelect.GetValue());
cbox_pad_square->SetSelection (Ini.PadHandlerSquare.GetValue());
cbox_pad_cross->SetSelection (Ini.PadHandlerCross.GetValue());
cbox_pad_circle->SetSelection (Ini.PadHandlerCircle.GetValue());
cbox_pad_triangle->SetSelection (Ini.PadHandlerTriangle.GetValue());
cbox_pad_r1->SetSelection (Ini.PadHandlerR1.GetValue());
cbox_pad_l1->SetSelection (Ini.PadHandlerL1.GetValue());
cbox_pad_r2->SetSelection (Ini.PadHandlerR2.GetValue());
cbox_pad_l2->SetSelection (Ini.PadHandlerL2.GetValue());
s_round_pad_left->Add(cbox_pad_left, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_down->Add(cbox_pad_down, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_right->Add(cbox_pad_right, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_up->Add(cbox_pad_up, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_start->Add(cbox_pad_start, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_r3->Add(cbox_pad_r3, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_l3->Add(cbox_pad_l3, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_select->Add(cbox_pad_select, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_square->Add(cbox_pad_square, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_cross->Add(cbox_pad_cross, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_circle->Add(cbox_pad_circle, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_triangle->Add(cbox_pad_triangle, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_r1->Add(cbox_pad_r1, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_l1->Add(cbox_pad_l1, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_r2->Add(cbox_pad_r2, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_l2->Add(cbox_pad_l2, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_controls->Add(s_round_pad_left, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_controls->Add(s_round_pad_down, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_controls->Add(s_round_pad_right, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_controls->Add(s_round_pad_up, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_l->Add(s_round_pad_l1, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_l->Add(s_round_pad_l2, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_l->Add(s_round_pad_l3, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_system->Add(s_round_pad_start, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_system->Add(s_round_pad_select, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_r->Add(s_round_pad_r1, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_r->Add(s_round_pad_r2, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_shifts_r->Add(s_round_pad_r3, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_buttons->Add(s_round_pad_square, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_buttons->Add(s_round_pad_cross, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_buttons->Add(s_round_pad_circle, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_pad_buttons->Add(s_round_pad_triangle, wxSizerFlags().Border(wxALL, 5).Expand());
wxBoxSizer* s_b_panel(new wxBoxSizer(wxHORIZONTAL));
s_b_panel->Add(new wxButton(&diag, wxID_OK), wxSizerFlags().Border(wxALL, 5).Center());
s_b_panel->Add(new wxButton(&diag, wxID_CANCEL), wxSizerFlags().Border(wxALL, 5).Center());
s_subpanel1->Add(s_round_pad_controls, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel2->Add(s_round_pad_shifts_l, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel3->Add(s_round_pad_system, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel3->Add(s_b_panel, wxSizerFlags().Border(wxALL, 8).Expand());
s_subpanel4->Add(s_round_pad_shifts_r, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel5->Add(s_round_pad_buttons, wxSizerFlags().Border(wxALL, 5).Expand());
s_panel->Add(s_subpanel1, wxSizerFlags().Border(wxALL, 5).Expand());
s_panel->Add(s_subpanel2, wxSizerFlags().Border(wxALL, 5).Expand());
s_panel->Add(s_subpanel3, wxSizerFlags().Border(wxALL, 5).Expand());
s_panel->Add(s_subpanel4, wxSizerFlags().Border(wxALL, 5).Expand());
s_panel->Add(s_subpanel5, wxSizerFlags().Border(wxALL, 5).Expand());
diag.SetSizerAndFit( s_panel );
if(diag.ShowModal() == wxID_OK)
{
Ini.PadHandlerLeft.SetValue(cbox_pad_left->GetSelection());
Ini.PadHandlerDown.SetValue(cbox_pad_down->GetSelection());
Ini.PadHandlerRight.SetValue(cbox_pad_right->GetSelection());
Ini.PadHandlerUp.SetValue(cbox_pad_up->GetSelection());
Ini.PadHandlerStart.SetValue(cbox_pad_start->GetSelection());
Ini.PadHandlerR3.SetValue(cbox_pad_r3->GetSelection());
Ini.PadHandlerL3.SetValue(cbox_pad_l3->GetSelection());
Ini.PadHandlerSelect.SetValue(cbox_pad_select->GetSelection());
Ini.PadHandlerSquare.SetValue(cbox_pad_square->GetSelection());
Ini.PadHandlerCross.SetValue(cbox_pad_cross->GetSelection());
Ini.PadHandlerCircle.SetValue(cbox_pad_circle->GetSelection());
Ini.PadHandlerTriangle.SetValue(cbox_pad_triangle->GetSelection());
Ini.PadHandlerR1.SetValue(cbox_pad_r1->GetSelection());
Ini.PadHandlerL1.SetValue(cbox_pad_l1->GetSelection());
Ini.PadHandlerR2.SetValue(cbox_pad_r2->GetSelection());
Ini.PadHandlerL2.SetValue(cbox_pad_l2->GetSelection());
Ini.Save();
}