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/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/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 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 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 diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index c6faad7755..728fe97bed 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -588,7 +588,10 @@ + + + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 0b168e0016..5ba02118b5 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -2659,6 +2659,15 @@ Emu\GPU\RSX\Core + + Emu\NP + + + Emu\NP + + + Emu\NP + 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(); 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 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/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/gui_settings.cpp b/rpcs3/rpcs3qt/gui_settings.cpp index 54ed12391f..a79f9d9db7 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); @@ -205,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; } @@ -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 + + 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;