From bb40c0a71aadd371533ddde0d6dc13f57f855f36 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 2 Apr 2014 14:23:37 -0400 Subject: [PATCH 01/17] Reorganize the VS project. Puts all the headers with the corresponding cpp file instead of having every include in a single folder. Also added headers that weren't included previously. --- rpcs3/rpcs3.vcxproj | 87 ++++++ rpcs3/rpcs3.vcxproj.filters | 600 ++++++++++++++++++++++++++---------- 2 files changed, 522 insertions(+), 165 deletions(-) diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 5aa56519bc..8f4907dcd6 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -366,6 +366,7 @@ + @@ -373,6 +374,13 @@ + + + + + + + @@ -394,36 +402,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 1c1ed0a365..58dbd2f1e8 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -26,9 +26,6 @@ {461eddb5-b8a8-46be-918c-98cc7eaf995b} - - {6fb03753-064a-456d-bb6f-9ceaed3776c7} - {e79e49c8-6967-4776-8f50-5479c3821b51} @@ -62,6 +59,18 @@ {e9937271-a8ff-49f6-a326-c4659f96703f} + + {8e0f4d81-cb1a-4f3a-ae11-704ead4e1826} + + + {ee9b80ba-467b-47d0-9e20-670fec13ef5d} + + + {16f84899-2e1c-4033-8832-f1b6abb2056b} + + + {899523fa-c26a-44ea-b272-73c4585e3821} + @@ -76,9 +85,6 @@ Gui - - Emu - Gui @@ -487,143 +493,14 @@ Utilities + + Emu\Memory + - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - - - Include - Utilities @@ -639,39 +516,15 @@ Utilities - - Include - - - Include - - - Include - - - Include - - - Include - Utilities - - Include - - - Include - Utilities Utilities - - Include - Crypto @@ -693,11 +546,428 @@ Crypto - - Include - Utilities + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Gui + + + Loader + + + Loader + + + Loader + + + Loader + + + Loader + + + Loader + + + Loader + + + Loader + + + Loader + + + Emu\Audio + + + Emu\Audio + + + Emu\Audio\AL + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\CPU + + + Emu\CPU + + + Emu\CPU + + + Emu\CPU + + + Emu\CPU + + + Emu + + + Emu\Memory + + + Emu\Memory + + + Emu + + + rpcs3 + + + rpcs3 + + + rpcs3 + + + Gui + + + Gui + + + Emu\GS + + + Emu\GS + + + Emu\GS + + + Emu\GS + + + Emu\GS + + + Emu\GS + + + Emu\GS\Null + + + Emu\GS + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu\GS\GL + + + Emu + + + Emu\Io + + + Emu\Io + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Cell + + + Emu\Io\Null + + + Emu\Io + + + Emu\Io + + + Emu\Io + + + Emu\Io\Windows + + + Emu\Io\Windows + + + Emu\Io\Windows + + + Emu\SysCalls + + + Emu\SysCalls + + + rpcs3 + + + Emu\ARMv7 + + + Emu\ARMv7 + + + Emu\ARMv7 + + + Emu\ARMv7 + + + Emu\ARMv7 + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\FS + + + Emu\HDD + + + Emu\Io + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls\lv2 + + + Emu\SysCalls + + + Emu\SysCalls + + + Emu\SysCalls + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + \ No newline at end of file From 3243c4c0c846b7b481f12d080bb7099116942d9b Mon Sep 17 00:00:00 2001 From: Nmzik Date: Sat, 5 Apr 2014 14:17:32 +0400 Subject: [PATCH 02/17] Test --- rpcs3/Emu/SysCalls/FuncList.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/rpcs3/Emu/SysCalls/FuncList.cpp b/rpcs3/Emu/SysCalls/FuncList.cpp index 8ab729dd9c..9531ee7fad 100644 --- a/rpcs3/Emu/SysCalls/FuncList.cpp +++ b/rpcs3/Emu/SysCalls/FuncList.cpp @@ -3041,6 +3041,7 @@ s64 SysCalls::DoFunc(const u32 id) case 0xd9a4f812: FUNC_LOG_ERROR("TODO: atoff"); case 0xda5a7eb8: FUNC_LOG_ERROR("TODO: strtoul"); case 0xdaeada07: FUNC_LOG_ERROR("TODO: mallopt"); + case 0xdbf4c59c: FUNC_LOG_ERROR("TODO: cellPadGetCapabilityInfo"); case 0xddbac025: FUNC_LOG_ERROR("TODO: strcasecmp_ascii"); case 0xddc71a75: FUNC_LOG_ERROR("TODO: _SCE_Assert"); case 0xde1bb092: FUNC_LOG_ERROR("TODO: init_by_array_TT800"); From bbbe2f8916dcb9263a0050d86d012e1e9d649d32 Mon Sep 17 00:00:00 2001 From: O1L Date: Sat, 5 Apr 2014 18:26:45 +0400 Subject: [PATCH 03/17] GUI: Pad Settings dialog reworked. --- rpcs3/Emu/Io/Windows/WindowsPadHandler.h | 40 +- rpcs3/Gui/MainFrame.cpp | 205 +------- rpcs3/Gui/PADManager.cpp | 573 +++++++++++++++++++++++ rpcs3/Gui/PADManager.h | 102 ++++ rpcs3/Ini.h | 37 +- rpcs3/rpcs3.vcxproj | 3 +- rpcs3/rpcs3.vcxproj.filters | 5 +- 7 files changed, 738 insertions(+), 227 deletions(-) create mode 100644 rpcs3/Gui/PADManager.cpp create mode 100644 rpcs3/Gui/PADManager.h diff --git a/rpcs3/Emu/Io/Windows/WindowsPadHandler.h b/rpcs3/Emu/Io/Windows/WindowsPadHandler.h index a3464aecc5..257db117ea 100644 --- a/rpcs3/Emu/Io/Windows/WindowsPadHandler.h +++ b/rpcs3/Emu/Io/Windows/WindowsPadHandler.h @@ -39,27 +39,27 @@ public: CELL_PAD_CAPABILITY_PS3_CONFORMITY | CELL_PAD_CAPABILITY_PRESS_MODE, CELL_PAD_DEV_TYPE_STANDARD)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerLeft.GetValue()), CELL_PAD_CTRL_LEFT)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerDown.GetValue()), CELL_PAD_CTRL_DOWN)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerRight.GetValue()), CELL_PAD_CTRL_RIGHT)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerUp.GetValue()), CELL_PAD_CTRL_UP)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, WXK_RETURN, CELL_PAD_CTRL_START)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerR3.GetValue()), CELL_PAD_CTRL_R3)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, static_cast(Ini.PadHandlerL3.GetValue()), CELL_PAD_CTRL_L3)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, WXK_SPACE, CELL_PAD_CTRL_SELECT)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerLeft.GetValue(), CELL_PAD_CTRL_LEFT)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerDown.GetValue(), CELL_PAD_CTRL_DOWN)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerRight.GetValue(), CELL_PAD_CTRL_RIGHT)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerUp.GetValue(), CELL_PAD_CTRL_UP)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerStart.GetValue(), CELL_PAD_CTRL_START)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerR3.GetValue(), CELL_PAD_CTRL_R3)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerL3.GetValue(), CELL_PAD_CTRL_L3)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL1, Ini.PadHandlerSelect.GetValue(), CELL_PAD_CTRL_SELECT)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerSquare.GetValue()), CELL_PAD_CTRL_SQUARE)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerCross.GetValue()), CELL_PAD_CTRL_CROSS)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerCircle.GetValue()), CELL_PAD_CTRL_CIRCLE)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerTriangle.GetValue()), CELL_PAD_CTRL_TRIANGLE)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerR1.GetValue()), CELL_PAD_CTRL_R1)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerL1.GetValue()), CELL_PAD_CTRL_L1)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerR2.GetValue()), CELL_PAD_CTRL_R2)); - m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, static_cast(Ini.PadHandlerL2.GetValue()), CELL_PAD_CTRL_L2)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerSquare.GetValue(), CELL_PAD_CTRL_SQUARE)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerCross.GetValue(), CELL_PAD_CTRL_CROSS)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerCircle.GetValue(), CELL_PAD_CTRL_CIRCLE)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerTriangle.GetValue(), CELL_PAD_CTRL_TRIANGLE)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerR1.GetValue(), CELL_PAD_CTRL_R1)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerL1.GetValue(), CELL_PAD_CTRL_L1)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerR2.GetValue(), CELL_PAD_CTRL_R2)); + m_pads[0].m_buttons.Move(new Button(CELL_PAD_BTN_OFFSET_DIGITAL2, Ini.PadHandlerL2.GetValue(), CELL_PAD_CTRL_L2)); - m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_LEFT_X, WXK_LEFT, WXK_RIGHT)); - m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_LEFT_Y, WXK_UP, WXK_DOWN)); - m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_X, WXK_HOME, WXK_END)); - m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_Y, WXK_PAGEUP, WXK_PAGEDOWN)); + m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_LEFT_X, Ini.PadHandlerLStickLeft.GetValue(), Ini.PadHandlerLStickRight.GetValue())); + m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_LEFT_Y, Ini.PadHandlerLStickUp.GetValue(), Ini.PadHandlerLStickDown.GetValue())); + m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_X, Ini.PadHandlerRStickLeft.GetValue(), Ini.PadHandlerRStickRight.GetValue())); + m_pads[0].m_sticks.Move(new AnalogStick(CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_Y, Ini.PadHandlerRStickUp.GetValue(), Ini.PadHandlerRStickDown.GetValue())); } }; \ No newline at end of file diff --git a/rpcs3/Gui/MainFrame.cpp b/rpcs3/Gui/MainFrame.cpp index e374be004e..c84ff1e539 100644 --- a/rpcs3/Gui/MainFrame.cpp +++ b/rpcs3/Gui/MainFrame.cpp @@ -3,6 +3,7 @@ #include "CompilerELF.h" #include "MemoryViewer.h" #include "RSXDebugger.h" +#include "PADManager.h" #include "git-version.h" #include "Ini.h" @@ -38,26 +39,6 @@ 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; @@ -574,189 +555,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event)) 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(i) ) ); - cbox_pad_down->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_right->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_up->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_r3->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_l3->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_square->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_cross->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_circle->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_triangle->Append(wxString::Format("%c", static_cast(i) ) ); - cbox_pad_r1->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_l1->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_r2->Append (wxString::Format("%c", static_cast(i) ) ); - cbox_pad_l2->Append (wxString::Format("%c", static_cast(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(); - } - - if(paused) Emu.Resume(); + PADManager(this).ShowModal(); } void MainFrame::ConfigVFS(wxCommandEvent& WXUNUSED(event)) diff --git a/rpcs3/Gui/PADManager.cpp b/rpcs3/Gui/PADManager.cpp new file mode 100644 index 0000000000..fd7ef34f98 --- /dev/null +++ b/rpcs3/Gui/PADManager.cpp @@ -0,0 +1,573 @@ +#include "stdafx.h" +#include "PADManager.h" + +PADManager::PADManager(wxWindow* parent) + : wxDialog(parent, wxID_ANY, "PAD Settings", wxDefaultPosition) + , m_button_id(0) + , m_key_pressed(false) +{ + bool paused = false; + + if(Emu.IsRunning()) + { + Emu.Pause(); + paused = true; + } + + wxBoxSizer* s_panel(new wxBoxSizer(wxHORIZONTAL)); + wxBoxSizer* s_subpanel(new wxBoxSizer(wxVERTICAL)); + wxBoxSizer* s_subpanel2(new wxBoxSizer(wxVERTICAL)); + + // Left Analog Stick + wxStaticBoxSizer* s_round_stick_l( new wxStaticBoxSizer( wxVERTICAL, this, _("Left Analog Stick") ) ); + wxBoxSizer* s_subpanel_lstick_1( new wxBoxSizer( wxVERTICAL) ); + wxBoxSizer* s_subpanel_lstick_2( new wxBoxSizer( wxHORIZONTAL) ); + wxBoxSizer* s_subpanel_lstick_3( new wxBoxSizer( wxVERTICAL) ); + + // D-Pad + wxStaticBoxSizer* s_round_pad_controls( new wxStaticBoxSizer( wxVERTICAL, this, _("D-Pad") ) ); + wxBoxSizer* s_subpanel_pad_1( new wxBoxSizer( wxVERTICAL) ); + wxBoxSizer* s_subpanel_pad_2( new wxBoxSizer( wxHORIZONTAL) ); + wxBoxSizer* s_subpanel_pad_3( new wxBoxSizer( wxVERTICAL) ); + + // Left shifts + wxStaticBoxSizer* s_round_pad_shifts_l( new wxStaticBoxSizer( wxVERTICAL, this, _("Left Shifts") ) ); + wxStaticBoxSizer* s_round_pad_l1( new wxStaticBoxSizer( wxVERTICAL, this, _("L1") ) ); + wxStaticBoxSizer* s_round_pad_l2( new wxStaticBoxSizer( wxVERTICAL, this, _("L2") ) ); + wxStaticBoxSizer* s_round_pad_l3( new wxStaticBoxSizer( wxVERTICAL, this, _("L3") ) ); + + // Start / Select + wxStaticBoxSizer* s_round_pad_system( new wxStaticBoxSizer( wxVERTICAL, this, _("System") ) ); + wxStaticBoxSizer* s_round_pad_select( new wxStaticBoxSizer( wxVERTICAL, this, _("Select") ) ); + wxStaticBoxSizer* s_round_pad_start( new wxStaticBoxSizer( wxVERTICAL, this, _("Start") ) ); + + // Right shifts + wxStaticBoxSizer* s_round_pad_shifts_r( new wxStaticBoxSizer( wxVERTICAL, this, _("Right Shifts") ) ); + wxStaticBoxSizer* s_round_pad_r1( new wxStaticBoxSizer( wxVERTICAL, this, _("R1") ) ); + wxStaticBoxSizer* s_round_pad_r2( new wxStaticBoxSizer( wxVERTICAL, this, _("R2") ) ); + wxStaticBoxSizer* s_round_pad_r3( new wxStaticBoxSizer( wxVERTICAL, this, _("R3") ) ); + + // Action buttons + wxStaticBoxSizer* s_round_pad_buttons( new wxStaticBoxSizer( wxVERTICAL, this, _("Buttons") ) ); + wxStaticBoxSizer* s_round_pad_square( new wxStaticBoxSizer( wxVERTICAL, this, _("Square") ) ); + wxStaticBoxSizer* s_round_pad_cross( new wxStaticBoxSizer( wxVERTICAL, this, _("Cross") ) ); + wxStaticBoxSizer* s_round_pad_circle( new wxStaticBoxSizer( wxVERTICAL, this, _("Circle") ) ); + wxStaticBoxSizer* s_round_pad_triangle( new wxStaticBoxSizer( wxVERTICAL, this, _("Triangle") ) ); + wxBoxSizer* s_subpanel_buttons_1( new wxBoxSizer( wxVERTICAL) ); + wxBoxSizer* s_subpanel_buttons_2( new wxBoxSizer( wxHORIZONTAL) ); + wxBoxSizer* s_subpanel_buttons_3( new wxBoxSizer( wxVERTICAL) ); + + // Right Analog Stick + wxStaticBoxSizer* s_round_stick_r( new wxStaticBoxSizer( wxVERTICAL, this, _("Right Analog Stick") ) ); + wxBoxSizer* s_subpanel_rstick_1( new wxBoxSizer( wxVERTICAL) ); + wxBoxSizer* s_subpanel_rstick_2( new wxBoxSizer( wxHORIZONTAL) ); + wxBoxSizer* s_subpanel_rstick_3( new wxBoxSizer( wxVERTICAL) ); + + // Ok / Cancel + wxBoxSizer* s_b_panel(new wxBoxSizer(wxHORIZONTAL)); + + wxBoxSizer* s_reset_panel(new wxBoxSizer(wxHORIZONTAL)); + + #define ButtonParameters wxEmptyString, wxDefaultPosition, wxSize(60,-1) + #define SizerFlags wxSizerFlags().Border(wxALL, 3).Center() + + + // Buttons + b_up_lstick = new wxButton(this, id_pad_lstick_up, ButtonParameters); + b_down_lstick = new wxButton(this, id_pad_lstick_down, ButtonParameters); + b_left_lstick = new wxButton(this, id_pad_lstick_left, ButtonParameters); + b_right_lstick = new wxButton(this, id_pad_lstick_right, ButtonParameters); + + b_up = new wxButton(this, id_pad_up, ButtonParameters); + b_down = new wxButton(this, id_pad_down, ButtonParameters); + b_left = new wxButton(this, id_pad_left, ButtonParameters); + b_right = new wxButton(this, id_pad_right, ButtonParameters); + + b_shift_l1 = new wxButton(this, id_pad_l1, ButtonParameters); + b_shift_l2 = new wxButton(this, id_pad_l2, ButtonParameters); + b_shift_l3 = new wxButton(this, id_pad_l3, ButtonParameters); + + b_start = new wxButton(this, id_pad_start, ButtonParameters); + b_select = new wxButton(this, id_pad_select, ButtonParameters); + + b_shift_r1 = new wxButton(this, id_pad_r1, ButtonParameters); + b_shift_r2 = new wxButton(this, id_pad_r2, ButtonParameters); + b_shift_r3 = new wxButton(this, id_pad_r3, ButtonParameters); + + b_square = new wxButton(this, id_pad_square, ButtonParameters); + b_cross = new wxButton(this, id_pad_cross, ButtonParameters); + b_circle = new wxButton(this, id_pad_circle, ButtonParameters); + b_triangle = new wxButton(this, id_pad_triangle, ButtonParameters); + + b_up_rstick = new wxButton(this, id_pad_rstick_up, ButtonParameters); + b_down_rstick = new wxButton(this, id_pad_rstick_down, ButtonParameters); + b_left_rstick = new wxButton(this, id_pad_rstick_left, ButtonParameters); + b_right_rstick = new wxButton(this, id_pad_rstick_right, ButtonParameters); + + b_ok = new wxButton(this, wxID_OK, "OK", wxDefaultPosition, wxSize(60,-1)); + b_cancel = new wxButton(this, wxID_CANCEL, "Cancel", wxDefaultPosition, wxSize(60,-1)); + b_reset = new wxButton(this, id_reset_parameters, "By default"); + + + // Get button labels from .ini + UpdateLabel(); + + // Add buttons in subpanels + // LStick + s_subpanel_lstick_1->Add(b_up_lstick); + s_subpanel_lstick_2->Add(b_left_lstick); + s_subpanel_lstick_2->Add(b_right_lstick); + s_subpanel_lstick_3->Add(b_down_lstick); + + // D-Pad + s_subpanel_pad_1->Add(b_up); + s_subpanel_pad_2->Add(b_left); + s_subpanel_pad_2->Add(b_right); + s_subpanel_pad_3->Add(b_down); + + // Left shifts + s_round_pad_l1->Add(b_shift_l1); + s_round_pad_l2->Add(b_shift_l2); + s_round_pad_l3->Add(b_shift_l3); + + // Start / Select + s_round_pad_select->Add(b_select); + s_round_pad_start->Add(b_start); + + // Right shifts + s_round_pad_r1->Add(b_shift_r1); + s_round_pad_r2->Add(b_shift_r2); + s_round_pad_r3->Add(b_shift_r3); + + // Action buttons + s_round_pad_square->Add(b_square); + s_round_pad_cross->Add(b_cross); + s_round_pad_circle->Add(b_circle); + s_round_pad_triangle->Add(b_triangle); + s_subpanel_buttons_1->Add(s_round_pad_triangle); + s_subpanel_buttons_2->Add(s_round_pad_square); + s_subpanel_buttons_2->Add(s_round_pad_circle); + s_subpanel_buttons_3->Add(s_round_pad_cross); + + // RStick + s_subpanel_rstick_1->Add(b_up_rstick); + s_subpanel_rstick_2->Add(b_left_rstick); + s_subpanel_rstick_2->Add(b_right_rstick); + s_subpanel_rstick_3->Add(b_down_rstick); + + // Ok / Cancel + s_b_panel->Add(b_ok); + s_b_panel->Add(b_cancel); + + // Reset parameters + s_reset_panel->Add(b_reset); + + s_round_stick_l->Add(s_subpanel_lstick_1, SizerFlags); + s_round_stick_l->Add(s_subpanel_lstick_2, SizerFlags); + s_round_stick_l->Add(s_subpanel_lstick_3, SizerFlags); + + s_round_pad_controls->Add(s_subpanel_pad_1, SizerFlags); + s_round_pad_controls->Add(s_subpanel_pad_2, SizerFlags); + s_round_pad_controls->Add(s_subpanel_pad_3, SizerFlags); + + s_round_pad_shifts_l->Add(s_round_pad_l1, SizerFlags); + s_round_pad_shifts_l->Add(s_round_pad_l2, SizerFlags); + s_round_pad_shifts_l->Add(s_round_pad_l3, SizerFlags); + + s_round_pad_system->Add(s_round_pad_select, SizerFlags); + s_round_pad_system->Add(s_round_pad_start, SizerFlags); + + s_round_pad_shifts_r->Add(s_round_pad_r1, SizerFlags); + s_round_pad_shifts_r->Add(s_round_pad_r2, SizerFlags); + s_round_pad_shifts_r->Add(s_round_pad_r3, SizerFlags); + + s_round_pad_buttons->Add(s_subpanel_buttons_1, SizerFlags); + s_round_pad_buttons->Add(s_subpanel_buttons_2, SizerFlags); + s_round_pad_buttons->Add(s_subpanel_buttons_3, SizerFlags); + + s_round_stick_r->Add(s_subpanel_rstick_1, SizerFlags); + s_round_stick_r->Add(s_subpanel_rstick_2, SizerFlags); + s_round_stick_r->Add(s_subpanel_rstick_3, SizerFlags); + + + s_subpanel->Add(s_round_stick_l); + s_subpanel->AddSpacer(50); + s_subpanel->Add(s_b_panel, SizerFlags); + + s_subpanel2->Add(s_round_pad_controls); + s_subpanel2->AddSpacer(50); + s_subpanel2->Add(s_reset_panel, SizerFlags); + + // Add subpanels in general panel + s_panel->Add(s_subpanel); + s_panel->Add(s_subpanel2); + s_panel->Add(s_round_pad_shifts_l); + s_panel->Add(s_round_pad_system); + s_panel->Add(s_round_pad_shifts_r); + s_panel->Add(s_round_pad_buttons); + s_panel->Add(s_round_stick_r); + + this->SetSizerAndFit(s_panel); + + // Connect buttons + m_app_connector.Connect(wxID_ANY, wxEVT_KEY_UP, wxKeyEventHandler(PADManager::OnKeyUp), (wxObject*)0, this); + m_app_connector.Connect(wxID_ANY, wxEVT_KEY_DOWN, wxKeyEventHandler(PADManager::OnKeyDown), (wxObject*)0, this); + Connect(b_up_lstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_down_lstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_left_lstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_right_lstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_up->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (PADManager::OnButtonClicked)); + Connect(b_down->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_left->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_right->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_shift_l1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_shift_l2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_shift_l3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_start->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_select->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_shift_r1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_shift_r2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_shift_r3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_square->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_cross->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_circle->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_triangle->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_up_rstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_down_rstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_left_rstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_right_rstick->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + Connect(b_ok->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_reset->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + Connect(b_cancel->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PADManager::OnButtonClicked)); + + if(paused) Emu.Resume(); +} + +void PADManager::OnKeyDown(wxKeyEvent &keyEvent) +{ + m_key_pressed = true; + + switch (m_button_id) + { + case id_pad_lstick_left: Ini.PadHandlerLStickLeft.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_lstick_down: Ini.PadHandlerLStickDown.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_lstick_right: Ini.PadHandlerLStickRight.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_lstick_up: Ini.PadHandlerLStickUp.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_left: Ini.PadHandlerLeft.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_down: Ini.PadHandlerDown.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_right: Ini.PadHandlerRight.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_up: Ini.PadHandlerUp.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_l1: Ini.PadHandlerL1.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_l2: Ini.PadHandlerL2.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_l3: Ini.PadHandlerL3.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_start: Ini.PadHandlerStart.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_select: Ini.PadHandlerSelect.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_r1: Ini.PadHandlerR1.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_r2: Ini.PadHandlerR2.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_r3: Ini.PadHandlerR3.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_square: Ini.PadHandlerSquare.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_cross: Ini.PadHandlerCross.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_circle: Ini.PadHandlerCircle.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_triangle: Ini.PadHandlerTriangle.SetValue(keyEvent.GetKeyCode()); break; + + case id_pad_rstick_left: Ini.PadHandlerRStickLeft.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_rstick_down: Ini.PadHandlerRStickDown.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_rstick_right: Ini.PadHandlerRStickRight.SetValue(keyEvent.GetKeyCode()); break; + case id_pad_rstick_up: Ini.PadHandlerRStickUp.SetValue(keyEvent.GetKeyCode()); break; + + case 0: break; + default: ConLog.Error("Unknown button ID: %d", m_button_id); break; + } + + UpdateLabel(); + keyEvent.Skip(); +} + +void PADManager::OnKeyUp(wxKeyEvent &keyEvent) +{ + SwitchButtons(true); // enable all buttons + m_button_id = 0; // reset current button id + m_key_pressed = false; + keyEvent.Skip(); +} + +void PADManager::OnButtonClicked(wxCommandEvent &event) +{ + if (event.GetId() != wxID_OK && event.GetId() != wxID_CANCEL && event.GetId() != id_reset_parameters) + { + m_button_id = event.GetId(); + SwitchButtons(false); // disable all buttons, needed for using Space, Enter and other specific buttons + //RunTimer(3, event.GetId()); // TODO: Currently, timer disabled. Use by later, have some strange problems + //SwitchButtons(true); // needed, if timer enabled + UpdateLabel(); + } + + else + { + switch (event.GetId()) + { + case id_reset_parameters: ResetParameters(); UpdateLabel(); break; + case wxID_OK: Ini.Save(); break; + case wxID_CANCEL: break; + + default: ConLog.Error("Unknown button ID: %d", event.GetId()); break; + } + } + + event.Skip(); +} + +const wxString PADManager::GetKeyName(const u32 keyCode) +{ + wxString keyName; + + switch(keyCode) + { + case WXK_NONE: ConLog.Error("Invalid key code"); keyName = "ERROR!"; break; + case WXK_BACK: keyName = "BackSpace"; break; + case WXK_TAB: keyName = "Tab"; break; + case WXK_RETURN: keyName = "Enter"; break; + case WXK_ESCAPE: keyName = "Esc"; break; + case WXK_SPACE: keyName = "Space"; break; + case WXK_DELETE: keyName = "Delete"; break; + case WXK_SHIFT: keyName = "Shift"; break; + case WXK_ALT: keyName = "ALT"; break; + case WXK_CONTROL: keyName = "CTRL"; break; + case WXK_PAUSE: keyName = "Pause"; break; + case WXK_CAPITAL: keyName = "CapsLock"; break; + case WXK_END: keyName = "End"; break; + case WXK_HOME: keyName = "Home"; break; + case WXK_LEFT: keyName = "Left"; break; + case WXK_UP: keyName = "Up"; break; + case WXK_RIGHT: keyName = "Right"; break; + case WXK_DOWN: keyName = "Down"; break; + case WXK_SELECT: keyName = "Select"; break; + case WXK_PRINT: keyName = "Print"; break; + case WXK_SNAPSHOT: keyName = "Snapshot"; break; + case WXK_INSERT: keyName = "Insert"; break; + case WXK_NUMPAD0: keyName = "Num0"; break; + case WXK_NUMPAD1: keyName = "Num1"; break; + case WXK_NUMPAD2: keyName = "Num2"; break; + case WXK_NUMPAD3: keyName = "Num3"; break; + case WXK_NUMPAD4: keyName = "Num4"; break; + case WXK_NUMPAD5: keyName = "Num5"; break; + case WXK_NUMPAD6: keyName = "Num6"; break; + case WXK_NUMPAD7: keyName = "Num7"; break; + case WXK_NUMPAD8: keyName = "Num8"; break; + case WXK_NUMPAD9: keyName = "Num9"; break; + case WXK_F1: keyName = "F1"; break; + case WXK_F2: keyName = "F2"; break; + case WXK_F3: keyName = "F3"; break; + case WXK_F4: keyName = "F4"; break; + case WXK_F5: keyName = "F5"; break; + case WXK_F6: keyName = "F6"; break; + case WXK_F7: keyName = "F7"; break; + case WXK_F8: keyName = "F8"; break; + case WXK_F9: keyName = "F9"; break; + case WXK_F10: keyName = "F10"; break; + case WXK_F11: keyName = "F11"; break; + case WXK_F12: keyName = "F12"; break; + case WXK_NUMLOCK: keyName = "NumLock"; break; + case WXK_SCROLL: keyName = "ScrollLock"; break; + case WXK_PAGEUP: keyName = "PgUp"; break; + case WXK_PAGEDOWN: keyName = "PgDn"; break; + case WXK_NUMPAD_SPACE: keyName = "NumSpace"; break; + case WXK_NUMPAD_TAB: keyName = "NumTab"; break; + case WXK_NUMPAD_ENTER: keyName = "NumEnter"; break; + case WXK_NUMPAD_HOME: keyName = "NumHome"; break; + case WXK_NUMPAD_LEFT: keyName = "NumLeft"; break; + case WXK_NUMPAD_UP: keyName = "NumUp"; break; + case WXK_NUMPAD_RIGHT: keyName = "NumRight"; break; + case WXK_NUMPAD_DOWN: keyName = "NumDown"; break; + case WXK_NUMPAD_PAGEUP: keyName = "NumPgUp"; break; + case WXK_NUMPAD_PAGEDOWN: keyName = "NumPgDn"; break; + case WXK_NUMPAD_END: keyName = "NumEnd"; break; + case WXK_NUMPAD_BEGIN: keyName = "NumHome"; break; + case WXK_NUMPAD_INSERT: keyName = "NumIns"; break; + case WXK_NUMPAD_DELETE: keyName = "NumDel"; break; + + default: keyName = static_cast(keyCode); break; + } + + return keyName; +} + +void PADManager::UpdateLabel() +{ + // Get button labels from .ini + b_up_lstick->SetLabel(GetKeyName(Ini.PadHandlerLStickUp.GetValue())); + b_down_lstick->SetLabel(GetKeyName(Ini.PadHandlerLStickDown.GetValue())); + b_left_lstick->SetLabel(GetKeyName(Ini.PadHandlerLStickLeft.GetValue())); + b_right_lstick->SetLabel(GetKeyName(Ini.PadHandlerLStickRight.GetValue())); + + b_up->SetLabel(GetKeyName(Ini.PadHandlerUp.GetValue())); + b_down->SetLabel(GetKeyName(Ini.PadHandlerDown.GetValue())); + b_left->SetLabel(GetKeyName(Ini.PadHandlerLeft.GetValue())); + b_right->SetLabel(GetKeyName(Ini.PadHandlerRight.GetValue())); + + b_shift_l1->SetLabel(GetKeyName(Ini.PadHandlerL1.GetValue())); + b_shift_l2->SetLabel(GetKeyName(Ini.PadHandlerL2.GetValue())); + b_shift_l3->SetLabel(GetKeyName(Ini.PadHandlerL3.GetValue())); + + b_start->SetLabel(GetKeyName(Ini.PadHandlerStart.GetValue())); + b_select->SetLabel(GetKeyName(Ini.PadHandlerSelect.GetValue())); + + b_shift_r1->SetLabel(GetKeyName(Ini.PadHandlerR1.GetValue())); + b_shift_r2->SetLabel(GetKeyName(Ini.PadHandlerR2.GetValue())); + b_shift_r3->SetLabel(GetKeyName(Ini.PadHandlerR3.GetValue())); + + b_square->SetLabel(GetKeyName(Ini.PadHandlerSquare.GetValue())); + b_cross->SetLabel(GetKeyName(Ini.PadHandlerCross.GetValue())); + b_circle->SetLabel(GetKeyName(Ini.PadHandlerCircle.GetValue())); + b_triangle->SetLabel(GetKeyName(Ini.PadHandlerTriangle.GetValue())); + + b_up_rstick->SetLabel(GetKeyName(Ini.PadHandlerRStickUp.GetValue())); + b_down_rstick->SetLabel(GetKeyName(Ini.PadHandlerRStickDown.GetValue())); + b_left_rstick->SetLabel(GetKeyName(Ini.PadHandlerRStickLeft.GetValue())); + b_right_rstick->SetLabel(GetKeyName(Ini.PadHandlerRStickRight.GetValue())); +} + +void PADManager::ResetParameters() +{ + Ini.PadHandlerLStickUp.SetValue(315); + Ini.PadHandlerLStickDown.SetValue(317); + Ini.PadHandlerLStickLeft.SetValue(314); + Ini.PadHandlerLStickRight.SetValue(316); + + Ini.PadHandlerUp.SetValue(static_cast('W')); + Ini.PadHandlerDown.SetValue(static_cast('S')); + Ini.PadHandlerLeft.SetValue(static_cast('A')); + Ini.PadHandlerRight.SetValue(static_cast('D')); + + Ini.PadHandlerL1.SetValue(static_cast('1')); + Ini.PadHandlerL2.SetValue(static_cast('Q')); + Ini.PadHandlerL3.SetValue(static_cast('Z')); + + Ini.PadHandlerStart.SetValue(13); + Ini.PadHandlerSelect.SetValue(32); + + Ini.PadHandlerR1.SetValue(static_cast('3')); + Ini.PadHandlerR2.SetValue(static_cast('E')); + Ini.PadHandlerR3.SetValue(static_cast('C')); + + Ini.PadHandlerSquare.SetValue(static_cast('J')); + Ini.PadHandlerCross.SetValue(static_cast('K')); + Ini.PadHandlerCircle.SetValue(static_cast('L')); + Ini.PadHandlerTriangle.SetValue(static_cast('I')); + + Ini.PadHandlerRStickUp.SetValue(366); + Ini.PadHandlerRStickDown.SetValue(367); + Ini.PadHandlerRStickLeft.SetValue(313); + Ini.PadHandlerRStickRight.SetValue(312); +} + +void PADManager::UpdateTimerLabel(const u32 id) +{ + switch (id) + { + case id_pad_lstick_left: b_left_lstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_lstick_down: b_down_lstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_lstick_right: b_right_lstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_lstick_up: b_up_lstick->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_left: b_left->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_down: b_down->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_right: b_right->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_up: b_up->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_l1: b_shift_l1->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_l2: b_shift_l2->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_l3: b_shift_l3->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_start: b_start->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_select: b_select->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_r1: b_shift_r1->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_r2: b_shift_r2->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_r3: b_shift_r3->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_square: b_square->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_cross: b_cross->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_circle: b_circle->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_triangle: b_triangle->SetLabel(static_cast(m_seconds + 47)); break; + + case id_pad_rstick_left: b_left_rstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_rstick_down: b_down_rstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_rstick_right: b_right_rstick->SetLabel(static_cast(m_seconds + 47)); break; + case id_pad_rstick_up: b_up_rstick->SetLabel(static_cast(m_seconds + 47)); break; + + default: ConLog.Error("Unknown button ID: %d", id); break; + } +} + +void PADManager::SwitchButtons(const bool IsEnabled) +{ + b_up_lstick->Enable(IsEnabled); + b_down_lstick->Enable(IsEnabled); + b_left_lstick->Enable(IsEnabled); + b_right_lstick->Enable(IsEnabled); + + b_up->Enable(IsEnabled); + b_down->Enable(IsEnabled); + b_left->Enable(IsEnabled); + b_right->Enable(IsEnabled); + + b_shift_l1->Enable(IsEnabled); + b_shift_l2->Enable(IsEnabled); + b_shift_l3->Enable(IsEnabled); + + b_start->Enable(IsEnabled); + b_select->Enable(IsEnabled); + + b_shift_r1->Enable(IsEnabled); + b_shift_r2->Enable(IsEnabled); + b_shift_r3->Enable(IsEnabled); + + b_square->Enable(IsEnabled); + b_cross->Enable(IsEnabled); + b_circle->Enable(IsEnabled); + b_triangle->Enable(IsEnabled); + + b_up_rstick->Enable(IsEnabled); + b_down_rstick->Enable(IsEnabled); + b_left_rstick->Enable(IsEnabled); + b_right_rstick->Enable(IsEnabled); + + b_ok->Enable(IsEnabled); + b_cancel->Enable(IsEnabled); + b_reset->Enable(IsEnabled); +} + +void PADManager::RunTimer(const u32 seconds, const u32 id) +{ + m_seconds = seconds; + clock_t t1, t2; + t1 = t2 = clock() / CLK_TCK; + while (m_seconds) + { + if (t1 / CLK_TCK + 1 <= (t2 = clock()) / CLK_TCK) + { + UpdateTimerLabel(id); + m_seconds--; + t1 = t2; + } + + if(m_key_pressed) + { + m_seconds = 0; + break; + } + } +} \ No newline at end of file diff --git a/rpcs3/Gui/PADManager.h b/rpcs3/Gui/PADManager.h new file mode 100644 index 0000000000..61d2520991 --- /dev/null +++ b/rpcs3/Gui/PADManager.h @@ -0,0 +1,102 @@ +#include "Ini.h" +#include + +enum ButtonIDs +{ + id_pad_lstick_left = 0x777, + id_pad_lstick_down, + id_pad_lstick_right, + id_pad_lstick_up, + + id_pad_left, + id_pad_down, + id_pad_right, + id_pad_up, + + id_pad_l1, + id_pad_l2, + id_pad_l3, + + id_pad_start, + id_pad_select, + + id_pad_r1, + id_pad_r2, + id_pad_r3, + + id_pad_square, + id_pad_cross, + id_pad_circle, + id_pad_triangle, + + id_pad_rstick_left, + id_pad_rstick_down, + id_pad_rstick_right, + id_pad_rstick_up, + + id_reset_parameters, +}; + +struct PadButtons +{ + wxButton* b_up_lstick; + wxButton* b_down_lstick; + wxButton* b_left_lstick; + wxButton* b_right_lstick; + + wxButton* b_up; + wxButton* b_down; + wxButton* b_left; + wxButton* b_right; + + wxButton* b_shift_l1; + wxButton* b_shift_l2; + wxButton* b_shift_l3; + + wxButton* b_start; + wxButton* b_select; + + wxButton* b_shift_r1; + wxButton* b_shift_r2; + wxButton* b_shift_r3; + + + wxButton* b_square; + wxButton* b_cross; + wxButton* b_circle; + wxButton* b_triangle; + + wxButton* b_up_rstick; + wxButton* b_down_rstick; + wxButton* b_left_rstick; + wxButton* b_right_rstick; + + wxButton* b_ok; + wxButton* b_cancel; + wxButton* b_reset; +}; + +class PADManager : public wxDialog, PadButtons +{ +private: + AppConnector m_app_connector; + u32 m_seconds; + u32 m_button_id; + bool m_key_pressed; + +public: + PADManager(wxWindow* parent); + ~PADManager() + { + } + + void OnKeyDown(wxKeyEvent &keyEvent); + void OnKeyUp(wxKeyEvent &keyEvent); + void OnButtonClicked(wxCommandEvent &event); + void UpdateLabel(); + void ResetParameters(); + void UpdateTimerLabel(const u32 id); + void SwitchButtons(const bool IsEnabled); + const wxString GetKeyName(const u32 keyCode); + void RunTimer(const u32 seconds, const u32 id); +}; \ No newline at end of file diff --git a/rpcs3/Ini.h b/rpcs3/Ini.h index b273d69577..997975f13b 100644 --- a/rpcs3/Ini.h +++ b/rpcs3/Ini.h @@ -113,6 +113,10 @@ public: IniEntry HLELogLvl; IniEntry SysLanguage; + IniEntry PadHandlerLStickLeft; + IniEntry PadHandlerLStickDown; + IniEntry PadHandlerLStickRight; + IniEntry PadHandlerLStickUp; IniEntry PadHandlerLeft; IniEntry PadHandlerDown; IniEntry PadHandlerRight; @@ -129,6 +133,10 @@ public: IniEntry PadHandlerL1; IniEntry PadHandlerR2; IniEntry PadHandlerL2; + IniEntry PadHandlerRStickLeft; + IniEntry PadHandlerRStickDown; + IniEntry PadHandlerRStickRight; + IniEntry PadHandlerRStickUp; public: Inis() : DefPath("EmuSettings") @@ -154,6 +162,10 @@ public: MouseHandlerMode.Init("MouseHandlerMode", path); path = DefPath + "/" + "ControlSetings"; + PadHandlerLStickLeft.Init("PadHandlerLStickLeft", path); + PadHandlerLStickDown.Init("PadHandlerLStickDown", path); + PadHandlerLStickRight.Init("PadHandlerLStickRight", path); + PadHandlerLStickUp.Init("PadHandlerLStickUp", path); PadHandlerLeft.Init("PadHandlerLeft", path); PadHandlerDown.Init("PadHandlerDown", path); PadHandlerRight.Init("PadHandlerRight", path); @@ -170,6 +182,11 @@ public: PadHandlerL1.Init("PadHandlerL1", path); PadHandlerR2.Init("PadHandlerR2", path); PadHandlerL2.Init("PadHandlerL2", path); + PadHandlerRStickLeft.Init("PadHandlerRStickLeft", path); + PadHandlerRStickDown.Init("PadHandlerRStickDown", path); + PadHandlerRStickRight.Init("PadHandlerRStickRight", path); + PadHandlerRStickUp.Init("PadHandlerRStickUp", path); + path = DefPath + "/" + "Audio"; AudioOutMode.Init("AudioOutMode", path); @@ -209,14 +226,18 @@ public: HLELogLvl.Load(0); SysLanguage.Load(1); + PadHandlerLStickLeft.Load(314); //WXK_LEFT + PadHandlerLStickDown.Load(317); //WXK_DOWN + PadHandlerLStickRight.Load(316); //WXK_RIGHT + PadHandlerLStickUp.Load(315); //WXK_UP PadHandlerLeft.Load(static_cast('A')); PadHandlerDown.Load(static_cast('S')); PadHandlerRight.Load(static_cast('D')); PadHandlerUp.Load(static_cast('W')); - PadHandlerStart.Load(0); + PadHandlerStart.Load(13); //WXK_RETURN PadHandlerR3.Load(static_cast('C')); PadHandlerL3.Load(static_cast('Z')); - PadHandlerSelect.Load(0); + PadHandlerSelect.Load(32); //WXK_SPACE PadHandlerSquare.Load(static_cast('J')); PadHandlerCross.Load(static_cast('K')); PadHandlerCircle.Load(static_cast('L')); @@ -225,6 +246,10 @@ public: PadHandlerL1.Load(static_cast('1')); PadHandlerR2.Load(static_cast('E')); PadHandlerL2.Load(static_cast('Q')); + PadHandlerRStickLeft.Load(313); //WXK_HOME + PadHandlerRStickDown.Load(367); //WXK_PAGEDOWN + PadHandlerRStickRight.Load(312); //WXK_END + PadHandlerRStickUp.Load(366); //WXK_PAGEUP } void Save() @@ -250,6 +275,10 @@ public: HLELogLvl.Save(); SysLanguage.Save(); + PadHandlerLStickLeft.Save(); + PadHandlerLStickDown.Save(); + PadHandlerLStickRight.Save(); + PadHandlerLStickUp.Save(); PadHandlerLeft.Save(); PadHandlerDown.Save(); PadHandlerRight.Save(); @@ -266,6 +295,10 @@ public: PadHandlerL1.Save(); PadHandlerR2.Save(); PadHandlerL2.Save(); + PadHandlerRStickLeft.Save(); + PadHandlerRStickDown.Save(); + PadHandlerRStickRight.Save(); + PadHandlerRStickUp.Save(); } }; diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 5aa56519bc..c5c97e7ea3 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -1,4 +1,4 @@ - + @@ -331,6 +331,7 @@ + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 1c1ed0a365..bb8f95b549 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -364,6 +364,9 @@ Gui + + Gui + Emu\SysCalls\Modules From 842a6fe1d4eed3e171ffef0521c2775fbedd6076 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 5 Apr 2014 15:46:56 -0400 Subject: [PATCH 04/17] Fix two parameter sanity checks in sceRtc. --- rpcs3/Emu/SysCalls/Modules/cellRtc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/cellRtc.cpp b/rpcs3/Emu/SysCalls/Modules/cellRtc.cpp index 1e440fe59a..1ee5602a78 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellRtc.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellRtc.cpp @@ -190,7 +190,7 @@ int cellRtcGetTick(mem_ptr_t pTime, mem_ptr_t pTic { cellRtc.Log("cellRtcGetTick(pTime=0x%x, pTick=0x%x)", pTime.GetAddr(), pTick.GetAddr()); - if (!pTime.IsGood() || !pTime.IsGood()) + if (!pTime.IsGood() || !pTick.IsGood()) return CELL_RTC_ERROR_INVALID_POINTER; wxDateTime datetime = wxDateTime::wxDateTime(pTime->day, (wxDateTime::Month)pTime->month.ToLE(), pTime->year, pTime->hour, pTime->minute, pTime->second, (pTime->microsecond / 1000)); @@ -203,7 +203,7 @@ int cellRtcSetTick(mem_ptr_t pTime, mem_ptr_t pTic { cellRtc.Log("cellRtcSetTick(pTime=0x%x, pTick=0x%x)", pTime.GetAddr(), pTick.GetAddr()); - if (!pTime.IsGood() || !pTime.IsGood()) + if (!pTime.IsGood() || !pTick.IsGood()) return CELL_RTC_ERROR_INVALID_POINTER; wxDateTime date = wxDateTime::wxDateTime((time_t)pTick->tick); From d7dc9386537a1dafb9d456e2c9300481bbda69b4 Mon Sep 17 00:00:00 2001 From: Eriksson Monteiro Date: Sat, 5 Apr 2014 01:36:22 +0100 Subject: [PATCH 05/17] remove trailing commas in arrays --- rpcs3/Emu/SysCalls/Modules/libmixer.cpp | 48 ++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/libmixer.cpp b/rpcs3/Emu/SysCalls/Modules/libmixer.cpp index e49ac699b0..ffcb0b6176 100644 --- a/rpcs3/Emu/SysCalls/Modules/libmixer.cpp +++ b/rpcs3/Emu/SysCalls/Modules/libmixer.cpp @@ -402,7 +402,7 @@ void libmixer_init() 0xffffffff7c6307b4, 0xffffffff7c0803a6, 0xffffffff38210070, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmxAAN", cellAANConnect, @@ -443,7 +443,7 @@ void libmixer_init() 0xffffffffe80100a0, 0xffffffff38210090, 0xffffffff7c0803a6, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmxAAN", cellAANDisconnect, @@ -484,7 +484,7 @@ void libmixer_init() 0xffffffffe80100a0, 0xffffffff38210090, 0xffffffff7c0803a6, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmixer", cellSurMixerCreate, @@ -513,7 +513,7 @@ void libmixer_init() 0xffffffffeba10098, 0xffffffffebc100a0, 0xffffffffebe100a8, - 0xffffffff382100b0, + 0xffffffff382100b0 ); REG_SUB(libmixer, "surmixer", cellSurMixerGetAANHandle, @@ -530,7 +530,7 @@ void libmixer_init() 0xffffffff3c638031, 0xffffffff38630002, 0xffffffff7c6307b4, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmixer", cellSurMixerChStripGetAANPortNo, @@ -545,7 +545,7 @@ void libmixer_init() 0xffffffff2f800000, 0xffffffff4d9e0020, 0xffffffff78030020, - 0xf000000040000000, // b + 0xf000000040000000 // b ); REG_SUB(libmixer, "surmixer", cellSurMixerSetNotifyCallback, @@ -573,7 +573,7 @@ void libmixer_init() 0xffffffff79290020, 0xffffffff38810070, 0xffffffff2f800000, - 0xffffffff7d234b78, + 0xffffffff7d234b78 ); REG_SUB(libmixer, "surmixer", cellSurMixerRemoveNotifyCallback, @@ -591,7 +591,7 @@ void libmixer_init() 0xffffffff7d2307b4, 0xffffffff38210080, 0xffffffff7c0803a6, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmixer", cellSurMixerStart, @@ -614,7 +614,7 @@ void libmixer_init() 0xffffffff7c0803a6, 0xffffffffebe10088, 0xffffffff38210090, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmixer", cellSurMixerSetParameter, @@ -644,7 +644,7 @@ void libmixer_init() 0xffff0000419cffd8, // blt 0xffffffff2b83002b, 0xffff000040990008, // ble - 0xffff0000409d0054, // ble + 0xffff0000409d0054 // ble ); REG_SUB(libmixer, "surmixer", cellSurMixerFinalize, @@ -670,7 +670,7 @@ void libmixer_init() 0xfffffffff8410028, 0xffffffff7c0903a6, 0xffffffff804a0004, - 0xffffffff4e800421, + 0xffffffff4e800421 ); REG_SUB(libmixer, "surmixer", cellSurMixerSurBusAddData, @@ -699,7 +699,7 @@ void libmixer_init() 0xffffffff7d034378, 0xffffffff79660020, 0xffffffff78e70020, - 0xffff0000419cffcc, // blt + 0xffff0000419cffcc // blt ); REG_SUB(libmixer, "surmixer", cellSurMixerChStripSetParameter, @@ -719,7 +719,7 @@ void libmixer_init() 0xffffffff78c60020, 0xffffffff4d9c0020, 0xffffffff79230020, - 0xf000000048000000, // b + 0xf000000048000000 // b ); REG_SUB(libmixer, "surmixer", cellSurMixerPause, @@ -744,7 +744,7 @@ void libmixer_init() 0xffffffff4e800020, 0xffffffff800a001c, 0xffffffff2b030002, - 0xffffffff2f800000, + 0xffffffff2f800000 ); REG_SUB(libmixer, "surmixer", cellSurMixerGetCurrentBlockTag, @@ -758,7 +758,7 @@ void libmixer_init() 0xffffffff39200000, 0xfffffffff8030000, 0xffffffff7d2307b4, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmixer", cellSurMixerGetTimestamp, @@ -780,7 +780,7 @@ void libmixer_init() 0xffffffff7c0803a6, 0xffffffff4e800020, 0xffffffff806b04d8, - 0xf000000048000001, // bl + 0xf000000048000001 // bl ); REG_SUB(libmixer, "surmixer", cellSurMixerBeep, @@ -794,7 +794,7 @@ void libmixer_init() 0xffffffff78840020, 0xffffffff2f800000, 0xffffffff4d9c0020, - 0xf000000048000000, // b + 0xf000000048000000 // b ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerCreate, @@ -828,7 +828,7 @@ void libmixer_init() 0xffffffff2f9d0000, 0xffffffff7ba30020, 0xffff000041de00c0, // beq- - 0xf000000048000001, // bl + 0xf000000048000001 // bl ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerRemove, @@ -858,7 +858,7 @@ void libmixer_init() 0xfffffffff8410028, 0xffffffff7c0903a6, 0xffffffff804b0004, - 0xffffffff4e800421, + 0xffffffff4e800421 ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerSetWave, @@ -871,7 +871,7 @@ void libmixer_init() 0xffffffff78030020, 0xf000000048000000, // b 0xffffffff60630003, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerPlay, @@ -890,7 +890,7 @@ void libmixer_init() 0xff00000081620028, // lwz 0xfffffffff8010090, 0xffffffff39400000, - 0xffffffff38630010, + 0xffffffff38630010 ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerStop, @@ -909,7 +909,7 @@ void libmixer_init() 0xffffffffe8010080, 0xffffffff38210070, 0xffffffff7c0803a6, - 0xffffffff4e800020, + 0xffffffff4e800020 ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerSetParam, @@ -928,7 +928,7 @@ void libmixer_init() 0xffffffff80030068, 0xffffffff616b0002, 0xfffffffffbc10080, - 0xffffffff2f800000, + 0xffffffff2f800000 ); REG_SUB(libmixer, "surmxSSP", cellSSPlayerGetState, @@ -938,7 +938,7 @@ void libmixer_init() 0xffffffff60630003, 0xffffffff4d9e0020, 0xffffffff78030020, - 0xf000000048000000, // b + 0xf000000048000000 // b ); REG_SUB(libmixer, "surmxUti", cellSurMixerUtilGetLevelFromDB); From f9e6230ead20e07b77d2d32dd032e0315624ada8 Mon Sep 17 00:00:00 2001 From: Nmzik Date: Sun, 6 Apr 2014 23:47:21 +0400 Subject: [PATCH 06/17] added 2 functions --- rpcs3/Emu/SysCalls/Modules/sys_io.cpp | 2 ++ rpcs3/Emu/SysCalls/SysCalls.h | 2 ++ rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/rpcs3/Emu/SysCalls/Modules/sys_io.cpp b/rpcs3/Emu/SysCalls/Modules/sys_io.cpp index e470dee958..5e7fe635c0 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_io.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sys_io.cpp @@ -18,6 +18,8 @@ void sys_io_init() sys_io.AddFunc(0x578e3c98, cellPadSetPortSetting); sys_io.AddFunc(0x0e2dfaad, cellPadInfoPressMode); sys_io.AddFunc(0x78200559, cellPadInfoSensorMode); + sys_io.AddFunc(0xf83f8182, cellPadSetPressMode); + sys_io.AddFunc(0xbe5be3ba, cellPadSetSensorMode); sys_io.AddFunc(0x433f6ec0, cellKbInit); sys_io.AddFunc(0xbfce3285, cellKbEnd); diff --git a/rpcs3/Emu/SysCalls/SysCalls.h b/rpcs3/Emu/SysCalls/SysCalls.h index efcc17eea8..8fc92b0471 100644 --- a/rpcs3/Emu/SysCalls/SysCalls.h +++ b/rpcs3/Emu/SysCalls/SysCalls.h @@ -312,6 +312,8 @@ extern int cellPadGetInfo2(u32 info_addr); extern int cellPadSetPortSetting(u32 port_no, u32 port_setting); extern int cellPadInfoPressMode(u32 port_no); extern int cellPadInfoSensorMode(u32 port_no); +extern int cellPadSetPressMode(u32 port_no, u32 mode); +extern int cellPadSetSensorMode(u32 port_no, u32 mode); //cellKb extern int cellKbInit(u32 max_connect); diff --git a/rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp b/rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp index 1d88693643..e7157cc43a 100644 --- a/rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp +++ b/rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp @@ -255,4 +255,16 @@ int cellPadInfoSensorMode(u32 port_no) { sys_io.Error("cellPadInfoSensorMode(port_no=%d)", port_no); return CELL_OK; +} + +int cellPadSetPressMode(u32 port_no, u32 mode) +{ + sys_io.Error("cellPadSetPressMode(port_no=%d)", port_no); + return CELL_OK; +} + +int cellPadSetSensorMode(u32 port_no, u32 mode) +{ + sys_io.Error("cellPadSetPressMode(port_no=%d)", port_no); + return CELL_OK; } \ No newline at end of file From e65d1a3dd91c9cc6acbb28c593cae2b149e77f54 Mon Sep 17 00:00:00 2001 From: Eriksson Monteiro Date: Sun, 6 Apr 2014 22:51:36 +0100 Subject: [PATCH 07/17] replace CLK_TCK for CLOCKS_PER_SEC --- rpcs3/Gui/PADManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Gui/PADManager.cpp b/rpcs3/Gui/PADManager.cpp index fd7ef34f98..72c3613546 100644 --- a/rpcs3/Gui/PADManager.cpp +++ b/rpcs3/Gui/PADManager.cpp @@ -554,10 +554,10 @@ void PADManager::RunTimer(const u32 seconds, const u32 id) { m_seconds = seconds; clock_t t1, t2; - t1 = t2 = clock() / CLK_TCK; + t1 = t2 = clock() / CLOCKS_PER_SEC; while (m_seconds) { - if (t1 / CLK_TCK + 1 <= (t2 = clock()) / CLK_TCK) + if (t1 / CLOCKS_PER_SEC + 1 <= (t2 = clock()) / CLOCKS_PER_SEC) { UpdateTimerLabel(id); m_seconds--; @@ -570,4 +570,4 @@ void PADManager::RunTimer(const u32 seconds, const u32 id) break; } } -} \ No newline at end of file +} From 26e80a18b4aa2cb7d35e997763999ec03d12d233 Mon Sep 17 00:00:00 2001 From: lioncash Date: Mon, 31 Mar 2014 09:32:42 -0400 Subject: [PATCH 08/17] Disallow inheriting of the null and windows mouse/keyboard/pad handlers. These aren't intended to be further extended. --- rpcs3/Emu/Io/Null/NullKeyboardHandler.h | 2 +- rpcs3/Emu/Io/Null/NullMouseHandler.h | 2 +- rpcs3/Emu/Io/Null/NullPadHandler.h | 2 +- rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h | 2 +- rpcs3/Emu/Io/Windows/WindowsMouseHandler.h | 2 +- rpcs3/Emu/Io/Windows/WindowsPadHandler.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/Io/Null/NullKeyboardHandler.h b/rpcs3/Emu/Io/Null/NullKeyboardHandler.h index 4a9598a71e..4846487e1d 100644 --- a/rpcs3/Emu/Io/Null/NullKeyboardHandler.h +++ b/rpcs3/Emu/Io/Null/NullKeyboardHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/KeyboardHandler.h" -class NullKeyboardHandler : public KeyboardHandlerBase +class NullKeyboardHandler final : public KeyboardHandlerBase { public: NullKeyboardHandler() diff --git a/rpcs3/Emu/Io/Null/NullMouseHandler.h b/rpcs3/Emu/Io/Null/NullMouseHandler.h index 1abe6fe2c8..d12c89f80d 100644 --- a/rpcs3/Emu/Io/Null/NullMouseHandler.h +++ b/rpcs3/Emu/Io/Null/NullMouseHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/MouseHandler.h" -class NullMouseHandler : public MouseHandlerBase +class NullMouseHandler final : public MouseHandlerBase { public: NullMouseHandler() diff --git a/rpcs3/Emu/Io/Null/NullPadHandler.h b/rpcs3/Emu/Io/Null/NullPadHandler.h index adbd3a2dd8..2ca8e5ff16 100644 --- a/rpcs3/Emu/Io/Null/NullPadHandler.h +++ b/rpcs3/Emu/Io/Null/NullPadHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/PadHandler.h" -class NullPadHandler : public PadHandlerBase +class NullPadHandler final : public PadHandlerBase { public: NullPadHandler() diff --git a/rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h b/rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h index 29128e166f..f2c50f0bdd 100644 --- a/rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h +++ b/rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/KeyboardHandler.h" -class WindowsKeyboardHandler +class WindowsKeyboardHandler final : public wxWindow , public KeyboardHandlerBase { diff --git a/rpcs3/Emu/Io/Windows/WindowsMouseHandler.h b/rpcs3/Emu/Io/Windows/WindowsMouseHandler.h index 194f9dae5a..101290822b 100644 --- a/rpcs3/Emu/Io/Windows/WindowsMouseHandler.h +++ b/rpcs3/Emu/Io/Windows/WindowsMouseHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/MouseHandler.h" -class WindowsMouseHandler +class WindowsMouseHandler final : public wxWindow , public MouseHandlerBase { diff --git a/rpcs3/Emu/Io/Windows/WindowsPadHandler.h b/rpcs3/Emu/Io/Windows/WindowsPadHandler.h index 257db117ea..23c260c883 100644 --- a/rpcs3/Emu/Io/Windows/WindowsPadHandler.h +++ b/rpcs3/Emu/Io/Windows/WindowsPadHandler.h @@ -2,7 +2,7 @@ #include "Emu/Io/PadHandler.h" -class WindowsPadHandler +class WindowsPadHandler final : public wxWindow , public PadHandlerBase { From c5a7946a24b9b6fae73d7a141d57c2afb1f52f25 Mon Sep 17 00:00:00 2001 From: lioncash Date: Mon, 31 Mar 2014 10:18:44 -0400 Subject: [PATCH 09/17] Move Keyboard/Mouse/Pad handlers over to using vector. --- rpcs3/Emu/Io/Keyboard.h | 5 +- rpcs3/Emu/Io/KeyboardHandler.h | 34 +-- rpcs3/Emu/Io/Mouse.h | 3 +- rpcs3/Emu/Io/MouseHandler.h | 24 +- rpcs3/Emu/Io/Null/NullKeyboardHandler.h | 6 +- rpcs3/Emu/Io/Null/NullMouseHandler.h | 4 +- rpcs3/Emu/Io/Null/NullPadHandler.h | 4 +- rpcs3/Emu/Io/Pad.h | 5 +- rpcs3/Emu/Io/PadHandler.h | 39 +-- rpcs3/Emu/Io/Windows/WindowsKeyboardHandler.h | 249 +++++++++--------- rpcs3/Emu/Io/Windows/WindowsMouseHandler.h | 9 +- rpcs3/Emu/Io/Windows/WindowsPadHandler.h | 49 ++-- rpcs3/Emu/SysCalls/lv2/SC_Keyboard.cpp | 6 +- rpcs3/Emu/SysCalls/lv2/SC_Mouse.cpp | 8 +- rpcs3/Emu/SysCalls/lv2/SC_Pad.cpp | 36 +-- 15 files changed, 252 insertions(+), 229 deletions(-) diff --git a/rpcs3/Emu/Io/Keyboard.h b/rpcs3/Emu/Io/Keyboard.h index 1cd6201def..310c1fb33a 100644 --- a/rpcs3/Emu/Io/Keyboard.h +++ b/rpcs3/Emu/Io/Keyboard.h @@ -1,5 +1,6 @@ #pragma once +#include #include "KeyboardHandler.h" class KeyboardManager //: public wxWindow @@ -14,9 +15,9 @@ public: void Init(const u32 max_connect); void Close(); - Array& GetKeyboards() { return m_keyboard_handler->GetKeyboards(); } + std::vector& GetKeyboards() { return m_keyboard_handler->GetKeyboards(); } KbInfo& GetInfo() { return m_keyboard_handler->GetInfo(); } - Array& GetButtons(const u32 keyboard) { return m_keyboard_handler->GetButtons(keyboard); } + std::vector& GetButtons(const u32 keyboard) { return m_keyboard_handler->GetButtons(keyboard); } CellKbData& GetData(const u32 keyboard) { return m_keyboard_handler->GetData(keyboard); } CellKbConfig& GetConfig(const u32 keyboard) { return m_keyboard_handler->GetConfig(keyboard); } diff --git a/rpcs3/Emu/Io/KeyboardHandler.h b/rpcs3/Emu/Io/KeyboardHandler.h index 463ae9516a..d10828bb8e 100644 --- a/rpcs3/Emu/Io/KeyboardHandler.h +++ b/rpcs3/Emu/Io/KeyboardHandler.h @@ -1,5 +1,7 @@ #pragma once +#include + extern u16 cellKbCnvRawCode(u32 arrange, u32 mkey, u32 led, u16 rawcode); // (TODO: Can it be problematic to place SysCalls in middle of nowhere?) enum KbPortStatus @@ -248,7 +250,7 @@ struct Keyboard { CellKbData m_data; CellKbConfig m_config; - Array m_buttons; + std::vector m_buttons; Keyboard() : m_data() @@ -256,14 +258,16 @@ struct Keyboard { } - ~Keyboard() { m_buttons.Clear(); } + ~Keyboard() + { + } }; class KeyboardHandlerBase { protected: KbInfo m_info; - Array m_keyboards; + std::vector m_keyboards; public: virtual void Init(const u32 max_connect)=0; @@ -271,21 +275,21 @@ public: void Key(const u32 code, bool pressed) { - for(u64 p=0; p& GetKeyboards() { return m_keyboards; } - Array& GetButtons(const u32 keyboard) { return GetKeyboards()[keyboard].m_buttons; } - CellKbData& GetData(const u32 keyboard) { return GetKeyboards()[keyboard].m_data; } - CellKbConfig& GetConfig(const u32 keyboard) { return GetKeyboards()[keyboard].m_config; } + std::vector& GetKeyboards() { return m_keyboards; } + std::vector& GetButtons(const u32 keyboard) { return m_keyboards[keyboard].m_buttons; } + CellKbData& GetData(const u32 keyboard) { return m_keyboards[keyboard].m_data; } + CellKbConfig& GetConfig(const u32 keyboard) { return m_keyboards[keyboard].m_config; } }; \ No newline at end of file diff --git a/rpcs3/Emu/Io/Mouse.h b/rpcs3/Emu/Io/Mouse.h index 6b2e47611a..39572d2c0a 100644 --- a/rpcs3/Emu/Io/Mouse.h +++ b/rpcs3/Emu/Io/Mouse.h @@ -1,5 +1,6 @@ #pragma once +#include #include "MouseHandler.h" class MouseManager //: public wxWindow @@ -14,7 +15,7 @@ public: void Init(const u32 max_connect); void Close(); - Array& GetMice() { return m_mouse_handler->GetMice(); } + std::vector& GetMice() { return m_mouse_handler->GetMice(); } MouseInfo& GetInfo() { return m_mouse_handler->GetInfo(); } CellMouseData& GetData(const u32 mouse) { return m_mouse_handler->GetData(mouse); } CellMouseRawData& GetRawData(const u32 mouse) { return m_mouse_handler->GetRawData(mouse); } diff --git a/rpcs3/Emu/Io/MouseHandler.h b/rpcs3/Emu/Io/MouseHandler.h index 00cbab73e4..c081ae2f7e 100644 --- a/rpcs3/Emu/Io/MouseHandler.h +++ b/rpcs3/Emu/Io/MouseHandler.h @@ -1,5 +1,7 @@ #pragma once +#include + enum MousePortStatus { CELL_MOUSE_STATUS_DISCONNECTED = 0x00000000, @@ -99,7 +101,7 @@ class MouseHandlerBase { protected: MouseInfo m_info; - Array m_mice; + std::vector m_mice; public: virtual void Init(const u32 max_connect)=0; @@ -107,7 +109,7 @@ public: void Button(u8 button, bool pressed) { - for(u64 p=0; p& GetMice() { return m_mice; } - CellMouseData& GetData(const u32 mouse) { return GetMice()[mouse].m_data; } - CellMouseRawData& GetRawData(const u32 mouse) { return GetMice()[mouse].m_rawdata; } + std::vector& GetMice() { return m_mice; } + CellMouseData& GetData(const u32 mouse) { return m_mice[mouse].m_data; } + CellMouseRawData& GetRawData(const u32 mouse) { return m_mice[mouse].m_rawdata; } }; \ No newline at end of file diff --git a/rpcs3/Emu/Io/Null/NullKeyboardHandler.h b/rpcs3/Emu/Io/Null/NullKeyboardHandler.h index 4846487e1d..78d25be2b3 100644 --- a/rpcs3/Emu/Io/Null/NullKeyboardHandler.h +++ b/rpcs3/Emu/Io/Null/NullKeyboardHandler.h @@ -13,16 +13,16 @@ public: { memset(&m_info, 0, sizeof(KbInfo)); m_info.max_connect = max_connect; - m_keyboards.Clear(); + m_keyboards.clear(); for(u32 i=0; i #include "PadHandler.h" class PadManager //: public wxWindow @@ -14,9 +15,9 @@ public: void Init(const u32 max_connect); void Close(); - Array& GetPads() { return m_pad_handler->GetPads(); } + std::vector& GetPads() { return m_pad_handler->GetPads(); } PadInfo& GetInfo() { return m_pad_handler->GetInfo(); } - Array