mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 19:45:20 +00:00
Merge branch 'master' into rsx-volatile
This commit is contained in:
commit
e4c8a688a4
20 changed files with 314 additions and 248 deletions
|
@ -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 <Foundation/Foundation.h>
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
|
|
|
@ -622,7 +622,7 @@ bool spursKernel2SelectWorkload(spu_thread& spu)
|
|||
void spursKernelDispatchWorkload(spu_thread& spu, u64 widAndPollStatus)
|
||||
{
|
||||
const auto ctxt = spu._ptr<SpursKernelContext>(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<u32>(widAndPollStatus);
|
||||
auto wid = static_cast<u32>(widAndPollStatus >> 32);
|
||||
|
@ -674,7 +674,7 @@ void spursKernelDispatchWorkload(spu_thread& spu, u64 widAndPollStatus)
|
|||
bool spursKernelWorkloadExit(spu_thread& spu)
|
||||
{
|
||||
const auto ctxt = spu._ptr<SpursKernelContext>(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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -33,7 +33,7 @@ std::vector<std::pair<u128, id_manager::typeinfo>>& id_manager::get_typeinfo_map
|
|||
return s_map;
|
||||
}
|
||||
|
||||
id_manager::id_key* idm::allocate_id(std::span<id_manager::id_key> keys, usz& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range)
|
||||
id_manager::id_key* idm::allocate_id(std::span<id_manager::id_key> keys, u32& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range)
|
||||
{
|
||||
if (dst_id != (base ? 0 : u32{umax}))
|
||||
{
|
||||
|
@ -41,7 +41,7 @@ id_manager::id_key* idm::allocate_id(std::span<id_manager::id_key> keys, usz& hi
|
|||
const u32 index = id_manager::get_index(dst_id, base, step, count, invl_range);
|
||||
ensure(index < count);
|
||||
|
||||
highest_index = std::max<usz>(highest_index, index + 1);
|
||||
highest_index = std::max(highest_index, index + 1);
|
||||
|
||||
if (keys[index].type() != umax)
|
||||
{
|
||||
|
|
|
@ -286,7 +286,7 @@ namespace id_manager
|
|||
std::array<stx::atomic_ptr<T>, T::id_count> vec_data{};
|
||||
std::array<stx::shared_ptr<T>, T::id_count> private_copy{};
|
||||
std::array<id_key, T::id_count> 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<usz>(highest_index, object_index + 1);
|
||||
highest_index = std::max(highest_index, object_index + 1);
|
||||
|
||||
vec_keys[object_index] = id_key(id, static_cast<u32>(static_cast<u64>(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<id_manager::id_key> vec, usz& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range);
|
||||
static id_manager::id_key* allocate_id(std::span<id_manager::id_key> keys, u32& highest_index, u32 type_id, u32 dst_id, u32 base, u32 step, u32 count, bool uses_lowest_id, std::pair<u32, u32> invl_range);
|
||||
|
||||
// Get object by internal index if exists (additionally check type if types are not equal)
|
||||
template <typename T, typename Type>
|
||||
|
|
|
@ -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 <ApplicationServices/ApplicationServices.h>
|
||||
#include <Carbon/Carbon.h>
|
||||
#pragma GCC diagnostic pop
|
||||
|
|
|
@ -588,7 +588,10 @@
|
|||
<ClInclude Include="Emu\IPC_socket.h" />
|
||||
<ClInclude Include="Emu\localized_string.h" />
|
||||
<ClInclude Include="Emu\localized_string_id.h" />
|
||||
<ClInclude Include="Emu\NP\fb_helpers.h" />
|
||||
<ClInclude Include="Emu\NP\generated\np2_structs_generated.h" />
|
||||
<ClInclude Include="Emu\NP\np_contexts.h" />
|
||||
<ClInclude Include="Emu\NP\np_gui_cache.h" />
|
||||
<ClInclude Include="Emu\NP\np_handler.h" />
|
||||
<ClInclude Include="Emu\NP\rpcn_countries.h" />
|
||||
<ClInclude Include="Emu\NP\signaling_handler.h" />
|
||||
|
|
|
@ -2659,6 +2659,15 @@
|
|||
<ClInclude Include="Emu\RSX\Core\RSXDriverState.h">
|
||||
<Filter>Emu\GPU\RSX\Core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\fb_helpers.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\np_contexts.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\NP\np_gui_cache.h">
|
||||
<Filter>Emu\NP</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Emu\RSX\Program\GLSLSnippets\GPUDeswizzle.glsl">
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#ifdef _WIN32
|
||||
#include "module_verifier.hpp"
|
||||
#include "util/dyn_lib.hpp"
|
||||
|
||||
#include <shellapi.h>
|
||||
|
||||
// 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();
|
||||
|
||||
|
|
|
@ -2069,6 +2069,7 @@
|
|||
<None Include="..\buildfiles\msvc\rpcs3_debug.props" />
|
||||
<None Include="..\buildfiles\msvc\rpcs3_default.props" />
|
||||
<None Include="..\buildfiles\msvc\rpcs3_release.props" />
|
||||
<None Include="..\darwin\util\sysinfo_darwin.mm" />
|
||||
<None Include="..\Utilities\git-version-gen.cmd" />
|
||||
<None Include="update_helper.sh" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -190,6 +190,9 @@
|
|||
<Filter Include="Io\Move">
|
||||
<UniqueIdentifier>{f8a98f7b-dc23-47c0-8a5f-d0b76eaf0df5}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Darwin">
|
||||
<UniqueIdentifier>{f6b701aa-7f4a-4816-b05f-80d24cb70e13}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
|
@ -1806,5 +1809,8 @@
|
|||
<None Include="..\.ci\optimize-mac.sh">
|
||||
<Filter>CI</Filter>
|
||||
</None>
|
||||
<None Include="..\darwin\util\sysinfo_darwin.mm">
|
||||
<Filter>Darwin</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -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 };
|
||||
}
|
||||
|
|
|
@ -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<emu_settings_type, cfg_location> 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)"}},
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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"));
|
||||
});
|
||||
|
|
|
@ -355,6 +355,7 @@
|
|||
<addaction name="showCatHomeAct"/>
|
||||
<addaction name="showCatAudioVideoAct"/>
|
||||
<addaction name="showCatGameDataAct"/>
|
||||
<addaction name="showCatOSAct"/>
|
||||
<addaction name="showCatUnknownAct"/>
|
||||
<addaction name="showCatOtherAct"/>
|
||||
</widget>
|
||||
|
@ -883,9 +884,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>HDD Games</string>
|
||||
</property>
|
||||
|
@ -894,9 +892,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Disc Games</string>
|
||||
</property>
|
||||
|
@ -905,9 +900,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>PS1 Games</string>
|
||||
</property>
|
||||
|
@ -916,9 +908,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>PS2 Games</string>
|
||||
</property>
|
||||
|
@ -927,9 +916,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>PSP Games</string>
|
||||
</property>
|
||||
|
@ -938,9 +924,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Home</string>
|
||||
</property>
|
||||
|
@ -949,9 +932,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Audio/Video</string>
|
||||
</property>
|
||||
|
@ -960,9 +940,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Game Data</string>
|
||||
</property>
|
||||
|
@ -971,9 +948,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Unknown</string>
|
||||
</property>
|
||||
|
@ -1090,9 +1064,6 @@
|
|||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Other</string>
|
||||
</property>
|
||||
|
@ -1402,6 +1373,14 @@
|
|||
<string>PS Move</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="showCatOSAct">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Operating System</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
|
|
|
@ -1428,6 +1428,9 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> 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)
|
||||
|
|
|
@ -1900,206 +1900,237 @@
|
|||
<attribute name="title">
|
||||
<string>System</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="systemTab_layout" stretch="0,0,0,0,1,0">
|
||||
<layout class="QVBoxLayout" name="systemTab_layout" stretch="0,1,0">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="systemTabLayout1" stretch="1,1,1">
|
||||
<layout class="QHBoxLayout" name="systemTabHorizontalLayout" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_sysLang">
|
||||
<property name="title">
|
||||
<string>Console Language</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_sysLang_layout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="sysLangBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_keyboardType">
|
||||
<property name="title">
|
||||
<string>Keyboard Type</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_keyboardType">
|
||||
<item>
|
||||
<widget class="QComboBox" name="keyboardType"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_homebrew">
|
||||
<property name="title">
|
||||
<string>Homebrew</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_homebrew_layout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableHostRoot">
|
||||
<property name="text">
|
||||
<string>Enable /host_root/</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="systemTabLayout2" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_console_region">
|
||||
<property name="title">
|
||||
<string>Console Region</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_console_region_layout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="console_region"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_console_time">
|
||||
<property name="title">
|
||||
<string>Console Time</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<layout class="QVBoxLayout" name="systemTabLeftLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_sysLang">
|
||||
<property name="title">
|
||||
<string>Console Language</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_sysLang_layout">
|
||||
<item>
|
||||
<widget class="QDateTimeEdit" name="console_time_edit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>10</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LayoutDirection::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="wrapping">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="frame">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::ButtonSymbols::UpDownArrows</enum>
|
||||
</property>
|
||||
<property name="accelerated">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="showGroupSeparator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="calendarPopup">
|
||||
<bool>true</bool>
|
||||
<widget class="QComboBox" name="sysLangBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_console_region">
|
||||
<property name="title">
|
||||
<string>Console Region</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_console_region_layout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="console_region"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_enterButtonAssignment">
|
||||
<property name="title">
|
||||
<string>Enter Button Assignment</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_enterButtonAssignment_layout">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="enterButtonAssignCircle">
|
||||
<property name="text">
|
||||
<string notr="true">Enter with the Circle button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="console_time_reset">
|
||||
<widget class="QRadioButton" name="enterButtonAssignCross">
|
||||
<property name="text">
|
||||
<string>Set to Now</string>
|
||||
<string notr="true">Enter with the Cross button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_DiskCacheClearing">
|
||||
<property name="title">
|
||||
<string>Disk Cache</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_DiskCacheClearing_layout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableCacheClearing">
|
||||
<property name="text">
|
||||
<string>Clear cache automatically</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="maximumCacheSizeLabel">
|
||||
<property name="text">
|
||||
<string>Cache size: 3072 MB</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="maximumCacheSize">
|
||||
<property name="pageStep">
|
||||
<number>512</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TickPosition::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>1024</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="systemTabLeftVerticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="systemTabSpacerWidget2" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="systemTabLayout3" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_enterButtonAssignment">
|
||||
<property name="title">
|
||||
<string>Enter Button Assignment</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_enterButtonAssignment_layout">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="enterButtonAssignCircle">
|
||||
<property name="text">
|
||||
<string notr="true">Enter with the Circle button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="enterButtonAssignCross">
|
||||
<property name="text">
|
||||
<string notr="true">Enter with the Cross button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layout class="QVBoxLayout" name="systemTabMiddleLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_keyboardType">
|
||||
<property name="title">
|
||||
<string>Keyboard Type</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_keyboardType">
|
||||
<item>
|
||||
<widget class="QComboBox" name="keyboardType"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_console_time">
|
||||
<property name="title">
|
||||
<string>Console Time</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QDateTimeEdit" name="console_time_edit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>10</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LayoutDirection::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="wrapping">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="frame">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::ButtonSymbols::UpDownArrows</enum>
|
||||
</property>
|
||||
<property name="accelerated">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="showGroupSeparator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="calendarPopup">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="console_time_reset">
|
||||
<property name="text">
|
||||
<string>Set to Now</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="systemTabMiddleVerticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="systemTabSpacerWidget3" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="systemTabSpacerWidget4" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="systemTabLayout4" stretch="1,1,1">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_DiskCacheClearing">
|
||||
<property name="title">
|
||||
<string>Disk Cache</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_DiskCacheClearing_layout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableCacheClearing">
|
||||
<property name="text">
|
||||
<string>Clear cache automatically</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="maximumCacheSizeLabel">
|
||||
<property name="text">
|
||||
<string>Cache size: 3072 MB</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="maximumCacheSize">
|
||||
<property name="pageStep">
|
||||
<number>512</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TickPosition::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>1024</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="systemTabSpacerWidget5" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="systemTabSpacerWidget6" native="true"/>
|
||||
<layout class="QVBoxLayout" name="systemTabRightLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_homebrew">
|
||||
<property name="title">
|
||||
<string>Homebrew</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_homebrew_layout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableHostRoot">
|
||||
<property name="text">
|
||||
<string>Enable /host_root/</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="emptyHdd0Tmp">
|
||||
<property name="text">
|
||||
<string>Empty /dev_hdd0/tmp/</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="systemTabRightVerticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue