Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions rpcs3/Emu/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,7 @@ target_sources(rpcs3_emu PRIVATE
RSX/NV47/HW/nv308a.cpp
RSX/NV47/HW/nv406e.cpp
RSX/NV47/HW/nv4097.cpp
RSX/Overlays/Debug/overlay_ps_move_debug.cpp
RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp
RSX/Overlays/HomeMenu/overlay_home_menu.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp
Expand Down
24 changes: 24 additions & 0 deletions rpcs3/Emu/Cell/Modules/cellGem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
#include "Emu/System.h"
#include "Emu/IdManager.h"
#include "Emu/RSX/Overlays/overlay_cursor.h"
#include "Emu/RSX/Overlays/overlay_manager.h"
#include "Emu/RSX/Overlays/Debug/overlay_ps_move_debug.h"
#include "Input/pad_thread.h"
#include "Input/ps_move_config.h"
#include "Input/ps_move_tracker.h"
Expand Down Expand Up @@ -1793,6 +1795,23 @@ static inline void draw_overlay_cursor(u32 gem_num, const gem_config::gem_contro
rsx::overlays::set_cursor(rsx::overlays::cursor_offset::cell_gem + gem_num, x, y, color, 2'000'000, false);
}

static void show_ps_move_debug_overlay(u32 gem_num, const ps_move_data& md, const CellGemState& state)
{
if (gem_num != 0 || !g_cfg.misc.use_native_interface)
return;

if (auto manager = g_fxo->try_get<rsx::overlays::display_manager>())
{
if (auto overlay = manager->get<rsx::overlays::ps_move_debug_overlay>())
{
const gem_config_data::gem_color& rgb = gem_config_data::gem_color::get_default_color(gem_num);

// Use quaternion from state instead of ps_move_data so that we can also check the fake/mouse move
overlay->show(md, rgb.r, rgb.g, rgb.b, state.quat[0], state.quat[1], state.quat[2], state.quat[3], state.pad.digitalbuttons, state.pad.analog_T);
}
}
}

static inline void pos_to_gem_image_state(u32 gem_num, gem_config::gem_controller& controller, vm::ptr<CellGemImageState>& gem_image_state, s32 x_pos, s32 y_pos, s32 x_max, s32 y_max)
{
const auto& shared_data = g_fxo->get<gem_camera_shared>();
Expand Down Expand Up @@ -1943,6 +1962,11 @@ static inline void pos_to_gem_state(u32 gem_num, gem_config::gem_controller& con
controller.radius_valid = x_pos > 0 && x_pos < x_max && y_pos > 0 && y_pos < y_max;
}

if (g_cfg.io.ps_move_debug_overlay)
{
show_ps_move_debug_overlay(gem_num, move_data, *gem_state);
}

if (g_cfg.io.show_move_cursor)
{
draw_overlay_cursor(gem_num, controller, x_pos, y_pos, x_max, y_max);
Expand Down
127 changes: 127 additions & 0 deletions rpcs3/Emu/RSX/Overlays/Debug/overlay_ps_move_debug.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#include "stdafx.h"
#include "overlay_ps_move_debug.h"

namespace rsx
{
namespace overlays
{
ps_move_debug_overlay::ps_move_debug_overlay()
{
m_frame.set_pos(0, 0);
m_frame.set_size(300, 300);
m_frame.back_color.r = 0.0f;
m_frame.back_color.g = 0.0f;
m_frame.back_color.b = 0.0f;
m_frame.back_color.a = 1.0f;

m_text_view.set_pos(10, 10);
m_text_view.set_padding(0, 0, 0, 0);
m_text_view.set_font("n023055ms.ttf", 6);
m_text_view.align_text(overlay_element::text_align::left);
m_text_view.fore_color = { 0.3f, 1.f, 0.3f, 1.f };
m_text_view.back_color.a = 0.f;
}

compiled_resource ps_move_debug_overlay::get_compiled()
{
if (!visible)
{
return {};
}

auto result = m_frame.get_compiled();
result.add(m_text_view.get_compiled());

// Move cylinder so its center is at origin
//glTranslatef(0, 0, 0.5f);

// Apply quaternion rotation
//QMatrix4x4 model;
//model.rotate(QQuaternion(m_quaternion[3], m_quaternion[0], m_quaternion[1], m_quaternion[2]));
//glMultMatrixf(model.constData());

// Move back to original position
//glTranslatef(0, 0, -0.5f);

// Draw controller body
//glColor3ub(200, 200, 200);
//drawCylinder(0.2f, 0.8f, 32);

// Draw front sphere
//glColor3f(m_rgb[0], m_rgb[1], m_rgb[2]);
//glPushMatrix();
//glTranslatef(0, 0, 0.8f); // move to front
//drawSphere(0.3f, 32, 32);
//glPopMatrix();

// Draw button
//glColor3ub(0, 0, 200);
//glPushMatrix();
//glTranslatef(0, 0.2f, 0.4f); // slightly in front of the sphere
//drawButton(0.08f, 0.05f, 16);
//glPopMatrix();

return result;
}

void ps_move_debug_overlay::show(const ps_move_data& md, f32 r, f32 g, f32 b, f32 q0, f32 q1, f32 q2, f32 q3, u16 digitalbuttons, u16 analog_T)
{
visible = true;

if (m_rgb[0] == r && m_rgb[1] == g && m_rgb[2] == b &&
m_quaternion[0] == q0 && m_quaternion[1] == q1 && m_quaternion[2] == q2 && m_quaternion[3] == q3 &&
std::memcmp(static_cast<const void*>(&md), static_cast<const void*>(&m_move_data), sizeof(ps_move_data)) == 0)
{
return;
}

m_move_data = md;
m_rgb = { r, g, b };
m_quaternion = { q0, q1, q2, q3 };

m_text_view.set_text(fmt::format(
"> Quat X: %6.2f Gyro X: %6.2f Accel X: %6.2f Mag X: %6.2f\n"
"> Quat Y: %6.2f Gyro Y: %6.2f Accel Y: %6.2f Mag Y: %6.2f\n"
"> Quat Z: %6.2f Gyro Z: %6.2f Accel Z: %6.2f Mag Z: %6.2f\n"
"> Quat W: %6.2f\n\n"
"> World\n"
"> Vel X: %9.2f\n"
"> Vel Y: %9.2f\n"
"> Vel Z: %9.2f\n"
"> Acc X: %9.2f\n"
"> Acc Y: %9.2f\n"
"> Acc Z: %9.2f\n"
"> AngVel X: %9.2f\n"
"> AngVel Y: %9.2f\n"
"> AngVel Z: %9.2f\n"
"> AngAcc X: %9.2f\n"
"> AngAcc Y: %9.2f\n"
"> AngAcc Z: %9.2f\n"
"> Buttons : 0x%x\n"
"> Analog T: %d"
,
m_quaternion[0], md.gyro[0], md.accelerometer[0], md.magnetometer[0],
m_quaternion[1], md.gyro[1], md.accelerometer[1], md.magnetometer[1],
m_quaternion[2], md.gyro[2], md.accelerometer[2], md.magnetometer[2],
m_quaternion[3],
md.vel_world[0],
md.vel_world[1],
md.vel_world[2],
md.accel_world[0],
md.accel_world[1],
md.accel_world[2],
md.angvel_world[0],
md.angvel_world[1],
md.angvel_world[2],
md.angaccel_world[0],
md.angaccel_world[1],
md.angaccel_world[2],
digitalbuttons,
analog_T
));
m_text_view.auto_resize();

refresh();
}
} // namespace overlays
} // namespace rsx
28 changes: 28 additions & 0 deletions rpcs3/Emu/RSX/Overlays/Debug/overlay_ps_move_debug.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#pragma once

#include "../overlays.h"
#include "Emu/Io/pad_types.h"

namespace rsx
{
namespace overlays
{
struct ps_move_debug_overlay : public user_interface
{
public:
ps_move_debug_overlay();

compiled_resource get_compiled() override;

void show(const ps_move_data& md, f32 r, f32 g, f32 b, f32 q0, f32 q1, f32 q2, f32 q3, u16 digitalbuttons, u16 analog_T);

private:
overlay_element m_frame;
label m_text_view;

ps_move_data m_move_data {};
std::array<f32, 3> m_rgb {};
std::array<f32, 4> m_quaternion {};
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ namespace rsx
add_checkbox(&g_cfg.video.debug_overlay, localized_string_id::HOME_MENU_SETTINGS_DEBUG_OVERLAY);
add_checkbox(&g_cfg.io.pad_debug_overlay, localized_string_id::HOME_MENU_SETTINGS_DEBUG_INPUT_OVERLAY);
add_checkbox(&g_cfg.io.mouse_debug_overlay, localized_string_id::HOME_MENU_SETTINGS_MOUSE_DEBUG_INPUT_OVERLAY);
add_checkbox(&g_cfg.io.ps_move_debug_overlay, localized_string_id::HOME_MENU_SETTINGS_PS_MOVE_DEBUG_INPUT_OVERLAY);
add_checkbox(&g_cfg.video.disable_video_output, localized_string_id::HOME_MENU_SETTINGS_DEBUG_DISABLE_VIDEO_OUTPUT);
add_float_slider(&g_cfg.video.texture_lod_bias, localized_string_id::HOME_MENU_SETTINGS_DEBUG_TEXTURE_LOD_BIAS, "", 0.25f);

Expand Down
16 changes: 15 additions & 1 deletion rpcs3/Emu/RSX/Overlays/overlay_debug_overlay.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "overlay_manager.h"
#include "overlay_debug_overlay.h"
#include "Debug/overlay_ps_move_debug.h"
#include "Emu/system_config.h"

namespace rsx
Expand Down Expand Up @@ -41,14 +42,15 @@ namespace rsx
visible = true;
}

extern void reset_debug_overlay()
extern void reset_debug_overlays()
{
if (!g_cfg.misc.use_native_interface)
return;

if (auto manager = g_fxo->try_get<rsx::overlays::display_manager>())
{
auto overlay = manager->get<rsx::overlays::debug_overlay>();
auto ps_move_overlay = manager->get<rsx::overlays::ps_move_debug_overlay>();

if (g_cfg.video.debug_overlay || g_cfg.io.pad_debug_overlay || g_cfg.io.mouse_debug_overlay)
{
Expand All @@ -61,6 +63,18 @@ namespace rsx
{
manager->remove<rsx::overlays::debug_overlay>();
}

if (g_cfg.io.ps_move_debug_overlay)
{
if (!ps_move_overlay)
{
ps_move_overlay = manager->create<rsx::overlays::ps_move_debug_overlay>();
}
}
else if (ps_move_overlay)
{
manager->remove<rsx::overlays::ps_move_debug_overlay>();
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion rpcs3/Emu/RSX/Overlays/overlay_debug_overlay.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace rsx
void set_text(std::string&& text);
};

void reset_debug_overlay();
void reset_debug_overlays();
void set_debug_overlay_text(std::string&& text);
}
}
2 changes: 1 addition & 1 deletion rpcs3/Emu/RSX/RSXThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -929,7 +929,7 @@ namespace rsx
if (!serialized) method_registers.init();

rsx::overlays::reset_performance_overlay();
rsx::overlays::reset_debug_overlay();
rsx::overlays::reset_debug_overlays();

if (!is_initialized)
{
Expand Down
1 change: 1 addition & 0 deletions rpcs3/Emu/localized_string_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ enum class localized_string_id
HOME_MENU_SETTINGS_DEBUG_OVERLAY,
HOME_MENU_SETTINGS_DEBUG_INPUT_OVERLAY,
HOME_MENU_SETTINGS_MOUSE_DEBUG_INPUT_OVERLAY,
HOME_MENU_SETTINGS_PS_MOVE_DEBUG_INPUT_OVERLAY,
HOME_MENU_SETTINGS_DEBUG_DISABLE_VIDEO_OUTPUT,
HOME_MENU_SETTINGS_DEBUG_TEXTURE_LOD_BIAS,
HOME_MENU_SCREENSHOT,
Expand Down
1 change: 1 addition & 0 deletions rpcs3/Emu/system_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ struct cfg_root : cfg::node
cfg::_bool load_sdl_mappings{ this, "Load SDL GameController Mappings", true };
cfg::_bool pad_debug_overlay{ this, "IO Debug overlay", false, true };
cfg::_bool mouse_debug_overlay{ this, "Mouse Debug overlay", false, true };
cfg::_bool ps_move_debug_overlay{ this, "PS Move Debug overlay", false, true };
cfg::uint<1, 180> fake_move_rotation_cone_h{ this, "Fake Move Rotation Cone", 10, true };
cfg::uint<1, 180> fake_move_rotation_cone_v{ this, "Fake Move Rotation Cone (Vertical)", 10, true };

Expand Down
2 changes: 2 additions & 0 deletions rpcs3/emucore.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
<ClCompile Include="Emu\RSX\NV47\HW\nv308a.cpp" />
<ClCompile Include="Emu\RSX\NV47\HW\nv406e.cpp" />
<ClCompile Include="Emu\RSX\NV47\HW\nv4097.cpp" />
<ClCompile Include="Emu\RSX\Overlays\Debug\overlay_ps_move_debug.cpp" />
<ClCompile Include="Emu\RSX\Overlays\FriendsList\overlay_friends_list_dialog.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_components.cpp" />
Expand Down Expand Up @@ -693,6 +694,7 @@
<ClInclude Include="Emu\RSX\NV47\HW\nv47.h" />
<ClInclude Include="Emu\RSX\NV47\HW\common.h" />
<ClInclude Include="Emu\RSX\NV47\HW\nv47_sync.hpp" />
<ClInclude Include="Emu\RSX\Overlays\Debug\overlay_ps_move_debug.h" />
<ClInclude Include="Emu\RSX\Overlays\FriendsList\overlay_friends_list_dialog.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_components.h" />
Expand Down
33 changes: 21 additions & 12 deletions rpcs3/emucore.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@
<Filter Include="Emu\GPU\RSX\Program\Assembler\Passes\FP">
<UniqueIdentifier>{7fb59544-9761-4b4a-bb04-07deb43cf3c2}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\GPU\RSX\Overlays\Debug">
<UniqueIdentifier>{0421cba0-f378-4c28-bd91-c82557a0d5b7}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Crypto\aes.cpp">
Expand Down Expand Up @@ -903,9 +906,6 @@
<ClCompile Include="Emu\RSX\Overlays\overlay_message_dialog.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_trophy_notification.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_list_view.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
Expand Down Expand Up @@ -1258,9 +1258,6 @@
<ClCompile Include="Crypto\unzip.cpp">
<Filter>Crypto</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_debug_overlay.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.cpp">
<Filter>Emu\GPU\RSX\Overlays\Network</Filter>
</ClCompile>
Expand Down Expand Up @@ -1411,6 +1408,15 @@
<ClCompile Include="Loader\ISO.cpp">
<Filter>Loader</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\Debug\overlay_ps_move_debug.cpp">
<Filter>Emu\GPU\RSX\Overlays\Debug</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_trophy_notification.cpp">
<Filter>Emu\GPU\RSX\Overlays\Trophies</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_debug_overlay.cpp">
<Filter>Emu\GPU\RSX\Overlays\Debug</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
Expand Down Expand Up @@ -2199,9 +2205,6 @@
<ClInclude Include="Emu\RSX\Overlays\overlay_message_dialog.h">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_trophy_notification.h">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_compile_notification.h">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>
Expand Down Expand Up @@ -2620,9 +2623,6 @@
<ClInclude Include="util\serialization_ext.hpp">
<Filter>Emu</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_debug_overlay.h">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.h">
<Filter>Emu\GPU\RSX\Overlays\Network</Filter>
</ClInclude>
Expand Down Expand Up @@ -2833,6 +2833,15 @@
<ClInclude Include="Loader\ISO.h">
<Filter>Loader</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\Debug\overlay_ps_move_debug.h">
<Filter>Emu\GPU\RSX\Overlays\Debug</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_trophy_notification.h">
<Filter>Emu\GPU\RSX\Overlays\Trophies</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_debug_overlay.h">
<Filter>Emu\GPU\RSX\Overlays\Debug</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Emu\RSX\Program\GLSLSnippets\GPUDeswizzle.glsl">
Expand Down
Loading
Loading