Merge pull request #21233 from hrydgard/misc-fixes

Fix R-Type saving problem, redesign the run-behind button on the pause screen
This commit is contained in:
Henrik Rydgård
2026-02-10 13:12:09 +01:00
committed by GitHub
20 changed files with 118 additions and 62 deletions
-1
View File
@@ -2869,7 +2869,6 @@ set(NativeAssets
assets/ppge_atlas.zim
assets/ppge_atlas.meta
assets/rargray.png
assets/unknown.png
assets/zip.png
assets/sfx_back.wav
assets/sfx_confirm.wav
+1 -1
View File
@@ -152,7 +152,7 @@ void PathBrowser::HandlePath() {
if (pendingThread_.joinable())
return;
pendingThread_ = std::thread([&] {
pendingThread_ = std::thread([this] {
SetCurrentThreadName("PathBrowser");
AndroidJNIThreadContext jniContext; // destructor detaches
+1 -1
View File
@@ -59,7 +59,7 @@ void GLQueueRunner::CreateDeviceObjects() {
// Populate some strings from the GL thread so they can be queried from thin3d.
// TODO: Merge with GLFeatures.cpp/h
auto populate = [&](int name) {
auto populate = [this](int name) {
const GLubyte *value = glGetString(name);
if (!value)
glStrings_[name] = "?";
+4
View File
@@ -437,6 +437,10 @@ public:
return vulkanDeviceApiVersion_;
}
WindowSystem GetWindowSystem() const {
return winsys_;
}
private:
bool ChooseQueue();
+13
View File
@@ -106,6 +106,19 @@ bool VKRGraphicsPipeline::Create(VulkanContext *vulkan, VkRenderPass compatibleR
VkPipelineInputAssemblyStateCreateInfo inputAssembly{ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO };
inputAssembly.topology = desc->topology;
inputAssembly.primitiveRestartEnable = VK_FALSE;
#if PPSSPP_PLATFORM(MAC)
if (vulkan->GetWindowSystem() == WindowSystem::WINDOWSYSTEM_METAL_EXT) {
if (desc->topology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ||
desc->topology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ||
desc->topology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP) {
// Metal requires primitive restart to be on to not warn - having it off
// simply isn't supported.
inputAssembly.primitiveRestartEnable = VK_TRUE;
}
}
#endif
// We will use dynamic viewport state.
pipe.pVertexInputState = &desc->vis;
+1 -1
View File
@@ -124,7 +124,7 @@ void ConsoleListener::Open() {
}
if (useThread_ && hTriggerEvent != NULL && !thread_.joinable()) {
thread_ = std::thread([&] {
thread_ = std::thread([this] {
SetCurrentThreadName("Console");
LogWriterThread();
});
+2 -2
View File
@@ -129,7 +129,7 @@ void ParallelMemcpy(ThreadManager *threadMan, void *dst, const void *src, size_t
char *d = (char *)dst;
const char *s = (const char *)src;
ParallelRangeLoop(threadMan, [&](int l, int h) {
ParallelRangeLoop(threadMan, [d, s](int l, int h) {
memmove(d + l, s + l, h - l);
}, 0, (int)bytes, 128 * 1024, priority);
}
@@ -145,7 +145,7 @@ void ParallelMemset(ThreadManager *threadMan, void *dst, uint8_t value, size_t b
// unknown's testing showed that 128kB is an appropriate minimum size.
char *d = (char *)dst;
ParallelRangeLoop(threadMan, [&](int l, int h) {
ParallelRangeLoop(threadMan, [d, value](int l, int h) {
memset(d + l, value, h - l);
}, 0, (int)bytes, 128 * 1024, priority);
}
+1 -1
View File
@@ -68,7 +68,7 @@ void ThreadManager::Teardown() {
// Purge any cancellable tasks while the threads shut down.
if (global_->compute_queue_size > 0 || global_->io_queue_size > 0) {
auto drainQueue = [&](std::deque<Task *> queue[TASK_PRIORITY_COUNT], std::atomic<int> &size) {
auto drainQueue = [this](std::deque<Task *> queue[TASK_PRIORITY_COUNT], std::atomic<int> &size) {
for (size_t i = 0; i < TASK_PRIORITY_COUNT; ++i) {
for (auto it = queue[i].begin(); it != queue[i].end(); ++it) {
if (TeardownTask(*it, false)) {
+6 -2
View File
@@ -607,7 +607,9 @@ int SavedataParam::Save(SceUtilitySavedataParam* param, const std::string &saveD
if (param->icon1FileData.buf.IsValid())
{
std::string icon1path = dirPath + "/" + ICON1_FILENAME;
WritePSPFile(icon1path, param->icon1FileData.buf, param->icon1FileData.size);
if (param->icon1FileData.size > 0) {
WritePSPFile(icon1path, param->icon1FileData.buf, param->icon1FileData.size);
}
}
// SAVE PIC1
if (param->pic1FileData.buf.IsValid())
@@ -619,7 +621,9 @@ int SavedataParam::Save(SceUtilitySavedataParam* param, const std::string &saveD
if (param->snd0FileData.buf.IsValid())
{
std::string snd0path = dirPath + "/" + SND0_FILENAME;
WritePSPFile(snd0path, param->snd0FileData.buf, param->snd0FileData.size);
if (param->snd0FileData.size > 0) {
WritePSPFile(snd0path, param->snd0FileData.buf, param->snd0FileData.size);
}
}
return 0;
}
+4 -1
View File
@@ -1387,7 +1387,10 @@ static bool __KernelAllocateVpl(SceUID uid, u32 size, u32 addrPtr, u32 &error, b
VPL *vpl = kernelObjects.Get<VPL>(uid, error);
if (vpl) {
if (size == 0 || size > (u32) vpl->nv.poolSize) {
WARN_LOG(Log::sceKernel, "%s(vpl=%i, size=%i, ptrout=%08x): invalid size", funcname, uid, size, addrPtr);
if (size != 0) {
// Some games do a lot of 0-sized allocations, ignore.
WARN_LOG(Log::sceKernel, "%s(vpl=%i, size=%i, ptrout=%08x): invalid size", funcname, uid, size, addrPtr);
}
error = SCE_KERNEL_ERROR_ILLEGAL_MEMSIZE;
return false;
}
+1 -1
View File
@@ -170,7 +170,7 @@ void OSXOpenURL(const char *url) {
{
GlobalUIState state = GetUIState();
item.enabled = state == UISTATE_INGAME ? YES : NO;
printf("Setting enabled state to %d\n", (int)item.enabled);
// printf("Setting enabled state to %d\n", (int)item.enabled);
break;
}
default:
+7 -10
View File
@@ -630,8 +630,7 @@ public:
} else if (File::Exists(screenshot_jpg)) {
ReadLocalFileToString(screenshot_jpg, &info_->icon.data, &info_->lock);
} else {
// Read standard icon
ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock);
// No icon.
}
}
info_->icon.dataLoaded = true;
@@ -688,9 +687,7 @@ handleELF:
} else if (File::Exists(screenshot_jpg)) {
ReadLocalFileToString(screenshot_jpg, &info_->icon.data, &info_->lock);
} else {
// Read standard icon
VERBOSE_LOG(Log::Loader, "Loading unknown.png because there was an ELF");
ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock);
// No icon
}
info_->icon.dataLoaded = true;
}
@@ -854,13 +851,13 @@ handleELF:
Path screenshot_jpg = GetSysDirectory(DIRECTORY_SCREENSHOT) / (info_->id + "_00000.jpg");
Path screenshot_png = GetSysDirectory(DIRECTORY_SCREENSHOT) / (info_->id + "_00000.png");
// Try using png/jpg screenshots first
if (File::Exists(screenshot_png))
if (File::Exists(screenshot_png)) {
info_->icon.dataLoaded = ReadLocalFileToString(screenshot_png, &info_->icon.data, &info_->lock);
else if (File::Exists(screenshot_jpg))
} else if (File::Exists(screenshot_jpg)) {
info_->icon.dataLoaded = ReadLocalFileToString(screenshot_jpg, &info_->icon.data, &info_->lock);
else {
DEBUG_LOG(Log::Loader, "Loading unknown.png because no icon was found");
info_->icon.dataLoaded = ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock);
} else {
// This should be very rare.
info_->icon.dataLoaded = true;
}
}
}
+2 -2
View File
@@ -187,14 +187,14 @@ void GameScreen::CreateContentViews(UI::ViewGroup *parent) {
if (portrait) {
mainGameInfo = new LinearLayout(ORIENT_VERTICAL);
leftColumn->Add(new Spacer(8.0f));
if (fileTypeHasIcon) {
if (fileTypeHasIcon && !(info_->icon.dataLoaded && info_->icon.data.empty())) {
leftColumn->Add(new GameImageView(gamePath_, GameInfoFlags::ICON, 2.0f, new LinearLayoutParams(UI::Margins(0))));
}
leftColumn->Add(mainGameInfo);
} else {
mainGameInfo = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f));
ViewGroup *badgeHolder = new LinearLayout(ORIENT_HORIZONTAL);
if (fileTypeHasIcon) {
if (fileTypeHasIcon && !(info_->icon.dataLoaded && info_->icon.data.empty())) {
badgeHolder->Add(new GameImageView(gamePath_, GameInfoFlags::ICON, 2.0f, new LinearLayoutParams(144 * 2, 80 * 2, UI::Margins(0))));
}
badgeHolder->Add(mainGameInfo);
+12 -6
View File
@@ -99,7 +99,14 @@ void InstallZipScreen::CreateSettingsViews(UI::ViewGroup *parent) {
default:
// Nothing to do!
break;
}
}
if (System_GetPropertyBool(SYSPROP_CAN_SHOW_FILE)) {
parent->Add(new Spacer(12.0f));
parent->Add(new Choice(di->T("Show in folder")))->OnClick.Add([this](UI::EventParams &) {
System_ShowFileInFolder(zipPath_);
});
}
if (showDeleteCheckbox) {
parent->Add(new Spacer(12.0f));
@@ -168,8 +175,6 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
leftColumn->Add(new TextView(question));
leftColumn->Add(new TextView(shortFilename));
doneView_ = leftColumn->Add(new TextView(""));
showDeleteCheckbox = true;
break;
}
@@ -188,7 +193,6 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
destFolders_.push_back(savestateDir);
// TODO: Use the GameInfoCache to display data about the game if available.
doneView_ = leftColumn->Add(new TextView(""));
showDeleteCheckbox = true;
break;
}
@@ -230,7 +234,6 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
}
}
doneView_ = leftColumn->Add(new TextView(""));
showDeleteCheckbox = true;
break;
}
@@ -244,13 +247,17 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
leftColumn->Add(new TextView(er->T("File format not supported")));
break;
case ZipFileContents::UNKNOWN:
leftColumn->Add(new TextView(GetFriendlyPath(zipPath_)));
leftColumn->Add(new TextView(iz->T("Zip file does not contain PSP software"), ALIGN_LEFT, false, new AnchorLayoutParams(10, 10, NONE, NONE)));
break;
default:
leftColumn->Add(new TextView(GetFriendlyPath(zipPath_)));
leftColumn->Add(new TextView(er->T("The file is not a valid zip file"), ALIGN_LEFT, false, new AnchorLayoutParams(10, 10, NONE, NONE)));
break;
}
doneView_ = leftColumn->Add(new TextView(""));
if (destFolders_.size() > 1) {
leftColumn->Add(new TextView(iz->T("Install into folder")));
for (int i = 0; i < (int)destFolders_.size(); i++) {
@@ -260,7 +267,6 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
leftColumn->Add(new TextView(iz->T("Install into folder")));
leftColumn->Add(new TextView(GetFriendlyPath(destFolders_[0])))->SetAlign(FLAG_WRAP_TEXT);
}
if (overwrite) {
leftColumn->Add(new NoticeView(NoticeLevel::WARN, di->T("Confirm Overwrite"), ""));
}
+10 -3
View File
@@ -292,8 +292,10 @@ void GameButton::Draw(UIContext &dc) {
// Some types we just draw a default icon for.
ImageID imageIcon = ImageID::invalid();
bool drawBackground = true;
switch (ginfo->fileType) {
case IdentifiedFileType::UNKNOWN_ELF: imageIcon = ImageID("I_DEBUGGER"); break;
case IdentifiedFileType::PSP_ELF: imageIcon = ImageID("I_DEBUGGER"); drawBackground = false; break;
case IdentifiedFileType::UNKNOWN_ELF: imageIcon = ImageID("I_CROSS"); drawBackground = false; break;
case IdentifiedFileType::PPSSPP_GE_DUMP: imageIcon = ImageID("I_DISPLAY"); break;
case IdentifiedFileType::PSX_ISO:
case IdentifiedFileType::PSP_PS1_PBP: imageIcon = ImageID("I_PSX_ISO"); break;
@@ -323,8 +325,13 @@ void GameButton::Draw(UIContext &dc) {
}
}
if (ginfo->Ready(GameInfoFlags::ICON) && ginfo->icon.texture) {
texture = ginfo->icon.texture;
if (ginfo->Ready(GameInfoFlags::ICON)) {
if (ginfo->icon.texture && drawBackground) {
texture = ginfo->icon.texture;
} else if (drawBackground) {
// No icon, but drawBackground is set. Let's show a plain icon.
imageIcon = ImageID("I_APP");
}
}
int x = bounds_.x;
+2 -2
View File
@@ -670,10 +670,10 @@ void GamePauseScreen::CreateViews() {
if (middleColumn) {
middleColumn->SetSpacing(portrait ? 8.0f : 0.0f);
playButton_ = middleColumn->Add(new Choice(g_Config.bRunBehindPauseMenu ? ImageID("I_PAUSE") : ImageID("I_PLAY"), new LinearLayoutParams(64, 64)));
playButton_ = middleColumn->Add(new Choice(g_Config.bRunBehindPauseMenu ? ImageID("I_PAUSE_LINE") : ImageID("I_PLAY_LINE"), new LinearLayoutParams(64, 64)));
playButton_->OnClick.Add([this](UI::EventParams &e) {
g_Config.bRunBehindPauseMenu = !g_Config.bRunBehindPauseMenu;
playButton_->SetIconLeft(g_Config.bRunBehindPauseMenu ? ImageID("I_PAUSE") : ImageID("I_PLAY"));
playButton_->SetIconLeft(g_Config.bRunBehindPauseMenu ? ImageID("I_PAUSE_LINE") : ImageID("I_PLAY_LINE"));
});
bool mustRunBehind = MustRunBehind();
+4 -1
View File
@@ -121,8 +121,10 @@ static const ImageMeta imageIDs[] = {
{"I_ACHIEVEMENT", false},
{"I_CHECKMARK", false},
{"I_PLAY", false},
{"I_STOP", false},
{"I_PAUSE", false},
{"I_STOP", false},
{"I_PLAY_LINE", false},
{"I_PAUSE_LINE", false},
{"I_FAST_FORWARD", false},
{"I_FAST_FORWARD_LINE", false},
{"I_RECORD", false},
@@ -177,6 +179,7 @@ static const ImageMeta imageIDs[] = {
{"I_PS3_ISO", false},
{"I_UNKNOWN_ISO", false},
{"I_UMD_VIDEO_ISO", false},
{"I_APP", false},
};
static std::string PNGNameFromID(std::string_view id) {
-1
View File
@@ -1,7 +1,6 @@
mkdir -p assets
cp ../assets/7z.png assets/
cp ../assets/rargray.png assets/
cp ../assets/unknown.png assets/
cp ../assets/zip.png assets/
cp ../assets/*.zim assets/
cp ../assets/*.meta assets/
+47 -26
View File
@@ -24,9 +24,9 @@
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="5.656855"
inkscape:cx="359.29859"
inkscape:cy="610.32146"
inkscape:zoom="2.8284275"
inkscape:cx="173.06436"
inkscape:cy="581.41847"
inkscape:window-width="3840"
inkscape:window-height="2071"
inkscape:window-x="-9"
@@ -2839,14 +2839,14 @@
inkscape:groupmode="layer"
id="layer1"><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.396487"
d="M 15.870258,3.5940915 12.59592,6.8684261 9.3226219,3.5951295 8.5639718,4.3537784 11.83727,7.6270759 8.5639718,10.900373 9.3236607,11.66006 12.596959,8.3867629 15.870258,11.66006 16.628904,10.901411 13.355606,7.6281139 16.629943,4.3537784 Z"
d="M 8.9479791,1.5361167 5.6736411,4.8104513 2.400343,1.5371547 1.6416929,2.2958036 4.9149911,5.5691011 1.6416929,8.8423982 2.4013818,9.6020852 5.6746801,6.3287881 8.9479791,9.6020852 9.7066251,8.8434362 6.4333271,5.5701391 9.7076641,2.2958036 Z"
id="I_CROSS"
inkscape:connector-curvature="0"
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\cross.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135" /><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.396487"
d="M 33.301593,3.7606885 31.06897,7.6270764 28.836348,11.493463 h 4.465245 4.464135 L 35.533101,7.6270764 Z m 0,1.7330164 1.467601,2.5660673 1.467596,2.5546668 h -2.935197 -2.935198 l 1.467601,-2.5546668 z"
d="m 15.995896,1.6091694 -2.232623,3.8663879 -2.232622,3.8663866 h 4.465245 4.464135 L 18.227404,5.4755573 Z m 0,1.7330164 1.467601,2.5660673 1.467596,2.5546668 h -2.935197 -2.935198 l 1.467601,-2.5546668 z"
id="I_TRIANGLE"
inkscape:connector-curvature="0"
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\triangle.png"
@@ -2854,20 +2854,20 @@
inkscape:export-ydpi="135"
sodipodi:nodetypes="cccccccccccccc" /><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.396487"
d="m 47.59628,16.272613 c -2.351021,0 -4.257025,1.906002 -4.257025,4.257024 0,2.351023 1.906004,4.257023 4.257025,4.257023 2.351023,0 4.256175,-1.906 4.256175,-4.257023 0,-2.351022 -1.905152,-4.257024 -4.256175,-4.257024 z m 0,0.956826 c 1.822585,0 3.299345,1.477616 3.299345,3.300198 0,1.822581 -1.47676,3.300199 -3.299345,3.300199 -1.822579,0 -3.300199,-1.477618 -3.300199,-3.300199 0,-1.822582 1.47762,-3.300198 3.300199,-3.300198 z"
d="m 26.268177,1.211979 c -2.351021,0 -4.257025,1.906002 -4.257025,4.257024 0,2.351023 1.906004,4.257023 4.257025,4.257023 2.351023,0 4.256175,-1.906 4.256175,-4.257023 0,-2.351022 -1.905152,-4.257024 -4.256175,-4.257024 z m 0,0.956826 c 1.822585,0 3.299345,1.477616 3.299345,3.300198 0,1.822581 -1.47676,3.300199 -3.299345,3.300199 -1.822579,0 -3.300199,-1.477618 -3.300199,-3.300199 0,-1.822582 1.47762,-3.300198 3.300199,-3.300198 z"
id="I_CIRCLE"
inkscape:connector-curvature="0"
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\circle.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135" /><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.396487"
d="m 8.7736645,29.092527 v 7.74966 H 16.42025 v -7.74966 z m 0.9898933,1.003109 H 15.43134 v 5.743446 H 9.7635578 Z"
d="m 32.066198,1.6840441 v 7.74966 h 7.646585 v -7.74966 z m 0.989893,1.003109 h 5.667782 v 5.743446 h -5.667782 z"
id="I_SQUARE"
inkscape:connector-curvature="0"
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\square.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135" /><g
transform="matrix(0.38834816,0,0,0.38834816,-58.906463,-102.65437)"
transform="matrix(0.28696629,0,0,0.28696629,-72.723168,-65.561289)"
id="I_PAUSE"
inkscape:export-xdpi="133.41901"
inkscape:export-ydpi="133.41901"><rect
@@ -2885,12 +2885,12 @@
width="6.9374599"
id="rect1486"
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /></g><rect
y="57.065887"
x="61.483982"
height="7.3807669"
width="7.2528906"
y="12.335679"
x="11.510705"
height="6.8515606"
width="6.7328534"
id="I_STOP"
style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.447135;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.415076;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
inkscape:export-xdpi="133.41901"
inkscape:export-ydpi="133.41901" /><path
sodipodi:type="star"
@@ -2907,15 +2907,14 @@
inkscape:rounded="0"
inkscape:randomized="0"
d="m 316.11425,256.84814 -21.9904,12.69617 v -25.39233 z"
inkscape:transform-center-x="-4.3344542"
inkscape:transform-center-x="-4.3344562"
inkscape:export-xdpi="133.41901"
inkscape:export-ydpi="133.41901"
transform="matrix(0.31300187,0,0,0.31300187,-19.276629,-19.575332)"
inkscape:transform-center-y="-1.3916016e-06" /><g
transform="matrix(0.31300187,0,0,0.31300187,-71.661441,-64.476599)" /><g
id="I_FAST_FORWARD"
inkscape:export-xdpi="133.41901"
inkscape:export-ydpi="133.41901"
transform="matrix(0.32773772,0,0,0.32773772,-23.661698,-22.653247)"><path
transform="matrix(0.32773772,0,0,0.32773772,-67.159802,-79.995909)"><path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path1465"
@@ -2930,9 +2929,9 @@
sodipodi:nodetypes="cccc" /></g><circle
inkscape:export-ydpi="133.41901"
inkscape:export-xdpi="133.41901"
r="4.1601806"
cx="65.090309"
cy="74.545425"
r="4.0666361"
cx="6.0638494"
cy="25.715296"
id="I_RECORD"
style="vector-effect:none;fill:#e33c17;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /><g
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
@@ -2940,7 +2939,7 @@
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\select.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135"
transform="matrix(0.39591946,0,0,0.39591946,-31.807215,-5.2734535)"><path
transform="matrix(0.39591946,0,0,0.39591946,-32.555569,11.096801)"><path
d="m 89.179947,66.471458 1.072266,-0.09375 c 0.05078,0.42969 0.168943,0.782229 0.354492,1.057618 0.185544,0.275392 0.47363,0.498048 0.864258,0.667968 0.390621,0.169923 0.830074,0.254884 1.318359,0.254883 0.433589,10e-7 0.816401,-0.06445 1.148437,-0.193359 0.332026,-0.128905 0.579096,-0.305663 0.741211,-0.530274 0.162104,-0.224607 0.243158,-0.469724 0.243164,-0.735351 -6e-6,-0.269529 -0.07813,-0.50488 -0.234375,-0.706055 -0.156255,-0.201169 -0.414068,-0.370114 -0.773437,-0.506836 -0.230474,-0.08984 -0.740239,-0.229488 -1.529297,-0.418945 -0.789065,-0.189449 -1.341799,-0.36816 -1.658203,-0.536133 -0.410158,-0.214839 -0.715822,-0.48144 -0.916992,-0.799805 -0.201173,-0.318353 -0.301759,-0.674798 -0.301758,-1.069336 -10e-7,-0.433587 0.123046,-0.83886 0.369141,-1.21582 0.246092,-0.376945 0.605466,-0.663078 1.078125,-0.858398 0.472653,-0.195304 0.998043,-0.29296 1.576171,-0.292969 0.636715,9e-6 1.198237,0.102548 1.684571,0.307617 0.486322,0.205086 0.860345,0.506844 1.12207,0.905274 0.261712,0.398444 0.402337,0.849616 0.421875,1.353515 l -1.089844,0.08203 c -0.0586,-0.542962 -0.256841,-0.953118 -0.594726,-1.230468 -0.337896,-0.277336 -0.836919,-0.416008 -1.497071,-0.416016 -0.687503,8e-6 -1.188479,0.125984 -1.502929,0.37793 -0.314456,0.25196 -0.471682,0.555671 -0.47168,0.911133 -2e-6,0.308599 0.111326,0.562505 0.333984,0.761718 0.218748,0.199225 0.790036,0.403326 1.713868,0.612305 0.923823,0.208989 1.557611,0.391606 1.901367,0.547852 0.499993,0.230473 0.869134,0.522464 1.107422,0.875976 0.238274,0.353519 0.357414,0.760745 0.357422,1.22168 -8e-6,0.457033 -0.130867,0.887697 -0.392579,1.291992 -0.261725,0.404298 -0.637701,0.71875 -1.127929,0.943359 -0.49024,0.22461 -1.041997,0.336914 -1.655274,0.336914 -0.777347,0 -1.428713,-0.113281 -1.954101,-0.339843 -0.525393,-0.226562 -0.937502,-0.567382 -1.236328,-1.022461 -0.298829,-0.455077 -0.456056,-0.969725 -0.47168,-1.543946 z"
style="font-size:12px;line-height:125%;fill:#ffffff;fill-opacity:1"
id="path3940" /><path
@@ -2964,7 +2963,7 @@
inkscape:export-filename="C:\dev\ppsspp\source_assets\image\start.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135"
transform="matrix(0.39591946,0,0,0.39591946,-9.6835057,-10.756771)"><path
transform="matrix(0.39591946,0,0,0.39591946,-10.43186,5.6134833)"><path
d="m 89.273987,80.321037 1.072265,-0.09375 c 0.05078,0.42969 0.168944,0.782229 0.354493,1.057617 0.185544,0.275393 0.47363,0.498049 0.864257,0.667969 0.390622,0.169923 0.830075,0.254884 1.31836,0.254883 0.433589,10e-7 0.816401,-0.06445 1.148437,-0.193359 0.332026,-0.128905 0.579096,-0.305663 0.741211,-0.530274 0.162103,-0.224607 0.243158,-0.469724 0.243164,-0.735351 -6e-6,-0.269529 -0.07813,-0.50488 -0.234375,-0.706055 -0.156256,-0.201169 -0.414068,-0.370114 -0.773437,-0.506836 -0.230474,-0.08984 -0.740239,-0.229488 -1.529297,-0.418945 -0.789066,-0.189449 -1.341799,-0.36816 -1.658203,-0.536133 -0.410158,-0.214839 -0.715822,-0.48144 -0.916992,-0.799805 -0.201173,-0.318354 -0.301759,-0.674798 -0.301758,-1.069336 -1e-6,-0.433587 0.123046,-0.83886 0.36914,-1.21582 0.246093,-0.376945 0.605467,-0.663078 1.078125,-0.858398 0.472654,-0.195304 0.998044,-0.29296 1.576172,-0.292969 0.636715,9e-6 1.198237,0.102547 1.684571,0.307617 0.486322,0.205086 0.860345,0.506844 1.12207,0.905273 0.261712,0.398445 0.402337,0.849616 0.421875,1.353516 l -1.089844,0.08203 c -0.0586,-0.542962 -0.256842,-0.953118 -0.594726,-1.230468 -0.337896,-0.277337 -0.836919,-0.416008 -1.497071,-0.416016 -0.687503,8e-6 -1.188479,0.125984 -1.502929,0.37793 -0.314456,0.25196 -0.471682,0.55567 -0.47168,0.911132 -2e-6,0.3086 0.111326,0.562506 0.333984,0.761719 0.218748,0.199224 0.790036,0.403326 1.713868,0.612305 0.923823,0.208989 1.557611,0.391606 1.901367,0.547851 0.499993,0.230473 0.869134,0.522465 1.107422,0.875977 0.238274,0.353519 0.357414,0.760745 0.357421,1.22168 -7e-6,0.457033 -0.130866,0.887697 -0.392578,1.291992 -0.261725,0.404297 -0.637701,0.71875 -1.127929,0.943359 -0.49024,0.22461 -1.041997,0.336914 -1.655274,0.336914 -0.777347,0 -1.428714,-0.113281 -1.954101,-0.339843 -0.525393,-0.226563 -0.937502,-0.567383 -1.236328,-1.022461 -0.298829,-0.455077 -0.456056,-0.969725 -0.47168,-1.543946 z"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
id="path3929"
@@ -3030,7 +3029,7 @@
inkscape:export-ydpi="135"
inkscape:export-xdpi="135"
style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:23.3029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
transform="matrix(-0.00878851,0,0,0.00878851,37.880701,28.573102)"
transform="matrix(-0.00878851,0,0,0.00878851,52.473613,18.283228)"
id="I_ROTATE_RIGHT"><path
sodipodi:nodetypes="ccsssscccsccsscssscccccccscsscc"
style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:23.3029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
@@ -4355,11 +4354,11 @@
id="path3-5"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0196305" /><path
class="st0"
d="m 16.377843,157.05281 v -0.6842 l -1.562555,1.04183 1.562555,0.91158 v -0.57043 c 0.805269,0.0887 1.526259,0.45089 2.070407,0.99451 0.628914,0.62942 1.016867,1.49539 1.017055,2.45548 h 0.694538 c -1.77e-4,-2.17163 -1.661056,-3.9541 -3.782,-4.14877 z"
d="m 16.003666,157.05281 v -0.6842 l -1.562555,1.04183 1.562555,0.91158 v -0.57043 c 0.805269,0.0887 1.526259,0.45089 2.070407,0.99451 0.628914,0.62942 1.016867,1.49539 1.017055,2.45548 h 0.694538 c -1.77e-4,-2.17163 -1.661056,-3.9541 -3.782,-4.14877 z"
id="path115"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.018787" /><path
class="st0"
d="m 15.654148,164.60529 c -1.73874,-0.16787 -3.110006,-1.6214 -3.133923,-3.40846 l -0.694537,0.01 c 0.03,2.17129 1.714486,3.93038 3.837778,4.09638 l 0.0093,0.68486 1.548315,-1.063 -1.574766,-0.89023 z"
d="m 15.279971,164.60529 c -1.73874,-0.16787 -3.110006,-1.6214 -3.133923,-3.40846 l -0.694537,0.01 c 0.03,2.17129 1.714486,3.93038 3.837778,4.09638 l 0.0093,0.68486 1.548315,-1.063 -1.574766,-0.89023 z"
id="path116"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.018787" /><g
id="I_DEVICE_ROTATION_PORTRAIT"><path
@@ -4510,7 +4509,29 @@
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#ffffff;enable-background:accumulate;stop-color:#000000"
d="m 103.6944,169.98647 c -3.57727,-3e-5 -6.484387,2.90709 -6.484357,6.48436 4e-5,1.63519 0.61594,3.20064 1.71049,4.39043 l 0.49455,-0.45475 c -0.98124,-1.06663 -1.53527,-2.46925 -1.53531,-3.93568 -3e-5,-3.21473 2.599907,-5.81259 5.814627,-5.81256 3.21473,-3e-5 5.81208,2.59783 5.81205,5.81256 -4e-5,1.46643 -0.55149,2.86905 -1.53272,3.93568 l 0.49196,0.45475 c 1.09454,-1.18979 1.71303,-2.75524 1.71307,-4.39043 3e-5,-3.57727 -2.90708,-6.48439 -6.48436,-6.48436 z m 0,4.3124 c -1.19596,0 -2.17196,0.97599 -2.17196,2.17196 0,1.19597 0.97599,2.17403 2.17196,2.17403 1.19597,0 2.17145,-0.97806 2.17145,-2.17403 -10e-6,-1.19597 -0.97548,-2.17196 -2.17145,-2.17196 z m 0,0.64647 c 0.84696,0 1.52497,0.67853 1.52497,1.52549 0,0.84696 -0.678,1.52756 -1.52497,1.52756 -0.84696,0 -1.52755,-0.6806 -1.52755,-1.52756 0,-0.84696 0.68059,-1.52549 1.52755,-1.52549 z m 1.79266,4.4726 c -0.11816,0 -0.40677,0.008 -0.8661,0.0243 v 3.24321 h 0.72037 c 1.12395,0 1.68568,-0.58299 1.68568,-1.74976 0,-0.45786 -0.13884,-0.82504 -0.41651,-1.10123 -0.27618,-0.27766 -0.65082,-0.41651 -1.12344,-0.41651 z m -5.26996,0.0222 1.21387,3.28972 h 0.31678 l 1.26711,-3.28972 h -0.62012 l -0.79323,2.19315 -0.75086,-2.19315 z m 3.15226,0 v 3.24528 h 0.57619 v -3.24528 z m 2.09134,0.48938 c 0.64542,0 0.9679,0.34712 0.9679,1.04128 0,0.37957 -0.0826,0.67505 -0.24805,0.88625 -0.16394,0.2112 -0.39117,0.31677 -0.68212,0.31677 -0.10782,0 -0.20823,-0.005 -0.30128,-0.0134 v -2.21537 c 0.11376,-0.0103 0.20155,-0.0155 0.26355,-0.0155 z" /><g
id="g136"
transform="translate(-20.532976,-0.65480973)" /></g><path
transform="translate(-20.532976,-0.65480973)" /><path
id="I_PLAY_LINE"
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#ffffff;marker:none;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1"
d="M 292.9911 242.18932 L 292.9911 271.50852 L 318.38001 256.84803 L 292.9911 242.18932 z M 295.25714 246.11604 L 313.84794 256.84803 L 295.25714 267.58001 L 295.25714 246.11604 z "
transform="matrix(0.28939228,0,0,0.28939228,-71.987562,-48.216188)" /><g
transform="matrix(0.28696629,0,0,0.28696629,-53.078863,-55.458503)"
id="I_PAUSE_LINE"
inkscape:export-xdpi="133.41901"
inkscape:export-ydpi="133.41901"
style="stroke:#ffffff;stroke-opacity:1;fill:none;stroke-width:1.92237277;stroke-dasharray:none"><path
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#ffffff;stroke:none;marker:none;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1"
d="m 262.23828,244.68945 v 28.26953 h 9.06836 v -28.26953 z m 2.13086,2.13086 h 4.80664 v 24.00586 h -4.80664 z"
id="rect118"
transform="matrix(0.9517119,0,0,0.85404454,13.366799,63.169462)" /><path
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#ffffff;stroke:none;marker:none;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1"
d="m 262.23828,244.68945 v 28.26953 h 9.06836 v -28.26953 z m 2.13086,2.13086 h 4.80664 v 24.00586 h -4.80664 z"
id="rect119"
transform="matrix(0.9517119,0,0,0.85404454,27.341328,63.169462)" /></g><g
id="g143"
transform="translate(-37.785833,89.847195)" /><path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"
d="m 21.130025,157.71074 v 9.26041 h 9.260417 v -9.26041 z m 0.79375,0.52916 h 4.233334 v 0.72761 h -4.233334 z m 0,1.32292 h 7.672917 v 6.61458 h -7.672917 z"
id="I_APP" /></g><path
id="I_GEAR"
style="fill:#ececec;fill-opacity:1;stroke-width:0.019487"
class="st0"

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB