Compare commits
4 commits
master
...
rewind-zst
Author | SHA1 | Date | |
---|---|---|---|
|
61a13beeeb | ||
|
602f4cf3e2 | ||
|
bd75b2dc6b | ||
|
6cea1f73f6 |
38 changed files with 153 additions and 90 deletions
|
@ -250,7 +250,6 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Load file template
|
||||
template<class T>
|
||||
static Error Load(const Path &filename, std::string *gitVersion, T& _class, std::string *failureReason)
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include <thread>
|
||||
#include <mutex>
|
||||
|
||||
#include <zstd.h>
|
||||
|
||||
#include "Common/Data/Text/I18n.h"
|
||||
#include "Common/Thread/ThreadUtil.h"
|
||||
#include "Common/Data/Text/Parsers.h"
|
||||
|
@ -99,6 +101,17 @@ namespace SaveState
|
|||
return CChunkFileReader::LoadPtr(&data[0], state, errorString);
|
||||
}
|
||||
|
||||
struct StateBuffer {
|
||||
void Clear() {
|
||||
zstd_compressed.clear();
|
||||
decompressed_size = 0;
|
||||
compressed_size = 0;
|
||||
}
|
||||
std::vector<u8> zstd_compressed;
|
||||
size_t decompressed_size = 0;
|
||||
size_t compressed_size = 0;
|
||||
};
|
||||
|
||||
// This ring buffer of states is for rewind save states, which are kept in RAM.
|
||||
// Save states are compressed against one of two reference saves (bases_), and the reference
|
||||
// is switched to a fresh save every N saves, where N is BASE_USAGE_INTERVAL.
|
||||
|
@ -150,7 +163,7 @@ namespace SaveState
|
|||
if (err == CChunkFileReader::ERROR_NONE)
|
||||
ScheduleCompress(&states_[n], compressBuffer, &bases_[base_]);
|
||||
else
|
||||
states_[n].clear();
|
||||
states_[n].zstd_compressed.clear();
|
||||
|
||||
baseMapping_[n] = base_;
|
||||
return err;
|
||||
|
@ -165,17 +178,26 @@ namespace SaveState
|
|||
return CChunkFileReader::ERROR_BAD_FILE;
|
||||
|
||||
int n = (--next_ + size_) % size_;
|
||||
if (states_[n].empty())
|
||||
if (states_[n].zstd_compressed.empty())
|
||||
return CChunkFileReader::ERROR_BAD_FILE;
|
||||
|
||||
static std::vector<u8> buffer;
|
||||
LockedDecompress(buffer, states_[n], bases_[baseMapping_[n]]);
|
||||
if (LockedDecompress(buffer, states_[n], bases_[baseMapping_[n]])) {
|
||||
CChunkFileReader::Error error = LoadFromRam(buffer, errorString);
|
||||
if (error == CChunkFileReader::ERROR_NONE) {
|
||||
INFO_LOG(SAVESTATE, "Rewinding to recent savestate snapshot (%d bytes compressed)", states_[n].zstd_compressed.size());
|
||||
rewindLastTime_ = time_now_d();
|
||||
}
|
||||
return error;
|
||||
} else {
|
||||
WARN_LOG(SAVESTATE, "Failed to load rewind savestate");
|
||||
// Unclear what CChunkFileReader error code we should pass in this case, which I'm not sure will
|
||||
// happen in practice barring memory corruption.
|
||||
}
|
||||
return CChunkFileReader::ERROR_NONE;
|
||||
}
|
||||
|
||||
void ScheduleCompress(std::vector<u8> *result, const std::vector<u8> *state, const std::vector<u8> *base)
|
||||
void ScheduleCompress(StateBuffer *result, const std::vector<u8> *state, const std::vector<u8> *base)
|
||||
{
|
||||
if (compressThread_.joinable())
|
||||
compressThread_.join();
|
||||
|
@ -183,11 +205,13 @@ namespace SaveState
|
|||
SetCurrentThreadName("SaveStateCompress");
|
||||
|
||||
// Should do no I/O, so no JNI thread context needed.
|
||||
Compress(*result, *state, *base);
|
||||
Compress(result, *state, *base);
|
||||
});
|
||||
}
|
||||
|
||||
void Compress(std::vector<u8> &result, const std::vector<u8> &state, const std::vector<u8> &base)
|
||||
const bool USE_XOR = false;
|
||||
|
||||
void Compress(StateBuffer *result, const std::vector<u8> &state, const std::vector<u8> &base)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(lock_);
|
||||
// Bail if we were cleared before locking.
|
||||
|
@ -195,42 +219,82 @@ namespace SaveState
|
|||
return;
|
||||
|
||||
double start_time = time_now_d();
|
||||
result.clear();
|
||||
result.reserve(512 * 1024);
|
||||
std::vector<u8> compressed;
|
||||
if (USE_XOR) {
|
||||
compressed.resize(state.size());
|
||||
for (size_t i = 0; i < state.size(); i++) {
|
||||
if (i >= base.size()) {
|
||||
compressed[i] = state[i];
|
||||
} else {
|
||||
compressed[i] = base[i] ^ state[i];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
compressed.reserve(512 * 1024);
|
||||
for (size_t i = 0; i < state.size(); i += BLOCK_SIZE)
|
||||
{
|
||||
int blockSize = std::min(BLOCK_SIZE, (int)(state.size() - i));
|
||||
if (i + blockSize > base.size() || memcmp(&state[i], &base[i], blockSize) != 0)
|
||||
{
|
||||
result.push_back(1);
|
||||
result.insert(result.end(), state.begin() + i, state.begin() + i + blockSize);
|
||||
compressed.push_back(1);
|
||||
compressed.insert(compressed.end(), state.begin() + i, state.begin() + i + blockSize);
|
||||
} else {
|
||||
compressed.push_back(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
result.push_back(0);
|
||||
}
|
||||
|
||||
double taken_s = time_now_d() - start_time;
|
||||
DEBUG_LOG(SAVESTATE, "Rewind: Compressed save from %d bytes to %d in %0.2f ms.", (int)state.size(), (int)result.size(), taken_s * 1000.0);
|
||||
DEBUG_LOG(SAVESTATE, "Rewind: Compressed save from %d bytes to %d in %0.2f ms.", (int)state.size(), (int)compressed.size(), taken_s * 1000.0);
|
||||
|
||||
// Temporarily allocate a buffer to do compression in.
|
||||
size_t compressCapacity = ZSTD_compressBound(compressed.size());
|
||||
result->zstd_compressed.resize(compressCapacity);
|
||||
result->compressed_size = ZSTD_compress(&result->zstd_compressed[0], compressCapacity, compressed.data(), compressed.size(), 1);
|
||||
if (result->compressed_size) {
|
||||
result->zstd_compressed.resize(result->compressed_size);
|
||||
result->decompressed_size = compressed.size();
|
||||
}
|
||||
|
||||
void LockedDecompress(std::vector<u8> &result, const std::vector<u8> &compressed, const std::vector<u8> &base)
|
||||
double zstd_s = time_now_d() - start_time - taken_s;
|
||||
DEBUG_LOG(SAVESTATE, "Rewind: ZSTD compressed to %d in %0.2f ms.", (int)result->compressed_size, zstd_s * 1000.0);
|
||||
}
|
||||
|
||||
bool LockedDecompress(std::vector<u8> &result, const StateBuffer &buffer, const std::vector<u8> &base)
|
||||
{
|
||||
result.clear();
|
||||
result.reserve(base.size());
|
||||
auto basePos = base.begin();
|
||||
for (size_t i = 0; i < compressed.size(); )
|
||||
{
|
||||
if (compressed[i] == 0)
|
||||
{
|
||||
|
||||
// OK, zstd decompress first.
|
||||
std::vector<u8> compressed = std::vector<u8>(buffer.decompressed_size, 0);
|
||||
size_t retval = ZSTD_decompress(&compressed[0], compressed.size(), buffer.zstd_compressed.data(), buffer.zstd_compressed.size());
|
||||
if (ZSTD_isError(retval)) {
|
||||
WARN_LOG(SAVESTATE, "Failed to decompress zstd-compressed rewind savestate");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (USE_XOR) {
|
||||
result.resize(compressed.size());
|
||||
for (size_t i = 0; i < compressed.size(); i++) {
|
||||
if (i < base.size()) {
|
||||
result[i] = compressed[i] ^ base[i];
|
||||
} else {
|
||||
result[i] = compressed[i];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (size_t i = 0; i < compressed.size(); ) {
|
||||
if (compressed[i] == 0) {
|
||||
++i;
|
||||
int blockSize = std::min(BLOCK_SIZE, (int)(base.size() - result.size()));
|
||||
_dbg_assert_(blockSize >= 0);
|
||||
result.insert(result.end(), basePos, basePos + blockSize);
|
||||
basePos += blockSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
++i;
|
||||
int blockSize = std::min(BLOCK_SIZE, (int)(compressed.size() - i));
|
||||
if (blockSize > 0) {
|
||||
result.insert(result.end(), compressed.begin() + i, compressed.begin() + i + blockSize);
|
||||
i += blockSize;
|
||||
// This check is to avoid advancing basePos out of range, which MSVC catches.
|
||||
|
@ -241,6 +305,9 @@ namespace SaveState
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
|
@ -257,7 +324,7 @@ namespace SaveState
|
|||
baseMapping_.clear();
|
||||
baseMapping_.resize(size_);
|
||||
for (auto &s : states_) {
|
||||
s.clear();
|
||||
s.Clear();
|
||||
}
|
||||
buffer_.clear();
|
||||
base_ = -1;
|
||||
|
@ -296,14 +363,12 @@ namespace SaveState
|
|||
// TODO: Instead, based on size of compressed state?
|
||||
const int BASE_USAGE_INTERVAL = 15;
|
||||
|
||||
typedef std::vector<u8> StateBuffer;
|
||||
|
||||
int first_ = 0;
|
||||
int next_ = 0;
|
||||
int size_;
|
||||
|
||||
std::vector<StateBuffer> states_;
|
||||
StateBuffer bases_[2];
|
||||
std::vector<u8> bases_[2];
|
||||
std::vector<int> baseMapping_;
|
||||
std::mutex lock_;
|
||||
std::thread compressThread_;
|
||||
|
@ -312,7 +377,7 @@ namespace SaveState
|
|||
int base_ = -1;
|
||||
int baseUsage_ = 0;
|
||||
|
||||
double rewindLastTime_ = 0.0f;
|
||||
double rewindLastTime_ = 0.0;
|
||||
};
|
||||
|
||||
static bool needsProcess = false;
|
||||
|
@ -1012,7 +1077,6 @@ namespace SaveState
|
|||
break;
|
||||
|
||||
case SAVESTATE_REWIND:
|
||||
INFO_LOG(SAVESTATE, "Rewinding to recent savestate snapshot");
|
||||
result = rewindStates.Restore(&errorString);
|
||||
if (result == CChunkFileReader::ERROR_NONE) {
|
||||
callbackMessage = sc->T("Loaded State");
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Възстанови първоначалните настройки на PPSSPP
|
||||
Rewind Snapshot Interval = Rewind snapshot честота („яде“ памет)
|
||||
Rewind Snapshot Interval = Rewind snapshot честота
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = слот за запазено състояние
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Obnovit výchozí nastavení PPSSPP
|
||||
Rewind Snapshot Interval = Četnost snímků přetočení (žrout paměti)
|
||||
Rewind Snapshot Interval = Četnost snímků přetočení
|
||||
Save path in installed.txt = Cesta pro uložení dat je installed.txt
|
||||
Save path in My Documents = Cesta pro uložení dat je v Dokumentech
|
||||
Savestate Slot = Pozice uložené hry
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Optag lyd
|
|||
Record Display = Optag skærm
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Sæt PPSSPP's indstillinger tilbage til standard
|
||||
Rewind Snapshot Interval = Tilbagespol snapshot frekvens (mem hog)
|
||||
Rewind Snapshot Interval = Tilbagespol snapshot interval
|
||||
Save path in installed.txt = Gem sti i installed.txt
|
||||
Save path in My Documents = Gem sti i Mine Dokumenter
|
||||
Savestate Slot = Lagerplads for spil-status
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Ton aufzeichnen
|
|||
Record Display = Bildschirm aufzeichnen
|
||||
Reset Recording on Save/Load State = Zurücksetzen der Aufnahme bei Laden/Speichern eines Standes
|
||||
Restore Default Settings = Auf Standardeinstellungen zurücksetzen
|
||||
Rewind Snapshot Interval = Zurückspulen-Snapshot Frequenz (Speicherfresser)
|
||||
Rewind Snapshot Interval = Zurückspulen-Snapshot Frequenz
|
||||
Save path in installed.txt = Speicherpfad in installed.txt
|
||||
Save path in My Documents = Speicherpfad in "Meine Dokumente"
|
||||
Savestate Slot = Speicherplatz
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1188,7 +1188,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Grabar Audio
|
|||
Record Display = Grabar pantalla
|
||||
Reset Recording on Save/Load State = Reiniciar grabación al abrir/guardar estados
|
||||
Restore Default Settings = Reestablecer ajustes
|
||||
Rewind Snapshot Interval = Frecuencia de rebobinado\n(consume memoria)
|
||||
Rewind Snapshot Interval = Intervalo de rebobinado
|
||||
Save path in installed.txt = Guardar ruta en installed.txt
|
||||
Save path in My Documents = Guardar ruta en\n"C:/Users/(tu usuario)/Documents"
|
||||
Savestate Slot = Ranura de estado guardado
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = ضبط صدا
|
|||
Record Display = ضبط صفحه
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = به حالت اولیه PPSSPP بازگشت تنظیمات
|
||||
Rewind Snapshot Interval = تعداد فریم ذخیره شده برای به عقب رفتن (مصرف زیاد رم)
|
||||
Rewind Snapshot Interval = تعداد فریم ذخیره شده برای به عقب رفتن
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = ذخیره در داکیومنت ها
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Reestablecer axustes
|
||||
Rewind Snapshot Interval = Frecuencia de rebobinado de instantánea (mem hog)
|
||||
Rewind Snapshot Interval = Frecuencia de rebobinado de instantánea
|
||||
Save path in installed.txt = Carpeta de gardado en installed.txt
|
||||
Save path in My Documents = Carpeta de gardado en Meus documentos
|
||||
Savestate Slot = Ranura de estado gardado
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Καταγραφή Ήχου
|
|||
Record Display = Καταγραφή Εικόνας
|
||||
Reset Recording on Save/Load State = Επαναφορά της εγγραφής κατή την Αποθήκευση/Φόρτωση σημείου αποθήκευσης
|
||||
Restore Default Settings = Επαναφορά προεπιλεγμένων ρυθμίσεων του PPSSPP
|
||||
Rewind Snapshot Interval = Συχνότητα Αντιστροφής Στιγμιότυπου (mem hog)
|
||||
Rewind Snapshot Interval = Συχνότητα Αντιστροφής Στιγμιότυπου
|
||||
Save path in installed.txt = Αποθήκευση διαδρομής στο installed.txt
|
||||
Save path in My Documents = Αποθήκευση διαδρομής στα Έγγραφα μου
|
||||
Savestate Slot = Slot Σημείου Αποθήκευσης
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Snimi audio
|
|||
Record Display = Snimi prikaz
|
||||
Reset Recording on Save/Load State = Ponovo postavi snimak na Save/Load state
|
||||
Restore Default Settings = Vrati PPSSPP opcije na zadano
|
||||
Rewind Snapshot Interval = Vrati snapshot frekvenciju (mem hog)
|
||||
Rewind Snapshot Interval = Vrati snapshot frekvenciju
|
||||
Save path in installed.txt = Spremi put u installed.txt
|
||||
Save path in My Documents = Spremi put u My Documents
|
||||
Savestate Slot = Savestate mjesto
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Audió felvétele
|
|||
Record Display = Videó felvétele
|
||||
Reset Recording on Save/Load State = Felvétel leállítása állapotmentés készítésekor vagy betöltésekor
|
||||
Restore Default Settings = PPSSPP beállításainak alapértelmezettre állítása
|
||||
Rewind Snapshot Interval = Visszatekerési állapotmentések gyakorisága (sok memória kell)
|
||||
Rewind Snapshot Interval = Visszatekerési állapotmentések gyakorisága
|
||||
Save path in installed.txt = Mentés helye installed.txt-ben
|
||||
Save path in My Documents = Mentés helye a Dokumentumok mappában
|
||||
Savestate Slot = Állapotmentés sorszáma
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Rekam suara
|
|||
Record Display = Rekam tampilan
|
||||
Reset Recording on Save/Load State = Atur ulang rekaman pada status simpan/muat
|
||||
Restore Default Settings = Atur ulang pengaturan PPSSPP ke awal
|
||||
Rewind Snapshot Interval = Putar ulang frekuensi foto (memory hog)
|
||||
Rewind Snapshot Interval = Putar ulang frekuensi foto
|
||||
Save path in installed.txt = Simpan jalur dalam installed.txt
|
||||
Save path in My Documents = Simpan jalur dalam dokumen saya
|
||||
Savestate Slot = Slot simpanan status
|
||||
|
|
|
@ -1179,7 +1179,7 @@ Record Audio = Registra Audio
|
|||
Record Display = Registra Display
|
||||
Reset Recording on Save/Load State = Reset della registrazione al Salvataggio/Caricamento stato
|
||||
Restore Default Settings = Ripristina Impostazioni di PPSSPP
|
||||
Rewind Snapshot Interval = Frequenza riavvolgimento snapshot (+ memoria)
|
||||
Rewind Snapshot Interval = Frequenza riavvolgimento snapshot
|
||||
Save path in installed.txt = Salva il percorso in "installed.txt"
|
||||
Save path in My Documents = Salva il percorso in "Documenti"
|
||||
Savestate Slot = Slot di salvataggio stato
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = オーディオを記録する
|
|||
Record Display = 画面を記録する
|
||||
Reset Recording on Save/Load State = ステートをセーブ/ロードしたら記録をリセットする
|
||||
Restore Default Settings = 設定をデフォルトに戻す
|
||||
Rewind Snapshot Interval = スナップショットの巻き戻し頻度 (メモリを消費)
|
||||
Rewind Snapshot Interval = スナップショットの巻き戻し頻度
|
||||
Save path in installed.txt = パスを installed.txt に保存する
|
||||
Save path in My Documents = パスを My Documents に保存する
|
||||
Savestate Slot = セーブステートのスロット
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Mulihake setelan PPSSPP kanggo gawan
|
||||
Rewind Snapshot Interval = Frekuensi gambar asli seko mundur (mem hog)
|
||||
Rewind Snapshot Interval = Frekuensi gambar asli seko mundur
|
||||
Save path in installed.txt = Nyimpen path ing installed.txt
|
||||
Save path in My Documents = Nyimpen path ing Dokumen kulo
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1154,7 +1154,7 @@ Record Audio = 오디오 녹음
|
|||
Record Display = 녹화 표시
|
||||
Reset Recording on Save/Load State = 저장/불러오기 상태에서 녹화 재설정
|
||||
Restore Default Settings = PPSSPP의 설정을 기본값으로 복원
|
||||
Rewind Snapshot Interval = 되감기 스냅샷 빈도 (메모리 호그)
|
||||
Rewind Snapshot Interval = 되감기 스냅샷 빈도
|
||||
Save path in installed.txt = install.txt에 경로 저장
|
||||
Save path in My Documents = 내 문서에 경로 저장
|
||||
Savestate Slot = 저장 상태 슬롯
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = ບັນທຶກສຽງ Audio
|
|||
Record Display = ບັນທຶກພາບ Display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = "ຄືນຄ່າການຕັ້ງຄ່າຂອງ PPSSPP ເປັນຄ່າເລີ່ມຕົ້ນ"
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = ບັນທຶກຂໍ້ມູນໃນ installed.txt
|
||||
Save path in My Documents = ບັນທຶກຂໍ້ມູນໄວ້ທີ່ My Documents
|
||||
Savestate Slot = ຊ່ອງເກັບເຊບ
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Nustatyti "PPSSPP" parametrus į numatytuosius
|
||||
Rewind Snapshot Interval = "Vėjinti" momentinės nuotraukos dažnį (atminties "rijikas")
|
||||
Rewind Snapshot Interval = "Vėjinti" momentinės nuotraukos dažnį
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Išsaugojimo statuso vieta
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Kembalikan tetapan PPSSPP ke lalai
|
||||
Rewind Snapshot Interval = Kekerapan pusingan gambar skrin (mem hog)
|
||||
Rewind Snapshot Interval = Kekerapan pusingan gambar skrin
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Slot Savestate
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Audio opnemen
|
|||
Record Display = Scherm opnemen
|
||||
Reset Recording on Save/Load State = Opname opnieuw opstarten bij opslaan/laden van states
|
||||
Restore Default Settings = PPSSPP's standaardinstellingen herstellen
|
||||
Rewind Snapshot Interval = Terugspoelfrequentie (kost geheugen)
|
||||
Rewind Snapshot Interval = Terugspoelfrequentie
|
||||
Save path in installed.txt = Opslagpad in installed.txt
|
||||
Save path in My Documents = Opslagpad in Mijn documenten
|
||||
Savestate Slot = Savestatesleuf
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Restore PPSSPP's settings to default
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Nagrywaj dźwięk
|
|||
Record Display = Nagrywaj obraz
|
||||
Reset Recording on Save/Load State = Resetuj nagrywanie przy zapisie/wczytaniu stanu
|
||||
Restore Default Settings = Przywróć domyślne ustawienia
|
||||
Rewind Snapshot Interval = Częstotl. zapisu stanów przewijania (wymaga pamięci)
|
||||
Rewind Snapshot Interval = Częstotl. zapisu stanów przewijania
|
||||
Save path in installed.txt = Ścieżka zapisu w installed.txt
|
||||
Save path in My Documents = Ścieżka zapisu w Dokumentach
|
||||
Savestate Slot = Slot zapisu stanu
|
||||
|
|
|
@ -1187,7 +1187,7 @@ Record Audio = Gravar áudio
|
|||
Record Display = Gravar tela
|
||||
Reset Recording on Save/Load State = Resetar a gravação ao salvar/carregar o state
|
||||
Restore Default Settings = Restaurar as configurações do PPSSPP para os padrões
|
||||
Rewind Snapshot Interval = Retroceder a frequência dos snapshots (consome muita memória)
|
||||
Rewind Snapshot Interval = Retroceder a frequência dos snapshots
|
||||
Save path in installed.txt = Caminho do save em installed.txt
|
||||
Save path in My Documents = Caminho do save em Meus Documentos
|
||||
Savestate Slot = Slot do state salvo
|
||||
|
|
|
@ -1188,7 +1188,7 @@ Record Audio = Gravar áudio
|
|||
Record Display = Gravar tela
|
||||
Reset Recording on Save/Load State = Reiniciar a gravação ao salvar/carregar o estado
|
||||
Restore Default Settings = Restaurar as Definições do PPSSPP para os padrões
|
||||
Rewind Snapshot Interval = Rebobinar frequência dos snapshots (consome memória)
|
||||
Rewind Snapshot Interval = Rebobinar frequência dos snapshots
|
||||
Save path in installed.txt = Caminho do save em installed.txt
|
||||
Save path in My Documents = Caminho do save em Meus Documentos
|
||||
Savestate Slot = Espaço do estado salvo
|
||||
|
|
|
@ -1174,7 +1174,7 @@ Record Audio = Record audio
|
|||
Record Display = Record display
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Adu la setări PPSSPP inițiale
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Save path in installed.txt
|
||||
Save path in My Documents = Save path in My Documents
|
||||
Savestate Slot = Slot salvare
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Spela in audio till fil
|
|||
Record Display = Spela in video till fil
|
||||
Reset Recording on Save/Load State = Reset recording on Save/Load state
|
||||
Restore Default Settings = Återställ standard-inställningar
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = Sparkatalog från installed.txt
|
||||
Save path in My Documents = Sparkatalog i Dokument
|
||||
Savestate Slot = Savestate slot
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = I-record ang Audio
|
|||
Record Display = I-record ang Display
|
||||
Reset Recording on Save/Load State = Reset Recording on Save/Load state
|
||||
Restore Default Settings = Ibalik ang settings sa dati nitong ayos
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval (mem hog)
|
||||
Rewind Snapshot Interval = Rewind Snapshot Interval
|
||||
Save path in installed.txt = I-save sa direksyon na installed.txt
|
||||
Save path in My Documents = I-save sa direksyon na "Aking Dokumento"
|
||||
Savestate Slot = Savestate Slot
|
||||
|
|
|
@ -1174,7 +1174,7 @@ Record Audio = อัดบันทึกเสียง
|
|||
Record Display = อัดบันทึกวีดีโอ
|
||||
Reset Recording on Save/Load State = เริ่มการอัดบันทึกไฟล์ใหม่ เมื่อกดเซฟ/โหลดสเตทเกม
|
||||
Restore Default Settings = รีเซ็ตการตั้งค่าของ PPSSPP ทั้งหมด
|
||||
Rewind Snapshot Interval = เซฟสเตทพื้นหลังแบบอัตโนมัติ (สูบแรม)
|
||||
Rewind Snapshot Interval = เซฟสเตทพื้นหลังแบบอัตโนมัติ
|
||||
Save path in installed.txt = บันทึกข้อมูลตามเส้นทางที่เลือกไว้
|
||||
Save path in My Documents = บันทึกข้อมูลไว้ที่ My Documents
|
||||
Savestate Slot = ช่องเก็บเซฟสเตทเกม
|
||||
|
|
|
@ -1174,7 +1174,7 @@ Record Audio = Sesi kaydet
|
|||
Record Display = Görüntüyü kaydet
|
||||
Reset Recording on Save/Load State = Kaydet/Yükle durumunda kaydı sıfırla
|
||||
Restore Default Settings = Varsayılan ayarları yükle
|
||||
Rewind Snapshot Interval = Geri sarma görüntüsü sıklığı (mem hog)
|
||||
Rewind Snapshot Interval = Geri sarma görüntüsü sıklığı
|
||||
Save path in installed.txt = Yolu installed.txt'ye kaydet
|
||||
Save path in My Documents = Dosyaları "Belgeler"'e kaydet
|
||||
Savestate Slot = Durum kaydı yeri
|
||||
|
|
|
@ -1173,7 +1173,7 @@ Record Audio = Запис аудіо
|
|||
Record Display = Запис відео
|
||||
Reset Recording on Save/Load State = Скидати запис при збереженні / завантаженні
|
||||
Restore Default Settings = Скинути налаштування
|
||||
Rewind Snapshot Interval = Змінити частоту кадрів (багато пам'яті)
|
||||
Rewind Snapshot Interval = Змінити частоту кадрів
|
||||
Save path in installed.txt = Шлях до збережень в installed.txt
|
||||
Save path in My Documents = Шлях до збережень в Моїх документах
|
||||
Savestate Slot = Слот пам'яті
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue