mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-01-31 01:15:24 +01:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a33400ca6 | ||
|
|
2f5afc40b6 | ||
|
|
fe9915cbd0 | ||
|
|
70ce7e024f | ||
|
|
cab81ac23a | ||
|
|
dbb6d2769f | ||
|
|
cce1b82e11 | ||
|
|
e906717146 | ||
|
|
a841151446 |
4
.github/workflows/release_cut_new.yml
vendored
4
.github/workflows/release_cut_new.yml
vendored
@@ -68,7 +68,7 @@ jobs:
|
||||
mv ./release-notes.md ${GITHUB_WORKSPACE}/release-notes.md
|
||||
|
||||
- name: Create a GitHub Release (Manual)
|
||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe
|
||||
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b
|
||||
if: steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch'
|
||||
with:
|
||||
body_path: ./release-notes.md
|
||||
@@ -77,7 +77,7 @@ jobs:
|
||||
tag_name: ${{ steps.tag_version.outputs.new_tag }}
|
||||
|
||||
- name: Create a GitHub Release (Push)
|
||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe
|
||||
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b
|
||||
if: steps.tag_version.outputs.new_tag && github.event_name != 'workflow_dispatch'
|
||||
with:
|
||||
body_path: ./release-notes.md
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
"--socket=wayland",
|
||||
"--socket=fallback-x11",
|
||||
"--socket=pulseaudio",
|
||||
"--talk-name=org.freedesktop.ScreenSaver"
|
||||
"--talk-name=org.freedesktop.ScreenSaver",
|
||||
"--filesystem=xdg-run/gamescope-0:ro"
|
||||
],
|
||||
"modules": [
|
||||
"modules/10-libpcap.json",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -78,6 +78,7 @@
|
||||
03000000c82d00001230000000000000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
03000000c82d00001260000000000000,8BitDo Ultimate 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
03000000c82d00001b30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
03000000c82d00001c30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,x:b3,y:b4,back:b10,guide:b12,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9,paddle1:b2,paddle2:b5,platform:Windows,
|
||||
03000000c82d00001d30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
03000000c82d00001530000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
03000000c82d00001630000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
|
||||
@@ -992,6 +993,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
|
||||
030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
|
||||
030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
030000006d04000019c2000000020000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,
|
||||
@@ -1153,6 +1155,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,
|
||||
030000005e040000130b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
|
||||
030000005e040000130b000022050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
|
||||
030000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
|
||||
030000005e040000220b000021050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
|
||||
03000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X,
|
||||
03000000120c0000100e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
03000000120c0000101e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
|
||||
@@ -8002,11 +8002,6 @@ Please check your username and password, and try again.</source>
|
||||
<source>Enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9766"/>
|
||||
<source>Direct3D 12 (Not Recommended)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9770"/>
|
||||
<source>Software Renderer</source>
|
||||
@@ -10162,6 +10157,11 @@ This action cannot be undone.</source>
|
||||
<source>Direct3D 11</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9766"/>
|
||||
<source>Direct3D 12</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9767"/>
|
||||
<source>OpenGL</source>
|
||||
@@ -15195,12 +15195,6 @@ Swap chain: see Microsoft's Terminology Portal.</extracomment>
|
||||
<source>Disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Settings/GraphicsSettingsWidget.cpp" line="28"/>
|
||||
<source>Direct3D 12 (Not Recommended)</source>
|
||||
<extracomment>Graphics backend/engine type. Leave as-is.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Settings/GraphicsSettingsWidget.cpp" line="459"/>
|
||||
<source>Overrides the full-motion video (FMV) aspect ratio. If disabled, the FMV Aspect Ratio will match the same value as the general Aspect Ratio setting.</source>
|
||||
@@ -15705,6 +15699,12 @@ Swap chain: see Microsoft's Terminology Portal.</extracomment>
|
||||
<source>100%</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Settings/GraphicsSettingsWidget.cpp" line="28"/>
|
||||
<source>Direct3D 12</source>
|
||||
<extracomment>Graphics backend/engine type. Leave as-is.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Settings/GraphicsSettingsWidget.cpp" line="43"/>
|
||||
<source>Software Renderer</source>
|
||||
|
||||
@@ -220,6 +220,11 @@ namespace Achievements
|
||||
static rc_client_leaderboard_entry_list_t* s_leaderboard_nearby_entries;
|
||||
static std::vector<std::pair<const rc_client_leaderboard_entry_t*, std::string>> s_leaderboard_user_icon_paths;
|
||||
static bool s_is_showing_all_leaderboard_entries = false;
|
||||
static u32 s_last_selected_leaderboard_id = 0;
|
||||
static bool s_has_last_selected_leaderboard = false;
|
||||
static bool s_restore_leaderboard_focus = false;
|
||||
static float s_leaderboard_list_scroll = 0.0f;
|
||||
static bool s_restore_leaderboard_scroll = false;
|
||||
|
||||
static std::vector<LeaderboardTrackerIndicator> s_active_leaderboard_trackers;
|
||||
static std::vector<AchievementChallengeIndicator> s_active_challenge_indicators;
|
||||
@@ -2719,6 +2724,12 @@ bool Achievements::PrepareLeaderboardsWindow()
|
||||
return false;
|
||||
}
|
||||
|
||||
s_has_last_selected_leaderboard = false;
|
||||
s_restore_leaderboard_focus = false;
|
||||
s_last_selected_leaderboard_id = 0;
|
||||
s_restore_leaderboard_scroll = false;
|
||||
s_leaderboard_list_scroll = 0.0f;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2759,8 +2770,12 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
heading_height += LayoutScale(ImGuiFullscreen::LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY) + spacing;
|
||||
}
|
||||
|
||||
const float rank_column_width =
|
||||
g_large_font.first->CalcTextSizeA(g_large_font.second, std::numeric_limits<float>::max(), -1.0f, "99999").x;
|
||||
const float rank_column_width = std::max(
|
||||
g_large_font.first->CalcTextSizeA(g_large_font.second, std::numeric_limits<float>::max(), -1.0f, "99999").x,
|
||||
g_large_font.first
|
||||
->CalcTextSizeA(
|
||||
g_large_font.second, std::numeric_limits<float>::max(), -1.0f, TRANSLATE("Achievements", "Rank"))
|
||||
.x);
|
||||
const float name_column_width =
|
||||
g_large_font.first->CalcTextSizeA(g_large_font.second, std::numeric_limits<float>::max(), -1.0f, "WWWWWWWWWWWWWWWWWWWWWW").x;
|
||||
const float time_column_width =
|
||||
@@ -2807,11 +2822,17 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ImGuiFullscreen::FloatingButton(
|
||||
ICON_FA_SQUARE_CARET_LEFT, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) ||
|
||||
ImGuiFullscreen::WantsToCloseMenu())
|
||||
const bool wants_to_go_back = ImGuiFullscreen::FloatingButton(
|
||||
ICON_FA_SQUARE_CARET_LEFT, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) ||
|
||||
ImGuiFullscreen::WantsToCloseMenu();
|
||||
if (wants_to_go_back)
|
||||
{
|
||||
close_leaderboard_on_exit = true;
|
||||
if (s_has_last_selected_leaderboard)
|
||||
{
|
||||
s_restore_leaderboard_focus = true;
|
||||
s_restore_leaderboard_scroll = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2902,19 +2923,25 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
"legend", false, ImGuiFullscreen::LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY, &visible, &hovered, &bb.Min, &bb.Max, 0, alpha);
|
||||
|
||||
const float midpoint = bb.Min.y + g_large_font.second + LayoutScale(4.0f);
|
||||
float text_start_x = bb.Min.x + LayoutScale(15.0f) + padding;
|
||||
const float icon_column_width = bb.Max.y - bb.Min.y;
|
||||
float column_left = bb.Min.x + LayoutScale(15.0f) + padding;
|
||||
|
||||
ImGui::PushFont(g_large_font.first, g_large_font.second);
|
||||
|
||||
const ImRect rank_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
ImGui::RenderTextClipped(
|
||||
rank_bb.Min, rank_bb.Max, TRANSLATE("Achievements", "Rank"), nullptr, nullptr, ImVec2(0.0f, 0.0f), &rank_bb);
|
||||
text_start_x += rank_column_width + column_spacing;
|
||||
const auto render_centered_heading = [&](const char* text, float width) {
|
||||
const ImRect rect(ImVec2(column_left, bb.Min.y), ImVec2(column_left + width, midpoint));
|
||||
ImGui::RenderTextClipped(rect.Min, rect.Max, text, nullptr, nullptr, ImVec2(0.5f, 0.0f), &rect);
|
||||
column_left += width + column_spacing;
|
||||
};
|
||||
|
||||
const ImRect user_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
render_centered_heading(TRANSLATE("Achievements", "Rank"), rank_column_width);
|
||||
|
||||
const float name_column_total_width = icon_column_width + column_spacing + name_column_width;
|
||||
const ImRect user_bb(ImVec2(column_left + icon_column_width + column_spacing, bb.Min.y),
|
||||
ImVec2(column_left + name_column_total_width, midpoint));
|
||||
ImGui::RenderTextClipped(
|
||||
user_bb.Min, user_bb.Max, TRANSLATE("Achievements", "Name"), nullptr, nullptr, ImVec2(0.0f, 0.0f), &user_bb);
|
||||
text_start_x += name_column_width + column_spacing;
|
||||
user_bb.Min, user_bb.Max, TRANSLATE("Achievements", "Name"), nullptr, nullptr, ImVec2(0.5f, 0.0f), &user_bb);
|
||||
column_left += name_column_total_width + column_spacing;
|
||||
|
||||
static const char* value_headings[NUM_RC_CLIENT_LEADERBOARD_FORMATS] = {
|
||||
TRANSLATE_NOOP("Achievements", "Time"),
|
||||
@@ -2922,16 +2949,16 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
TRANSLATE_NOOP("Achievements", "Value"),
|
||||
};
|
||||
|
||||
const ImRect score_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
ImGui::RenderTextClipped(score_bb.Min, score_bb.Max,
|
||||
render_centered_heading(
|
||||
Host::TranslateToCString(
|
||||
"Achievements", value_headings[std::min<u8>(s_open_leaderboard->format, NUM_RC_CLIENT_LEADERBOARD_FORMATS - 1)]),
|
||||
nullptr, nullptr, ImVec2(0.0f, 0.0f), &score_bb);
|
||||
text_start_x += time_column_width + column_spacing;
|
||||
time_column_width);
|
||||
|
||||
const ImRect date_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
ImGui::RenderTextClipped(
|
||||
date_bb.Min, date_bb.Max, TRANSLATE("Achievements", "Date Submitted"), nullptr, nullptr, ImVec2(0.0f, 0.0f), &date_bb);
|
||||
const float date_column_width = std::max(bb.Max.x - column_left, 0.0f);
|
||||
const ImRect date_bb(ImVec2(column_left, bb.Min.y), ImVec2(column_left + date_column_width, midpoint));
|
||||
ImGui::RenderTextClipped(date_bb.Min, date_bb.Max, TRANSLATE("Achievements", "Date Submitted"), nullptr, nullptr,
|
||||
ImVec2(0.5f, 0.0f), &date_bb);
|
||||
column_left += date_column_width;
|
||||
|
||||
ImGui::PopFont();
|
||||
|
||||
@@ -2952,6 +2979,14 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
ImVec2(display_size.x, display_size.y - heading_height - LayoutScale(ImGuiFullscreen::LAYOUT_FOOTER_HEIGHT)),
|
||||
"leaderboards", background, 0.0f, ImVec2(ImGuiFullscreen::LAYOUT_MENU_WINDOW_X_PADDING, 0.0f), 0))
|
||||
{
|
||||
if (s_restore_leaderboard_scroll)
|
||||
{
|
||||
ImGui::SetScrollY(s_leaderboard_list_scroll);
|
||||
s_restore_leaderboard_scroll = false;
|
||||
}
|
||||
|
||||
const bool had_pending_focus_request = s_restore_leaderboard_focus;
|
||||
|
||||
ImGuiFullscreen::BeginMenuButtons();
|
||||
|
||||
for (u32 bucket_index = 0; bucket_index < s_leaderboard_list->num_buckets; bucket_index++)
|
||||
@@ -2962,6 +2997,9 @@ void Achievements::DrawLeaderboardsWindow()
|
||||
}
|
||||
|
||||
ImGuiFullscreen::EndMenuButtons();
|
||||
|
||||
if (had_pending_focus_request && s_restore_leaderboard_focus)
|
||||
s_restore_leaderboard_focus = false;
|
||||
}
|
||||
ImGuiFullscreen::EndFullscreenWindow();
|
||||
|
||||
@@ -3072,7 +3110,9 @@ void Achievements::DrawLeaderboardEntry(const rc_client_leaderboard_entry_t& ent
|
||||
return;
|
||||
|
||||
const float midpoint = bb.Min.y + g_large_font.second + LayoutScale(4.0f);
|
||||
float text_start_x = bb.Min.x + LayoutScale(15.0f);
|
||||
const float column_padding = LayoutScale(15.0f);
|
||||
const float icon_column_width = bb.Max.y - bb.Min.y;
|
||||
float column_left = bb.Min.x + column_padding;
|
||||
SmallString text;
|
||||
|
||||
text.format("{}", entry.rank);
|
||||
@@ -3082,12 +3122,11 @@ void Achievements::DrawLeaderboardEntry(const rc_client_leaderboard_entry_t& ent
|
||||
if (is_self)
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(255, 242, 0, 255));
|
||||
|
||||
const ImRect rank_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
const ImRect rank_bb(ImVec2(column_left, bb.Min.y), ImVec2(column_left + rank_column_width, midpoint));
|
||||
ImGui::RenderTextClipped(rank_bb.Min, rank_bb.Max, text.c_str(), text.end_ptr(), nullptr, ImVec2(0.0f, 0.0f), &rank_bb);
|
||||
text_start_x += rank_column_width + column_spacing;
|
||||
column_left += rank_column_width + column_spacing;
|
||||
|
||||
const float icon_size = bb.Max.y - bb.Min.y;
|
||||
const ImRect icon_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
const ImRect icon_bb(ImVec2(column_left, bb.Min.y), ImVec2(column_left + icon_column_width, bb.Min.y + icon_column_width));
|
||||
GSTexture* icon_tex = nullptr;
|
||||
if (auto it = std::find_if(s_leaderboard_user_icon_paths.begin(), s_leaderboard_user_icon_paths.end(),
|
||||
[&entry](const auto& it) { return it.first == &entry; });
|
||||
@@ -3108,18 +3147,20 @@ void Achievements::DrawLeaderboardEntry(const rc_client_leaderboard_entry_t& ent
|
||||
if (icon_tex)
|
||||
{
|
||||
ImGui::GetWindowDrawList()->AddImage(reinterpret_cast<ImTextureID>(icon_tex->GetNativeHandle()),
|
||||
icon_bb.Min, icon_bb.Min + ImVec2(icon_size, icon_size));
|
||||
icon_bb.Min, icon_bb.Min + ImVec2(icon_column_width, icon_column_width));
|
||||
}
|
||||
|
||||
const ImRect user_bb(ImVec2(text_start_x + column_spacing + icon_size, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
column_left += icon_column_width + column_spacing;
|
||||
|
||||
const ImRect user_bb(ImVec2(column_left, bb.Min.y), ImVec2(column_left + name_column_width, midpoint));
|
||||
ImGui::RenderTextClipped(user_bb.Min, user_bb.Max, entry.user, nullptr, nullptr, ImVec2(0.0f, 0.0f), &user_bb);
|
||||
text_start_x += name_column_width + column_spacing;
|
||||
column_left += name_column_width + column_spacing;
|
||||
|
||||
const ImRect score_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
const ImRect score_bb(ImVec2(column_left, bb.Min.y), ImVec2(column_left + time_column_width, midpoint));
|
||||
ImGui::RenderTextClipped(score_bb.Min, score_bb.Max, entry.display, nullptr, nullptr, ImVec2(0.0f, 0.0f), &score_bb);
|
||||
text_start_x += time_column_width + column_spacing;
|
||||
column_left += time_column_width + column_spacing;
|
||||
|
||||
const ImRect time_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
const ImRect time_bb(ImVec2(column_left, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
const auto submit_time = FullscreenUI::TimeToPrintableString(entry.submitted);
|
||||
ImGui::RenderTextClipped(time_bb.Min, time_bb.Max, submit_time.c_str(), submit_time.end_ptr(), nullptr, ImVec2(0.0f, 0.0f), &time_bb);
|
||||
|
||||
@@ -3151,6 +3192,13 @@ void Achievements::DrawLeaderboardListEntry(const rc_client_leaderboard_t* lboar
|
||||
if (!visible)
|
||||
return;
|
||||
|
||||
if (s_restore_leaderboard_focus && s_has_last_selected_leaderboard && lboard->id == s_last_selected_leaderboard_id)
|
||||
{
|
||||
ImGui::SetItemDefaultFocus();
|
||||
ImGui::SetScrollHereY(0.5f);
|
||||
s_restore_leaderboard_focus = false;
|
||||
}
|
||||
|
||||
const float midpoint = bb.Min.y + g_large_font.second + LayoutScale(4.0f);
|
||||
const float text_start_x = bb.Min.x + LayoutScale(15.0f);
|
||||
const ImRect title_bb(ImVec2(text_start_x, bb.Min.y), ImVec2(bb.Max.x, midpoint));
|
||||
@@ -3168,7 +3216,10 @@ void Achievements::DrawLeaderboardListEntry(const rc_client_leaderboard_t* lboar
|
||||
}
|
||||
|
||||
if (pressed)
|
||||
{
|
||||
s_leaderboard_list_scroll = ImGui::GetScrollY();
|
||||
OpenLeaderboard(lboard);
|
||||
}
|
||||
}
|
||||
|
||||
void Achievements::OpenLeaderboard(const rc_client_leaderboard_t* lboard)
|
||||
@@ -3177,6 +3228,10 @@ void Achievements::OpenLeaderboard(const rc_client_leaderboard_t* lboard)
|
||||
|
||||
CloseLeaderboard();
|
||||
|
||||
s_last_selected_leaderboard_id = lboard->id;
|
||||
s_has_last_selected_leaderboard = true;
|
||||
s_restore_leaderboard_focus = false;
|
||||
|
||||
s_open_leaderboard = lboard;
|
||||
s_is_showing_all_leaderboard_entries = false;
|
||||
s_leaderboard_fetch_handle = rc_client_begin_fetch_leaderboard_entries_around_user(
|
||||
|
||||
@@ -374,7 +374,7 @@ void GSRendererSW::RewriteVerticesIfSTOverflow()
|
||||
const GSVector4 q = (primclass == GS_SPRITE_CLASS) ? stcq[1].wwww() : stcq[j].wwww();
|
||||
stcq[j] = stcq[j].blend32(uv_new * q, GSVector4::cast(rewrite));
|
||||
|
||||
vertex_copy[i + j].m[0] = GSVector4i::cast(stcq[j]).m;
|
||||
vertex_copy[i + j].m[0] = GSVector4i::cast(stcq[j]);
|
||||
vertex_copy[i + j].m[1] = vertex[index[i + j]].m[1];
|
||||
index[i + j] = i + j;
|
||||
}
|
||||
|
||||
@@ -526,7 +526,7 @@ void LB()
|
||||
cpuRegs.GPR.r[_Rt_].SD[0] = temp;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if ((addr & 0xFFFFE0000) == 0x10000000)
|
||||
if ((addr & 0xFFFFE000) == 0x10000000)
|
||||
{
|
||||
intUpdateCPUCycles();
|
||||
intEventTest();
|
||||
@@ -542,7 +542,7 @@ void LBU()
|
||||
cpuRegs.GPR.r[_Rt_].UD[0] = temp;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if ((addr & 0xFFFFE0000) == 0x10000000)
|
||||
if ((addr & 0xFFFFE000) == 0x10000000)
|
||||
{
|
||||
intUpdateCPUCycles();
|
||||
intEventTest();
|
||||
@@ -562,7 +562,7 @@ void LH()
|
||||
cpuRegs.GPR.r[_Rt_].SD[0] = temp;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if ((addr & 0xFFFFE0000) == 0x10000000)
|
||||
if ((addr & 0xFFFFE000) == 0x10000000)
|
||||
{
|
||||
intUpdateCPUCycles();
|
||||
intEventTest();
|
||||
@@ -582,7 +582,7 @@ void LHU()
|
||||
cpuRegs.GPR.r[_Rt_].UD[0] = temp;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if ((addr & 0xFFFFE0000) == 0x10000000)
|
||||
if ((addr & 0xFFFFE000) == 0x10000000)
|
||||
{
|
||||
intUpdateCPUCycles();
|
||||
intEventTest();
|
||||
@@ -602,7 +602,7 @@ void LW()
|
||||
cpuRegs.GPR.r[_Rt_].SD[0] = (s32)temp;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if ((addr & 0xFFFFE0000) == 0x10000000)
|
||||
if ((addr & 0xFFFFE000) == 0x10000000)
|
||||
{
|
||||
intUpdateCPUCycles();
|
||||
intEventTest();
|
||||
|
||||
@@ -113,7 +113,7 @@ static void recLoad(u32 bits, bool sign)
|
||||
const u32 srcadr = g_cpuConstRegs[_Rs_].UL[0] + _Imm_;
|
||||
|
||||
// Force event test on EE counter read to improve read + interrupt syncing. Namely ESPN Games.
|
||||
if (bits <= 32 && (srcadr & 0xFFFFE0000) == 0x10000000)
|
||||
if (bits <= 32 && (srcadr & 0xFFFFE000) == 0x10000000)
|
||||
needs_flush = true;
|
||||
|
||||
x86reg = vtlb_DynGenReadNonQuad_Const(bits, sign, false, srcadr, alloc_cb);
|
||||
|
||||
2
tools/generate_redump_yaml.py
Normal file → Executable file
2
tools/generate_redump_yaml.py
Normal file → Executable file
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
RETRIES=10
|
||||
|
||||
|
||||
Reference in New Issue
Block a user