UI tweaks. Change to cleaner background image.
1
.gitignore
vendored
@ -23,6 +23,7 @@ Debug
|
||||
Release
|
||||
Windows/x64
|
||||
Windows/ipch
|
||||
ui_atlas.zim.png
|
||||
|
||||
# For Mac
|
||||
.DS_Store
|
||||
|
@ -57,11 +57,11 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename)
|
||||
general->Get("ConfirmOnQuit", &bConfirmOnQuit, false);
|
||||
general->Get("IgnoreBadMemAccess", &bIgnoreBadMemAccess, true);
|
||||
general->Get("CurrentDirectory", ¤tDirectory, "");
|
||||
general->Get("ShowDebuggerOnLoad", &bShowDebuggerOnLoad, false);
|
||||
general->Get("DebuggerOnLoad", &bShowDebuggerOnLoad, false);
|
||||
general->Get("Language", &languageIni, "en_US");
|
||||
general->Get("NumWorkerThreads", &iNumWorkerThreads, cpu_info.num_cores);
|
||||
general->Get("EnableCheats", &bEnableCheats, false);
|
||||
general->Get("MaxRecent", &iMaxRecent, 12);
|
||||
general->Get("MaxRecent", &iMaxRecent, 30);
|
||||
general->Get("ScreenshotsAsPNG", &bScreenshotsAsPNG, false);
|
||||
general->Get("StateSlot", &iCurrentStateSlot, 0);
|
||||
general->Get("GridView1", &bGridView1, true);
|
||||
|
@ -215,6 +215,7 @@ void __DisplayFireVblank() {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Also average actualFps
|
||||
void __DisplayGetFPS(float *out_vps, float *out_fps, float *out_actual_fps) {
|
||||
*out_vps = fps;
|
||||
*out_fps = flips;
|
||||
@ -240,8 +241,7 @@ void CalculateFPS() {
|
||||
time_update();
|
||||
double now = time_now_d();
|
||||
|
||||
if (now >= lastFpsTime + 1.0)
|
||||
{
|
||||
if (now >= lastFpsTime + 1.0) {
|
||||
double frames = (gpuStats.numVBlanks - lastFpsFrame);
|
||||
actualFps = (actualFlips - lastActualFlips);
|
||||
|
||||
@ -433,6 +433,10 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
||||
// non-buffered rendering. The interaction with frame skipping seems to need
|
||||
// some work.
|
||||
if (gpu->FramebufferDirty()) {
|
||||
if (g_Config.iShowFPSCounter) {
|
||||
CalculateFPS();
|
||||
}
|
||||
|
||||
// Setting CORE_NEXTFRAME causes a swap.
|
||||
// Check first though, might've just quit / been paused.
|
||||
if (gpu->FramebufferReallyDirty()) {
|
||||
@ -501,6 +505,7 @@ u32 sceDisplaySetMode(int displayMode, int displayWidth, int displayHeight) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Some games (GTA) never call this during gameplay, so bad place to put a framerate counter.
|
||||
u32 sceDisplaySetFramebuf(u32 topaddr, int linesize, int pixelformat, int sync) {
|
||||
FrameBufferState fbstate;
|
||||
DEBUG_LOG(HLE,"sceDisplaySetFramebuf(topaddr=%08x,linesize=%d,pixelsize=%d,sync=%d)", topaddr, linesize, pixelformat, sync);
|
||||
@ -512,10 +517,6 @@ u32 sceDisplaySetFramebuf(u32 topaddr, int linesize, int pixelformat, int sync)
|
||||
fbstate.pspFramebufLinesize = linesize;
|
||||
}
|
||||
|
||||
if (g_Config.iShowFPSCounter) {
|
||||
CalculateFPS();
|
||||
}
|
||||
|
||||
if (topaddr != framebuf.topaddr) {
|
||||
if (g_Config.iForceMaxEmulatedFPS) {
|
||||
u64 now = CoreTiming::GetTicks();
|
||||
|
@ -213,7 +213,7 @@ void KeyMappingNewKeyDialog::CreatePopupContents(UI::ViewGroup *parent) {
|
||||
|
||||
std::string pspButtonName = KeyMap::GetPspButtonName(this->pspBtn_);
|
||||
|
||||
parent->Add(new TextView(std::string(keyI18N->T("Map a new key for ")) + pspButtonName));
|
||||
parent->Add(new TextView(std::string(keyI18N->T("Map a new key for ")) + pspButtonName, new LinearLayoutParams(Margins(10,0))));
|
||||
}
|
||||
|
||||
void KeyMappingNewKeyDialog::key(const KeyInput &key) {
|
||||
@ -221,6 +221,11 @@ void KeyMappingNewKeyDialog::key(const KeyInput &key) {
|
||||
if (key.keyCode == NKCODE_EXT_MOUSEBUTTON_1) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.keyCode == NKCODE_ESCAPE) {
|
||||
screenManager()->finishDialog(this, DR_CANCEL);
|
||||
return;
|
||||
}
|
||||
|
||||
KeyDef kdf(key.deviceId, key.keyCode);
|
||||
screenManager()->finishDialog(this, DR_OK);
|
||||
|
@ -34,7 +34,8 @@ private:
|
||||
|
||||
class KeyMappingNewKeyDialog : public PopupScreen {
|
||||
public:
|
||||
explicit KeyMappingNewKeyDialog(int btn, bool replace, std::function<void(KeyDef)> callback) : PopupScreen("Map Key"), callback_(callback) {
|
||||
explicit KeyMappingNewKeyDialog(int btn, bool replace, std::function<void(KeyDef)> callback)
|
||||
: PopupScreen("Map Key", "Cancel", ""), callback_(callback) {
|
||||
pspBtn_ = btn;
|
||||
}
|
||||
|
||||
@ -45,7 +46,7 @@ protected:
|
||||
void CreatePopupContents(UI::ViewGroup *parent);
|
||||
|
||||
virtual bool FillVertical() { return false; }
|
||||
virtual bool ShowButtons() { return false; }
|
||||
virtual bool ShowButtons() { return true; }
|
||||
virtual void OnCompleted(DialogResult result) {}
|
||||
|
||||
private:
|
||||
|
@ -510,7 +510,7 @@ void EmuScreen::render() {
|
||||
case 2:
|
||||
sprintf(fpsbuf, "FPS: %0.1f", actual_fps); break;
|
||||
case 3:
|
||||
sprintf(fpsbuf, "%0.1f/%0.0f (%0.1f%%)", actual_fps, fps, vps / 60.0f * 100.0f); break;
|
||||
sprintf(fpsbuf, "%0.0f/%0.0f (%0.1f%%)", actual_fps, fps, vps / 60.0f * 100.0f); break;
|
||||
}
|
||||
ui_draw2d.SetFontScale(0.7f, 0.7f);
|
||||
ui_draw2d.DrawText(UBUNTU24, fpsbuf, dp_xres - 8, 12, 0xc0000000, ALIGN_TOPRIGHT);
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "file/zip_read.h"
|
||||
#include "image/png_load.h"
|
||||
#include "thread/prioritizedworkqueue.h"
|
||||
#include "Common/StringUtils.h"
|
||||
#include "GameInfoCache.h"
|
||||
#include "Core/FileSystems/ISOFileSystem.h"
|
||||
#include "Core/FileSystems/DirectoryFileSystem.h"
|
||||
@ -286,9 +287,14 @@ public:
|
||||
ReadFileToString(&umd, "/PSP_GAME/PIC1.PNG", &info_->pic1TextureData, &info_->lock);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
;
|
||||
{
|
||||
std::string fn, ext;
|
||||
SplitPath(gamePath_, 0, &fn, &ext);
|
||||
info_->title = fn + "." + ext;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// probably only want these when we ask for the background image...
|
||||
// should maybe flip the flag to "onlyIcon"
|
||||
|
@ -221,7 +221,8 @@ void GameSettingsScreen::CreateViews() {
|
||||
|
||||
// Graphics
|
||||
ViewGroup *graphicsSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
ViewGroup *graphicsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *graphicsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
graphicsSettings->SetSpacing(0);
|
||||
graphicsSettingsScroll->Add(graphicsSettings);
|
||||
tabHolder->AddTab(ms->T("Graphics"), graphicsSettingsScroll);
|
||||
|
||||
@ -282,7 +283,8 @@ void GameSettingsScreen::CreateViews() {
|
||||
|
||||
// Audio
|
||||
ViewGroup *audioSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
ViewGroup *audioSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *audioSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
audioSettings->SetSpacing(0);
|
||||
audioSettingsScroll->Add(audioSettings);
|
||||
tabHolder->AddTab(ms->T("Audio"), audioSettingsScroll);
|
||||
|
||||
@ -292,13 +294,14 @@ void GameSettingsScreen::CreateViews() {
|
||||
|
||||
audioSettings->Add(new PopupSliderChoice(&g_Config.iSFXVolume, 0, 8, a->T("SFX volume"), screenManager()));
|
||||
audioSettings->Add(new PopupSliderChoice(&g_Config.iBGMVolume, 0, 8, a->T("BGM volume"), screenManager()));
|
||||
|
||||
|
||||
audioSettings->Add(new CheckBox(&g_Config.bEnableSound, a->T("Enable Sound")));
|
||||
audioSettings->Add(new CheckBox(&g_Config.bEnableAtrac3plus, a->T("Enable Atrac3+")));
|
||||
|
||||
// Control
|
||||
ViewGroup *controlsSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
ViewGroup *controlsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *controlsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
controlsSettings->SetSpacing(0);
|
||||
controlsSettingsScroll->Add(controlsSettings);
|
||||
tabHolder->AddTab(ms->T("Controls"), controlsSettingsScroll);
|
||||
controlsSettings->Add(new Choice(gs->T("Control Mapping")))->OnClick.Handle(this, &GameSettingsScreen::OnControlMapping);
|
||||
@ -310,7 +313,8 @@ void GameSettingsScreen::CreateViews() {
|
||||
|
||||
// System
|
||||
ViewGroup *systemSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
ViewGroup *systemSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *systemSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||
systemSettings->SetSpacing(0);
|
||||
systemSettingsScroll->Add(systemSettings);
|
||||
tabHolder->AddTab(ms->T("System"), systemSettingsScroll);
|
||||
|
||||
@ -433,6 +437,7 @@ void GlobalSettingsScreen::CreateViews() {
|
||||
I18NCategory *gs = GetI18NCategory("Graphics");
|
||||
|
||||
LinearLayout *list = root_->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f)));
|
||||
list->SetSpacing(0);
|
||||
list->Add(new ItemHeader(g->T("General")));
|
||||
list->Add(new CheckBox(&enableReports_, s->T("Enable Compatibility Server Reports")));
|
||||
#ifndef ANDROID
|
||||
@ -508,6 +513,7 @@ void DeveloperToolsScreen::CreateViews() {
|
||||
I18NCategory *a = GetI18NCategory("Audio");
|
||||
|
||||
LinearLayout *list = root_->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f)));
|
||||
list->SetSpacing(0);
|
||||
list->Add(new ItemHeader(g->T("General")));
|
||||
list->Add(new Choice(g->T("System Information")))->OnClick.Handle(this, &DeveloperToolsScreen::OnSysInfo);
|
||||
list->Add(new Choice(d->T("Run CPU Tests")))->OnClick.Handle(this, &DeveloperToolsScreen::OnRunCPUTests);
|
||||
@ -515,6 +521,7 @@ void DeveloperToolsScreen::CreateViews() {
|
||||
list->Add(new CheckBox(&g_Config.bSoftwareRendering, gs->T("Software Rendering", "Software Rendering (experimental)")));
|
||||
#endif
|
||||
list->Add(new CheckBox(&enableLogging_, d->T("Enable Logging")))->OnClick.Handle(this, &DeveloperToolsScreen::OnLoggingChanged);
|
||||
list->Add(new ItemHeader(g->T("Language")));
|
||||
list->Add(new Choice(d->T("Load language ini")))->OnClick.Handle(this, &DeveloperToolsScreen::OnLoadLanguageIni);
|
||||
list->Add(new Choice(d->T("Save language ini")))->OnClick.Handle(this, &DeveloperToolsScreen::OnSaveLanguageIni);
|
||||
list->Add(new Choice(g->T("Back")))->OnClick.Handle(this, &DeveloperToolsScreen::OnBack);
|
||||
|
@ -150,12 +150,14 @@ void GameButton::Draw(UIContext &dc) {
|
||||
y += txOffset * 2;
|
||||
}
|
||||
if (HasFocus()) {
|
||||
// dc.Draw()->DrawImage4Grid(I_DROP_SHADOW, x - dropsize, y, x+w + dropsize, y+h+dropsize*1.5, alphaMul(color, 0.5f), 1.0f);
|
||||
// dc.Draw()->Flush();
|
||||
dc.Draw()->Flush();
|
||||
dc.RebindTexture();
|
||||
dc.Draw()->DrawImage4Grid(I_DROP_SHADOW, x - dropsize*1.5f, y - dropsize*1.5f, x+w + dropsize*1.5f, y+h+dropsize*1.5f, alphaMul(color, 1.0f), 1.0f);
|
||||
dc.Draw()->Flush();
|
||||
} else {
|
||||
dc.Draw()->Flush();
|
||||
dc.RebindTexture();
|
||||
dc.Draw()->DrawImage4Grid(dc.theme->dropShadow4Grid, x - dropsize, y, x+w + dropsize, y+h+dropsize*1.5, alphaMul(shadowColor, 0.5f), 1.0f);
|
||||
dc.Draw()->DrawImage4Grid(dc.theme->dropShadow4Grid, x - dropsize, y - dropsize*0.5f, x+w + dropsize, y+h+dropsize*1.5, alphaMul(shadowColor, 0.5f), 1.0f);
|
||||
dc.Draw()->Flush();
|
||||
}
|
||||
}
|
||||
@ -332,6 +334,8 @@ UI::EventReturn GameBrowser::LastClick(UI::EventParams &e) {
|
||||
|
||||
UI::EventReturn GameBrowser::HomeClick(UI::EventParams &e) {
|
||||
path_.SetPath(g_Config.memCardDirectory);
|
||||
g_Config.currentDirectory = path_.GetPath();
|
||||
Refresh();
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
@ -343,13 +347,13 @@ void GameBrowser::Refresh() {
|
||||
|
||||
if (allowBrowsing_) {
|
||||
LinearLayout *topBar = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
|
||||
topBar->Add(new TextView(path_.GetFriendlyPath().c_str(), ALIGN_VCENTER, 1.0f, new LinearLayoutParams(WRAP_CONTENT, FILL_PARENT, 1.0f)));
|
||||
topBar->Add(new TextView(path_.GetFriendlyPath().c_str(), ALIGN_VCENTER, 0.7f, new LinearLayoutParams(WRAP_CONTENT, FILL_PARENT, 1.0f)));
|
||||
#ifdef ANDROID
|
||||
topBar->Add(new Choice("Home"))->OnClick.Handle(this, &GameBrowser::HomeClick);
|
||||
#endif
|
||||
ChoiceStrip *layoutChoice = topBar->Add(new ChoiceStrip(ORIENT_HORIZONTAL));
|
||||
layoutChoice->AddChoice("Grid");
|
||||
layoutChoice->AddChoice("List");
|
||||
layoutChoice->AddChoice(I_GRID);
|
||||
layoutChoice->AddChoice(I_LINES);
|
||||
layoutChoice->SetSelection(*gridStyle_ ? 0 : 1);
|
||||
layoutChoice->OnChoice.Handle(this, &GameBrowser::LayoutChange);
|
||||
Add(topBar);
|
||||
@ -382,6 +386,18 @@ void GameBrowser::Refresh() {
|
||||
gameButtons.push_back(new GameButton(fileInfo[i].fullName, *gridStyle_, new UI::LinearLayoutParams(*gridStyle_ == true ? UI::WRAP_CONTENT : UI::FILL_PARENT, UI::WRAP_CONTENT)));
|
||||
}
|
||||
}
|
||||
// Put RAR/ZIP files at the end to get them out of the way. They're only shown so that people
|
||||
// can click them and get an explanation that they need to unpack them. This is necessary due
|
||||
// to a flood of support email...
|
||||
if (allowBrowsing_) {
|
||||
fileInfo.clear();
|
||||
path_.GetListing(fileInfo, "zip:rar:r01:");
|
||||
for (size_t i = 0; i < fileInfo.size(); i++) {
|
||||
if (!fileInfo[i].isDirectory) {
|
||||
gameButtons.push_back(new GameButton(fileInfo[i].fullName, *gridStyle_, new UI::LinearLayoutParams(*gridStyle_ == true ? UI::WRAP_CONTENT : UI::FILL_PARENT, UI::WRAP_CONTENT)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (allowBrowsing_)
|
||||
@ -439,7 +455,7 @@ void MainScreen::CreateViews() {
|
||||
|
||||
I18NCategory *m = GetI18NCategory("MainMenu");
|
||||
|
||||
Margins actionMenuMargins(0, 80, 15, 0);
|
||||
Margins actionMenuMargins(0, 0, 10, 0);
|
||||
|
||||
root_ = new LinearLayout(ORIENT_HORIZONTAL);
|
||||
|
||||
@ -487,9 +503,21 @@ void MainScreen::CreateViews() {
|
||||
ViewGroup *rightColumn = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(300, FILL_PARENT, actionMenuMargins));
|
||||
root_->Add(rightColumn);
|
||||
|
||||
ViewGroup *rightColumnItems = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *rightColumnItems = new LinearLayout(ORIENT_VERTICAL);
|
||||
rightColumn->Add(rightColumnItems);
|
||||
|
||||
char versionString[256];
|
||||
sprintf(versionString, "%s", PPSSPP_GIT_VERSION);
|
||||
rightColumnItems->SetSpacing(0.0f);
|
||||
LinearLayout *logos = new LinearLayout(ORIENT_HORIZONTAL);
|
||||
#ifdef GOLD
|
||||
logos->Add(new ImageView(I_ICONGOLD, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
|
||||
#else
|
||||
logos->Add(new ImageView(I_ICON, IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
|
||||
#endif
|
||||
logos->Add(new ImageView(I_LOGO, IS_DEFAULT, new LinearLayoutParams(Margins(-12, 0, 0, 0))));
|
||||
rightColumnItems->Add(logos);
|
||||
rightColumnItems->Add(new TextView(versionString, new LinearLayoutParams(Margins(70, -6, 0, 0))))->SetTextScale(0.5f);
|
||||
#if defined(_WIN32) || defined(USING_QT_UI)
|
||||
rightColumnItems->Add(new Choice(m->T("Load","Load...")))->OnClick.Handle(this, &MainScreen::OnLoadFile);
|
||||
#endif
|
||||
@ -497,6 +525,7 @@ void MainScreen::CreateViews() {
|
||||
rightColumnItems->Add(new Choice(m->T("Main Settings")))->OnClick.Handle(this, &MainScreen::OnSettings);
|
||||
rightColumnItems->Add(new Choice(m->T("Exit")))->OnClick.Handle(this, &MainScreen::OnExit);
|
||||
rightColumnItems->Add(new Choice(m->T("Credits")))->OnClick.Handle(this, &MainScreen::OnCredits);
|
||||
rightColumnItems->Add(new Choice(m->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg);
|
||||
rightColumnItems->Add(new Choice(m->T("Support PPSSPP")))->OnClick.Handle(this, &MainScreen::OnSupport);
|
||||
}
|
||||
|
||||
@ -563,6 +592,16 @@ UI::EventReturn MainScreen::OnSupport(UI::EventParams &e) {
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn MainScreen::OnPPSSPPOrg(UI::EventParams &e) {
|
||||
LaunchBrowser("http://www.ppsspp.org");
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn MainScreen::OnForums(UI::EventParams &e) {
|
||||
LaunchBrowser("http://forums.ppsspp.org");
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn MainScreen::OnExit(UI::EventParams &e) {
|
||||
NativeShutdown();
|
||||
exit(0);
|
||||
|
@ -44,6 +44,8 @@ private:
|
||||
UI::EventReturn OnGameSettings(UI::EventParams &e);
|
||||
UI::EventReturn OnCredits(UI::EventParams &e);
|
||||
UI::EventReturn OnSupport(UI::EventParams &e);
|
||||
UI::EventReturn OnPPSSPPOrg(UI::EventParams &e);
|
||||
UI::EventReturn OnForums(UI::EventParams &e);
|
||||
UI::EventReturn OnExit(UI::EventParams &e);
|
||||
};
|
||||
|
||||
|
@ -293,7 +293,8 @@ void LogoScreen::render() {
|
||||
sprintf(temp, "%s Henrik Rydgård", c->T("created", "Created by"));
|
||||
|
||||
dc.Draw()->SetFontScale(1.5f, 1.5f);
|
||||
dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", dp_xres / 2, dp_yres / 2 - 30, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
|
||||
dc.Draw()->DrawImage(I_LOGO, dp_xres / 2, dp_yres / 2 - 30, 1.5f, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
|
||||
//dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", dp_xres / 2, dp_yres / 2 - 30, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
|
||||
dc.Draw()->SetFontScale(1.0f, 1.0f);
|
||||
dc.Draw()->DrawTextShadow(UBUNTU24, temp, dp_xres / 2, dp_yres / 2 + 40, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
|
||||
dc.Draw()->DrawTextShadow(UBUNTU24, c->T("license", "Free Software under GPL 2.0"), dp_xres / 2, dp_yres / 2 + 70, colorAlpha(0xFFFFFFFF, alphaText), ALIGN_CENTER);
|
||||
@ -334,11 +335,41 @@ void SystemInfoScreen::CreateViews() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CreditsScreen::CreateViews() {
|
||||
using namespace UI;
|
||||
I18NCategory *g = GetI18NCategory("General");
|
||||
|
||||
root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
root_->Add(new Button("OK", new AnchorLayoutParams(200, 50, NONE, NONE, 10, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnOK);
|
||||
root_->Add(new Button(g->T("Back"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnOK);
|
||||
#ifndef GOLD
|
||||
root_->Add(new Button(g->T("Buy Gold"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnSupport);
|
||||
#endif
|
||||
root_->Add(new Button(g->T("PPSSPP Forums"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 84, false)))->OnClick.Handle(this, &CreditsScreen::OnForums);
|
||||
root_->Add(new Button("www.ppsspp.org", new AnchorLayoutParams(260, 64, 10, NONE, NONE, 158, false)))->OnClick.Handle(this, &CreditsScreen::OnPPSSPPOrg);
|
||||
#ifdef GOLD
|
||||
root_->Add(new ImageView(I_ICONGOLD, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
|
||||
#else
|
||||
root_->Add(new ImageView(I_ICON, IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
|
||||
#endif
|
||||
}
|
||||
|
||||
UI::EventReturn CreditsScreen::OnSupport(UI::EventParams &e) {
|
||||
#ifdef ANDROID
|
||||
LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
|
||||
#else
|
||||
LaunchBrowser("http://central.ppsspp.org/buygold");
|
||||
#endif
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn CreditsScreen::OnPPSSPPOrg(UI::EventParams &e) {
|
||||
LaunchBrowser("http://www.ppsspp.org");
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn CreditsScreen::OnForums(UI::EventParams &e) {
|
||||
LaunchBrowser("http://forums.ppsspp.org");
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn CreditsScreen::OnOK(UI::EventParams &e) {
|
||||
@ -407,6 +438,9 @@ void CreditsScreen::render() {
|
||||
c->T("specialthanks", "Special thanks to:"),
|
||||
"Keith Galocy at nVidia (hw, advice)",
|
||||
"Orphis (build server)",
|
||||
"angelxwind (iOS build server)",
|
||||
"solarmystic (testing)",
|
||||
"all the forum mods",
|
||||
"",
|
||||
"",
|
||||
c->T("written", "Written in C++ for speed and portability"),
|
||||
|
@ -100,6 +100,10 @@ public:
|
||||
private:
|
||||
UI::EventReturn OnOK(UI::EventParams &e);
|
||||
|
||||
UI::EventReturn OnSupport(UI::EventParams &e);
|
||||
UI::EventReturn OnPPSSPPOrg(UI::EventParams &e);
|
||||
UI::EventReturn OnForums(UI::EventParams &e);
|
||||
|
||||
int frames_;
|
||||
};
|
||||
|
||||
|
@ -403,8 +403,8 @@ void NativeInitGraphics() {
|
||||
theme.uiFont = UBUNTU24;
|
||||
theme.uiFontSmall = UBUNTU24;
|
||||
theme.uiFontSmaller = UBUNTU24;
|
||||
theme.buttonImage = I_BUTTON;
|
||||
theme.buttonSelected = I_BUTTON_SELECTED;
|
||||
theme.buttonImage = I_SOLIDWHITE; // not using classic buttons
|
||||
theme.buttonSelected = I_SOLIDWHITE;
|
||||
theme.checkOn = I_CHECKEDBOX;
|
||||
theme.checkOff = I_SQUARE;
|
||||
|
||||
@ -415,10 +415,11 @@ void NativeInitGraphics() {
|
||||
ui_theme.uiFontSmaller = UBUNTU24;
|
||||
ui_theme.checkOn = I_CHECKEDBOX;
|
||||
ui_theme.checkOff = I_SQUARE;
|
||||
ui_theme.whiteImage = SOLIDWHITE;
|
||||
ui_theme.whiteImage = I_SOLIDWHITE;
|
||||
ui_theme.sliderKnob = I_CIRCLE;
|
||||
ui_theme.dropShadow4Grid = I_DROP_SHADOW;
|
||||
|
||||
/*
|
||||
ui_theme.buttonStyle.background = UI::Drawable(UI::DRAW_4GRID, I_BUTTON);
|
||||
ui_theme.buttonStyle.fgColor = 0xFFFFFFFF;
|
||||
ui_theme.buttonStyle.image = I_BUTTON;
|
||||
@ -428,6 +429,7 @@ void NativeInitGraphics() {
|
||||
ui_theme.buttonDownStyle.fgColor = 0xFFFFFFFF;
|
||||
ui_theme.buttonDisabledStyle.background = UI::Drawable(UI::DRAW_4GRID, I_BUTTON, 0xFF404040);
|
||||
ui_theme.buttonDisabledStyle.fgColor = 0xFF707070;
|
||||
*/
|
||||
|
||||
ui_theme.itemStyle.background = UI::Drawable(0x55000000);
|
||||
ui_theme.itemStyle.fgColor = 0xFFFFFFFF;
|
||||
|
67291
UI/ui_atlas.cpp
@ -5,11 +5,10 @@
|
||||
|
||||
// FONTS_ui
|
||||
#define UBUNTU24 0
|
||||
#define UBUNTU48 1
|
||||
|
||||
|
||||
// IMAGES_ui
|
||||
#define SOLIDWHITE 0
|
||||
#define I_SOLIDWHITE 0
|
||||
#define I_CROSS 1
|
||||
#define I_CIRCLE 2
|
||||
#define I_SQUARE 3
|
||||
@ -27,12 +26,12 @@
|
||||
#define I_BG 15
|
||||
#define I_L 16
|
||||
#define I_R 17
|
||||
#define I_BUTTON 18
|
||||
#define I_BUTTON_SELECTED 19
|
||||
#define I_ICON_UMD 20
|
||||
#define I_ICON_FOLDER 21
|
||||
#define I_ICON_EXE 22
|
||||
#define I_DROP_SHADOW 23
|
||||
#define I_DROP_SHADOW 18
|
||||
#define I_LINES 19
|
||||
#define I_GRID 20
|
||||
#define I_LOGO 21
|
||||
#define I_ICON 22
|
||||
#define I_ICONGOLD 23
|
||||
|
||||
|
||||
extern const Atlas ui_atlas;
|
||||
|
@ -221,7 +221,7 @@ bool CtrlDisAsmView::getDisasmAddressText(u32 address, char* dest, bool abbrevia
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
sprintf(dest,"%08X %08X",address,Memory::ReadUnchecked_U32(address));
|
||||
sprintf(dest,"%08X %08X",address,Memory::Read_U32(address));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
2048
|
||||
font UBUNTU24 C:/Windows/Fonts/Roboto-Condensed.ttf UWER 34 -2
|
||||
font UBUNTU24 C:/Windows/Fonts/ARIALUNI.ttf UWEhkcRGHK 30 0
|
||||
font UBUNTU48 source_assets/font/zrnic.ttf UW 55
|
||||
image SOLIDWHITE white.png copy
|
||||
image I_SOLIDWHITE white.png copy
|
||||
image I_CROSS source_assets/image/cross.png copy
|
||||
image I_CIRCLE source_assets/image/circle.png copy
|
||||
image I_SQUARE source_assets/image/square.png copy
|
||||
@ -17,12 +16,12 @@ image I_SHOULDER source_assets/image/shoulder.png copy
|
||||
image I_CHECKEDBOX source_assets/image/checkedbox.png copy
|
||||
image I_RECT source_assets/image/rect.png copy
|
||||
image I_STICKBG source_assets/image/stick_bg.png copy
|
||||
image I_BG source_assets/image/background.png copy
|
||||
image I_BG source_assets/image/background2.png copy
|
||||
image I_L source_assets/image/L.png copy
|
||||
image I_R source_assets/image/R.png copy
|
||||
image I_BUTTON source_assets/image/button.png copy
|
||||
image I_BUTTON_SELECTED source_assets/image/button_selected.png copy
|
||||
image I_ICON_UMD source_assets/image/umd48.png copy
|
||||
image I_ICON_FOLDER source_assets/image/folder.png copy
|
||||
image I_ICON_EXE source_assets/image/exe.png copy
|
||||
image I_DROP_SHADOW source_assets/image/dropshadow.png copy
|
||||
image I_LINES source_assets/image/lines.png copy
|
||||
image I_GRID source_assets/image/grid.png copy
|
||||
image I_LOGO source_assets/image/logo.png copy
|
||||
image I_ICON source_assets/image/icon_regular_72.png copy
|
||||
image I_ICONGOLD source_assets/image/icon_gold_72.png copy
|
||||
|
225
chinese.txt
@ -9,15 +9,27 @@ Exit = 退出
|
||||
Load = 载入...
|
||||
Settings = 设置
|
||||
Recent = 最近使用
|
||||
Homebrew & Demos = 自製遊戲和試玩
|
||||
Games = 遊戲
|
||||
How to get games = 如何获得游戏
|
||||
Game Settings = 游戏设置
|
||||
Main Settings = 主要设置
|
||||
Support PPSSPP = 支持PPSSPP
|
||||
[Developer]
|
||||
Developer Tools = 开发者工具
|
||||
Dump frame to log = 转储帧为日志
|
||||
Load language ini = 载入语言配置文件
|
||||
Run CPU tests = 运行CPU测试
|
||||
Run CPU Tests = 运行CPU测试
|
||||
Save language ini = 储存语言配置文件
|
||||
Dump next frame = 转储下一帧
|
||||
Report = 向网络服务器自动收集兼容性问题
|
||||
Cleanup Recents = 清除最近列表
|
||||
Enable Logging = 記錄日志
|
||||
New UI = 新界面
|
||||
[General]
|
||||
Up = 向上一级
|
||||
Back = 返回
|
||||
Up = 向上一级
|
||||
Prev Page = 上一页
|
||||
Next Page = 下一页
|
||||
[MainSettings]
|
||||
Audio = 声音
|
||||
@ -30,63 +42,122 @@ Graphics = 图像
|
||||
GraphicsDesc = 更改图像选项
|
||||
Settings = 设置
|
||||
System = 系统
|
||||
SystemDesc = 快速内存访问、语言设置等
|
||||
SystemDesc = 动态重编译、快速内存访问等
|
||||
[System]
|
||||
Dynarec = 动态重编译 (JIT)
|
||||
DynarecisJailed = 动态重编译 (JIT) 未越狱无法开启
|
||||
Unlock CPU Clock = 解鎖CPU时鐘
|
||||
Multithreaded (experimental) = 实验性多线程
|
||||
Auto = 自动
|
||||
Frequency : = 頻率:
|
||||
Fast Memory = 快速内存访问 (可能导致崩溃)
|
||||
Show Debug Statistics = 显示调试信息
|
||||
Show FPS = 显示帧率 (每秒帧数)
|
||||
System Settings = 系统设置
|
||||
Encrypt Save = 加密储存数据 (使用非文本格式)
|
||||
12HR Time Format = 使用12小时制
|
||||
Use Button X to Confirm = 使用X按钮确认
|
||||
Daylight Savings = 夏令时
|
||||
Language = 语言设置
|
||||
Button Pref : O to Confirm = 按钮设置:使用按钮O确认
|
||||
Button Pref : X to Confirm = 按钮设置:使用按钮X确认
|
||||
System Language : = 系统语言:
|
||||
Max. No of Recents : = 最近使用最大数量:
|
||||
Clear = 清除
|
||||
Use O = 使用O
|
||||
Use X = 使用X
|
||||
Enable Cheats = 启用作弊码
|
||||
Enable Compatibility Server Reports = 向网络服务器报告兼容性问题
|
||||
Reload Cheats = 重载作弊码
|
||||
Reload Cheats = 重新载入作弊码
|
||||
Language = 语言设置
|
||||
[Audio]
|
||||
Audio Settings = 声音设置
|
||||
Enable Sound = 开启声音
|
||||
Enable Atrac3+ = 开启Atract3+解码器
|
||||
Download Atrac3+ plugin = 下载Atrac3+解码器
|
||||
SFX volume = 效果音量
|
||||
BGM volume = 背景音樂音量
|
||||
Auto = 自动
|
||||
SFX Volume = 音効音量
|
||||
Redownload Atrac3+ plugin = 重新加载ATrac3+插件
|
||||
[Controls]
|
||||
Controls Settings = 控制设置
|
||||
OnScreen = 触屏虚拟按钮
|
||||
Key Mapping = 按鍵映射
|
||||
Default Mapping = 還原按鍵映射
|
||||
Show Left Analog Stick = 显示左摇杆
|
||||
Bind Right Analog Stick = 绑定右摇杆
|
||||
Arrow Buttons = 方向键按钮
|
||||
Target : = 目标:
|
||||
Face Buttons = 正面按钮
|
||||
L/R = L/R
|
||||
L/R + Triangle/Cross = L/R + 三角/十字
|
||||
Back = 返回
|
||||
Tilt = 重力感应替代摇杆 (水平方向)
|
||||
Large Controls = 大按钮
|
||||
Show Analog Stick = 显示摇杆
|
||||
Buttons Scaling: = 按钮縮放
|
||||
Buttons Opacity = 按钮透明度
|
||||
Auto = 自动
|
||||
Scale : = 比例 :
|
||||
Opacity : = 透明度 :
|
||||
[Key Mapping]
|
||||
Pad = 手柄
|
||||
Keyboard = 键盘
|
||||
Prev = 上页
|
||||
Next = 下页
|
||||
[Graphics]
|
||||
Rendering Mode = 渲染模式
|
||||
Mode = 模式
|
||||
Anti-Aliasing = 抗鋸齒
|
||||
2X = 2倍渲染分辨率
|
||||
Buffered Rendering = 缓冲渲染 (关闭后可能出现图像错误)
|
||||
Buffered Rendering = 缓冲渲染
|
||||
Frame Skipping = 跳帧
|
||||
Skip Frames : = 跳帧数:
|
||||
Frames : = 跳帧数:
|
||||
Graphics Settings = 图像设置
|
||||
Hardware Transform = 硬件几何变换 (可能加速或减速)
|
||||
Hardware Transform = 硬件几何变换
|
||||
Linear Filtering = 纹理过滤 (线性插值)
|
||||
Media Engine = 媒体引擎
|
||||
Mipmapping = 多级纹理映射 (MipMap)
|
||||
Mipmapping = 多级纹理映射 (Mipmap)
|
||||
Stream VBO = 流式顶点缓冲对象 (Stream VBO)
|
||||
Texture Filtering = 纹理过滤
|
||||
Texture Scaling = 纹理縮放
|
||||
Force 60 FPS or less = 強制60 FPS或更低
|
||||
Show speed / internal FPS = 显示速度/内部FPS
|
||||
(60.0 is full speed, internal FPS depends on game) = (60.0速度是全速, 内部FPS每個遊戲不相同)
|
||||
Toggled Speed Limit = 切换速度最大值
|
||||
Nearest = 最近
|
||||
Non-Buffered Rendering = 非缓冲渲染
|
||||
Read Framebuffers To Memory(CPU) = 将缓冲帧数据载入内存(CPU)
|
||||
Read Framebuffers To Memory(GPU) = 将缓冲帧数据载入内存(GPU)
|
||||
Linear = 线性
|
||||
Linear(CG) = 线性(CG)
|
||||
Fullscreen = 全屏
|
||||
Speed: = 速度:
|
||||
Display: Speed = 显示:速度
|
||||
Display: FPS = 显示:FPS
|
||||
Display: Both = 显示:全部
|
||||
Vertex Cache = 顶点缓存
|
||||
Partial Vertical Stretch = 垂直拉伸画面
|
||||
Stretch to Display = 拉伸画面
|
||||
AA = 抗锯齿处理
|
||||
VSync = 垂直同步
|
||||
Skip Updating PSP Memory = 跳过更新PSP内存
|
||||
Draw Wireframe = 显示线框
|
||||
Display Raw Framebuffer = 显示原始帧缓冲
|
||||
Fps Limit = 帧率限制
|
||||
Fps : = 帧率:
|
||||
Show VPS/FPS = 显示VPS/FPS
|
||||
Format : = 格式 :
|
||||
Both = 全部
|
||||
Speed = 速度
|
||||
FPS Limit = 帧率限制
|
||||
FPS : = 帧率:
|
||||
Auto = 自动
|
||||
Anisotropic Filtering = 各向异性 (非等方性)过滤
|
||||
Level : = 级别:
|
||||
xBRZ Texture Scaling = xBRZ纹理放大
|
||||
Type : = 类型:
|
||||
Level : = 级别 :
|
||||
xBRZ Texture Scaling = 纹理放大
|
||||
Type : = 类型 :
|
||||
xBRZ = xBRZ
|
||||
Hybrid = 混合式(H)
|
||||
Bicubic = 双三次(B)
|
||||
H+B = H+B
|
||||
Deposterize = 色调融合
|
||||
Save State : = 即时存档 :
|
||||
Load State : = 载入存档 :
|
||||
[Pause]
|
||||
Save State = 即时状态储存
|
||||
Load State = 即时状态载入
|
||||
Continue = 继续
|
||||
Settings = 设置
|
||||
Back to Menu = 返回菜单
|
||||
@ -96,17 +167,19 @@ Yes = 是
|
||||
No = 否
|
||||
Do you want to overwrite the data? = 您要覆盖此存档吗?
|
||||
Saving = 保存中...
|
||||
Save completed = 已保存
|
||||
Save completed = 已保存。
|
||||
ConfirmLoad = 您要载入此存档吗?
|
||||
Loading = 载入中...
|
||||
There is no data = 无存档
|
||||
There is no data = 沒有存档。
|
||||
DeleteConfirm = 您要删除此存档吗?
|
||||
Deleting = 删除中...
|
||||
Delete completed = 已删除
|
||||
Load completed = 已载入
|
||||
Delete completed = 已删除。
|
||||
Load completed = 已载入。
|
||||
Enter = 确定
|
||||
Select = 选择
|
||||
Back = 返回
|
||||
Load = 载入
|
||||
Save = 保存
|
||||
Delete = 删除
|
||||
Finish = 完成
|
||||
Shift = Shift
|
||||
@ -116,17 +189,56 @@ Error loading file = 文件载入错误
|
||||
fixed = 速度:固定
|
||||
standard = 速度:标准
|
||||
unlimited = 速度:不限!
|
||||
Loaded State = 存档加载
|
||||
Saved State = 存档保存
|
||||
LoadStateDoesntExist = 无法加载存档:不存在存档!
|
||||
LoadStateWrongVersion = 无法加载存档:当前存档为旧版PPSSPP所产生的.
|
||||
Save State Failed = 无法保存存档!
|
||||
[PSPCredits]
|
||||
license = 根据GPL 2.0开源协议的免费软件
|
||||
created = 作者
|
||||
title = 一个快速和便携的PSP模拟器
|
||||
contributors = 参与者:
|
||||
written = 使用C++语言编写,具有快速与便携性
|
||||
tools = 使用免费的工具:
|
||||
website = 官网
|
||||
list = 兼容性列表,论坛和发展信息
|
||||
check = 还有海豚模拟器,最好的Wii/GC模拟器
|
||||
info1 = PPSSPP的目的用在教育
|
||||
info2 = 請确保持有任何正版遊戲
|
||||
info3 = 您所持有的游戏应该拥有UMD或正版游戏
|
||||
info4 = 在PSP中的PSN商店中下载
|
||||
info5 = PSP是索尼公司的注冊商标.
|
||||
[Plugin]
|
||||
Atrac3+ Audio Support = Atrac3+音頻插件
|
||||
Origins are dubious = * Mai的ATRAC3+解码器\n有的遊戲的背景声音需要ATRAC3+解码器的支持。\n注意,此段代码是不穩定的。\n选择更多信息,了解更多信息。
|
||||
Back = 返回
|
||||
Download and install = 下载和安装
|
||||
More Information = 更多信息
|
||||
Failed to reach server = 无法连接服务器。\n请检查您的网络是否正常。
|
||||
SorryNoDownload = 对不起,没有可以用于此平台的解码器。
|
||||
To download and install = 要下载且安装Mai的ATRAC3+解码器?\n当前平台支持。
|
||||
Already installed = Mai的ATRAC3+解码器已安装。\n您想重新下载且安装?
|
||||
Installed Correctly = Mai的ATRAC3+解码器下载与安装。\n安装完成。
|
||||
Failed to download plugin = 无法下载插件。\n请稍后再试。
|
||||
|
||||
繁體中文
|
||||
[MainMenu]
|
||||
Load = 載入遊戲...
|
||||
Settings = 設定
|
||||
Credits = 製作組
|
||||
Exit = 離開
|
||||
Recent = 最近執行的遊戲
|
||||
Homebrew & Demos = 自製遊戲和試玩
|
||||
Games = 遊戲
|
||||
How to get games = 如何獲得遊戲
|
||||
Game Settings = 遊戲設置
|
||||
Main Settings = 主要設置
|
||||
Support PPSSPP = 支持PPSSPP
|
||||
[System]
|
||||
System Settings = 系統設定
|
||||
Dynarec = 動態重新編譯 (JIT)
|
||||
Unlock CPU Clock = 解鎖CPU時鐘
|
||||
Multithreaded (experimental) = 實驗性多線程
|
||||
DynarecisJailed = 動態重新編譯 (JIT) - 尚未越獄故無法使用
|
||||
Fast Memory = 快速記憶體存取 (不穩定)
|
||||
Show Debug Statistics = 顯示除錯訊息
|
||||
@ -134,41 +246,50 @@ Show FPS = 顯示每秒張數
|
||||
Encrypt Save = 加密儲存資料
|
||||
Use Button X to Confirm = 使用按鈕X確認
|
||||
Enable Cheats = 啓用作弊碼
|
||||
12HR Time Format = 使用12小時制
|
||||
Enable Compatibility Server Reports = 向網路伺服器報告相容性問題
|
||||
Reload Cheats = 重载作弊碼
|
||||
Reload Cheats = 重新載入作弊碼
|
||||
Daylight Savings = 日光節約時間
|
||||
Language = 語言設定
|
||||
Button Preference - O to Confirm = 按鈕設定 - 使用按鈕O確認
|
||||
Button Preference - X to Confirm = 按鈕設定 - 使用按鈕X確認
|
||||
Use O = 使用O
|
||||
Use X = 使用X
|
||||
[Graphics]
|
||||
Rendering Mode = 渲染模式
|
||||
Mode = 模式
|
||||
Anti-Aliasing = 抗鋸齒
|
||||
Partial Vertical Stretch = 畫面垂直拉伸
|
||||
Stretch to Display = 畫面拉伸
|
||||
Hardware Transform = 硬體幾何轉換
|
||||
Buffered Rendering = 描繪緩衝
|
||||
Frame Skipping = 跳格
|
||||
Frames : = 跳格數:
|
||||
Media Engine = 媒體引擎
|
||||
Graphics Settings = 圖形設定
|
||||
Vertex Cache = 頂點快取
|
||||
Stream VBO = 流動式頂點緩衝物件
|
||||
Linear Filtering = 線性過濾
|
||||
Mipmapping = Mipmap 貼圖
|
||||
VSync = 垂直同步
|
||||
Read Framebuffers To Memory(CPU) = 將緩衝幀數據載入內存(CPU)
|
||||
Read Framebuffers To Memory(GPU) = 將緩衝幀數據載入內存(GPU)
|
||||
AA = 反鋸齒
|
||||
Draw Wireframe = 顯示線框
|
||||
Display Raw Framebuffer = 顯示原始繪圖緩衝
|
||||
Fps Limit = 每秒張數限制
|
||||
Fps : = 張數:
|
||||
FPS Limit = FPS限制
|
||||
FPS : = 張數:
|
||||
Show VPS/FPS = 顯示VPS/FPS
|
||||
Format : = 格式 :
|
||||
Both = 兩者
|
||||
Auto = 自動
|
||||
Anisotropic Filtering = 非等方性過濾
|
||||
Level : = 等級:
|
||||
Frames : = 跳格數:
|
||||
xBRZ Texture Scaling = xBRZ 貼圖放大
|
||||
Type : = 類別:
|
||||
xBRZ Texture Scaling = 貼圖放大
|
||||
Type : = 類別:
|
||||
xBRZ = xBRZ
|
||||
Hybrid = 混合式(H)
|
||||
Bicubic = 雙三次(B)
|
||||
H+B = H+B
|
||||
Deposterize = 色調混合
|
||||
Save State : = 即時存檔 :
|
||||
Load State : = 載入存檔 :
|
||||
[Pause]
|
||||
Save State = 即時存檔
|
||||
Load State = 載入存檔
|
||||
Continue = 繼續
|
||||
Settings = 設定
|
||||
Back to Menu = 返回主選單
|
||||
@ -188,21 +309,31 @@ DeveloperDesc = 執行 CPU 測試、記錄執行流程
|
||||
Developer Tools = 開發者工具
|
||||
Load language ini = 載入語言設定
|
||||
Save language ini = 儲存語言設定
|
||||
Run CPU tests = 執行 CPU 測試
|
||||
Dump frame to log = 建立記憶體轉儲
|
||||
Run CPU Tests = 執行 CPU 測試
|
||||
Dump next frame = 建立記憶體轉儲
|
||||
Report = 向網路伺服器報告相容性問題
|
||||
Cleanup Recents = 清理最近記錄
|
||||
[Audio]
|
||||
Audio Settings = 聲音設定
|
||||
Enable Sound = 開啟聲音
|
||||
Enable Atrac3+ = 開啓Atrac3+解碼器
|
||||
SFX volume = 效果音量
|
||||
BGM volume = 背景音樂音量
|
||||
[Controls]
|
||||
Controls Settings = 控制器設定
|
||||
OnScreen = 顯示虛擬控制器
|
||||
Tilt = 類比左右傾斜對應
|
||||
Large Controls = 大按鍵
|
||||
Show Analog Stick = 顯示類比搖桿
|
||||
Buttons Scaling = 按鈕縮放
|
||||
Buttons Opacity = 按鈕透明度
|
||||
Auto = 自動
|
||||
Scale : = 比例 :
|
||||
Opacity : = 透明度 :
|
||||
[General]
|
||||
Back = 返回
|
||||
Up = 返回上層
|
||||
Prev Page = 上一頁
|
||||
Next Page = 下一頁
|
||||
[Dialog]
|
||||
Back = 返回
|
||||
@ -210,21 +341,23 @@ Yes = 是
|
||||
No = 否
|
||||
Enter = 決定
|
||||
Select = 選擇
|
||||
Load = 載入
|
||||
Save = 儲存
|
||||
Delete = 刪除
|
||||
Start = Start
|
||||
Finish = 完成
|
||||
Shift = Shift
|
||||
New Save = 建立新的存檔
|
||||
New Save = 建立新檔案
|
||||
Do you want to overwrite the data? = 您想要覆蓋這份檔案嗎?
|
||||
Saving = 儲存中\n請稍候...
|
||||
Save completed = 已儲存
|
||||
Save completed = 檔案已儲存。
|
||||
ConfirmLoad = 您想要載入這份檔案嗎?
|
||||
Loading = 載入中\n請稍候...
|
||||
Load completed = 載入完成
|
||||
There is no data = 沒有存檔
|
||||
Load completed = 檔案已載入。
|
||||
There is no data = 沒有檔案。
|
||||
DeleteConfirm = 這份檔案將被刪除。\n您確定要繼續嗎?
|
||||
Deleting = 刪除中\n請稍候...
|
||||
Delete completed = 已刪除
|
||||
Delete completed = 檔案已刪除。
|
||||
[Error]
|
||||
Error loading file = 檔案載入錯誤
|
||||
[Screen]
|
||||
|
2
lang
@ -1 +1 @@
|
||||
Subproject commit a2feb9fdefff4daa0d0979ddf3c450c792f63d19
|
||||
Subproject commit 4a963a637f8b36a42e2d9052629ac643843bc50a
|
2
native
@ -1 +1 @@
|
||||
Subproject commit ddf5c379c3b2d368031990c81f96a062dc46bee4
|
||||
Subproject commit ba28246dd267badbea61e943597e05fa739a55c2
|
@ -1 +1 @@
|
||||
Subproject commit f003246b8d8803d9bdb7d0e3de53cab620eda8b9
|
||||
Subproject commit f5fa205057dbbf80ec1e302c21d22c9ddd0ea03a
|
BIN
source_assets/image/background2.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
source_assets/image/grid.png
Normal file
After Width: | Height: | Size: 284 B |
BIN
source_assets/image/icon_gold_72.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
source_assets/image/icon_regular_72.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
source_assets/image/lines.png
Normal file
After Width: | Height: | Size: 218 B |
BIN
source_assets/image/logo.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
100
source_assets/image/logo.svg
Normal file
@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="200"
|
||||
height="70"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="New document 1">
|
||||
<defs
|
||||
id="defs4">
|
||||
<filter
|
||||
id="filter3049"
|
||||
inkscape:label="Drop Shadow"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
id="feFlood3051"
|
||||
flood-opacity="0.4"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3053"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3055"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3057"
|
||||
dx="0"
|
||||
dy="3"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3059"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="141.07278"
|
||||
inkscape:cy="101.30662"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1267"
|
||||
inkscape:window-height="768"
|
||||
inkscape:window-x="125"
|
||||
inkscape:window-y="125"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-982.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:63.55089951px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3049);font-family:Myriad Pro;-inkscape-font-specification:Myriad Pro"
|
||||
x="8.6396723"
|
||||
y="1038.6173"
|
||||
id="text2985"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2987"
|
||||
x="8.6396723"
|
||||
y="1038.6173"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;font-family:Zrnic Rg;-inkscape-font-specification:Zrnic Rg">PPSSPP</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |