From 1d23be842915decf8a226e2399d3b67beaeaabc3 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 16:58:48 +0100 Subject: [PATCH 1/9] Qt: Add Operating system category --- rpcs3/rpcs3qt/category.h | 4 +++- rpcs3/rpcs3qt/gui_settings.cpp | 2 ++ rpcs3/rpcs3qt/gui_settings.h | 2 ++ rpcs3/rpcs3qt/main_window.cpp | 24 ++++++++++++--------- rpcs3/rpcs3qt/main_window.ui | 39 ++++++++-------------------------- 5 files changed, 30 insertions(+), 41 deletions(-) diff --git a/rpcs3/rpcs3qt/category.h b/rpcs3/rpcs3qt/category.h index 641af991b8..d87ebc1092 100644 --- a/rpcs3/rpcs3qt/category.h +++ b/rpcs3/rpcs3qt/category.h @@ -13,6 +13,7 @@ enum Category Home, Media, Data, + OS, Unknown_Cat, Others, }; @@ -50,5 +51,6 @@ namespace cat const QStringList psp_games = { cat_psp_game, cat_psp_mini, cat_psp_rema }; const QStringList media = { cat_app_photo, cat_app_video, cat_bc_video, cat_app_music, cat_app_store, cat_app_tv, cat_web_tv }; const QStringList data = { cat_ps3_data, cat_ps2_data, cat_ps3_save, cat_psp_save }; - const QStringList others = { cat_network, cat_store_fe, cat_ps3_os }; + const QStringList os = { cat_ps3_os }; + const QStringList others = { cat_network, cat_store_fe }; } diff --git a/rpcs3/rpcs3qt/gui_settings.cpp b/rpcs3/rpcs3qt/gui_settings.cpp index 54ed12391f..8b14e490f8 100644 --- a/rpcs3/rpcs3qt/gui_settings.cpp +++ b/rpcs3/rpcs3qt/gui_settings.cpp @@ -125,6 +125,7 @@ QStringList gui_settings::GetGameListCategoryFilters(bool is_list_mode) const if (GetCategoryVisibility(Category::Home, is_list_mode)) filterList.append(cat::cat_home); if (GetCategoryVisibility(Category::Media, is_list_mode)) filterList.append(cat::media); if (GetCategoryVisibility(Category::Data, is_list_mode)) filterList.append(cat::data); + if (GetCategoryVisibility(Category::OS, is_list_mode)) filterList.append(cat::os); if (GetCategoryVisibility(Category::Unknown_Cat, is_list_mode)) filterList.append(cat::cat_unknown); if (GetCategoryVisibility(Category::Others, is_list_mode)) filterList.append(cat::others); @@ -344,6 +345,7 @@ gui_save gui_settings::GetGuiSaveForCategory(int cat, bool is_list_mode) case Category::PSP_Game: return is_list_mode ? gui::cat_psp_game : gui::grid_cat_psp_game; case Category::Media: return is_list_mode ? gui::cat_audio_video : gui::grid_cat_audio_video; case Category::Data: return is_list_mode ? gui::cat_game_data : gui::grid_cat_game_data; + case Category::OS: return is_list_mode ? gui::cat_os : gui::grid_cat_os; case Category::Unknown_Cat: return is_list_mode ? gui::cat_unknown : gui::grid_cat_unknown; case Category::Others: return is_list_mode ? gui::cat_other : gui::grid_cat_other; default: diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h index df56ffe730..82c6770d00 100644 --- a/rpcs3/rpcs3qt/gui_settings.h +++ b/rpcs3/rpcs3qt/gui_settings.h @@ -161,6 +161,7 @@ namespace gui const gui_save cat_home = gui_save(game_list, "categoryVisibleHome", true); const gui_save cat_audio_video = gui_save(game_list, "categoryVisibleAudioVideo", true); const gui_save cat_game_data = gui_save(game_list, "categoryVisibleGameData", false); + const gui_save cat_os = gui_save(game_list, "categoryVisibleOS", false); const gui_save cat_unknown = gui_save(game_list, "categoryVisibleUnknown", true); const gui_save cat_other = gui_save(game_list, "categoryVisibleOther", true); @@ -172,6 +173,7 @@ namespace gui const gui_save grid_cat_home = gui_save(game_list, "gridCategoryVisibleHome", true); const gui_save grid_cat_audio_video = gui_save(game_list, "gridCategoryVisibleAudioVideo", true); const gui_save grid_cat_game_data = gui_save(game_list, "gridCategoryVisibleGameData", false); + const gui_save grid_cat_os = gui_save(game_list, "gridCategoryVisibleOS", false); const gui_save grid_cat_unknown = gui_save(game_list, "gridCategoryVisibleUnknown", true); const gui_save grid_cat_other = gui_save(game_list, "gridCategoryVisibleOther", true); diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index 09a09ce221..d3206b7bdb 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -2391,6 +2391,7 @@ void main_window::UpdateFilterActions() ui->showCatHomeAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::Home, m_is_list_mode)); ui->showCatAudioVideoAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::Media, m_is_list_mode)); ui->showCatGameDataAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::Data, m_is_list_mode)); + ui->showCatOSAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::OS, m_is_list_mode)); ui->showCatUnknownAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::Unknown_Cat, m_is_list_mode)); ui->showCatOtherAct->setChecked(m_gui_settings->GetCategoryVisibility(Category::Others, m_is_list_mode)); } @@ -2551,6 +2552,7 @@ void main_window::CreateActions() m_category_visible_act_group->addAction(ui->showCatHomeAct); m_category_visible_act_group->addAction(ui->showCatAudioVideoAct); m_category_visible_act_group->addAction(ui->showCatGameDataAct); + m_category_visible_act_group->addAction(ui->showCatOSAct); m_category_visible_act_group->addAction(ui->showCatUnknownAct); m_category_visible_act_group->addAction(ui->showCatOtherAct); m_category_visible_act_group->setExclusive(false); @@ -3227,16 +3229,17 @@ void main_window::CreateConnects() const auto get_cats = [this](QAction* act, int& id) -> QStringList { QStringList categories; - if (act == ui->showCatHDDGameAct) { categories += cat::cat_hdd_game; id = Category::HDD_Game; } - else if (act == ui->showCatDiscGameAct) { categories += cat::cat_disc_game; id = Category::Disc_Game; } - else if (act == ui->showCatPS1GamesAct) { categories += cat::cat_ps1_game; id = Category::PS1_Game; } - else if (act == ui->showCatPS2GamesAct) { categories += cat::ps2_games; id = Category::PS2_Game; } - else if (act == ui->showCatPSPGamesAct) { categories += cat::psp_games; id = Category::PSP_Game; } - else if (act == ui->showCatHomeAct) { categories += cat::cat_home; id = Category::Home; } - else if (act == ui->showCatAudioVideoAct) { categories += cat::media; id = Category::Media; } - else if (act == ui->showCatGameDataAct) { categories += cat::data; id = Category::Data; } - else if (act == ui->showCatUnknownAct) { categories += cat::cat_unknown; id = Category::Unknown_Cat; } - else if (act == ui->showCatOtherAct) { categories += cat::others; id = Category::Others; } + if (act == ui->showCatHDDGameAct) { categories.append(cat::cat_hdd_game); id = Category::HDD_Game; } + else if (act == ui->showCatDiscGameAct) { categories.append(cat::cat_disc_game); id = Category::Disc_Game; } + else if (act == ui->showCatPS1GamesAct) { categories.append(cat::cat_ps1_game); id = Category::PS1_Game; } + else if (act == ui->showCatPS2GamesAct) { categories.append(cat::ps2_games); id = Category::PS2_Game; } + else if (act == ui->showCatPSPGamesAct) { categories.append(cat::psp_games); id = Category::PSP_Game; } + else if (act == ui->showCatHomeAct) { categories.append(cat::cat_home); id = Category::Home; } + else if (act == ui->showCatAudioVideoAct) { categories.append(cat::media); id = Category::Media; } + else if (act == ui->showCatGameDataAct) { categories.append(cat::data); id = Category::Data; } + else if (act == ui->showCatOSAct) { categories.append(cat::os); id = Category::OS; } + else if (act == ui->showCatUnknownAct) { categories.append(cat::cat_unknown); id = Category::Unknown_Cat; } + else if (act == ui->showCatOtherAct) { categories.append(cat::others); id = Category::Others; } else { gui_log.warning("categoryVisibleActGroup: category action not found"); } return categories; }; @@ -3276,6 +3279,7 @@ void main_window::CreateConnects() set_cat_count(ui->showCatHomeAct, tr("Home")); set_cat_count(ui->showCatAudioVideoAct, tr("Audio/Video")); set_cat_count(ui->showCatGameDataAct, tr("Game Data")); + set_cat_count(ui->showCatOSAct, tr("Operating System")); set_cat_count(ui->showCatUnknownAct, tr("Unknown")); set_cat_count(ui->showCatOtherAct, tr("Other")); }); diff --git a/rpcs3/rpcs3qt/main_window.ui b/rpcs3/rpcs3qt/main_window.ui index 2d0396c499..ba29696974 100644 --- a/rpcs3/rpcs3qt/main_window.ui +++ b/rpcs3/rpcs3qt/main_window.ui @@ -355,6 +355,7 @@ + @@ -883,9 +884,6 @@ true - - true - HDD Games @@ -894,9 +892,6 @@ true - - true - Disc Games @@ -905,9 +900,6 @@ true - - true - PS1 Games @@ -916,9 +908,6 @@ true - - true - PS2 Games @@ -927,9 +916,6 @@ true - - true - PSP Games @@ -938,9 +924,6 @@ true - - true - Home @@ -949,9 +932,6 @@ true - - true - Audio/Video @@ -960,9 +940,6 @@ true - - true - Game Data @@ -971,9 +948,6 @@ true - - true - Unknown @@ -1090,9 +1064,6 @@ true - - true - Other @@ -1402,6 +1373,14 @@ PS Move + + + true + + + Operating System + + From 33c3e3fb0fbd9d1ae54bf45d10f3081fc2c05212 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 12:31:17 +0100 Subject: [PATCH 2/9] fix some warning --- rpcs3/Emu/IdManager.cpp | 4 ++-- rpcs3/Emu/IdManager.h | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/IdManager.cpp b/rpcs3/Emu/IdManager.cpp index 3621c50c66..b8225b07ef 100644 --- a/rpcs3/Emu/IdManager.cpp +++ b/rpcs3/Emu/IdManager.cpp @@ -33,7 +33,7 @@ std::vector>& id_manager::get_typeinfo_map return s_map; } -id_manager::id_key* idm::allocate_id(std::span keys, usz& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair invl_range) +id_manager::id_key* idm::allocate_id(std::span keys, u32& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair invl_range) { if (dst_id != (base ? 0 : u32{umax})) { @@ -41,7 +41,7 @@ id_manager::id_key* idm::allocate_id(std::span keys, usz& hi const u32 index = id_manager::get_index(dst_id, base, step, count, invl_range); ensure(index < count); - highest_index = std::max(highest_index, index + 1); + highest_index = std::max(highest_index, index + 1); if (keys[index].type() != umax) { diff --git a/rpcs3/Emu/IdManager.h b/rpcs3/Emu/IdManager.h index b555907d13..99082462f9 100644 --- a/rpcs3/Emu/IdManager.h +++ b/rpcs3/Emu/IdManager.h @@ -286,7 +286,7 @@ namespace id_manager std::array, T::id_count> vec_data{}; std::array, T::id_count> private_copy{}; std::array vec_keys{}; - usz highest_index = 0; + u32 highest_index = 0; shared_mutex mutex{}; // TODO: Use this instead of global mutex @@ -330,11 +330,11 @@ namespace id_manager // Simulate construction semantics (idm::last_id() value) g_id = id; - const usz object_index = get_index(id, info->base, info->step, info->count, info->invl_range); + const u32 object_index = get_index(id, info->base, info->step, info->count, info->invl_range); auto& obj = ::at32(vec_data, object_index); ensure(!obj); - highest_index = std::max(highest_index, object_index + 1); + highest_index = std::max(highest_index, object_index + 1); vec_keys[object_index] = id_key(id, static_cast(static_cast(type_init_pos >> 64))); info->load(ar)(&obj); @@ -383,7 +383,7 @@ namespace id_manager reader_lock lock(g_mutex); // Save all entries - for (usz i = 0; i < highest_index; i++) + for (u32 i = 0; i < highest_index; i++) { private_copy[i] = vec_data[i].load(); } @@ -489,7 +489,7 @@ class idm } // Prepare new ID (returns nullptr if out of resources) - static id_manager::id_key* allocate_id(std::span vec, usz& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair invl_range); + static id_manager::id_key* allocate_id(std::span keys, u32& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair invl_range); // Get object by internal index if exists (additionally check type if types are not equal) template From d3fedffa6affeb31e6c5416e3122fd744ac0ed20 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 18:14:08 +0100 Subject: [PATCH 3/9] VS: Add sysinfo_darwin.mm to filters --- rpcs3/rpcs3.vcxproj | 1 + rpcs3/rpcs3.vcxproj.filters | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 1973831ab3..755370a4c7 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -2069,6 +2069,7 @@ + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 0e2eae3a00..4cdbcedc2e 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -190,6 +190,9 @@ {f8a98f7b-dc23-47c0-8a5f-d0b76eaf0df5} + + {f6b701aa-7f4a-4816-b05f-80d24cb70e13} + @@ -1806,5 +1809,8 @@ CI + + Darwin + \ No newline at end of file From a49cfc5a9177a0457cd2a93c2f7e3d4cc7a23bad Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 18:14:57 +0100 Subject: [PATCH 4/9] Simplify some ternaries --- rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp | 12 ++++++------ rpcs3/rpcs3qt/gui_settings.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp b/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp index f559aeebff..435fa1636d 100644 --- a/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp @@ -622,7 +622,7 @@ bool spursKernel2SelectWorkload(spu_thread& spu) void spursKernelDispatchWorkload(spu_thread& spu, u64 widAndPollStatus) { const auto ctxt = spu._ptr(0x100); - auto isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; + const bool isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; auto pollStatus = static_cast(widAndPollStatus); auto wid = static_cast(widAndPollStatus >> 32); @@ -674,7 +674,7 @@ void spursKernelDispatchWorkload(spu_thread& spu, u64 widAndPollStatus) bool spursKernelWorkloadExit(spu_thread& spu) { const auto ctxt = spu._ptr(0x100); - auto isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; + const bool isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; // Select next workload to run spu.gpr[3].clear(); @@ -701,7 +701,7 @@ bool spursKernelEntry(spu_thread& spu) ctxt->spuNum = spu.gpr[3]._u32[3]; ctxt->spurs.set(spu.gpr[4]._u64[1]); - auto isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; + const bool isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; // Initialise the SPURS context to its initial values ctxt->dmaTagId = CELL_SPURS_KERNEL_DMA_TAG_ID; @@ -785,8 +785,8 @@ void spursSysServiceIdleHandler(spu_thread& spu, SpursKernelContext* ctxt) } } - bool allSpusIdle = nIdlingSpus == spurs->nSpus ? true : false; - bool exitIfNoWork = spurs->flags1 & SF1_EXIT_IF_NO_WORK ? true : false; + const bool allSpusIdle = nIdlingSpus == spurs->nSpus; + const bool exitIfNoWork = spurs->flags1 & SF1_EXIT_IF_NO_WORK ? true : false; shouldExit = allSpusIdle && exitIfNoWork; // Check if any workloads can be scheduled @@ -843,7 +843,7 @@ void spursSysServiceIdleHandler(spu_thread& spu, SpursKernelContext* ctxt) } } - bool spuIdling = spurs->spuIdling & (1 << ctxt->spuNum) ? true : false; + const bool spuIdling = spurs->spuIdling & (1 << ctxt->spuNum) ? true : false; if (foundReadyWorkload && shouldExit == false) { spurs->spuIdling &= ~(1 << ctxt->spuNum); diff --git a/rpcs3/rpcs3qt/gui_settings.cpp b/rpcs3/rpcs3qt/gui_settings.cpp index 8b14e490f8..a79f9d9db7 100644 --- a/rpcs3/rpcs3qt/gui_settings.cpp +++ b/rpcs3/rpcs3qt/gui_settings.cpp @@ -206,7 +206,7 @@ bool gui_settings::GetBootConfirmation(QWidget* parent, const gui_save& gui_save { if (Emu.GetStatus(false) != system_state::stopping) { - ensure(info == Emu.GetEmulationIdentifier(old_status == system_state::stopping ? true : false)); + ensure(info == Emu.GetEmulationIdentifier(old_status == system_state::stopping)); return true; } From 5e176a390fa7c049640612f4a62ee50e129b0222 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 18:15:19 +0100 Subject: [PATCH 5/9] MacOS: silence some warnings --- darwin/util/sysinfo_darwin.mm | 2 ++ rpcs3/Input/gui_pad_thread.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/darwin/util/sysinfo_darwin.mm b/darwin/util/sysinfo_darwin.mm index e1ffe458f3..0be5eec7f0 100644 --- a/darwin/util/sysinfo_darwin.mm +++ b/darwin/util/sysinfo_darwin.mm @@ -1,5 +1,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wold-style-cast" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wmissing-declarations" #import #pragma GCC diagnostic pop diff --git a/rpcs3/Input/gui_pad_thread.cpp b/rpcs3/Input/gui_pad_thread.cpp index ff179f644e..87fa0999f3 100644 --- a/rpcs3/Input/gui_pad_thread.cpp +++ b/rpcs3/Input/gui_pad_thread.cpp @@ -27,6 +27,10 @@ #elif defined(__APPLE__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wold-style-cast" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wmissing-declarations" +#pragma GCC diagnostic ignored "-Wnullability-completeness" +#pragma GCC diagnostic ignored "-Wdeprecated-anon-enum-enum-conversion" #include #include #pragma GCC diagnostic pop From e58bd419f67eb853213d382346504988d3f780b9 Mon Sep 17 00:00:00 2001 From: Darkhost1999 <60384196+Darkhost1999@users.noreply.github.com> Date: Sat, 28 Dec 2024 15:20:22 -0600 Subject: [PATCH 6/9] Add empty hdd tmp to UI (#16462) This option is need for those using sprx mods and amongst other homebrew reasons such as apollo savedata. --- rpcs3/rpcs3qt/emu_settings_type.h | 2 + rpcs3/rpcs3qt/settings_dialog.cpp | 3 + rpcs3/rpcs3qt/settings_dialog.ui | 399 ++++++++++++++++-------------- rpcs3/rpcs3qt/tooltips.h | 3 +- 4 files changed, 222 insertions(+), 185 deletions(-) diff --git a/rpcs3/rpcs3qt/emu_settings_type.h b/rpcs3/rpcs3qt/emu_settings_type.h index 9eec1956ed..a038fa8c84 100644 --- a/rpcs3/rpcs3qt/emu_settings_type.h +++ b/rpcs3/rpcs3qt/emu_settings_type.h @@ -200,6 +200,7 @@ enum class emu_settings_type KeyboardType, EnterButtonAssignment, EnableHostRoot, + EmptyHdd0Tmp, LimitCacheSize, MaximumCacheSize, ConsoleTimeOffset, @@ -399,6 +400,7 @@ inline static const std::map settings_location { emu_settings_type::KeyboardType, { "System", "Keyboard Type"} }, { emu_settings_type::EnterButtonAssignment, { "System", "Enter button assignment"}}, { emu_settings_type::EnableHostRoot, { "VFS", "Enable /host_root/"}}, + { emu_settings_type::EmptyHdd0Tmp, { "VFS", "Empty /dev_hdd0/tmp/"}}, { emu_settings_type::LimitCacheSize, { "VFS", "Limit disk cache size"}}, { emu_settings_type::MaximumCacheSize, { "VFS", "Disk cache maximum size (MB)"}}, { emu_settings_type::ConsoleTimeOffset, { "System", "Console time offset (s)"}}, diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index 6d17c7e9a5..399e4b72df 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -1428,6 +1428,9 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std m_emu_settings->EnhanceCheckBox(ui->enableHostRoot, emu_settings_type::EnableHostRoot); SubscribeTooltip(ui->enableHostRoot, tooltips.settings.enable_host_root); + m_emu_settings->EnhanceCheckBox(ui->emptyHdd0Tmp, emu_settings_type::EmptyHdd0Tmp); + SubscribeTooltip(ui->emptyHdd0Tmp, tooltips.settings.empty_hdd0_tmp); + m_emu_settings->EnhanceCheckBox(ui->enableCacheClearing, emu_settings_type::LimitCacheSize); SubscribeTooltip(ui->gb_DiskCacheClearing, tooltips.settings.limit_cache_size); if (game) diff --git a/rpcs3/rpcs3qt/settings_dialog.ui b/rpcs3/rpcs3qt/settings_dialog.ui index 66b3b32088..7f70c304aa 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -1900,206 +1900,237 @@ System - + - + - - - Console Language - - - - - - - - - - - - Keyboard Type - - - - - - - - - - - - Homebrew - - - - - - Enable /host_root/ - - - - - - - - - - - - - - Console Region - - - - - - - - - - - - Console Time - - - - + + + + + Console Language + + - - - - 10 - 0 - - - - Qt::LayoutDirection::LeftToRight - - - false - - - true - - - Qt::AlignmentFlag::AlignCenter - - - false - - - QAbstractSpinBox::ButtonSymbols::UpDownArrows - - - true - - - false - - - true + + + + + + + + + Console Region + + + + + + + + + + + + Enter Button Assignment + + + + + + Enter with the Circle button - + - Set to Now + Enter with the Cross button - - - + + + + + + Disk Cache + + + + + + Clear cache automatically + + + + + + + Cache size: 3072 MB + + + + + + + 512 + + + Qt::Orientation::Horizontal + + + QSlider::TickPosition::TicksBelow + + + 1024 + + + + + + + + + + Qt::Orientation::Vertical + + + + 0 + 0 + + + + + - - - - - - - - - - Enter Button Assignment - - - - - - Enter with the Circle button - - - - - - - Enter with the Cross button - - - - - + + + + + Keyboard Type + + + + + + + + + + + + Console Time + + + + + + + + + 10 + 0 + + + + Qt::LayoutDirection::LeftToRight + + + false + + + true + + + Qt::AlignmentFlag::AlignCenter + + + false + + + QAbstractSpinBox::ButtonSymbols::UpDownArrows + + + true + + + false + + + true + + + + + + + Set to Now + + + + + + + + + + + + Qt::Orientation::Vertical + + + + 0 + 0 + + + + + - - - - - - - - - - - - - Disk Cache - - - - - - Clear cache automatically - - - - - - - Cache size: 3072 MB - - - - - - - 512 - - - Qt::Orientation::Horizontal - - - QSlider::TickPosition::TicksBelow - - - 1024 - - - - - - - - - - - + + + + + Homebrew + + + + + + Enable /host_root/ + + + + + + + Empty /dev_hdd0/tmp/ + + + + + + + + + + Qt::Orientation::Vertical + + + + 0 + 0 + + + + + diff --git a/rpcs3/rpcs3qt/tooltips.h b/rpcs3/rpcs3qt/tooltips.h index c6bfa15cf7..d9576fb591 100644 --- a/rpcs3/rpcs3qt/tooltips.h +++ b/rpcs3/rpcs3qt/tooltips.h @@ -260,7 +260,8 @@ public: const QString system_language = tr("Some games may fail to boot if the system language is not available in the game itself.\nOther games will switch language automatically to what is selected here.\nIt is recommended leaving this on a language supported by the game."); const QString keyboard_type = tr("Sets the used keyboard layout.\nCurrently only US, Japanese and German layouts are fully supported at this moment."); const QString enter_button_assignment = tr("The button used for enter/accept/confirm in system dialogs.\nChange this to use the Circle button instead, which is the default configuration on Japanese systems and in many Japanese games.\nIn these cases having the cross button assigned can often lead to confusion."); - const QString enable_host_root = tr("Required for some Homebrew.\nIf unsure, don't use this option."); + const QString enable_host_root = tr("Required for some Homebrew.\nIf unsure, do not use this option."); + const QString empty_hdd0_tmp = tr("Required for some Homebrew or Game Mods.\nIf unsure, do not use this option"); const QString limit_cache_size = tr("Automatically removes older files from disk cache on boot if it grows larger than the specified value.\nGames can use the cache folder to temporarily store data outside of system memory. It is not used for long-term storage.\n\nThis setting is only available in the global configuration."); const QString console_time_offset = tr("Sets the time to be used within the console. This will be applied as an offset that tracks wall clock time.\nCan be reset to current wall clock time by clicking \"Set to Now\"."); } settings; From 1eac13b6bfa13ef9efa70a315c80e2ffba8ee076 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 19:58:41 +0100 Subject: [PATCH 7/9] Windows: log command line args in utf8 --- rpcs3/main.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/rpcs3/main.cpp b/rpcs3/main.cpp index d6770127b2..261ed1de99 100644 --- a/rpcs3/main.cpp +++ b/rpcs3/main.cpp @@ -33,7 +33,7 @@ #ifdef _WIN32 #include "module_verifier.hpp" #include "util/dyn_lib.hpp" - +#include // TODO(cjj19970505@live.cn) // When compiling with WIN32_LEAN_AND_MEAN definition @@ -620,11 +620,26 @@ int main(int argc, char** argv) std::string argument_str; for (int i = 0; i < argc; i++) { + if (i > 0) argument_str += " "; argument_str += '\'' + std::string(argv[i]) + '\''; - if (i != argc - 1) argument_str += " "; } + sys_log.notice("argc: %d, argv: %s", argc, argument_str); +#ifdef _WIN32 + int n_args = 0; + if (LPWSTR* arg_list = CommandLineToArgvW(GetCommandLineW(), &n_args)) + { + std::string utf8_args; + for (int i = 0; i < n_args; i++) + { + if (i > 0) utf8_args += " "; + utf8_args += '\'' + wchar_to_utf8(arg_list[i]) + '\''; + } + sys_log.notice("argv_utf8: %s", utf8_args); + } +#endif + // Before we proceed, run some sanity checks run_platform_sanity_checks(); From 418a99a62b814b7f831072610c9e7d7b5e90610c Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 28 Dec 2024 21:00:36 +0100 Subject: [PATCH 8/9] VS: add some missing files to solution filters --- rpcs3/emucore.vcxproj | 3 +++ rpcs3/emucore.vcxproj.filters | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index f311845462..062d481b8a 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -587,7 +587,10 @@ + + + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index c516f50756..3471fdfcbb 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -2650,6 +2650,15 @@ Emu\GPU\RSX\Host Mini-Driver + + Emu\NP + + + Emu\NP + + + Emu\NP + From 439d6650969892c4e7b84ef22e27e64efc0fc238 Mon Sep 17 00:00:00 2001 From: Elad <18193363+elad335@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:06:44 +0200 Subject: [PATCH 9/9] CELL: Fix reservation notifications --- rpcs3/Emu/Cell/lv2/sys_sync.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_sync.h b/rpcs3/Emu/Cell/lv2/sys_sync.h index c8c6096a01..83a1b22c94 100644 --- a/rpcs3/Emu/Cell/lv2/sys_sync.h +++ b/rpcs3/Emu/Cell/lv2/sys_sync.h @@ -6,6 +6,7 @@ #include "Emu/CPU/CPUThread.h" #include "Emu/Cell/ErrorCodes.h" #include "Emu/Cell/timers.hpp" +#include "Emu/Memory/vm_reservation.h" #include "Emu/IdManager.h" #include "Emu/IPC.h" @@ -68,11 +69,6 @@ struct ppu_non_sleeping_count_t u32 onproc_count; }; -namespace vm -{ - extern u8 g_reservations[65536 / 128 * 64]; -} - // Base class for some kernel objects (shared set of 8192 objects). struct lv2_obj { @@ -469,8 +465,12 @@ public: if (cpu != &g_to_notify) { - if (cpu >= vm::g_reservations && cpu <= vm::g_reservations + (std::size(vm::g_reservations) - 1)) + const auto res_start = vm::reservation_notifier(0).second; + const auto res_end = vm::reservation_notifier(umax).second; + + if (cpu >= res_start && cpu <= res_end) { + // Notify SPU reservation atomic_wait_engine::notify_all(cpu); } else