Skip to content

Commit

Permalink
Merge pull request #18539 from hrydgard/speedhack-readback-multi-choice
Browse files Browse the repository at this point in the history
Add multiple choices to the speedhack "Disable GPU readback"
  • Loading branch information
hrydgard committed Dec 13, 2023
2 parents 026a61c + e626144 commit 0795f6b
Show file tree
Hide file tree
Showing 52 changed files with 153 additions and 14 deletions.
2 changes: 1 addition & 1 deletion Core/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ static const ConfigSetting graphicsSettings[] = {
ConfigSetting("TextureShader", &g_Config.sTextureShaderName, "Off", CfgFlag::PER_GAME),
ConfigSetting("ShaderChainRequires60FPS", &g_Config.bShaderChainRequires60FPS, false, CfgFlag::PER_GAME),

ConfigSetting("SkipGPUReadbacks", &g_Config.bSkipGPUReadbacks, false, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("SkipGPUReadbackMode", &g_Config.iSkipGPUReadbackMode, false, CfgFlag::PER_GAME | CfgFlag::REPORT),

ConfigSetting("GfxDebugOutput", &g_Config.bGfxDebugOutput, false, CfgFlag::DONT_SAVE),
ConfigSetting("LogFrameDrops", &g_Config.bLogFrameDrops, false, CfgFlag::DEFAULT),
Expand Down
2 changes: 1 addition & 1 deletion Core/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ struct Config {
float fCwCheatScrollPosition;
float fGameListScrollPosition;
int iBloomHack; //0 = off, 1 = safe, 2 = balanced, 3 = aggressive
bool bSkipGPUReadbacks;
int iSkipGPUReadbackMode; // 0 = off, 1 = skip, 2 = to texture
int iSplineBezierQuality; // 0 = low , 1 = Intermediate , 2 = High
bool bHardwareTessellation;
bool bShaderCache; // Hidden ini-only setting, useful for debugging shader compile times.
Expand Down
6 changes: 6 additions & 0 deletions Core/ConfigValues.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,9 @@ enum class DisplayFramerateMode : int {
FORCE_60HZ_METHOD1,
FORCE_60HZ_METHOD2,
};

enum class SkipGPUReadbackMode : int {
NO_SKIP,
SKIP,
COPY_TO_TEXTURE,
};
2 changes: 1 addition & 1 deletion Core/HLE/sceAtrac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1629,7 +1629,7 @@ static u32 sceAtracGetNextSample(int atracID, u32 outNAddr) {
}
if (numSamples > atrac->SamplesPerFrame())
numSamples = atrac->SamplesPerFrame();
if (atrac->bufferState_ == ATRAC_STATUS_STREAMED_LOOP_FROM_END && numSamples + atrac->currentSample_ > atrac->endSample_) {
if (atrac->bufferState_ == ATRAC_STATUS_STREAMED_LOOP_FROM_END && (int)numSamples + atrac->currentSample_ > atrac->endSample_) {
atrac->bufferState_ = ATRAC_STATUS_ALL_DATA_LOADED;
}
if (Memory::IsValidAddress(outNAddr))
Expand Down
12 changes: 7 additions & 5 deletions GPU/Common/FramebufferManagerCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1024,7 +1024,7 @@ void FramebufferManagerCommon::DownloadFramebufferOnSwitch(VirtualFramebuffer *v
// Saving each frame would be slow.

// TODO: This type of download could be made async, for less stutter on framebuffer creation.
if (!g_Config.bSkipGPUReadbacks && !PSP_CoreParameter().compat.flags().DisableFirstFrameReadback) {
if (g_Config.iSkipGPUReadbackMode == (int)SkipGPUReadbackMode::NO_SKIP && !PSP_CoreParameter().compat.flags().DisableFirstFrameReadback) {
ReadFramebufferToMemory(vfb, 0, 0, vfb->safeWidth, vfb->safeHeight, RASTER_COLOR, Draw::ReadbackMode::BLOCK);
vfb->usageFlags = (vfb->usageFlags | FB_USAGE_DOWNLOAD | FB_USAGE_FIRST_FRAME_SAVED) & ~FB_USAGE_DOWNLOAD_CLEAR;
vfb->safeWidth = 0;
Expand All @@ -1040,7 +1040,7 @@ bool FramebufferManagerCommon::ShouldDownloadFramebufferColor(const VirtualFrame

bool FramebufferManagerCommon::ShouldDownloadFramebufferDepth(const VirtualFramebuffer *vfb) const {
// Download depth buffer for Syphon Filter lens flares
if (!PSP_CoreParameter().compat.flags().ReadbackDepth || g_Config.bSkipGPUReadbacks) {
if (!PSP_CoreParameter().compat.flags().ReadbackDepth || g_Config.iSkipGPUReadbackMode != (int)SkipGPUReadbackMode::NO_SKIP) {
return false;
}
return (vfb->usageFlags & FB_USAGE_RENDER_DEPTH) != 0 && vfb->width >= 480 && vfb->height >= 272;
Expand Down Expand Up @@ -2080,7 +2080,8 @@ bool FramebufferManagerCommon::NotifyFramebufferCopy(u32 src, u32 dst, int size,
if (!dstBuffer && srcBuffer && channel != RASTER_DEPTH) {
// Note - if we're here, we're in a memcpy, not a block transfer. Not allowing IntraVRAMBlockTransferAllowCreateFB.
// Technically, that makes BlockTransferAllowCreateFB a bit of a misnomer.
if (PSP_CoreParameter().compat.flags().BlockTransferAllowCreateFB && !(flags & GPUCopyFlag::DISALLOW_CREATE_VFB)) {
bool allowCreateFB = (PSP_CoreParameter().compat.flags().BlockTransferAllowCreateFB || g_Config.iSkipGPUReadbackMode == (int)SkipGPUReadbackMode::COPY_TO_TEXTURE);
if (allowCreateFB && !(flags & GPUCopyFlag::DISALLOW_CREATE_VFB)) {
dstBuffer = CreateRAMFramebuffer(dst, srcBuffer->width, srcBuffer->height, srcBuffer->fb_stride, srcBuffer->fb_format);
dstY = 0;
}
Expand Down Expand Up @@ -2129,7 +2130,7 @@ bool FramebufferManagerCommon::NotifyFramebufferCopy(u32 src, u32 dst, int size,
// Again we have the problem though that it's doing a lot of small copies here, one for each line.
if (srcH == 0 || srcY + srcH > srcBuffer->bufferHeight) {
WARN_LOG_ONCE(btdcpyheight, G3D, "Memcpy fbo download %08x -> %08x skipped, %d+%d is taller than %d", src, dst, srcY, srcH, srcBuffer->bufferHeight);
} else if (!g_Config.bSkipGPUReadbacks && (!srcBuffer->memoryUpdated || channel == RASTER_DEPTH)) {
} else if (g_Config.iSkipGPUReadbackMode == (int)SkipGPUReadbackMode::NO_SKIP && (!srcBuffer->memoryUpdated || channel == RASTER_DEPTH)) {
Draw::ReadbackMode readbackMode = Draw::ReadbackMode::BLOCK;
if (PSP_CoreParameter().compat.flags().AllowDelayedReadbacks) {
readbackMode = Draw::ReadbackMode::OLD_DATA_OK;
Expand Down Expand Up @@ -2543,6 +2544,7 @@ bool FramebufferManagerCommon::NotifyBlockTransferBefore(u32 dstBasePtr, int dst
if (srcBuffer && !dstBuffer) {
// In here, we can't read from dstRect.
if (PSP_CoreParameter().compat.flags().BlockTransferAllowCreateFB ||
g_Config.iSkipGPUReadbackMode == (int)SkipGPUReadbackMode::COPY_TO_TEXTURE ||
(PSP_CoreParameter().compat.flags().IntraVRAMBlockTransferAllowCreateFB &&
Memory::IsVRAMAddress(srcRect.vfb->fb_address) && Memory::IsVRAMAddress(dstBasePtr))) {
GEBufferFormat ramFormat;
Expand Down Expand Up @@ -2666,7 +2668,7 @@ bool FramebufferManagerCommon::NotifyBlockTransferBefore(u32 dstBasePtr, int dst
srcBasePtr, srcRect.x_bytes / bpp, srcRect.y, srcStride,
dstBasePtr, dstRect.x_bytes / bpp, dstRect.y, dstStride);
FlushBeforeCopy();
if (!g_Config.bSkipGPUReadbacks && !srcRect.vfb->memoryUpdated) {
if (g_Config.iSkipGPUReadbackMode == (int)SkipGPUReadbackMode::NO_SKIP && !srcRect.vfb->memoryUpdated) {
const int srcBpp = BufferFormatBytesPerPixel(srcRect.vfb->fb_format);
const float srcXFactor = (float)bpp / srcBpp;
const bool tooTall = srcY + srcRect.h > srcRect.vfb->bufferHeight;
Expand Down
4 changes: 2 additions & 2 deletions UI/EmuScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -347,9 +347,9 @@ void EmuScreen::bootGame(const Path &filename) {
g_OSD.Show(OSDType::MESSAGE_WARNING, gr->T("BufferedRenderingRequired", "Warning: This game requires Rendering Mode to be set to Buffered."), 10.0f);
}

if (PSP_CoreParameter().compat.flags().RequireBlockTransfer && g_Config.bSkipGPUReadbacks) {
if (PSP_CoreParameter().compat.flags().RequireBlockTransfer && g_Config.iSkipGPUReadbackMode != (int)SkipGPUReadbackMode::NO_SKIP) {
auto gr = GetI18NCategory(I18NCat::GRAPHICS);
g_OSD.Show(OSDType::MESSAGE_WARNING, gr->T("BlockTransferRequired", "Warning: This game requires Simulate Block Transfer Mode to be set to On."), 10.0f);
g_OSD.Show(OSDType::MESSAGE_WARNING, gr->T("BlockTransferRequired", "Warning: This game requires Skip GPU Readbacks be set to No."), 10.0f);
}

if (PSP_CoreParameter().compat.flags().RequireDefaultCPUClock && g_Config.iLockedCPUSpeed != 0) {
Expand Down
4 changes: 3 additions & 1 deletion UI/GameSettingsScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,9 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings)
});
skipBufferEffects->SetDisabledPtr(&g_Config.bSoftwareRendering);

CheckBox *skipGPUReadbacks = graphicsSettings->Add(new CheckBox(&g_Config.bSkipGPUReadbacks, gr->T("Skip GPU Readbacks")));
static const char *skipGpuReadbackModes[] = { "No (default)", "Skip", "Copy to texture" };

PopupMultiChoice *skipGPUReadbacks = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iSkipGPUReadbackMode, gr->T("Skip GPU Readbacks"), skipGpuReadbackModes, 0, ARRAY_SIZE(skipGpuReadbackModes), I18NCat::GRAPHICS, screenManager()));
skipGPUReadbacks->SetDisabledPtr(&g_Config.bSoftwareRendering);

CheckBox *texBackoff = graphicsSettings->Add(new CheckBox(&g_Config.bTextureBackoffCache, gr->T("Lazy texture caching", "Lazy texture caching (speedup)")));
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/ar_AE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,7 @@ Cardboard Screen X Shift = X shift (in % of the blank space)
Cardboard Screen Y Shift = Y shift (in % of the blank space)
Cardboard VR Settings = Google Cardboard VR settings
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = ‎أنوية المعالج
Debugging = ‎التصحيح
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -630,10 +631,12 @@ Mode = ‎الوضع
Must Restart = ‎يجب عليك إعادة تشغيل البرنامج لكي تُطبق التغييرات.
Native device resolution = ‎حجم الجهاز الأساسي
Nearest = Nearest
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effects
None = ‎لا شئ
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/az_AZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X shift (in % of the blank space)
Cardboard Screen Y Shift = Y shift (in % of the blank space)
Cardboard VR Settings = Google Cardboard VR settings
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Debugging
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Mode
Must Restart = You must restart PPSSPP for this change to take effect.
Native device resolution = Native device resolution
Nearest = Nearest
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effects
None = None
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/bg_BG.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X shift (in % of the blank space)
Cardboard Screen Y Shift = Y shift (in % of the blank space)
Cardboard VR Settings = Google Cardboard VR settings
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Debugging
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Режим
Must Restart = You must restart PPSSPP for this change to take effect.
Native device resolution = Native device resolution
Nearest = Най-близко
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effects
None = Нищо
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/ca_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = Desplaçament horitzontal (en % de l'espai en blanc)
Cardboard Screen Y Shift = Desplaçament vertical (en % de l'espai en blanc)
Cardboard VR Settings = Configuració de "Google Cardboard VR"
Cheats = Trucs
Copy to texture = Copy to texture
CPU Core = Nucli de CPU
Debugging = Depuració
DefaultCPUClockRequired = AVÍS: Aquest joc requereix rellotge de CPU per defecte.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Mode
Must Restart = Heu de reiniciar PPSSPP per aplicar aquest canvi.
Native device resolution = Resolució nativa del dispositiu
Nearest = Més proper
No (default) = No (default)
No buffer = Sense memòria intermèdia
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Saltar efectes del memòria intermèdia
None = No
Number of Frames = Número de quadres
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/cz_CZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = Posunutí osy X (v % prázdného prostoru)
Cardboard Screen Y Shift = Posunutí osy Y (v % prázdného prostoru)
Cardboard VR Settings = Nastavení Google Cardboard VR
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Ladění
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Režim
Must Restart = Aby došlo k použití těchto změn, je nutné PPSSPP restartovat.
Native device resolution = Původní rozlišení zařízení
Nearest = Nejbližší
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Přeskočit efekty vyrovnávací paměti
None = Nezobrazovat
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/da_DK.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X skift (i % af det ugyldige)
Cardboard Screen Y Shift = Y skift (i % af det ugyldige)
Cardboard VR Settings = Google Cardboard VR indstillinger
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Fejlfinding
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Tilstand
Must Restart = Du må genstarte PPSSPP for at aktivere denne ændring.
Native device resolution = Standard enheds opløsning
Nearest = Nærmest
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effekter
None = Ingen
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/de_DE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X Versatz (in % der freien Fläche)
Cardboard Screen Y Shift = Y Versatz (in % der freien Fläche)
Cardboard VR Settings = Google Cardboard VR Einstellungen
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU Kern
Debugging = Debugging
DefaultCPUClockRequired = Warnung: Für dieses Spiel muss die CPU Taktrate auf den Standartwert gestellt sein.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Modus
Must Restart = Sie müssen PPSSPP neustarten, damit die Änderungen wirksam werden.
Native device resolution = Native Auflösung
Nearest = Nächster Nachbar
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Über&springe Puffereffekte
None = Keine
Number of Frames = Anzahl an Frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/dr_ID.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X shift (in % of the blank space)
Cardboard Screen Y Shift = Y shift (in % of the blank space)
Cardboard VR Settings = Google Cardboard VR settings
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Debug
DefaultCPUClockRequired = Warning: This game requires the CPU clock to be set to default.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Mode
Must Restart = You must restart PPSSPP for this change to take effect.
Native device resolution = Native device resolution
Nearest = To paling mandoppi'
No (default) = No (default)
No buffer = No buffer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effects
None = Danggo'mo
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/en_US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,7 @@ Auto Scaling = Auto scaling
Backend = Backend
Balanced = Balanced
Bicubic = Bicubic
Copy to texture = Copy to texture
GPUReadbackRequired = Warning: This game requires "Skip GPU Readbacks" to be set to Off.
Both = Both
Buffer graphics commands (faster, input lag) = Buffer graphics commands (faster, input lag)
Expand Down Expand Up @@ -646,9 +647,11 @@ Mode = Mode
Must Restart = You must restart PPSSPP for this change to take effect.
Native device resolution = Native device resolution
Nearest = Nearest
No (default) = No (default)
No buffer = No buffer
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Skip buffer effects
None = None
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/es_ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = Desplazamiento horizontal (en % del espacio en blanco
Cardboard Screen Y Shift = Desplazamiento vertical (en % del espacio en blanco)
Cardboard VR Settings = Ajustes de "Google Cardboard VR"
Cheats = Trucos
Copy to texture = Copy to texture
CPU Core = Núcleo de CPU
Debugging = Depuración
DefaultCPUClockRequired = AVISO: Este juego requiere reloj de CPU por defecto.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Modo
Must Restart = Debes reiniciar PPSSPP para aplicar este cambio.
Native device resolution = Resolución nativa del dispositivo
Nearest = Pixelado
No (default) = No (default)
No buffer = Sin búfer
Render all frames = Render all frames
Show Battery % = Ver % de batería
Show Speed = Ver velocidad
Skip = Skip
Skip Buffer Effects = Saltar efectos del búfer
None = No
Number of Frames = Nº de cuadros
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/es_LA.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = Desplazamiento X (en % del espacio en blanco)
Cardboard Screen Y Shift = Desplazamiento Y (en % del espacio en blanco)
Cardboard VR Settings = Configurar Google Cardboard VR
Cheats = Trucos
Copy to texture = Copy to texture
CPU Core = Núcleo de CPU
Debugging = Depuración
DefaultCPUClockRequired = ADVERTENCIA: Este juego requiere reloj de CPU en valores por defecto.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Modo
Must Restart = Debes reiniciar PPSSPP para aplicar este cambio.
Native device resolution = Resolución nativa del dispositivo
Nearest = Pixelado
No (default) = No (default)
No buffer = No hay búfer
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = Saltar efectos por búfer (Desactiva búfer, rápido)
None = No
Number of Frames = Número de Frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/fa_IR.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X shift (in % of the blank space)
Cardboard Screen Y Shift = Y shift (in % of the blank space)
Cardboard VR Settings = ‎Google Cardboard VR تنظیمات عینک
Cheats = Cheats
Copy to texture = Copy to texture
CPU Core = ‎CPU هسته
Debugging = ‎دیباگ کردن
DefaultCPUClockRequired = ‎باید روی پیش فرض تنظیم باشد CPU هشدار: برای این بازی سرعت
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = ‎حالت
Must Restart = ‎برای اعمال این تنظیم باید برنامه را ریستارت کنید
Native device resolution = ‎رزولوشن دستگاه
Nearest = ‎نزدیک ترین
No (default) = No (default)
No buffer = بدون بافر
Render all frames = Render all frames
Show Battery % = Show Battery %
Show Speed = Show Speed
Skip = Skip
Skip Buffer Effects = ‎رد کردن اثر بافر (سریع تر)
None = ‎هیچ
Number of Frames = Number of frames
Expand Down
3 changes: 3 additions & 0 deletions assets/lang/fi_FI.ini
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,7 @@ Cardboard Screen X Shift = X-siirtymä (tyhjän tilan prosentuaalinen osuus)
Cardboard Screen Y Shift = Y-siirtymä (tyhjän tilan prosentuaalinen osuus)
Cardboard VR Settings = Google Cardboard VR -asetukset
Cheats = Huijaukset
Copy to texture = Copy to texture
CPU Core = CPU core
Debugging = Vian etsintä
DefaultCPUClockRequired = Varoitus: Tämä peli vaatii Prosessorin kellon olevan asetettu oletusarvoon.
Expand Down Expand Up @@ -622,10 +623,12 @@ Mode = Mode
Must Restart = Sinun täytyy käynnistää PPSSPP uudelleen, jotta tämä muutos astuisi voimaan.
Native device resolution = Laiteen alkuperäinen resoluutio
Nearest = Lähin
No (default) = No (default)
No buffer = Ei puskuria
Render all frames = Render all frames
Show Battery % = Näytä akku %
Show Speed = Näytä nopeus
Skip = Skip
Skip Buffer Effects = Ohita puskuriefektit
None = Ei mitään
Number of Frames = Kuvien määrä
Expand Down
Loading

0 comments on commit 0795f6b

Please sign in to comment.