mirror of https://github.com/RPCS3/rpcs3.git
Add emulated DJ Hero turntable controller in Settings I/O tab
This commit is contained in:
parent
ab50e5483e
commit
cd73d738e5
|
@ -242,10 +242,15 @@ usb_handler_thread::usb_handler_thread()
|
|||
usb_devices.push_back(std::make_shared<usb_device_ghltar>());
|
||||
}
|
||||
|
||||
if (!found_turntable)
|
||||
if (g_cfg.io.turntable == turntable_handler::one_controller || g_cfg.io.turntable == turntable_handler::two_controllers)
|
||||
{
|
||||
sys_usbd.notice("Adding emulated turntable");
|
||||
usb_devices.push_back(std::make_shared<usb_device_turntable>());
|
||||
sys_usbd.notice("Adding emulated turntable (1 player)");
|
||||
usb_devices.push_back(std::make_shared<usb_device_turntable>(0));
|
||||
}
|
||||
if (g_cfg.io.turntable == turntable_handler::two_controllers)
|
||||
{
|
||||
sys_usbd.notice("Adding emulated turntable (2 players)");
|
||||
usb_devices.push_back(std::make_shared<usb_device_turntable>(1));
|
||||
}
|
||||
|
||||
if (g_cfg.io.buzz == buzz_handler::one_controller || g_cfg.io.buzz == buzz_handler::two_controllers)
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
LOG_CHANNEL(turntable_log);
|
||||
|
||||
usb_device_turntable::usb_device_turntable()
|
||||
usb_device_turntable::usb_device_turntable(int controller_index) : m_controller_index(controller_index)
|
||||
{
|
||||
device = UsbDescriptorNode(USB_DESCRIPTOR_DEVICE, UsbDeviceDescriptor{0x0100, 0x00, 0x00, 0x00, 0x40, 0x12BA, 0x0140, 0x0005, 0x01, 0x02, 0x00, 0x01});
|
||||
auto& config0 = device.add_node(UsbDescriptorNode(USB_DESCRIPTOR_CONFIG, UsbDeviceConfiguration{0x0029, 0x01, 0x01, 0x00, 0x80, 0x19}));
|
||||
|
@ -117,7 +117,7 @@ void usb_device_turntable::interrupt_transfer(u32 buf_size, u8* buf, u32 /*endpo
|
|||
// All other bufs are always 0x00
|
||||
|
||||
const auto handler = pad::get_current_handler();
|
||||
const auto& pad = handler->GetPads()[6];
|
||||
const auto& pad = handler->GetPads()[m_controller_index];
|
||||
|
||||
if (!(pad->m_port_status & CELL_PAD_STATUS_CONNECTED))
|
||||
return;
|
||||
|
|
|
@ -4,8 +4,11 @@
|
|||
|
||||
class usb_device_turntable : public usb_device_emulated
|
||||
{
|
||||
private:
|
||||
int m_controller_index;
|
||||
|
||||
public:
|
||||
usb_device_turntable();
|
||||
usb_device_turntable(int controller_index);
|
||||
~usb_device_turntable();
|
||||
|
||||
void control_transfer(u8 bmRequestType, u8 bRequest, u16 wValue, u16 wIndex, u16 wLength, u32 buf_size, u8* buf, UsbTransfer* transfer) override;
|
||||
|
|
|
@ -245,6 +245,7 @@ struct cfg_root : cfg::node
|
|||
cfg::_enum<fake_camera_type> camera_type{ this, "Camera type", fake_camera_type::unknown };
|
||||
cfg::_enum<move_handler> move{ this, "Move", move_handler::null };
|
||||
cfg::_enum<buzz_handler> buzz{ this, "Buzz emulated controller", buzz_handler::null };
|
||||
cfg::_enum<turntable_handler> turntable{this, "Turntable emulated controller", turntable_handler::null};
|
||||
} io{ this };
|
||||
|
||||
struct node_sys : cfg::node
|
||||
|
|
|
@ -389,6 +389,22 @@ void fmt_class_string<buzz_handler>::format(std::string& out, u64 arg)
|
|||
});
|
||||
}
|
||||
|
||||
template <>
|
||||
void fmt_class_string<turntable_handler>::format(std::string& out, u64 arg)
|
||||
{
|
||||
format_enum(out, arg, [](auto value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case turntable_handler::null: return "Null";
|
||||
case turntable_handler::one_controller: return "1 controller";
|
||||
case turntable_handler::two_controllers: return "2 controllers";
|
||||
}
|
||||
|
||||
return unknown;
|
||||
});
|
||||
}
|
||||
|
||||
template <>
|
||||
void fmt_class_string<ppu_decoder_type>::format(std::string& out, u64 arg)
|
||||
{
|
||||
|
|
|
@ -102,6 +102,13 @@ enum class buzz_handler
|
|||
two_controllers,
|
||||
};
|
||||
|
||||
enum class turntable_handler
|
||||
{
|
||||
null,
|
||||
one_controller,
|
||||
two_controllers,
|
||||
};
|
||||
|
||||
enum class microphone_handler
|
||||
{
|
||||
null,
|
||||
|
|
|
@ -1030,6 +1030,14 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_
|
|||
case buzz_handler::two_controllers: return tr("2 controllers (5-7 players)", "Buzz handler");
|
||||
}
|
||||
break;
|
||||
case emu_settings_type::Turntable:
|
||||
switch (static_cast<turntable_handler>(index))
|
||||
{
|
||||
case turntable_handler::null: return tr("Null", "Turntable handler");
|
||||
case turntable_handler::one_controller: return tr("1 controller", "Turntable handler");
|
||||
case turntable_handler::two_controllers: return tr("2 controllers", "Turntable handler");
|
||||
}
|
||||
break;
|
||||
case emu_settings_type::InternetStatus:
|
||||
switch (static_cast<np_internet_status>(index))
|
||||
{
|
||||
|
|
|
@ -127,6 +127,7 @@ enum class emu_settings_type
|
|||
CameraType,
|
||||
Move,
|
||||
Buzz,
|
||||
Turntable,
|
||||
|
||||
// Misc
|
||||
ExitRPCS3OnFinish,
|
||||
|
@ -279,6 +280,7 @@ inline static const QMap<emu_settings_type, cfg_location> settings_location =
|
|||
{ emu_settings_type::CameraType, { "Input/Output", "Camera type"}},
|
||||
{ emu_settings_type::Move, { "Input/Output", "Move" }},
|
||||
{ emu_settings_type::Buzz, { "Input/Output", "Buzz emulated controller" }},
|
||||
{ emu_settings_type::Turntable, { "Input/Output", "Turntable emulated controller" }},
|
||||
|
||||
// Misc
|
||||
{ emu_settings_type::ExitRPCS3OnFinish, { "Miscellaneous", "Exit RPCS3 when process finishes" }},
|
||||
|
|
|
@ -961,6 +961,9 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
|||
m_emu_settings->EnhanceComboBox(ui->buzzBox, emu_settings_type::Buzz);
|
||||
SubscribeTooltip(ui->gb_buzz_emulated, tooltips.settings.buzz);
|
||||
|
||||
m_emu_settings->EnhanceComboBox(ui->turntableBox, emu_settings_type::Turntable);
|
||||
SubscribeTooltip(ui->gb_turntable_emulated, tooltips.settings.turntable);
|
||||
|
||||
// _____ _ _______ _
|
||||
// / ____| | | |__ __| | |
|
||||
// | (___ _ _ ___| |_ ___ _ __ ___ | | __ _| |__
|
||||
|
|
|
@ -1412,9 +1412,9 @@
|
|||
<attribute name="title">
|
||||
<string>I/O</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="inputTab_layout" stretch="0,0,1,0">
|
||||
<layout class="QVBoxLayout" name="inputTab_layout" stretch="0,0,0,1,0">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="inputTabLayoutTop" stretch="1,1,1">
|
||||
<layout class="QHBoxLayout" name="inputTabLayout1" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_keyboard_handler">
|
||||
<property name="title">
|
||||
|
@ -1454,7 +1454,7 @@
|
|||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="inputTabLayoutBottom" stretch="1,1,1">
|
||||
<layout class="QHBoxLayout" name="inputTabLayout2" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_mouse_handler">
|
||||
<property name="title">
|
||||
|
@ -1493,6 +1493,28 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="inputTabLayout3" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_turntable_emulated">
|
||||
<property name="title">
|
||||
<string>DJ Hero emulated turntable</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_turntable_emulated_layout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="turntableBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="inputTabSpacerWidget" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="inputTabSpacerWidget2" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="inputTabSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -196,6 +196,7 @@ public:
|
|||
const QString camera_type = tr("Camera support is not implemented, leave this on unknown.");
|
||||
const QString move = tr("PlayStation Move support.\nFake: Experimental! This maps Move controls to DS3 controller mappings.\nMouse: Emulate PSMove with Mouse handler.");
|
||||
const QString buzz = tr("Buzz! support.\nSelect 1 or 2 controllers if the game requires Buzz! controllers and you don't have real controllers.\nSelect Null if the game has support for DualShock or if you have real Buzz! controllers.");
|
||||
const QString turntable = tr("DJ Hero Turntable controller support.\nSelect 1 or 2 controllers if the game requires DJ Hero Turntable controllers and you don't have real turntable controllers.\nSelect Null if the game has support for DualShock or if you have real turntable controllers.\nA real turntable controller can be used at the same time as an emulated turntable controller.");
|
||||
|
||||
// network
|
||||
|
||||
|
|
Loading…
Reference in New Issue