From e28b705f0d2af9a984db5ca65cca44204977577a Mon Sep 17 00:00:00 2001 From: Megamouse Date: Mon, 21 Aug 2023 21:14:42 +0200 Subject: [PATCH] Input: Add PS Move navigation controller Add the ps move navigation controller to pad types. Use proper pad class profiles. --- rpcs3/Emu/Cell/Modules/cellPad.cpp | 2 + rpcs3/Emu/Cell/Modules/cellPad.h | 86 ------------- rpcs3/Emu/Io/pad_types.h | 86 +++++++++++++ rpcs3/Input/product_info.h | 175 +++++++++++++++++++++++--- rpcs3/rpcs3qt/pad_settings_dialog.cpp | 7 +- 5 files changed, 249 insertions(+), 107 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellPad.cpp b/rpcs3/Emu/Cell/Modules/cellPad.cpp index dbe3baa5a1..03658b8645 100644 --- a/rpcs3/Emu/Cell/Modules/cellPad.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPad.cpp @@ -123,6 +123,8 @@ void cellPad_NotifyStateChange(u32 index, u32 state) product = input::get_product_info(input::product_type::dance_dance_revolution_mat); break; case CELL_PAD_PCLASS_TYPE_NAVIGATION: + product = input::get_product_info(input::product_type::ps_move_navigation); + break; case CELL_PAD_PCLASS_TYPE_STANDARD: default: product = input::get_product_info(input::product_type::playstation_3_controller); diff --git a/rpcs3/Emu/Cell/Modules/cellPad.h b/rpcs3/Emu/Cell/Modules/cellPad.h index 80d6d48370..6219ada00a 100644 --- a/rpcs3/Emu/Cell/Modules/cellPad.h +++ b/rpcs3/Emu/Cell/Modules/cellPad.h @@ -24,92 +24,6 @@ enum CellPadFilterError : u32 CELL_PADFILTER_ERROR_INVALID_PARAMETER = 0x80121401, }; -// Controller types -enum -{ - CELL_PAD_PCLASS_TYPE_STANDARD = 0x00, - CELL_PAD_PCLASS_TYPE_GUITAR = 0x01, - CELL_PAD_PCLASS_TYPE_DRUM = 0x02, - CELL_PAD_PCLASS_TYPE_DJ = 0x03, - CELL_PAD_PCLASS_TYPE_DANCEMAT = 0x04, - CELL_PAD_PCLASS_TYPE_NAVIGATION = 0x05, -}; - -// Profile of a Standard Type Controller -// Profile of a Navigation Type Controller -// Bits 0 – 31 All 0s - -// Profile of a Guitar Type Controller -enum -{ - // Basic - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 = 0x00000001, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 = 0x00000002, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 = 0x00000004, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 = 0x00000008, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 = 0x00000010, - CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP = 0x00000020, - CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN = 0x00000040, - CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR = 0x00000080, - // All Basic = 0x000000FF - - // Optional - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 = 0x00000100, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 = 0x00000200, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 = 0x00000400, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 = 0x00000800, - CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 = 0x00001000, - CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT = 0x00002000, - CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS = 0x00004000, - // All = 0x00007FFF -}; - -// Profile of a Drum Type Controller -enum -{ - CELL_PAD_PCLASS_PROFILE_DRUM_SNARE = 0x00000001, - CELL_PAD_PCLASS_PROFILE_DRUM_TOM = 0x00000002, - CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 = 0x00000004, - CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR = 0x00000008, - CELL_PAD_PCLASS_PROFILE_DRUM_KICK = 0x00000010, - CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT = 0x00000020, - CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH = 0x00000040, - CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE = 0x00000080, - CELL_PAD_PCLASS_PROFILE_DRUM_KICK2 = 0x00000100, - // All = 0x000001FF -}; - -// Profile of a DJ Deck Type Controller -enum -{ - CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK = 0x00000001, - CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER = 0x00000002, - CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL = 0x00000004, - CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 = 0x00000008, - CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 = 0x00000010, - CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 = 0x00000020, - CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER = 0x00000040, - CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 = 0x00000080, - CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 = 0x00000100, - CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 = 0x00000200, - CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER = 0x00000400, - // All = 0x000007FF -}; - -// Profile of a Dance Mat Type Controller -enum -{ - CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE = 0x00000001, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS = 0x00000002, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE = 0x00000004, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE = 0x00000008, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT = 0x00000010, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT = 0x00000020, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP = 0x00000040, - CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN = 0x00000080, - // All = 0x000000FF -}; - // Length returned in CellPadData struct enum { diff --git a/rpcs3/Emu/Io/pad_types.h b/rpcs3/Emu/Io/pad_types.h index 7d1f91d994..916f30a559 100644 --- a/rpcs3/Emu/Io/pad_types.h +++ b/rpcs3/Emu/Io/pad_types.h @@ -124,6 +124,92 @@ enum DeviceType CELL_PAD_DEV_TYPE_LDD = 5, }; +// Controller types +enum +{ + CELL_PAD_PCLASS_TYPE_STANDARD = 0x00, + CELL_PAD_PCLASS_TYPE_GUITAR = 0x01, + CELL_PAD_PCLASS_TYPE_DRUM = 0x02, + CELL_PAD_PCLASS_TYPE_DJ = 0x03, + CELL_PAD_PCLASS_TYPE_DANCEMAT = 0x04, + CELL_PAD_PCLASS_TYPE_NAVIGATION = 0x05, +}; + +// Profile of a Standard Type Controller +// Profile of a Navigation Type Controller +// Bits 0 – 31 All 0s + +// Profile of a Guitar Type Controller +enum +{ + // Basic + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 = 0x00000001, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 = 0x00000002, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 = 0x00000004, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 = 0x00000008, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 = 0x00000010, + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP = 0x00000020, + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN = 0x00000040, + CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR = 0x00000080, + // All Basic = 0x000000FF + + // Optional + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 = 0x00000100, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 = 0x00000200, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 = 0x00000400, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 = 0x00000800, + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 = 0x00001000, + CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT = 0x00002000, + CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS = 0x00004000, + // All = 0x00007FFF +}; + +// Profile of a Drum Type Controller +enum +{ + CELL_PAD_PCLASS_PROFILE_DRUM_SNARE = 0x00000001, + CELL_PAD_PCLASS_PROFILE_DRUM_TOM = 0x00000002, + CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 = 0x00000004, + CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR = 0x00000008, + CELL_PAD_PCLASS_PROFILE_DRUM_KICK = 0x00000010, + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT = 0x00000020, + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH = 0x00000040, + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE = 0x00000080, + CELL_PAD_PCLASS_PROFILE_DRUM_KICK2 = 0x00000100, + // All = 0x000001FF +}; + +// Profile of a DJ Deck Type Controller +enum +{ + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK = 0x00000001, + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER = 0x00000002, + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL = 0x00000004, + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 = 0x00000008, + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 = 0x00000010, + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 = 0x00000020, + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER = 0x00000040, + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 = 0x00000080, + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 = 0x00000100, + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 = 0x00000200, + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER = 0x00000400, + // All = 0x000007FF +}; + +// Profile of a Dance Mat Type Controller +enum +{ + CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE = 0x00000001, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS = 0x00000002, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE = 0x00000004, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE = 0x00000008, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT = 0x00000010, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT = 0x00000020, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP = 0x00000040, + CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN = 0x00000080, + // All = 0x000000FF +}; + enum ButtonDataOffset { CELL_PAD_BTN_OFFSET_DIGITAL1 = 2, diff --git a/rpcs3/Input/product_info.h b/rpcs3/Input/product_info.h index dfa30d189a..86ce0a09e4 100644 --- a/rpcs3/Input/product_info.h +++ b/rpcs3/Input/product_info.h @@ -1,6 +1,7 @@ #pragma once #include +#include "Emu/Io/pad_types.h" namespace input { @@ -14,7 +15,8 @@ namespace input harmonix_rockband_guitar, harmonix_rockband_drum_kit, harmonix_rockband_drum_kit_2, - rock_revolution_drum_kit + rock_revolution_drum_kit, + ps_move_navigation }; enum vendor_id @@ -35,14 +37,15 @@ namespace input harmonix_rockband_drum_kit_2 = 0x0218, // Harmonix Pro-Drum Kit (Rock Band III Pro-Drum Controller) playstation_3_controller = 0x0268, // PlayStation 3 Controller rock_revolution_drum_kit = 0x0300, // Rock Revolution Drum Controller + ps_move_navigation = 0x042F, // PlayStation Move navigation controller }; struct product_info { product_type type; - unsigned short vendor_id; - unsigned short product_id; - unsigned int pclass_profile; // See CELL_PAD_PCLASS_PROFILE flags + u16 vendor_id; + u16 product_id; + u32 pclass_profile; // See CELL_PAD_PCLASS_PROFILE flags }; inline product_info get_product_info(product_type type) @@ -51,40 +54,172 @@ namespace input { case product_type::dance_dance_revolution_mat: { - return product_info{ type, vendor_id::konami_de, product_id::dance_dance_revolution_mat, 0x000000FF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP | + CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN; + return product_info{ + .type = type, + .vendor_id = vendor_id::konami_de, + .product_id = product_id::dance_dance_revolution_mat, + .pclass_profile = profile + }; } case product_type::dj_hero_turntable: { - return product_info{ type, vendor_id::sony_cea, product_id::dj_hero_turntable, 0x000007FF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK | + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER | + CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL | + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER | + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 | + CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::dj_hero_turntable, + .pclass_profile = profile + }; } case product_type::harmonix_rockband_drum_kit: { - return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_drum_kit, 0x000000FF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DRUM_SNARE | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR | + CELL_PAD_PCLASS_PROFILE_DRUM_KICK | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::harmonix_rockband_drum_kit, + .pclass_profile = profile + }; } case product_type::harmonix_rockband_drum_kit_2: { - return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_drum_kit_2, 0x000000BF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DRUM_SNARE | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR | + CELL_PAD_PCLASS_PROFILE_DRUM_KICK | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::harmonix_rockband_drum_kit_2, + .pclass_profile = profile + }; } case product_type::harmonix_rockband_guitar: { - return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_guitar, 0x00007FFF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 | + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP | + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN | + CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 | + CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT | + CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::harmonix_rockband_guitar, + .pclass_profile = profile + }; } case product_type::red_octane_gh_drum_kit: { - return product_info{ type, vendor_id::sony_cea, product_id::red_octane_gh_drum_kit, 0x000000BB }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DRUM_SNARE | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR | + CELL_PAD_PCLASS_PROFILE_DRUM_KICK | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::red_octane_gh_drum_kit, + .pclass_profile = profile + }; } case product_type::red_octane_gh_guitar: { - return product_info{ type, vendor_id::sony_cea, product_id::red_octane_gh_guitar, 0x000000FF }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 | + CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 | + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP | + CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN | + CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::red_octane_gh_guitar, + .pclass_profile = profile + }; } case product_type::rock_revolution_drum_kit: { - return product_info{ type, vendor_id::sony_cea, product_id::rock_revolution_drum_kit, 0x000000FB }; + constexpr u32 profile = + CELL_PAD_PCLASS_PROFILE_DRUM_SNARE | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM | + CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR | + CELL_PAD_PCLASS_PROFILE_DRUM_KICK | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH | + CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_cea, + .product_id = product_id::rock_revolution_drum_kit, + .pclass_profile = profile + }; + } + case product_type::ps_move_navigation: + { + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_corp, + .product_id = product_id::ps_move_navigation, + .pclass_profile = 0x0 + }; } case product_type::playstation_3_controller: default: // GCC doesn't like it when there is no return value if if all enum values are covered { - return product_info{ type, vendor_id::sony_corp, product_id::playstation_3_controller, 0x0 }; + return product_info{ + .type = type, + .vendor_id = vendor_id::sony_corp, + .product_id = product_id::playstation_3_controller, + .pclass_profile = 0x0 + }; } } } @@ -94,14 +229,14 @@ namespace input switch (class_id) { default: - case 0: // CELL_PAD_PCLASS_TYPE_STANDARD + case CELL_PAD_PCLASS_TYPE_STANDARD: { return { get_product_info(product_type::playstation_3_controller) }; } - case 1: // CELL_PAD_PCLASS_TYPE_GUITAR + case CELL_PAD_PCLASS_TYPE_GUITAR: { return { @@ -109,7 +244,7 @@ namespace input get_product_info(product_type::harmonix_rockband_guitar) }; } - case 2: // CELL_PAD_PCLASS_TYPE_DRUM + case CELL_PAD_PCLASS_TYPE_DRUM: { return { @@ -119,25 +254,25 @@ namespace input get_product_info(product_type::rock_revolution_drum_kit) }; } - case 3: // CELL_PAD_PCLASS_TYPE_DJ + case CELL_PAD_PCLASS_TYPE_DJ: { return { get_product_info(product_type::dj_hero_turntable) }; } - case 4: // CELL_PAD_PCLASS_TYPE_DANCEMAT + case CELL_PAD_PCLASS_TYPE_DANCEMAT: { return { get_product_info(product_type::dance_dance_revolution_mat) }; } - case 5: // CELL_PAD_PCLASS_TYPE_NAVIGATION + case CELL_PAD_PCLASS_TYPE_NAVIGATION: { return { - get_product_info(product_type::playstation_3_controller) + get_product_info(product_type::ps_move_navigation) }; } } diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 761f32d94d..717ca4c8b6 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -1612,7 +1612,7 @@ void pad_settings_dialog::HandleDeviceClassChange(int index) const ui->chooseProduct->clear(); - for (const auto& product : input::get_products_by_class(index)) + for (const input::product_info& product : input::get_products_by_class(index)) { switch (product.type) { @@ -1661,6 +1661,11 @@ void pad_settings_dialog::HandleDeviceClassChange(int index) const ui->chooseProduct->addItem(tr("Rock Revolution", "Rock Revolution Drum Controller"), static_cast(product.type)); break; } + case input::product_type::ps_move_navigation: + { + ui->chooseProduct->addItem(tr("PS Move Navigation", "PS Move Navigation Controller"), static_cast(product.type)); + break; + } } } }