Remove whitespace

This commit is contained in:
Margen67 2023-02-13 02:33:06 -08:00 committed by Megamouse
parent 75fbb3d551
commit 5bb89328d0
74 changed files with 170 additions and 170 deletions

View file

@ -29,8 +29,8 @@ body:
Please provide the _exact_ build (or commit) information that introduced the regression you're reporting. Please provide the _exact_ build (or commit) information that introduced the regression you're reporting.
* Please see [How to find the build that caused a regression](https://wiki.rpcs3.net/index.php?title=Help:Using_different_versions_of_RPCS3#How_to_find_the_build_that_caused_a_regression.3F) in our wiki. * Please see [How to find the build that caused a regression](https://wiki.rpcs3.net/index.php?title=Help:Using_different_versions_of_RPCS3#How_to_find_the_build_that_caused_a_regression.3F) in our wiki.
* You can find [History of RPCS3 builds](https://rpcs3.net/compatibility?b) here. * You can find [History of RPCS3 builds](https://rpcs3.net/compatibility?b) here.
Make sure you're running with settings as close to default as possible Make sure you're running with settings as close to default as possible
* **Do NOT enable any emulator game patches when reporting issues** * **Do NOT enable any emulator game patches when reporting issues**
* Only change settings that are required for the game to work * Only change settings that are required for the game to work
- type: input - type: input
@ -48,7 +48,7 @@ body:
Obtaining the log file: Obtaining the log file:
* Run the game until you find the regression. * Run the game until you find the regression.
* Completely close RPCS3 and locate the log file. * Completely close RPCS3 and locate the log file.
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon). RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
* On Windows it will be in the RPCS3 directory near the executable * On Windows it will be in the RPCS3 directory near the executable
* On Linux it will be in ```~/.cache/rpcs3/``` * On Linux it will be in ```~/.cache/rpcs3/```
@ -70,21 +70,21 @@ body:
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_. * To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
* Captures will be stored in RPCS3 folder → captures. * Captures will be stored in RPCS3 folder → captures.
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html). * To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
- type: textarea - type: textarea
id: captures id: captures
attributes: attributes:
label: Attach capture files for visual issues label: Attach capture files for visual issues
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it. description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
validations: validations:
required: false required: false
- type: textarea - type: textarea
id: system-info id: system-info
attributes: attributes:
label: System configuration label: System configuration
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration. description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
validations: validations:
required: false required: false
- type: textarea - type: textarea
id: other-details id: other-details
attributes: attributes:
label: Other details label: Other details

View file

@ -28,13 +28,13 @@ body:
attributes: attributes:
value: | value: |
# Log files # Log files
Provide a log file that includes the bug you're reporting. Provide a log file that includes the bug you're reporting.
Obtaining the log file: Obtaining the log file:
* Run the game until you find the regression. * Run the game until you find the regression.
* Completely close RPCS3 and locate the log file. * Completely close RPCS3 and locate the log file.
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon). RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
* On Windows it will be in the RPCS3 directory near the executable * On Windows it will be in the RPCS3 directory near the executable
* On Linux it will be in ```~/.cache/rpcs3/``` * On Linux it will be in ```~/.cache/rpcs3/```
@ -55,21 +55,21 @@ body:
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_. * To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
* Captures will be stored in RPCS3 folder → captures. * Captures will be stored in RPCS3 folder → captures.
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html). * To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
- type: textarea - type: textarea
id: captures id: captures
attributes: attributes:
label: Attach capture files for visual issues label: Attach capture files for visual issues
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it. description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
validations: validations:
required: false required: false
- type: textarea - type: textarea
id: system-info id: system-info
attributes: attributes:
label: System configuration label: System configuration
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration. description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
validations: validations:
required: false required: false
- type: textarea - type: textarea
id: other-details id: other-details
attributes: attributes:
label: Other details label: Other details

View file

@ -29,7 +29,7 @@ body:
* Why your feature is important to RPCS3. * Why your feature is important to RPCS3.
* If the feature is implemented in other projects, attach screenshots. * If the feature is implemented in other projects, attach screenshots.
* If this feature is something that a game is trying to use, upload a log file for it. * If this feature is something that a game is trying to use, upload a log file for it.
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon). RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
* On Windows it will be in the RPCS3 directory near the executable * On Windows it will be in the RPCS3 directory near the executable
* On Linux it will be in ```~/.cache/rpcs3/``` * On Linux it will be in ```~/.cache/rpcs3/```

View file

@ -756,7 +756,7 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
// NOP filled // NOP filled
std::fill_n(vm::get_super_ptr<u32>(addr), p.value.long_value, 0x60000000); std::fill_n(vm::get_super_ptr<u32>(addr), p.value.long_value, 0x60000000);
// Check if already registered by previous code allocation // Check if already registered by previous code allocation
if (relocate_instructions_at != addr) if (relocate_instructions_at != addr)
{ {
// Register code // Register code

View file

@ -1,5 +1,5 @@
/* /*
TheMitoSan Dark-Theme for RPCS3 TheMitoSan Dark-Theme for RPCS3
Based on Kuroi (Dark) by Ani Based on Kuroi (Dark) by Ani
by themitosan @ twitter.com/themitosan by themitosan @ twitter.com/themitosan
Ani @ https://github.com/AniLeo Ani @ https://github.com/AniLeo
@ -135,7 +135,7 @@ QPushButton::disabled {
} }
QPushButton::pressed { QPushButton::pressed {
background-color: #333; background-color: #333;
} }
/* Log and Debugger borders */ /* Log and Debugger borders */
@ -193,7 +193,7 @@ QListWidget::item:hover {
} }
/* Pad Settings: Controller Image */ /* Pad Settings: Controller Image */
QLabel#l_controller { QLabel#l_controller {
color: #FFF; color: #FFF;
} }
@ -230,8 +230,8 @@ QLabel#color_button {
} }
/* Search bar on main toolbar */ /* Search bar on main toolbar */
QLineEdit#mw_searchbar { QLineEdit#mw_searchbar {
margin-left: 0.7em; margin-left: 0.7em;
color: #ecf0f1; color: #ecf0f1;
} }

View file

@ -1,4 +1,4 @@
/* /*
Envy theme for RPCS3 by drysalter (https://github.com/drysalter) Envy theme for RPCS3 by drysalter (https://github.com/drysalter)
03/04/2019 03/04/2019
*/ */
@ -19,7 +19,7 @@ Candy Red: #ff007a
Yellow: #f2d571 Yellow: #f2d571
Fuchsia: #ff00ff Fuchsia: #ff00ff
Orange: #ff6000 Orange: #ff6000
Cyan: #3498d8 Cyan: #3498d8
*/ */
@ -209,7 +209,7 @@ QRadioButton::indicator:unchecked {
} }
QRadioButton::indicator:disabled { QRadioButton::indicator:disabled {
background-color: #4d5058; background-color: #4d5058;
} }
/* Combo Boxes */ /* Combo Boxes */
@ -272,7 +272,7 @@ QSlider::handle:horizontal {
border: 1px solid #5c5c5c; border: 1px solid #5c5c5c;
border-radius: 0.1em; border-radius: 0.1em;
width: 18px; width: 18px;
margin: -2px 2; margin: -2px 2;
} }
QSlider::handle:horizontal:hover { QSlider::handle:horizontal:hover {
@ -335,7 +335,7 @@ QPushButton:disabled {
} }
QPushButton::pressed { QPushButton::pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d3038, stop: 1 #2d3038); background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d3038, stop: 1 #2d3038);
} }
/* Spinboxes */ /* Spinboxes */
@ -479,7 +479,7 @@ QListWidget::indicator:disabled {
} }
/* Pad Settings: Controller Image */ /* Pad Settings: Controller Image */
QLabel#l_controller { QLabel#l_controller {
color: #8cf944; color: #8cf944;
} }
@ -505,7 +505,7 @@ QLabel#color_button {
} }
/* Search bar on main toolbar */ /* Search bar on main toolbar */
QLineEdit#mw_searchbar { QLineEdit#mw_searchbar {
color: #ecf0f1; color: #ecf0f1;
background-color: #2d3038; background-color: #2d3038;
border: 1px solid #f8f8f8; border: 1px solid #f8f8f8;
@ -513,14 +513,14 @@ QLineEdit#mw_searchbar {
padding-left: 5px; padding-left: 5px;
} }
QLineEdit#mw_searchbar:hover { QLineEdit#mw_searchbar:hover {
color: #ecf0f1; color: #ecf0f1;
background-color: #2d3038; background-color: #2d3038;
border: 1px solid #8cf944; border: 1px solid #8cf944;
margin: 15px; margin: 15px;
} }
QLineEdit#mw_searchbar:focus { QLineEdit#mw_searchbar:focus {
border: 1px solid #8cf944; border: 1px solid #8cf944;
} }
@ -566,7 +566,7 @@ QTableView {
QTableView::item:hover { QTableView::item:hover {
color: #8cf944; color: #8cf944;
} }
/* Game Icon Background */ /* Game Icon Background */
QLabel#gamelist_icon_background_color { QLabel#gamelist_icon_background_color {

View file

@ -1,5 +1,5 @@
/* /*
ModernBlue Theme for RPCS3 ModernBlue Theme for RPCS3
by themitosan @ twitter.com/themitosan by themitosan @ twitter.com/themitosan
(2017.12.12) (2017.12.12)
*/ */
@ -124,7 +124,7 @@ QGroupBox::title {
/* Buttons */ /* Buttons */
QPushButton { QPushButton {
background-color: #46598b; background-color: #46598b;
color: #fff; color: #fff;
} }
QPushButton::disabled { QPushButton::disabled {
@ -133,7 +133,7 @@ QPushButton::disabled {
} }
QPushButton::pressed { QPushButton::pressed {
background-color: #172038; background-color: #172038;
} }
/* Log and Debugger borders */ /* Log and Debugger borders */
@ -190,7 +190,7 @@ QListWidget::item:hover {
} }
/* Pad Settings: Controller Image */ /* Pad Settings: Controller Image */
QLabel#l_controller { QLabel#l_controller {
color: #fff; color: #fff;
} }
@ -227,8 +227,8 @@ QLabel#color_button {
} }
/* Search bar on main toolbar */ /* Search bar on main toolbar */
QLineEdit#mw_searchbar { QLineEdit#mw_searchbar {
margin-left: 0.7em; margin-left: 0.7em;
color: #ecf0f1; color: #ecf0f1;
} }

View file

@ -105,7 +105,7 @@ QToolButton:hover {
} }
/* Search bar in Main Toolbar */ /* Search bar in Main Toolbar */
QLineEdit#mw_searchbar { QLineEdit#mw_searchbar {
color: #455971; color: #455971;
background-color: #FFFFFF; background-color: #FFFFFF;
border: 1px solid #999999; border: 1px solid #999999;
@ -113,15 +113,15 @@ QLineEdit#mw_searchbar {
padding-left: 5px; padding-left: 5px;
} }
QLineEdit#mw_searchbar:hover { QLineEdit#mw_searchbar:hover {
margin-left: 0.7em; margin-left: 0.7em;
color: #0074e7; color: #0074e7;
background-color: #FFFFFF; background-color: #FFFFFF;
border: 1px solid #0071ec; border: 1px solid #0071ec;
margin: 15px; margin: 15px;
} }
QLineEdit#mw_searchbar:focus { QLineEdit#mw_searchbar:focus {
border: 1px solid #0074e7; border: 1px solid #0074e7;
} }
@ -148,7 +148,7 @@ QSlider::handle:horizontal {
border: 1px solid #5c5c5c; border: 1px solid #5c5c5c;
border-radius: 0.1em; border-radius: 0.1em;
width: 18px; width: 18px;
margin: -2px 2; margin: -2px 2;
} }
QSlider::handle:horizontal:hover { QSlider::handle:horizontal:hover {
@ -242,7 +242,7 @@ QRadioButton::indicator:unchecked {
} }
QRadioButton::indicator:disabled { QRadioButton::indicator:disabled {
background-color: #455971; background-color: #455971;
} }
/* Checkboxes */ /* Checkboxes */
@ -533,7 +533,7 @@ QProgressBar::chunk {
} }
/* Pad Settings: Controller Image */ /* Pad Settings: Controller Image */
QLabel#l_controller { QLabel#l_controller {
color: #0074e7; color: #0074e7;
} }
@ -554,7 +554,7 @@ QHeaderView::section {
background-color: #111525; background-color: #111525;
color: #FFFFFF; color: #FFFFFF;
padding-top: 3px; padding-top: 3px;
padding-left: 3px; padding-left: 3px;
height: 20px; height: 20px;
border: none; border: none;
} }

View file

@ -105,7 +105,7 @@ QToolButton:hover {
} }
/* Search bar in Main Toolbar */ /* Search bar in Main Toolbar */
QLineEdit#mw_searchbar { QLineEdit#mw_searchbar {
color: #455971; color: #455971;
background-color: #FFFFFF; background-color: #FFFFFF;
border: 1px solid #999999; border: 1px solid #999999;
@ -113,15 +113,15 @@ QLineEdit#mw_searchbar {
padding-left: 5px; padding-left: 5px;
} }
QLineEdit#mw_searchbar:hover { QLineEdit#mw_searchbar:hover {
margin-left: 0.7em; margin-left: 0.7em;
color: #455971; color: #455971;
background-color: #FFFFFF; background-color: #FFFFFF;
border: 1px solid #0071ec; border: 1px solid #0071ec;
margin: 15px; margin: 15px;
} }
QLineEdit#mw_searchbar:focus { QLineEdit#mw_searchbar:focus {
border: 1px solid #0071ec; border: 1px solid #0071ec;
} }
@ -148,7 +148,7 @@ QSlider::handle:horizontal {
border: 1px solid #5c5c5c; border: 1px solid #5c5c5c;
border-radius: 0.1em; border-radius: 0.1em;
width: 18px; width: 18px;
margin: -2px 2; margin: -2px 2;
} }
QSlider::handle:horizontal:disabled { QSlider::handle:horizontal:disabled {
@ -254,7 +254,7 @@ QRadioButton::indicator:unchecked {
} }
QRadioButton::indicator:disabled { QRadioButton::indicator:disabled {
background-color: #455971; background-color: #455971;
} }
/* Checkboxes */ /* Checkboxes */
@ -552,7 +552,7 @@ QProgressBar::chunk {
} }
/* Pad Settings: Controller Image */ /* Pad Settings: Controller Image */
QLabel#l_controller { QLabel#l_controller {
color: #4343c1; color: #4343c1;
} }
@ -573,7 +573,7 @@ QHeaderView::section {
background-color: #FFFFFF; background-color: #FFFFFF;
color: #455971; color: #455971;
padding-top: 3px; padding-top: 3px;
padding-left: 3px; padding-left: 3px;
height: 20px; height: 20px;
border: none; border: none;
} }

View file

@ -456,10 +456,10 @@ QSlider#sizeSlider::groove:horizontal {
height: 1.5em; height: 1.5em;
} }
/* /*
On Patch Creator, it's the patch validation label On Patch Creator, it's the patch validation label
since we can't avoid repainting color, let's bold it instead since we can't avoid repainting color, let's bold it instead
*/ */
QLabel#validLabel { QLabel#validLabel {
font-weight: 600; font-weight: 600;
} }

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Common default props for defining properties with macros. Import right after Microsoft.Cpp.Default.props --> <!-- Common default props for defining properties with macros. Import right after Microsoft.Cpp.Default.props -->
<ImportGroup Label="PropertySheets" /> <ImportGroup Label="PropertySheets" />
@ -8,4 +8,4 @@
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup /> <ItemDefinitionGroup />
<ItemGroup /> <ItemGroup />
</Project> </Project>

View file

@ -187,13 +187,13 @@ elseif(WIN32)
# If Qt5 is installed from vcpkg # If Qt5 is installed from vcpkg
list(APPEND _QT5_TOOLS_PATHS "${Qt5_DIR}/../../../tools/qt5$<$<CONFIG:Debug>:/debug>/bin/") list(APPEND _QT5_TOOLS_PATHS "${Qt5_DIR}/../../../tools/qt5$<$<CONFIG:Debug>:/debug>/bin/")
add_custom_command(TARGET rpcs3 POST_BUILD add_custom_command(TARGET rpcs3 POST_BUILD
COMMAND set PATH=${_QT5_TOOLS_PATHS}$<SEMICOLON>%PATH% COMMAND set PATH=${_QT5_TOOLS_PATHS}$<SEMICOLON>%PATH%
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/bin" "$<TARGET_FILE_DIR:rpcs3>" COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_SOURCE_DIR}/bin" "$<TARGET_FILE_DIR:rpcs3>"
# If Qt5 is installed from vcpkg, add binary path to PATH # If Qt5 is installed from vcpkg, add binary path to PATH
# otherwise windeployqt tool won't be able to locate necessary dlls # otherwise windeployqt tool won't be able to locate necessary dlls
COMMAND set PATH=${Qt5_DIR}/../../../$<$<CONFIG:Debug>:debug/>bin/$<SEMICOLON>%PATH% COMMAND set PATH=${Qt5_DIR}/../../../$<$<CONFIG:Debug>:debug/>bin/$<SEMICOLON>%PATH%
COMMAND "${_WINDEPLOYQT}" --no-angle --no-compiler-runtime --no-opengl-sw --no-patchqt --no-translations --no-quick --plugindir "$<TARGET_FILE_DIR:rpcs3>/qt/plugins" $<$<CONFIG:Debug>:--debug> $<$<CONFIG:Release>:--release> "$<TARGET_FILE:rpcs3>") COMMAND "${_WINDEPLOYQT}" --no-angle --no-compiler-runtime --no-opengl-sw --no-patchqt --no-translations --no-quick --plugindir "$<TARGET_FILE_DIR:rpcs3>/qt/plugins" $<$<CONFIG:Debug>:--debug> $<$<CONFIG:Release>:--release> "$<TARGET_FILE:rpcs3>")
endif() endif()

View file

@ -124,7 +124,7 @@ int aes_crypt_cbc( aes_context *ctx,
* both encryption and decryption. So a context initialized with * both encryption and decryption. So a context initialized with
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. * aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT.
* *
* both * both
* \param ctx AES context * \param ctx AES context
* \param mode AES_ENCRYPT or AES_DECRYPT * \param mode AES_ENCRYPT or AES_DECRYPT
* \param length length of the input data * \param length length of the input data

View file

@ -245,7 +245,7 @@ constexpr s64 PAID_30 = 0x1070000023000001L; // spu_token_processor.self; CoreOS
constexpr s64 PAID_31 = 0x1070000024000001L; // sv_iso_spu_module.self; CoreOS; same for CEX DEX DECR constexpr s64 PAID_31 = 0x1070000024000001L; // sv_iso_spu_module.self; CoreOS; same for CEX DEX DECR
constexpr s64 PAID_32 = 0x1070000025000001L; // aim_spu_module.self; CoreOS; same for CEX DEX DECR constexpr s64 PAID_32 = 0x1070000025000001L; // aim_spu_module.self; CoreOS; same for CEX DEX DECR
constexpr s64 PAID_33 = 0x1070000026000001L; // ss_sc_init.self; [2.43 JIG PUP] constexpr s64 PAID_33 = 0x1070000026000001L; // ss_sc_init.self; [2.43 JIG PUP]
constexpr s64 PAID_34 = 0x1070000027000001L; // dispatcher.fself; lv1; constexpr s64 PAID_34 = 0x1070000027000001L; // dispatcher.fself; lv1;
constexpr s64 PAID_35 = 0x1070000028000001L; // factory_data_mngr_server.fself; JIG lv1 proc constexpr s64 PAID_35 = 0x1070000028000001L; // factory_data_mngr_server.fself; JIG lv1 proc
constexpr s64 PAID_36 = 0x1070000029000001L; // fdm_spu_module.self; [2.43 JIG PUP] constexpr s64 PAID_36 = 0x1070000029000001L; // fdm_spu_module.self; [2.43 JIG PUP]
constexpr s64 PAID_37 = 0x107000002A000001L; constexpr s64 PAID_37 = 0x107000002A000001L;

View file

@ -1041,7 +1041,7 @@ package_error package_reader::extract_data(std::deque<package_reader>& readers,
{ {
// Use a seperate map for each reader. We need to check if the target app version exists for each package in sequence. // Use a seperate map for each reader. We need to check if the target app version exists for each package in sequence.
std::map<std::string, install_entry*> all_install_entries; std::map<std::string, install_entry*> all_install_entries;
if (error == package_error::no_error) if (error == package_error::no_error)
{ {
// Check if this package is allowed to be installed on top of the existing data // Check if this package is allowed to be installed on top of the existing data

View file

@ -34,7 +34,7 @@ class error_code
{ {
} }
public: public:
// Implementation must be provided independently // Implementation must be provided independently
static s32 error_report(s32 result, const logs::message* channel, const char* fmt, const fmt_type_info* sup, const u64* args); static s32 error_report(s32 result, const logs::message* channel, const char* fmt, const fmt_type_info* sup, const u64* args);

View file

@ -8,7 +8,7 @@
#include <thread> #include <thread>
// SONIC THE HEDGEDOG: a fix for a race condition between SPUs and PPUs causing missing graphics (SNR is overriden when non-empty) // SONIC THE HEDGEDOG: a fix for a race condition between SPUs and PPUs causing missing graphics (SNR is overriden when non-empty)
void WaitForSPUsToEmptySNRs(ppu_thread& ppu, u32 spu_id, u32 snr_mask) void WaitForSPUsToEmptySNRs(ppu_thread& ppu, u32 spu_id, u32 snr_mask)
{ {
ppu.state += cpu_flag::wait; ppu.state += cpu_flag::wait;

View file

@ -222,7 +222,7 @@ error_code open_msg_dialog(bool is_blocking, u32 type, vm::cptr<char> msgString,
auto& ppu = *get_current_cpu_thread(); auto& ppu = *get_current_cpu_thread();
lv2_obj::sleep(ppu); lv2_obj::sleep(ppu);
// PS3 memory must not be accessed by Main thread // PS3 memory must not be accessed by Main thread
std::string msg_string = msgString.get_ptr(); std::string msg_string = msgString.get_ptr();
// Run asynchronously in GUI thread // Run asynchronously in GUI thread

View file

@ -1311,7 +1311,7 @@ u32 cellRecQueryMemSize(vm::cptr<CellRecParam> pParam)
{ {
return 0x900000; return 0x900000;
} }
u32 video_size = 0x600000; // 6 MB u32 video_size = 0x600000; // 6 MB
u32 audio_size = 0x100000; // 1 MB u32 audio_size = 0x100000; // 1 MB
u32 external_input_size = 0; u32 external_input_size = 0;
@ -1616,7 +1616,7 @@ error_code cellRecSetInfo(s32 setInfo, u64 value)
{ {
return CELL_REC_ERROR_INVALID_VALUE; return CELL_REC_ERROR_INVALID_VALUE;
} }
for (u32 i = 0; i < scene_metadata->tagNum; i++) for (u32 i = 0; i < scene_metadata->tagNum; i++)
{ {
if (!scene_metadata->tag[i] || if (!scene_metadata->tag[i] ||

View file

@ -5461,7 +5461,7 @@ DECLARE(ppu_module_manager::cellSpurs)("cellSpurs", [](ppu_static_module* _this)
_this->add_init_func([](ppu_static_module*) _this->add_init_func([](ppu_static_module*)
{ {
const auto val = g_cfg.core.spu_accurate_reservations ? MFF_PERFECT : MFF_FORCED_HLE; const auto val = g_cfg.core.spu_accurate_reservations ? MFF_PERFECT : MFF_FORCED_HLE;
REINIT_FUNC(cellSpursSetPriorities).flag(val); REINIT_FUNC(cellSpursSetPriorities).flag(val);
REINIT_FUNC(cellSpursAddWorkload).flag(val); REINIT_FUNC(cellSpursAddWorkload).flag(val);
REINIT_FUNC(cellSpursAddWorkloadWithAttribute).flag(val); REINIT_FUNC(cellSpursAddWorkloadWithAttribute).flag(val);

View file

@ -253,7 +253,7 @@ error_code cellUserInfoSelectUser_SetList(vm::ptr<CellUserInfoListSet> setList,
funcSelect(ppu, CELL_USERINFO_ERROR_NOUSER, selectUser, userdata); funcSelect(ppu, CELL_USERINFO_ERROR_NOUSER, selectUser, userdata);
return CELL_OK; return CELL_OK;
}); });
return CELL_OK; return CELL_OK;
} }

View file

@ -164,7 +164,7 @@ error_code cellVideoExportInitialize2(u32 version, vm::ptr<CellVideoExportUtilFi
error_code cellVideoExportInitialize(u32 version, u32 container, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata) error_code cellVideoExportInitialize(u32 version, u32 container, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata)
{ {
cellVideoExport.notice("cellVideoExportInitialize(version=0x%x, container=0x%x, funcFinish=*0x%x, userdata=*0x%x)", version, container, funcFinish, userdata); cellVideoExport.notice("cellVideoExportInitialize(version=0x%x, container=0x%x, funcFinish=*0x%x, userdata=*0x%x)", version, container, funcFinish, userdata);
if (version != CELL_VIDEO_EXPORT_UTIL_VERSION_CURRENT) if (version != CELL_VIDEO_EXPORT_UTIL_VERSION_CURRENT)
{ {
return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM; return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM;
@ -282,7 +282,7 @@ error_code cellVideoExportFromFileWithCopy(vm::cptr<char> srcHddDir, vm::cptr<ch
error_code cellVideoExportFromFile(vm::cptr<char> srcHddDir, vm::cptr<char> srcHddFile, vm::ptr<CellVideoExportSetParam> param, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata) error_code cellVideoExportFromFile(vm::cptr<char> srcHddDir, vm::cptr<char> srcHddFile, vm::ptr<CellVideoExportSetParam> param, vm::ptr<CellVideoExportUtilFinishCallback> funcFinish, vm::ptr<void> userdata)
{ {
cellVideoExport.todo("cellVideoExportFromFile(srcHddDir=%s, srcHddFile=%s, param=*0x%x, funcFinish=*0x%x, userdata=*0x%x)", srcHddDir, srcHddFile, param, funcFinish, userdata); cellVideoExport.todo("cellVideoExportFromFile(srcHddDir=%s, srcHddFile=%s, param=*0x%x, funcFinish=*0x%x, userdata=*0x%x)", srcHddDir, srcHddFile, param, funcFinish, userdata);
if (!param || !funcFinish || !srcHddDir || !srcHddDir[0] || !srcHddFile || !srcHddFile[0]) if (!param || !funcFinish || !srcHddDir || !srcHddDir[0] || !srcHddFile || !srcHddFile[0])
{ {
return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM; return CELL_VIDEO_EXPORT_UTIL_ERROR_PARAM;

View file

@ -3854,7 +3854,7 @@ error_code sceNpScoreCreateTransactionCtx(s32 titleCtxId)
} }
auto score = idm::get<score_ctx>(titleCtxId); auto score = idm::get<score_ctx>(titleCtxId);
if (!score) if (!score)
{ {
return SCE_NP_COMMUNITY_ERROR_INVALID_ID; return SCE_NP_COMMUNITY_ERROR_INVALID_ID;
@ -4409,7 +4409,7 @@ error_code scenp_score_get_ranking_by_range(s32 transId, SceNpScoreBoardId board
if (opt_ptr[1]) if (opt_ptr[1])
{ {
vm::ptr<u32> ssr_ptr = vm::cast(opt_ptr[1]); vm::ptr<u32> ssr_ptr = vm::cast(opt_ptr[1]);
startSerialRank = *ssr_ptr; startSerialRank = *ssr_ptr;
} }
// It also uses opt_ptr[2] for unknown purposes // It also uses opt_ptr[2] for unknown purposes
@ -5272,7 +5272,7 @@ error_code sceNpSignalingTerminateConnection(u32 ctx_id, u32 conn_id)
} }
auto& sigh = g_fxo->get<named_thread<signaling_handler>>(); auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
sigh.stop_sig(conn_id); sigh.stop_sig(conn_id);
return CELL_OK; return CELL_OK;
@ -5306,7 +5306,7 @@ error_code sceNpSignalingGetConnectionStatus(u32 ctx_id, u32 conn_id, vm::ptr<s3
{ {
*conn_status = si.connStatus; *conn_status = si.connStatus;
} }
if (peer_addr) if (peer_addr)
(*peer_addr).np_s_addr = si.addr; // infos.addr is already BE (*peer_addr).np_s_addr = si.addr; // infos.addr is already BE
if (peer_port) if (peer_port)

View file

@ -613,7 +613,7 @@ error_code sceNpMatching2SignalingGetConnectionInfo(
if (!connInfo) if (!connInfo)
{ {
return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT; return SCE_NP_MATCHING2_ERROR_INVALID_ARGUMENT;
} }
auto& sigh = g_fxo->get<named_thread<signaling_handler>>(); auto& sigh = g_fxo->get<named_thread<signaling_handler>>();

View file

@ -80,7 +80,7 @@ std::pair<PPUDisAsm::const_op, u64> PPUDisAsm::try_get_const_op_gpr_value(u32 re
if (pc == umax) if (pc == umax)
{ {
// Default arg: choose pc of previous instruction // Default arg: choose pc of previous instruction
if (dump_pc == 0) if (dump_pc == 0)
{ {
@ -108,7 +108,7 @@ std::pair<PPUDisAsm::const_op, u64> PPUDisAsm::try_get_const_op_gpr_value(u32 re
auto is_branch = [](enum ppu_itype::type itype) auto is_branch = [](enum ppu_itype::type itype)
{ {
return itype == ppu_itype::BC || itype == ppu_itype::B || itype == ppu_itype::BCLR || itype == ppu_itype::BCCTR; return itype == ppu_itype::BC || itype == ppu_itype::B || itype == ppu_itype::BCLR || itype == ppu_itype::BCCTR;
}; };
if (is_branch(type) || type == ppu_itype::UNK) if (is_branch(type) || type == ppu_itype::UNK)

View file

@ -188,7 +188,7 @@ public:
std::unique_ptr<CPUDisAsm> copy_type_erased() const override; std::unique_ptr<CPUDisAsm> copy_type_erased() const override;
std::pair<bool, v128> try_get_const_value(u32 reg, u32 pc = -1, u32 TTL = 10) const; std::pair<bool, v128> try_get_const_value(u32 reg, u32 pc = -1, u32 TTL = 10) const;
// Get constant value if the original array is made of only repetitions of the same value // Get constant value if the original array is made of only repetitions of the same value
template <typename T> requires (sizeof(T) < sizeof(v128) && !(sizeof(v128) % sizeof(T))) template <typename T> requires (sizeof(T) < sizeof(v128) && !(sizeof(v128) % sizeof(T)))
std::pair<bool, T> try_get_const_equal_value_array(u32 reg, u32 pc = -1, u32 TTL = 10) const std::pair<bool, T> try_get_const_equal_value_array(u32 reg, u32 pc = -1, u32 TTL = 10) const
{ {

View file

@ -4103,7 +4103,7 @@ bool spu_thread::process_mfc_cmd()
raddr = addr; raddr = addr;
rtime = ntime; rtime = ntime;
mov_rdata(_ref<spu_rdata_t>(ch_mfc_cmd.lsa & 0x3ff80), rdata); mov_rdata(_ref<spu_rdata_t>(ch_mfc_cmd.lsa & 0x3ff80), rdata);
ch_atomic_stat.set_value(MFC_GETLLAR_SUCCESS); ch_atomic_stat.set_value(MFC_GETLLAR_SUCCESS);
if (g_cfg.core.mfc_debug) if (g_cfg.core.mfc_debug)
@ -4769,7 +4769,7 @@ s64 spu_thread::get_ch_value(u32 ch)
} }
const bool reservation_busy_waiting = ((utils::get_tsc() >> 8) % 100 + ((raddr == spurs_addr) ? 50 : 0)) < g_cfg.core.spu_reservation_busy_waiting_percentage; const bool reservation_busy_waiting = ((utils::get_tsc() >> 8) % 100 + ((raddr == spurs_addr) ? 50 : 0)) < g_cfg.core.spu_reservation_busy_waiting_percentage;
for (; !events.count; events = get_events(mask1 & ~SPU_EVENT_LR, true, true)) for (; !events.count; events = get_events(mask1 & ~SPU_EVENT_LR, true, true))
{ {
const auto old = +state; const auto old = +state;
@ -4805,7 +4805,7 @@ s64 spu_thread::get_ch_value(u32 ch)
// Wait without timeout, in this situation we have notifications for all writes making it possible // Wait without timeout, in this situation we have notifications for all writes making it possible
// Abort notifications are handled specially for performance reasons // Abort notifications are handled specially for performance reasons
vm::reservation_notifier(raddr).wait(rtime, -128); vm::reservation_notifier(raddr).wait(rtime, -128);
continue; continue;
} }
atomic_wait_engine::set_one_time_use_wait_callback(mask1 != SPU_EVENT_LR ? nullptr : +[](u64 attempts) -> bool atomic_wait_engine::set_one_time_use_wait_callback(mask1 != SPU_EVENT_LR ? nullptr : +[](u64 attempts) -> bool
@ -5481,7 +5481,7 @@ bool spu_thread::stop_and_signal(u32 code)
if (Emu.IsStarting()) if (Emu.IsStarting())
{ {
// Deregister lv2_obj::g_to_sleep entry (savestates related) // Deregister lv2_obj::g_to_sleep entry (savestates related)
lv2_obj::sleep(*this); lv2_obj::sleep(*this);
} }

View file

@ -234,7 +234,7 @@ public:
data.notify_one(); data.notify_one();
} }
// Return true if count has changed from 0 to 1, this condition is considered satisfied even if we pushed a value directly to the special storage for waiting SPUs // Return true if count has changed from 0 to 1, this condition is considered satisfied even if we pushed a value directly to the special storage for waiting SPUs
return !pushed_to_data || (old & bit_count) == 0; return !pushed_to_data || (old & bit_count) == 0;
} }
} }

View file

@ -1697,7 +1697,7 @@ void lv2_obj::schedule_all(u64 current_time)
{ {
if (g_ppu && cpu_flag::preempt - g_ppu->state) if (g_ppu && cpu_flag::preempt - g_ppu->state)
{ {
// Don't be picky, pick up any running PPU thread even it has a wait flag // Don't be picky, pick up any running PPU thread even it has a wait flag
cpu = g_ppu; cpu = g_ppu;
} }
// TODO: If this case is common enough it may be valuable to iterate over all CPU threads to find a perfect candidate (one without a wait or suspend flag) // TODO: If this case is common enough it may be valuable to iterate over all CPU threads to find a perfect candidate (one without a wait or suspend flag)

View file

@ -5,4 +5,4 @@
// SysCalls // SysCalls
error_code sys_console_write(vm::cptr<char> buf, u32 len); error_code sys_console_write(vm::cptr<char> buf, u32 len);
constexpr auto sys_console_write2 = sys_console_write; constexpr auto sys_console_write2 = sys_console_write;

View file

@ -157,7 +157,7 @@ CellError lv2_event_queue::send(lv2_event event)
{ {
// Store event in In_MBox // Store event in In_MBox
auto& spu = static_cast<spu_thread&>(*schedule<spu_thread>(sq, protocol)); auto& spu = static_cast<spu_thread&>(*schedule<spu_thread>(sq, protocol));
if (spu.state & cpu_flag::again) if (spu.state & cpu_flag::again)
{ {
if (auto cpu = get_current_cpu_thread()) if (auto cpu = get_current_cpu_thread())
@ -325,7 +325,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
queue->append(cpu); queue->append(cpu);
} }
atomic_storage<ppu_thread*>::release(queue->pq, nullptr); atomic_storage<ppu_thread*>::release(queue->pq, nullptr);
lv2_obj::awake_all(); lv2_obj::awake_all();
} }
else else
@ -336,7 +336,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode)
resume_spu_thread_group_from_waiting(*cpu); resume_spu_thread_group_from_waiting(*cpu);
} }
atomic_storage<spu_thread*>::release(queue->sq, nullptr); atomic_storage<spu_thread*>::release(queue->sq, nullptr);
} }
qlock.unlock(); qlock.unlock();

View file

@ -370,7 +370,7 @@ error_code sys_event_flag_set(cpu_thread& cpu, u32 id, u64 bitptn)
{ {
s32 prio = smax; s32 prio = smax;
ppu_thread* it{}; ppu_thread* it{};
for (auto ppu = first; ppu; ppu = ppu->next_cpu) for (auto ppu = first; ppu; ppu = ppu->next_cpu)
{ {
if (!ppu->gpr[7] && (flag->protocol != SYS_SYNC_PRIORITY || ppu->prio <= prio)) if (!ppu->gpr[7] && (flag->protocol != SYS_SYNC_PRIORITY || ppu->prio <= prio))

View file

@ -214,7 +214,7 @@ public:
struct lv2_file final : lv2_fs_object struct lv2_file final : lv2_fs_object
{ {
static constexpr u32 id_type = 1; static constexpr u32 id_type = 1;
fs::file file; fs::file file;
const s32 mode; const s32 mode;
const s32 flags; const s32 flags;
@ -303,7 +303,7 @@ struct lv2_file final : lv2_fs_object
struct lv2_dir final : lv2_fs_object struct lv2_dir final : lv2_fs_object
{ {
static constexpr u32 id_type = 2; static constexpr u32 id_type = 2;
const std::vector<fs::dir_entry> entries; const std::vector<fs::dir_entry> entries;
// Current reading position // Current reading position

View file

@ -268,7 +268,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id
auto sq = cond.sq; auto sq = cond.sq;
atomic_storage<ppu_thread*>::release(cond.sq, nullptr); atomic_storage<ppu_thread*>::release(cond.sq, nullptr);
while (const auto cpu = cond.schedule<ppu_thread>(sq, cond.protocol)) while (const auto cpu = cond.schedule<ppu_thread>(sq, cond.protocol))
{ {
if (mode == 2) if (mode == 2)

View file

@ -122,7 +122,7 @@ struct lv2_lwmutex final : lv2_obj
// Notify lwmutex destroyer (may cause EBUSY to be returned for it) // Notify lwmutex destroyer (may cause EBUSY to be returned for it)
lwcond_waiters.notify_all(); lwcond_waiters.notify_all();
} }
if (signal) if (signal)
{ {
cpu->next_cpu = nullptr; cpu->next_cpu = nullptr;

View file

@ -30,7 +30,7 @@ lv2_memory_container::lv2_memory_container(utils::serial& ar, bool from_idm) noe
std::shared_ptr<void> lv2_memory_container::load(utils::serial& ar) std::shared_ptr<void> lv2_memory_container::load(utils::serial& ar)
{ {
// Use idm::last_id() only for the instances at IDM // Use idm::last_id() only for the instances at IDM
return std::make_shared<lv2_memory_container>(stx::exact_t<utils::serial&>(ar), true); return std::make_shared<lv2_memory_container>(stx::exact_t<utils::serial&>(ar), true);
} }
@ -77,7 +77,7 @@ struct sys_memory_address_table
{ {
if (const auto ptr = +ctr) if (const auto ptr = +ctr)
{ {
mm[static_cast<u16>(&ctr - addrs)] = ptr->id; mm[static_cast<u16>(&ctr - addrs)] = ptr->id;
} }
} }

View file

@ -84,7 +84,7 @@ CellError lv2_memory::on_id_create()
std::shared_ptr<void> lv2_memory::load(utils::serial& ar) std::shared_ptr<void> lv2_memory::load(utils::serial& ar)
{ {
auto mem = std::make_shared<lv2_memory>(ar); auto mem = std::make_shared<lv2_memory>(ar);
mem->exists++; // Disable on_id_create() mem->exists++; // Disable on_id_create()
std::shared_ptr<void> ptr = lv2_obj::load(mem->key, mem, +mem->pshared); std::shared_ptr<void> ptr = lv2_obj::load(mem->key, mem, +mem->pshared);
mem->exists--; mem->exists--;
return ptr; return ptr;

View file

@ -58,7 +58,7 @@ struct lv2_mutex final : lv2_obj
} }
lv2_mutex(utils::serial& ar); lv2_mutex(utils::serial& ar);
static std::shared_ptr<void> load(utils::serial& ar); static std::shared_ptr<void> load(utils::serial& ar);
void save(utils::serial& ar); void save(utils::serial& ar);
template <typename T> template <typename T>

View file

@ -1755,7 +1755,7 @@ error_code lv2_socket::abort_socket(s32 flags)
{ {
if (!ppu) if (!ppu)
continue; continue;
sys_net.warning("lv2_socket::abort_socket(): waking up \"%s\": (func: %s, r3=0x%x, r4=0x%x, r5=0x%x, r6=0x%x)", ppu->get_name(), ppu->current_function, ppu->gpr[3], ppu->gpr[4], ppu->gpr[5], ppu->gpr[6]); sys_net.warning("lv2_socket::abort_socket(): waking up \"%s\": (func: %s, r3=0x%x, r4=0x%x, r5=0x%x, r6=0x%x)", ppu->get_name(), ppu->current_function, ppu->gpr[3], ppu->gpr[4], ppu->gpr[5], ppu->gpr[6]);
ppu->gpr[3] = static_cast<u64>(-SYS_NET_EINTR); ppu->gpr[3] = static_cast<u64>(-SYS_NET_EINTR);
lv2_obj::append(ppu.get()); lv2_obj::append(ppu.get());
@ -1821,7 +1821,7 @@ error_code sys_net_abort(ppu_thread& ppu, s32 type, u64 arg, s32 flags)
sock->close(); sock->close();
sys_net.success("lv2_socket::handle_abort(): Closed socket %d", id); sys_net.success("lv2_socket::handle_abort(): Closed socket %d", id);
} }
// Ensures the socket has no lingering copy from the network thread // Ensures the socket has no lingering copy from the network thread

View file

@ -63,7 +63,7 @@ void fmt_class_string<spu_stop_syscall>::format(std::string& out, u64 arg)
case SYS_SPU_THREAD_STOP_TRY_RECEIVE_EVENT: return "sys_spu_thread_tryreceive_event"; case SYS_SPU_THREAD_STOP_TRY_RECEIVE_EVENT: return "sys_spu_thread_tryreceive_event";
case SYS_SPU_THREAD_STOP_SWITCH_SYSTEM_MODULE: return "sys_spu_thread_switch_system_module"; case SYS_SPU_THREAD_STOP_SWITCH_SYSTEM_MODULE: return "sys_spu_thread_switch_system_module";
} }
return unknown; return unknown;
}); });
} }
@ -254,7 +254,7 @@ lv2_spu_group::lv2_spu_group(utils::serial& ar) noexcept
} }
case SPU_THREAD_GROUP_STATUS_SUSPENDED: case SPU_THREAD_GROUP_STATUS_SUSPENDED:
{ {
// Suspend all SPU threads except a thread that waits on sys_spu_thread_receive_event // Suspend all SPU threads except a thread that waits on sys_spu_thread_receive_event
for (const auto& thread : threads) for (const auto& thread : threads)
{ {
if (thread) if (thread)

View file

@ -288,7 +288,7 @@ usb_handler_thread::usb_handler_thread()
{ {
found_h050 = true; found_h050 = true;
} }
// EA Active 2 dongle for connecting wristbands & legband // EA Active 2 dongle for connecting wristbands & legband
check_device(0x21A4, 0xAC27, 0xAC27, "EA Active 2 Dongle"); check_device(0x21A4, 0xAC27, 0xAC27, "EA Active 2 Dongle");
} }

View file

@ -26,7 +26,7 @@ std::vector<std::pair<u128, id_manager::typeinfo>>& id_manager::get_typeinfo_map
{ {
// Magic static // Magic static
static std::vector<std::pair<u128, id_manager::typeinfo>> s_map; static std::vector<std::pair<u128, id_manager::typeinfo>> s_map;
return s_map; return s_map;
} }
idm::map_data* idm::allocate_id(std::vector<map_data>& vec, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range) idm::map_data* idm::allocate_id(std::vector<map_data>& vec, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range)

View file

@ -9,7 +9,7 @@ public:
{ {
b_has_pressure_intensity_button = false; b_has_pressure_intensity_button = false;
} }
bool Init() override bool Init() override
{ {
return true; return true;

View file

@ -70,7 +70,7 @@ namespace rsx
return nullptr; return nullptr;
} }
void home_menu_page::add_page(std::shared_ptr<home_menu_page> page) void home_menu_page::add_page(std::shared_ptr<home_menu_page> page)
{ {
ensure(page); ensure(page);

View file

@ -57,7 +57,7 @@ namespace rsx
u64 message_item::get_expiration() const u64 message_item::get_expiration() const
{ {
// If reference counting is enabled and reached 0 consider it expired // If reference counting is enabled and reached 0 consider it expired
return m_refs && *m_refs == 0 ? 0 : m_expiration_time; return m_refs && *m_refs == 0 ? 0 : m_expiration_time;
} }

View file

@ -66,7 +66,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
uint log2w = invocation.size_log2.x; uint log2w = invocation.size_log2.x;
uint log2h = invocation.size_log2.y; uint log2h = invocation.size_log2.y;
uint log2d = invocation.size_log2.z; uint log2d = invocation.size_log2.z;
do do
{ {
if (log2w > 0) if (log2w > 0)
@ -76,7 +76,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
x >>= 1; x >>= 1;
log2w--; log2w--;
} }
if (log2h > 0) if (log2h > 0)
{ {
offset |= (y & 1) << shift; offset |= (y & 1) << shift;
@ -84,7 +84,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
y >>= 1; y >>= 1;
log2h--; log2h--;
} }
if (log2d > 0) if (log2d > 0)
{ {
offset |= (z & 1) << shift; offset |= (z & 1) << shift;
@ -94,7 +94,7 @@ uint get_z_index(const in uint x_, const in uint y_, const in uint z_)
} }
} }
while(x > 0 || y > 0 || z > 0); while(x > 0 || y > 0 || z > 0);
return offset; return offset;
} }
@ -126,4 +126,4 @@ void main()
data_out[dst_id++] = %f(value); data_out[dst_id++] = %f(value);
} }
} }
)" )"

View file

@ -90,7 +90,7 @@ vec4 sample_image(sampler2D tex, vec2 coord, float blur_strength)
{ {
vec4 original = texture(tex, coord); vec4 original = texture(tex, coord);
if (blur_strength == 0) return original; if (blur_strength == 0) return original;
vec2 constraints = 1.f / vec2(640, 360); vec2 constraints = 1.f / vec2(640, 360);
vec2 res_offset = 1.f / textureSize(fs0, 0); vec2 res_offset = 1.f / textureSize(fs0, 0);
vec2 tex_offset = max(res_offset, constraints); vec2 tex_offset = max(res_offset, constraints);

View file

@ -162,7 +162,7 @@ void RSXDisAsm::Write(std::string_view str, s32 count, bool is_non_inc, u32 id)
case cpu_disasm_mode::interpreter: case cpu_disasm_mode::interpreter:
{ {
last_opcode.clear(); last_opcode.clear();
if (count >= 0) if (count >= 0)
{ {
fmt::append(last_opcode, "[%08x] (%s%u)", dump_pc, is_non_inc ? "+" : "", count); fmt::append(last_opcode, "[%08x] (%s%u)", dump_pc, is_non_inc ? "+" : "", count);

View file

@ -38,7 +38,7 @@ namespace rsx
m_command_inc = ((m_cmd & RSX_METHOD_NON_INCREMENT_CMD_MASK) == RSX_METHOD_NON_INCREMENT_CMD) ? 0 : 4; m_command_inc = ((m_cmd & RSX_METHOD_NON_INCREMENT_CMD_MASK) == RSX_METHOD_NON_INCREMENT_CMD) ? 0 : 4;
m_remaining_commands = count; m_remaining_commands = count;
m_internal_get = m_ctrl->get - 4; m_internal_get = m_ctrl->get - 4;
m_args_ptr = m_iotable->get_addr(m_internal_get); m_args_ptr = m_iotable->get_addr(m_internal_get);
m_command_reg = (m_cmd & 0xffff) + m_command_inc * (((m_cmd >> 18) - count) & 0x7ff) - m_command_inc; m_command_reg = (m_cmd & 0xffff) + m_command_inc * (((m_cmd >> 18) - count) & 0x7ff) - m_command_inc;
} }
@ -116,7 +116,7 @@ namespace rsx
if (addr < put && put < m_cache_addr + m_cache_size) if (addr < put && put < m_cache_addr + m_cache_size)
{ {
// Adjust to knownly-prepared FIFO buffer bounds // Adjust to knownly-prepared FIFO buffer bounds
m_cache_size = put - m_cache_addr; m_cache_size = put - m_cache_addr;
} }
@ -267,7 +267,7 @@ namespace rsx
m_command_reg += m_command_inc; m_command_reg += m_command_inc;
--m_remaining_commands; --m_remaining_commands;
data.set(m_command_reg, arg); data.set(m_command_reg, arg);
return true; return true;
} }
@ -422,7 +422,7 @@ namespace rsx
data.set(m_cmd & 0xfffc, arg); data.set(m_cmd & 0xfffc, arg);
return; return;
} }
inc_get(true); // Wait for data block to become available inc_get(true); // Wait for data block to become available
// Validate the args ptr if the command attempts to read from it // Validate the args ptr if the command attempts to read from it

View file

@ -151,7 +151,7 @@ namespace rsx
case 16: return rsx::texture_max_anisotropy::x16; case 16: return rsx::texture_max_anisotropy::x16;
default: break; default: break;
} }
return rsx::to_texture_max_anisotropy((registers[NV4097_SET_TEXTURE_CONTROL0 + (m_index * 8)] >> 4) & 0x7); return rsx::to_texture_max_anisotropy((registers[NV4097_SET_TEXTURE_CONTROL0 + (m_index * 8)] >> 4) & 0x7);
} }

View file

@ -478,9 +478,9 @@ namespace rsx
void thread::save(utils::serial& ar) void thread::save(utils::serial& ar)
{ {
[[maybe_unused]] const s32 version = GET_OR_USE_SERIALIZATION_VERSION(ar.is_writing(), rsx); [[maybe_unused]] const s32 version = GET_OR_USE_SERIALIZATION_VERSION(ar.is_writing(), rsx);
ar(rsx::method_registers); ar(rsx::method_registers);
for (auto& v : vertex_push_buffers) for (auto& v : vertex_push_buffers)
{ {
ar(v.attr, v.size, v.type, v.vertex_count, v.dword_count, v.data); ar(v.attr, v.size, v.type, v.vertex_count, v.dword_count, v.data);
@ -554,7 +554,7 @@ namespace rsx
if (g_cfg.savestate.start_paused) if (g_cfg.savestate.start_paused)
{ {
// Allow to render a whole frame within this emulation session so there won't be missing graphics // Allow to render a whole frame within this emulation session so there won't be missing graphics
m_pause_after_x_flips = 2; m_pause_after_x_flips = 2;
} }
} }
@ -3450,7 +3450,7 @@ namespace rsx
async_flip_requested |= flip_request::emu_requested; async_flip_requested |= flip_request::emu_requested;
m_eng_interrupt_mask |= rsx::display_interrupt; m_eng_interrupt_mask |= rsx::display_interrupt;
if (state & cpu_flag::exit) if (state & cpu_flag::exit)
{ {
// Resubmit possibly-ignored flip on savestate load // Resubmit possibly-ignored flip on savestate load

View file

@ -49,7 +49,7 @@ namespace vk
m_descriptor_pool.create(dev, descriptor_pools, 1, 120, 2); m_descriptor_pool.create(dev, descriptor_pools, 1, 120, 2);
// Scale and offset data plus output color // Scale and offset data plus output color
std::vector<VkDescriptorSetLayoutBinding> bindings = std::vector<VkDescriptorSetLayoutBinding> bindings =
{ {
{ {
.binding = 0, .binding = 0,

View file

@ -4,7 +4,7 @@ R"--RPCS3--(
#ifndef A_SKIP_EXT #ifndef A_SKIP_EXT
#ifdef A_HALF #ifdef A_HALF
#extension GL_EXT_shader_16bit_storage:require #extension GL_EXT_shader_16bit_storage:require
#extension GL_EXT_shader_explicit_arithmetic_types:require #extension GL_EXT_shader_explicit_arithmetic_types:require
#endif #endif
#ifdef A_LONG #ifdef A_LONG
#extension GL_ARB_gpu_shader_int64:require #extension GL_ARB_gpu_shader_int64:require
@ -390,7 +390,7 @@ AW4 AWaveXorW4(AW4 v,AU1 x){return AW4_AU2(subgroupShuffleXor(AU2_AW4(v),x));}
AU1 AU1_AH1_AF1_x(AF1 a){return f32tof16(a);} AU1 AU1_AH1_AF1_x(AF1 a){return f32tof16(a);}
#define AU1_AH1_AF1(a) AU1_AH1_AF1_x(AF1(a)) #define AU1_AH1_AF1(a) AU1_AH1_AF1_x(AF1(a))
AU1 AU1_AH2_AF2_x(AF2 a){return f32tof16(a.x)|(f32tof16(a.y)<<16);} AU1 AU1_AH2_AF2_x(AF2 a){return f32tof16(a.x)|(f32tof16(a.y)<<16);}
#define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a)) #define AU1_AH2_AF2(a) AU1_AH2_AF2_x(AF2(a))
#define AU1_AB4Unorm_AF4(x) D3DCOLORtoUBYTE4(AF4(x)) #define AU1_AB4Unorm_AF4(x) D3DCOLORtoUBYTE4(AF4(x))
AF2 AF2_AH2_AU1_x(AU1 x){return AF2(f16tof32(x&0xFFFF),f16tof32(x>>16));} AF2 AF2_AH2_AU1_x(AU1 x){return AF2(f16tof32(x&0xFFFF),f16tof32(x>>16));}
#define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x)) #define AF2_AH2_AU1(x) AF2_AH2_AU1_x(AU1(x))
@ -906,7 +906,7 @@ AF2 APSinCosF1(AF1 x){AF1 y=AFractF1(x*AF1_(0.5)+AF1_(0.75));y=y*AF1_(2.0)-AF1_(
#ifdef A_HALF #ifdef A_HALF
AH1 APSinH1(AH1 x){return x*abs(x)-x;} AH1 APSinH1(AH1 x){return x*abs(x)-x;}
AH2 APSinH2(AH2 x){return x*abs(x)-x;} // AND,FMA AH2 APSinH2(AH2 x){return x*abs(x)-x;} // AND,FMA
AH1 APCosH1(AH1 x){x=AFractH1(x*AH1_(0.5)+AH1_(0.75));x=x*AH1_(2.0)-AH1_(1.0);return APSinH1(x);} AH1 APCosH1(AH1 x){x=AFractH1(x*AH1_(0.5)+AH1_(0.75));x=x*AH1_(2.0)-AH1_(1.0);return APSinH1(x);}
AH2 APCosH2(AH2 x){x=AFractH2(x*AH2_(0.5)+AH2_(0.75));x=x*AH2_(2.0)-AH2_(1.0);return APSinH2(x);} // 3x FMA, 2xFRACT, AND AH2 APCosH2(AH2 x){x=AFractH2(x*AH2_(0.5)+AH2_(0.75));x=x*AH2_(2.0)-AH2_(1.0);return APSinH2(x);} // 3x FMA, 2xFRACT, AND
AH2 APSinCosH1(AH1 x){AH1 y=AFractH1(x*AH1_(0.5)+AH1_(0.75));y=y*AH1_(2.0)-AH1_(1.0);return APSinH2(AH2(x,y));} AH2 APSinCosH1(AH1 x){AH1 y=AFractH1(x*AH1_(0.5)+AH1_(0.75));y=y*AH1_(2.0)-AH1_(1.0);return APSinH2(AH2(x,y));}
#endif #endif
@ -1033,9 +1033,9 @@ AF2 ATo709F2(AF2 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099);
return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );} return clamp(j.xx ,c*j.yy ,pow(c,j.zz )*k.xx +k.yy );}
AF3 ATo709F3(AF3 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099); AF3 ATo709F3(AF3 c){AF3 j=AF3(0.018*4.5,4.5,0.45);AF2 k=AF2(1.099,-0.099);
return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);} return clamp(j.xxx,c*j.yyy,pow(c,j.zzz)*k.xxx+k.yyy);}
AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,AF1_(rcpX));} AF1 AToGammaF1(AF1 c,AF1 rcpX){return pow(c,AF1_(rcpX));}
AF2 AToGammaF2(AF2 c,AF1 rcpX){return pow(c,AF2_(rcpX));} AF2 AToGammaF2(AF2 c,AF1 rcpX){return pow(c,AF2_(rcpX));}
AF3 AToGammaF3(AF3 c,AF1 rcpX){return pow(c,AF3_(rcpX));} AF3 AToGammaF3(AF3 c,AF1 rcpX){return pow(c,AF3_(rcpX));}
AF1 AToPqF1(AF1 x){AF1 p=pow(x,AF1_(0.159302)); AF1 AToPqF1(AF1 x){AF1 p=pow(x,AF1_(0.159302));
return pow((AF1_(0.835938)+AF1_(18.8516)*p)/(AF1_(1.0)+AF1_(18.6875)*p),AF1_(78.8438));} return pow((AF1_(0.835938)+AF1_(18.8516)*p)/(AF1_(1.0)+AF1_(18.6875)*p),AF1_(78.8438));}
AF2 AToPqF1(AF2 x){AF2 p=pow(x,AF2_(0.159302)); AF2 AToPqF1(AF2 x){AF2 p=pow(x,AF2_(0.159302));
@ -1062,9 +1062,9 @@ AF2 AFrom709F2(AF2 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,
return AZolSelF2(AZolSignedF2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));} return AZolSelF2(AZolSignedF2(c-j.xx ),c*j.yy ,pow(c*k.xx +k.yy ,j.zz ));}
AF3 AFrom709F3(AF3 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099); AF3 AFrom709F3(AF3 c){AF3 j=AF3(0.081/4.5,1.0/4.5,1.0/0.45);AF2 k=AF2(1.0/1.099,0.099/1.099);
return AZolSelF3(AZolSignedF3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));} return AZolSelF3(AZolSignedF3(c-j.xxx),c*j.yyy,pow(c*k.xxx+k.yyy,j.zzz));}
AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,AF1_(x));} AF1 AFromGammaF1(AF1 c,AF1 x){return pow(c,AF1_(x));}
AF2 AFromGammaF2(AF2 c,AF1 x){return pow(c,AF2_(x));} AF2 AFromGammaF2(AF2 c,AF1 x){return pow(c,AF2_(x));}
AF3 AFromGammaF3(AF3 c,AF1 x){return pow(c,AF3_(x));} AF3 AFromGammaF3(AF3 c,AF1 x){return pow(c,AF3_(x));}
AF1 AFromPqF1(AF1 x){AF1 p=pow(x,AF1_(0.0126833)); AF1 AFromPqF1(AF1 x){AF1 p=pow(x,AF1_(0.0126833));
return pow(ASatF1(p-AF1_(0.835938))/(AF1_(18.8516)-AF1_(18.6875)*p),AF1_(6.27739));} return pow(ASatF1(p-AF1_(0.835938))/(AF1_(18.8516)-AF1_(18.6875)*p),AF1_(6.27739));}
AF2 AFromPqF1(AF2 x){AF2 p=pow(x,AF2_(0.0126833)); AF2 AFromPqF1(AF2 x){AF2 p=pow(x,AF2_(0.0126833));

View file

@ -362,7 +362,7 @@ AF1 rcpL=APrxMedRcpF1(AF1_(4.0)*lobe+AF1_(1.0));
pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL;
pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL;
pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL; pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL;
return;} return;}
#endif #endif
#if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_RCAS_H) #if defined(A_GPU)&&defined(A_HALF)&&defined(FSR_RCAS_H)
AH4 FsrRcasLoadH(ASW2 p); AH4 FsrRcasLoadH(ASW2 p);

View file

@ -29,7 +29,7 @@ layout(set=0,binding=1,rgba8) uniform writeonly image2D OutputTexture;
#define FSR_EASU_H 1 #define FSR_EASU_H 1
AH4 FsrEasuRH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 0)); return res; } AH4 FsrEasuRH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 0)); return res; }
AH4 FsrEasuGH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 1)); return res; } AH4 FsrEasuGH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 1)); return res; }
AH4 FsrEasuBH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 2)); return res; } AH4 FsrEasuBH(AF2 p) { AH4 res = AH4(textureGather(InputTexture, p, 2)); return res; }
#endif #endif
#if SAMPLE_RCAS #if SAMPLE_RCAS
#define FSR_RCAS_H #define FSR_RCAS_H

View file

@ -4629,7 +4629,7 @@ struct texture_format_helper
{ {
return bf_decoder<2, 1, bool>(value); return bf_decoder<2, 1, bool>(value);
} }
u8 border_type() const u8 border_type() const
{ {
return bf_decoder<3, 1>(value); return bf_decoder<3, 1>(value);

View file

@ -182,7 +182,7 @@ void Emulator::BlockingCallFromMainThread(std::function<void()>&& func) const
} }
} }
// This function ensures constant initialization order between different compilers and builds // This function ensures constant initialization order between different compilers and builds
void init_fxo_for_exec(utils::serial* ar, bool full = false) void init_fxo_for_exec(utils::serial* ar, bool full = false)
{ {
g_fxo->init<ppu_module>(); g_fxo->init<ppu_module>();
@ -2833,13 +2833,13 @@ std::shared_ptr<utils::serial> Emulator::Kill(bool allow_autoexit, bool savestat
if (fs::remove_file(old_path)) if (fs::remove_file(old_path))
{ {
sys_log.success("Old savestate has been removed: path='%s'", old_path); sys_log.success("Old savestate has been removed: path='%s'", old_path);
} }
// For backwards compatibility - avoid having loose files // For backwards compatibility - avoid having loose files
if (fs::remove_file(old_path2)) if (fs::remove_file(old_path2))
{ {
sys_log.success("Old savestate has been removed: path='%s'", old_path2); sys_log.success("Old savestate has been removed: path='%s'", old_path2);
} }
sys_log.success("Saved savestate! path='%s'", path); sys_log.success("Saved savestate! path='%s'", path);

View file

@ -91,8 +91,8 @@ struct cfg_root : cfg::node
cfg::_int<10, 3000> clocks_scale{ this, "Clocks scale", 100 }; // Changing this from 100 (percentage) may affect game speed in unexpected ways cfg::_int<10, 3000> clocks_scale{ this, "Clocks scale", 100 }; // Changing this from 100 (percentage) may affect game speed in unexpected ways
cfg::uint<0, 3000> spu_wakeup_delay{ this, "SPU Wake-Up Delay", 0, true }; cfg::uint<0, 3000> spu_wakeup_delay{ this, "SPU Wake-Up Delay", 0, true };
cfg::uint<0, (1 << 6) - 1> spu_wakeup_delay_mask{ this, "SPU Wake-Up Delay Thread Mask", (1 << 6) - 1, true }; cfg::uint<0, (1 << 6) - 1> spu_wakeup_delay_mask{ this, "SPU Wake-Up Delay Thread Mask", (1 << 6) - 1, true };
cfg::uint<0, 400> max_cpu_preempt_count_per_frame{ this, "Max CPU Preempt Count", 0, true }; cfg::uint<0, 400> max_cpu_preempt_count_per_frame{ this, "Max CPU Preempt Count", 0, true };
cfg::_bool allow_rsx_cpu_preempt{ this, "Allow RSX CPU Preemptions", true, true }; cfg::_bool allow_rsx_cpu_preempt{ this, "Allow RSX CPU Preemptions", true, true };
#if defined (__linux__) || defined (__APPLE__) #if defined (__linux__) || defined (__APPLE__)
cfg::_enum<sleep_timers_accuracy_level> sleep_timers_accuracy{ this, "Sleep Timers Accuracy", sleep_timers_accuracy_level::_as_host, true }; cfg::_enum<sleep_timers_accuracy_level> sleep_timers_accuracy{ this, "Sleep Timers Accuracy", sleep_timers_accuracy_level::_as_host, true };
#else #else

View file

@ -13,6 +13,6 @@ namespace rpcs3
std::string vulkan_adapter; std::string vulkan_adapter;
double fps = .0; double fps = .0;
}; };
std::string get_formatted_title(const title_format_data& title_data); std::string get_formatted_title(const title_format_data& title_data);
} }

View file

@ -70,7 +70,7 @@ bool hid_pad_handler<Device>::Init()
#if defined(__APPLE__) #if defined(__APPLE__)
hid_darwin_set_open_exclusive(0); hid_darwin_set_open_exclusive(0);
#endif #endif
for (usz i = 1; i <= MAX_GAMEPADS; i++) // Controllers 1-n in GUI for (usz i = 1; i <= MAX_GAMEPADS; i++) // Controllers 1-n in GUI
{ {
m_controllers.emplace(m_name_string + std::to_string(i), std::make_shared<Device>()); m_controllers.emplace(m_name_string + std::to_string(i), std::make_shared<Device>());

View file

@ -484,7 +484,7 @@ u32 sdl_pad_handler::get_battery_color(SDL_JoystickPowerLevel power_level, u32 b
case SDL_JOYSTICK_POWER_WIRED: combined_color = 0x00FF; break; case SDL_JOYSTICK_POWER_WIRED: combined_color = 0x00FF; break;
case SDL_JOYSTICK_POWER_MAX: combined_color = 0x00FF; break; case SDL_JOYSTICK_POWER_MAX: combined_color = 0x00FF; break;
} }
const u32 red = (combined_color >> 8) * brightness / 100; const u32 red = (combined_color >> 8) * brightness / 100;
const u32 green = (combined_color & 0xff) * brightness / 100; const u32 green = (combined_color & 0xff) * brightness / 100;
return ((red << 8) | green); return ((red << 8) | green);
@ -565,7 +565,7 @@ void sdl_pad_handler::get_extended_info(const pad_ensemble& binding)
pad->m_sensors[2].m_value = Clamp0To1023((accel_z / SDL_STANDARD_GRAVITY) * -1 * 113 + 512); pad->m_sensors[2].m_value = Clamp0To1023((accel_z / SDL_STANDARD_GRAVITY) * -1 * 113 + 512);
} }
} }
if (dev->sdl.has_gyro) if (dev->sdl.has_gyro)
{ {
if (SDL_GameControllerGetSensorData(dev->sdl.game_controller, SDL_SENSOR_GYRO, dev->values_gyro.data(), 3) != 0) if (SDL_GameControllerGetSensorData(dev->sdl.game_controller, SDL_SENSOR_GYRO, dev->values_gyro.data(), 3) != 0)

View file

@ -93,32 +93,32 @@ namespace disc
search_dir = std::move(parent_dir); search_dir = std::move(parent_dir);
} }
for (usz i = 0; i < lines.size(); i++) for (usz i = 0; i < lines.size(); i++)
{ {
const std::string& line = lines[i]; const std::string& line = lines[i];
const usz pos = line.find('='); const usz pos = line.find('=');
if (pos == umax) if (pos == umax)
{ {
continue; continue;
} }
const std::string key = fmt::trim(line.substr(0, pos)); const std::string key = fmt::trim(line.substr(0, pos));
std::string value; std::string value;
if (pos != (line.size() - 1)) if (pos != (line.size() - 1))
{ {
value = fmt::trim(line.substr(pos + 1)); value = fmt::trim(line.substr(pos + 1));
} }
if (value.empty() && i != (lines.size() - 1) && line.size() != 1) if (value.empty() && i != (lines.size() - 1) && line.size() != 1)
{ {
// Some games have a character on the last line of the file, don't print the error in those cases. // Some games have a character on the last line of the file, don't print the error in those cases.
disc_log.warning("Unusual or malformed entry in SYSTEM.CNF ignored: %s", line); disc_log.warning("Unusual or malformed entry in SYSTEM.CNF ignored: %s", line);
continue; continue;
} }
if (key == "BOOT2") if (key == "BOOT2")
{ {
disc_log.notice("SYSTEM.CNF - Detected PS2 Disc = %s", value); disc_log.notice("SYSTEM.CNF - Detected PS2 Disc = %s", value);
@ -138,12 +138,12 @@ namespace disc
disc_log.notice("SYSTEM.CNF - Software version = %s", value); disc_log.notice("SYSTEM.CNF - Software version = %s", value);
} }
} }
if (type == disc_type::unknown) if (type == disc_type::unknown)
{ {
disc_log.error("SYSTEM.CNF - Disc is not a PSX/PSone or PS2 game!"); disc_log.error("SYSTEM.CNF - Disc is not a PSX/PSone or PS2 game!");
} }
return type; return type;
} }
} }

View file

@ -42,7 +42,7 @@ bool extract_mself(const std::string& file, const std::string& extract_to)
if (!mself.read(recs)) if (!mself.read(recs))
{ {
mself_log.error("Error extracting MSELF records"); mself_log.error("Error extracting MSELF records");
return false; return false;
} }
std::vector<u8> buffer; std::vector<u8> buffer;

View file

@ -2,7 +2,7 @@
#define IDI_ICON1 101 #define IDI_ICON1 101
// Next default values for new objects // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_RESOURCE_VALUE 102

View file

@ -24,5 +24,5 @@ public:
[[nodiscard]] qreal getMarginFactor() const; [[nodiscard]] qreal getMarginFactor() const;
private: private:
game_list_grid_delegate* grid_item_delegate; game_list_grid_delegate* grid_item_delegate;
}; };

View file

@ -117,7 +117,7 @@ namespace gui
const QString config = "Config"; const QString config = "Config";
const QString log_viewer = "LogViewer"; const QString log_viewer = "LogViewer";
const QString sc = "Shortcuts"; const QString sc = "Shortcuts";
const QString update_on = "true"; const QString update_on = "true";
const QString update_off = "false"; const QString update_off = "false";
const QString update_auto = "auto"; const QString update_auto = "auto";

View file

@ -364,7 +364,7 @@ void kernel_explorer::update()
case SYS_MUTEX_OBJECT: case SYS_MUTEX_OBJECT:
{ {
auto& mutex = static_cast<lv2_mutex&>(obj); auto& mutex = static_cast<lv2_mutex&>(obj);
const auto control = mutex.control.load(); const auto control = mutex.control.load();
show_waiters(add_solid_node(node, qstr(fmt::format(u8"Mutex 0x%08x: “%s”, %s,%s Owner: %#x, Locks: %u, Key: %#llx, Conds: %u", id, lv2_obj::name64(mutex.name), mutex.protocol, show_waiters(add_solid_node(node, qstr(fmt::format(u8"Mutex 0x%08x: “%s”, %s,%s Owner: %#x, Locks: %u, Key: %#llx, Conds: %u", id, lv2_obj::name64(mutex.name), mutex.protocol,
mutex.recursive == SYS_SYNC_RECURSIVE ? " Recursive," : "", control.owner, +mutex.lock_count, mutex.key, mutex.cond_count))), control.sq); mutex.recursive == SYS_SYNC_RECURSIVE ? " Recursive," : "", control.owner, +mutex.lock_count, mutex.key, mutex.cond_count))), control.sq);
break; break;

View file

@ -969,7 +969,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
if (pdlg.wasCanceled()) if (pdlg.wasCanceled())
{ {
cancelled = true; cancelled = true;
for (package_reader& reader : readers) for (package_reader& reader : readers)
{ {
reader.abort_extract(); reader.abort_extract();
@ -1072,7 +1072,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
QCheckBox* quick_check = new QCheckBox(tr("Add launcher shortcut(s)")); QCheckBox* quick_check = new QCheckBox(tr("Add launcher shortcut(s)"));
#endif #endif
QLabel* label = new QLabel(tr("Successfully installed software from package(s)!\nWould you like to install shortcuts to the installed software? (%1 new software detected)\n\n").arg(bootable_paths_installed.size()), dlg); QLabel* label = new QLabel(tr("Successfully installed software from package(s)!\nWould you like to install shortcuts to the installed software? (%1 new software detected)\n\n").arg(bootable_paths_installed.size()), dlg);
vlayout->addWidget(label); vlayout->addWidget(label);
vlayout->addStretch(10); vlayout->addStretch(10);
vlayout->addWidget(desk_check); vlayout->addWidget(desk_check);
@ -1081,7 +1081,7 @@ void main_window::HandlePackageInstallation(QStringList file_paths)
vlayout->addStretch(3); vlayout->addStretch(3);
QDialogButtonBox* btn_box = new QDialogButtonBox(QDialogButtonBox::Ok); QDialogButtonBox* btn_box = new QDialogButtonBox(QDialogButtonBox::Ok);
vlayout->addWidget(btn_box); vlayout->addWidget(btn_box);
dlg->setLayout(vlayout); dlg->setLayout(vlayout);
@ -2636,7 +2636,7 @@ void main_window::CreateConnects()
m_gui_settings->SetCategoryVisibility(id, checked); m_gui_settings->SetCategoryVisibility(id, checked);
} }
}); });
connect(ui->menuGame_Categories, &QMenu::aboutToShow, ui->menuGame_Categories, [this, get_cats]() connect(ui->menuGame_Categories, &QMenu::aboutToShow, ui->menuGame_Categories, [this, get_cats]()
{ {
const auto set_cat_count = [&](QAction* act, const QString& text) const auto set_cat_count = [&](QAction* act, const QString& text)

View file

@ -999,7 +999,7 @@ void rsx_debugger::GetBuffers() const
for (u32 i = 0; i < textures.size(); i++) for (u32 i = 0; i < textures.size(); i++)
{ {
// Technically it can also check if used by shader but idk // Technically it can also check if used by shader but idk
if (textures[i].enabled() && textures[i].width()) if (textures[i].enabled() && textures[i].width())
{ {
if (!text.isEmpty()) if (!text.isEmpty())
@ -1147,7 +1147,7 @@ void rsx_debugger::GetBuffers() const
else if (code == 3) else if (code == 3)
{ {
return 0; return 0;
} // otherwise is the default values } // otherwise is the default values
break; break;
} }
@ -1155,7 +1155,7 @@ void rsx_debugger::GetBuffers() const
{ {
fmt::throw_exception("Unreachable!"); fmt::throw_exception("Unreachable!");
break; break;
} }
} }
return ((a1 * a1_portion + a0 * a0_portion) / (a0_portion + a1_portion)) << shift; return ((a1 * a1_portion + a0 * a0_portion) / (a0_portion + a1_portion)) << shift;

View file

@ -24,7 +24,7 @@ private:
private: private:
custom_dialog* m_dialog = nullptr; custom_dialog* m_dialog = nullptr;
QListWidget* m_lst_friends = nullptr; QListWidget* m_lst_friends = nullptr;
std::shared_ptr<rpcn::rpcn_client> m_rpcn; std::shared_ptr<rpcn::rpcn_client> m_rpcn;
Q_SIGNALS: Q_SIGNALS:

View file

@ -30,7 +30,7 @@ public:
~settings(); ~settings();
QString GetSettingsDir() const; QString GetSettingsDir() const;
QVariant GetValue(const QString& key, const QString& name, const QVariant& def) const; QVariant GetValue(const QString& key, const QString& name, const QVariant& def) const;
QVariant GetValue(const gui_save& entry) const; QVariant GetValue(const gui_save& entry) const;
static QVariant List2Var(const q_pair_list& list); static QVariant List2Var(const q_pair_list& list);

View file

@ -5,7 +5,7 @@
#include <map> #include <map>
#include <string> #include <string>
// Do not confuse this with the "user" in Emu/System.h. // Do not confuse this with the "user" in Emu/System.h.
// That user is read from config.yml, and it only represents the currently "logged in" user. // That user is read from config.yml, and it only represents the currently "logged in" user.
// The user_account class will represent all users in the home directory for the User Manager dialog. // The user_account class will represent all users in the home directory for the User Manager dialog.
// Selecting a user account in this dialog and saving writes it to config.yml. // Selecting a user account in this dialog and saving writes it to config.yml.

View file

@ -71,7 +71,7 @@ vfs_dialog_usb_input::vfs_dialog_usb_input(const QString& name, const cfg::devic
m_serial_edit = new QLineEdit; m_serial_edit = new QLineEdit;
m_serial_edit->setMaxLength(64); // Max length defined in sys_fs m_serial_edit->setMaxLength(64); // Max length defined in sys_fs
m_serial_edit->setText(QString::fromStdString(info->serial)); m_serial_edit->setText(QString::fromStdString(info->serial));
QVBoxLayout* vbox_left = new QVBoxLayout; QVBoxLayout* vbox_left = new QVBoxLayout;
vbox_left->addWidget(new QLabel(tr("Vendor ID:"))); vbox_left->addWidget(new QLabel(tr("Vendor ID:")));
vbox_left->addWidget(new QLabel(tr("Product ID:"))); vbox_left->addWidget(new QLabel(tr("Product ID:")));

View file

@ -50,7 +50,7 @@ static bool s_null_wait_cb(const void*, u64, u64){ return true; };
static thread_local bool(*s_tls_wait_cb)(const void* data, u64 attempts, u64 stamp0) = s_null_wait_cb; static thread_local bool(*s_tls_wait_cb)(const void* data, u64 attempts, u64 stamp0) = s_null_wait_cb;
// Callback for wait() function for a second custon condition, commonly passed with timeout // Callback for wait() function for a second custon condition, commonly passed with timeout
static thread_local bool(*s_tls_one_time_wait_cb)(u64 attempts) = nullptr; static thread_local bool(*s_tls_one_time_wait_cb)(u64 attempts) = nullptr;
// Callback for notification functions for optimizations // Callback for notification functions for optimizations
static thread_local void(*s_tls_notify_cb)(const void* data, u64 progress) = nullptr; static thread_local void(*s_tls_notify_cb)(const void* data, u64 progress) = nullptr;