It's a start.
136
.clang-format
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
---
|
||||
Language: Cpp
|
||||
AccessModifierOffset: -4
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveMacros: false
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllConstructorInitializersOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: true
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterObjCDeclaration: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterExternBlock: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Custom
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 144
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DeriveLineEnding: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
SortPriority: 0
|
||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||
Priority: 3
|
||||
SortPriority: 0
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
SortPriority: 0
|
||||
IncludeIsMainRegex: '(Test)?$'
|
||||
IncludeIsMainSourceRegex: ''
|
||||
IndentAccessModifiers: true
|
||||
IndentCaseLabels: false
|
||||
IndentGotoLabels: true
|
||||
IndentPPDirectives: None
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: All
|
||||
ObjCBinPackProtocolList: Auto
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 1000
|
||||
PointerAlignment: Right
|
||||
ReflowComments: false
|
||||
SortIncludes: true
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyBlock: false
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInConditionalStatement: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
SpaceBeforeSquareBrackets: false
|
||||
Standard: Latest
|
||||
StatementMacros:
|
||||
- Q_UNUSED
|
||||
- QT_REQUIRE_VERSION
|
||||
TabWidth: 4
|
||||
UseCRLF: false
|
||||
UseTab: Never
|
||||
...
|
||||
9
.clang-tidy
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
Checks: 'clang-analyzer-*,cppcoreguidelines-*,modernize-*,bugprone-*,performance-*,readability-*,readability-non-const-parameter,misc-const-correctness,misc-use-anonymous-namespace,google-explicit-constructor,-modernize-use-trailing-return-type,-bugprone-exception-escape,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-avoid-magic-numbers,-bugprone-easily-swappable-parameters,-cppcoreguidelines-non-private-member-variables-in-classes'
|
||||
WarningsAsErrors: ''
|
||||
HeaderFilterRegex: ''
|
||||
CheckOptions:
|
||||
- key: readability-magic-numbers.IgnoredFloatingPointValues
|
||||
value: '0.0;1.0;100.0;'
|
||||
- key: readability-magic-numbers.IgnoredIntegerValues
|
||||
value: '0;1;2;3;4;5;6;7;8;9;'
|
||||
17
.editorconfig
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# EditorConfig is awesome: http://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
end_of_line = lf
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
trim_trailing_whitespace = false
|
||||
11
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Set the default behavior for all files.
|
||||
* text=auto eol=lf
|
||||
|
||||
# Normalized and converts to native line endings on checkout.
|
||||
*.c text
|
||||
*.cc text
|
||||
*.cxx
|
||||
*.cpp text
|
||||
*.h text
|
||||
*.hxx text
|
||||
*.hpp text
|
||||
6
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[submodule "Libraries/FsLib"]
|
||||
path = Libraries/FsLib
|
||||
url = https://github.com/J-D-K/FsLib.git
|
||||
[submodule "Libraries/SDLLib"]
|
||||
path = Libraries/SDLLib
|
||||
url = https://github.com/J-D-K/SDLLib.git
|
||||
46
Include/AppStates/AppState.hpp
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#pragma once
|
||||
#include "SDL.hpp"
|
||||
#include <memory>
|
||||
|
||||
class AppState
|
||||
{
|
||||
public:
|
||||
AppState(void) = default;
|
||||
virtual ~AppState() = 0;
|
||||
|
||||
virtual void Update(void) = 0;
|
||||
virtual void Render(void) = 0;
|
||||
|
||||
// Returns whether or not state is still active or can be purged.
|
||||
bool IsActive(void) const
|
||||
{
|
||||
return m_IsActive;
|
||||
}
|
||||
|
||||
void Deactivate(void)
|
||||
{
|
||||
m_IsActive = false;
|
||||
}
|
||||
|
||||
void GiveFocus(void)
|
||||
{
|
||||
m_HasFocus = true;
|
||||
}
|
||||
|
||||
void TakeFocus(void)
|
||||
{
|
||||
m_HasFocus = false;
|
||||
}
|
||||
|
||||
// Returns whether state is at back of vector and has focus.
|
||||
bool HasFocus(void) const
|
||||
{
|
||||
return m_HasFocus;
|
||||
}
|
||||
|
||||
private:
|
||||
// Whether state is still active or can be purged.
|
||||
bool m_IsActive = true;
|
||||
// Whether or not state has focus
|
||||
bool m_HasFocus = false;
|
||||
};
|
||||
27
Include/AppStates/ProgressState.hpp
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#pragma once
|
||||
#include "AppStates/AppState.hpp"
|
||||
#include "System/ProgressTask.hpp"
|
||||
#include <string>
|
||||
|
||||
class ProgressState : public AppState
|
||||
{
|
||||
public:
|
||||
template <typename... Args>
|
||||
ProgressState(void (*Function)(Args...), Args... Arguments) : m_Task(Function, std::forward<Args>(Arguments)...){};
|
||||
~ProgressState() {};
|
||||
|
||||
void Update(void);
|
||||
void Render(void);
|
||||
|
||||
private:
|
||||
// Underlying progress tracking task.
|
||||
System::ProgressTask m_Task;
|
||||
// Progress as whole number instead of decimal.
|
||||
size_t m_Progress = 0;
|
||||
// Width of the green bar. The other is hard coded for 720px.
|
||||
size_t m_ProgressBarWidth = 0;
|
||||
// X coordinate of the percentage.
|
||||
int m_PerentageX = 0;
|
||||
// String for percentage.
|
||||
std::string m_PercentageString;
|
||||
};
|
||||
18
Include/AppStates/TaskState.hpp
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#pragma once
|
||||
#include "AppStates/AppState.hpp"
|
||||
#include "System/Task.hpp"
|
||||
|
||||
class TaskState : public AppState
|
||||
{
|
||||
public:
|
||||
template <typename... Args>
|
||||
TaskState(void (*Function)(Args...), Args... Arguments) : m_Task(Function, std::forward<Args>(Arguments)...){};
|
||||
~TaskState() {};
|
||||
|
||||
void Update(void);
|
||||
void Render(void);
|
||||
|
||||
private:
|
||||
// Underlying task.
|
||||
System::Task m_Task;
|
||||
};
|
||||
16
Include/Colors.hpp
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
#include "SDL.hpp"
|
||||
|
||||
namespace Colors
|
||||
{
|
||||
static constexpr SDL::Color White = {0xFFFFFFFF};
|
||||
static constexpr SDL::Color Black = {0x000000FF};
|
||||
static constexpr SDL::Color Red = {0xFF0000FF};
|
||||
static constexpr SDL::Color Green = {0x00FF00FF};
|
||||
static constexpr SDL::Color Blue = {0x0099EEFF};
|
||||
static constexpr SDL::Color Yellow = {0xF8FC00FF};
|
||||
static constexpr SDL::Color Pink = {0xFF4444FF};
|
||||
static constexpr SDL::Color ClearColor = {0x2D2D2DFF};
|
||||
static constexpr SDL::Color DialogBox = {0x505050FF};
|
||||
static constexpr SDL::Color BackgroundDim = {0x00000088};
|
||||
} // namespace Colors
|
||||
6
Include/Data/Data.hpp
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
namespace Data
|
||||
{
|
||||
bool Initialize(void);
|
||||
}
|
||||
11
Include/Input.hpp
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
#include <switch.h>
|
||||
|
||||
namespace Input
|
||||
{
|
||||
void Initialize(void);
|
||||
void Update(void);
|
||||
bool ButtonPressed(HidNpadButton Button);
|
||||
bool ButtonHeld(HidNpadButton Button);
|
||||
bool ButtonReleased(HidNpadButton Button);
|
||||
} // namespace Input
|
||||
32
Include/JKSV.hpp
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#pragma once
|
||||
#include "AppStates/AppState.hpp"
|
||||
#include "SDL.hpp"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class JKSV
|
||||
{
|
||||
public:
|
||||
// Initializes JKSV.
|
||||
JKSV(void);
|
||||
// Exits JKSV
|
||||
~JKSV();
|
||||
// Returns whether or not JKSV is actually running.
|
||||
bool IsRunning(void) const;
|
||||
// Updates input and back of state vector.
|
||||
void Update(void);
|
||||
// Renders base of app and states of vector.
|
||||
void Render(void);
|
||||
// Pushes a new state to the back of state vector.
|
||||
static void PushState(std::shared_ptr<AppState> NewState);
|
||||
|
||||
private:
|
||||
// Whether or not initialization was successful.
|
||||
bool m_IsRunning = false;
|
||||
// Whether or not translation author wants to be acknowledged.
|
||||
bool m_ShowTranslationInfo = false;
|
||||
// Header icon
|
||||
SDL::SharedTexture m_HeaderIcon = nullptr;
|
||||
// Vector of states.
|
||||
static inline std::vector<std::shared_ptr<AppState>> m_StateVector;
|
||||
};
|
||||
16
Include/JSON.hpp
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
#include <json-c/json.h>
|
||||
#include <memory>
|
||||
|
||||
namespace JSON
|
||||
{
|
||||
// Use this instead of default json_object
|
||||
using Object = std::unique_ptr<json_object, decltype(&json_object_put)>;
|
||||
|
||||
// Use this instead of json_object_from_x. Pass the function and its arguments instead.
|
||||
template <typename... Args>
|
||||
static inline JSON::Object NewObject(json_object *(*Function)(Args...), Args... Arguments)
|
||||
{
|
||||
return JSON::Object((*Function)(Arguments...), json_object_put);
|
||||
}
|
||||
} // namespace JSON
|
||||
7
Include/Logger.hpp
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
namespace Logger
|
||||
{
|
||||
void Initialize(void);
|
||||
void Log(const char *Format, ...);
|
||||
} // namespace Logger
|
||||
7
Include/StringUtil.hpp
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
#include <string>
|
||||
|
||||
namespace StringUtil
|
||||
{
|
||||
std::string GetFormattedString(const char *Format, ...);
|
||||
}
|
||||
15
Include/Strings.hpp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
#include <string_view>
|
||||
|
||||
namespace Strings
|
||||
{
|
||||
// Attempts to load strings from file in RomFS.
|
||||
bool Initialize(void);
|
||||
// Returns string with name and index. Returns nullptr if string doesn't exist.
|
||||
const char *GetByName(std::string_view Name, int Index);
|
||||
// Names of strings to prevent typos.
|
||||
namespace Names
|
||||
{
|
||||
static constexpr std::string_view TranslationInfo = "TranslationInfo";
|
||||
} // namespace Names
|
||||
} // namespace Strings
|
||||
25
Include/System/ProgressTask.hpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
#include "System/Task.hpp"
|
||||
|
||||
namespace System
|
||||
{
|
||||
class ProgressTask : public System::Task
|
||||
{
|
||||
public:
|
||||
template <typename... Args>
|
||||
ProgressTask(void (*Function)(System::ProgressTask *, Args...), Args... Arguments)
|
||||
: System::Task(Function, this, std::forward<Args>(Arguments)...){};
|
||||
|
||||
// Resets current down to 0 and sets goal
|
||||
void Reset(double Goal);
|
||||
// Sets current value
|
||||
void UpdateCurrent(double Current);
|
||||
|
||||
// Returns progress
|
||||
double GetCurrentProgress(void) const;
|
||||
|
||||
private:
|
||||
// Current value and goal
|
||||
double m_Current, m_Goal;
|
||||
};
|
||||
} // namespace System
|
||||
46
Include/System/Task.hpp
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#pragma once
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
namespace System
|
||||
{
|
||||
class Task
|
||||
{
|
||||
public:
|
||||
template <typename... Args>
|
||||
Task(void (*Function)(System::Task *, Args...), Args... Arguments)
|
||||
{
|
||||
m_Thread = std::thread(Function, this, std::forward<Args>(Arguments)...);
|
||||
}
|
||||
|
||||
// This is an alternate constructor that passes through a pointer to a derived class.
|
||||
template <typename... Args>
|
||||
Task(void (*Function)(System::Task *, Args...), System::Task *Task, Args... Arguments)
|
||||
{
|
||||
m_Thread = std::thread(Function, Task, std::forward<Args>(Arguments)...);
|
||||
}
|
||||
|
||||
virtual ~Task();
|
||||
|
||||
// Returns if thread is still running.
|
||||
bool IsRunning(void) const;
|
||||
// Signals thread is finished running.
|
||||
void Finished(void);
|
||||
|
||||
// Sets status to display.
|
||||
void SetStatus(const char *Format, ...);
|
||||
// Returns status string.
|
||||
std::string GetStatus(void);
|
||||
|
||||
private:
|
||||
// Whether task is still running.
|
||||
bool m_IsRunning = true;
|
||||
// Status string the thread can set that the main thread can display.
|
||||
std::string m_Status;
|
||||
// Mutex so that string doesn't get messed up.
|
||||
std::mutex m_StatusLock;
|
||||
// Thread
|
||||
std::thread m_Thread;
|
||||
};
|
||||
} // namespace System
|
||||
9
Include/UI/RenderFunctions.hpp
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
#include "SDL.hpp"
|
||||
|
||||
// These are just functions to render generic parts of the UI.
|
||||
namespace UI
|
||||
{
|
||||
void RenderDialogBox(SDL_Texture *Target, int X, int Y, int Width, int Height);
|
||||
void RenderBoundingBox(SDL_Texture *Target, int X, int Y, int Width, int Height);
|
||||
} // namespace UI
|
||||
1
Libraries/FsLib
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 960698b56f3088c6f5f549aceb94d4b66fb67d88
|
||||
1
Libraries/SDLLib
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit d25a582249299fee8bfbe59487f057b4a2e0d990
|
||||
32
Makefile
|
|
@ -32,14 +32,14 @@ include $(DEVKITPRO)/libnx/switch_rules
|
|||
#---------------------------------------------------------------------------------
|
||||
TARGET := JKSV
|
||||
BUILD := build
|
||||
SOURCES := src src/ui src/fs src/gfx
|
||||
SOURCES := Source Source/AppStates Source/UI
|
||||
DATA := data
|
||||
INCLUDES := inc inc/ui inc/fs inc/gfx
|
||||
INCLUDES := Include ./Libraries/FsLib/Switch/FsLib/include ./Libraries/SDLLib/SDL/include
|
||||
EXEFS_SRC := exefs_src
|
||||
APP_TITLE := JKSV
|
||||
APP_AUTHOR := JK
|
||||
APP_VERSION := 11.5.2024
|
||||
ROMFS := romfs
|
||||
APP_VERSION := 12.05.2024
|
||||
ROMFS := RomFS
|
||||
ICON := icon.jpg
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
|
@ -51,12 +51,14 @@ override CFLAGS += $(INCLUDE) -D__SWITCH__
|
|||
override CFLAGS += `sdl2-config --cflags` `freetype-config --cflags` `curl-config --cflags`
|
||||
override CFLAGS += -g -Wall -O2 -ffunction-sections -ffast-math $(ARCH) $(DEFINES)
|
||||
|
||||
CXXFLAGS:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17
|
||||
CXXFLAGS:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++23
|
||||
|
||||
ASFLAGS := -g $(ARCH)
|
||||
LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
||||
|
||||
LIBS := `sdl2-config --libs` `freetype-config --libs` `curl-config --libs` -lSDL2_image -lwebp -lpng -ljpeg -lz -lminizip -ljson-c -ltinyxml2 -lnx
|
||||
LIBS := ../Libraries/FsLib/Switch/FsLib/lib/libFsLib.a ../Libraries/SDLLib/SDL/lib/libSDL.a \
|
||||
`sdl2-config --libs` `freetype-config --libs` `curl-config --libs` -lSDL2_image \
|
||||
-lwebp -lpng -ljpeg -lz -lminizip -ljson-c -ltinyxml2 -lnx
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
|
|
@ -141,18 +143,30 @@ ifneq ($(ROMFS),)
|
|||
export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS)
|
||||
endif
|
||||
|
||||
.PHONY: $(BUILD) clean all
|
||||
.PHONY: $(BUILD) FsLib SDLLib clean all
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
all: $(BUILD)
|
||||
all: FsLib SDLLib $(BUILD)
|
||||
|
||||
$(BUILD):
|
||||
$(BUILD): FsLib SDLLib
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
FsLib:
|
||||
@$(MAKE) -C ./Libraries/FsLib/Switch/FsLib/
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
SDLLib:
|
||||
@$(MAKE) -C ./Libraries/SDLLib/SDL/
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
clean:
|
||||
@echo clean ...
|
||||
@$(MAKE) -C ./Libraries/FsLib clean
|
||||
@$(MAKE) -C ./Libraries/SDLLib clean
|
||||
@rm -fr $(BUILD) $(TARGET).pfs0 $(TARGET).nso $(TARGET).nro $(TARGET).nacp $(TARGET).elf
|
||||
|
||||
|
||||
|
|
|
|||
6
RomFS/Text/ENUS.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"TranslationInfo" : [
|
||||
"Translated By: %s",
|
||||
"NULL"
|
||||
]
|
||||
}
|
||||
BIN
RomFS/Textures/DialogCorners.png
Normal file
|
After Width: | Height: | Size: 507 B |
BIN
RomFS/Textures/HeaderIcon.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
RomFS/Textures/MenuBounding.png
Normal file
|
After Width: | Height: | Size: 682 B |
18
Source/AppStates/ProgressState.cpp
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#include "AppStates/ProgressState.hpp"
|
||||
#include "Colors.hpp"
|
||||
#include "SDL.hpp"
|
||||
#include "StringUtil.hpp"
|
||||
#include <cmath>
|
||||
|
||||
void ProgressState::Update(void)
|
||||
{
|
||||
m_ProgressBarWidth = std::ceil(720.0f * m_Task.GetCurrentProgress());
|
||||
m_Progress = std::ceil(m_Task.GetCurrentProgress() * 100);
|
||||
m_PercentageString = StringUtil::GetFormattedString("%u", m_Progress);
|
||||
m_PerentageX = 640 - (SDL::Text::GetWidth(18, m_PercentageString.c_str()));
|
||||
}
|
||||
|
||||
void ProgressState::Render(void)
|
||||
{
|
||||
SDL::RenderRectFill(NULL, 0, 0, 1280, 720, Colors::BackgroundDim);
|
||||
}
|
||||
23
Source/AppStates/TaskState.cpp
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#include "AppStates/TaskState.hpp"
|
||||
#include "Colors.hpp"
|
||||
#include "SDL.hpp"
|
||||
|
||||
void TaskState::Update(void)
|
||||
{
|
||||
if (!m_Task.IsRunning())
|
||||
{
|
||||
AppState::Deactivate();
|
||||
}
|
||||
}
|
||||
|
||||
void TaskState::Render(void)
|
||||
{
|
||||
// Grab task string.
|
||||
std::string Status = m_Task.GetStatus();
|
||||
// Center so it looks perty
|
||||
int StatusX = 640 - (SDL::Text::GetWidth(18, Status.c_str()) / 2);
|
||||
// Dim the background states.
|
||||
SDL::RenderRectFill(NULL, 0, 0, 1280, 720, Colors::BackgroundDim);
|
||||
// Render the status.
|
||||
SDL::Text::Render(NULL, StatusX, 351, 18, SDL::Text::NO_TEXT_WRAP, Colors::White, Status.c_str());
|
||||
}
|
||||
32
Source/Input.cpp
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#include "Input.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
PadState s_Gamepad;
|
||||
}
|
||||
|
||||
void Input::Initialize(void)
|
||||
{
|
||||
padConfigureInput(1, HidNpadStyleSet_NpadStandard);
|
||||
padInitializeDefault(&s_Gamepad);
|
||||
}
|
||||
|
||||
void Input::Update(void)
|
||||
{
|
||||
padUpdate(&s_Gamepad);
|
||||
}
|
||||
|
||||
bool Input::ButtonPressed(HidNpadButton Button)
|
||||
{
|
||||
return (s_Gamepad.buttons_cur & Button) && !(s_Gamepad.buttons_old & Button);
|
||||
}
|
||||
|
||||
bool Input::ButtonHeld(HidNpadButton Button)
|
||||
{
|
||||
return (s_Gamepad.buttons_cur & Button) && (s_Gamepad.buttons_old & Button);
|
||||
}
|
||||
|
||||
bool Input::ButtonReleased(HidNpadButton Button)
|
||||
{
|
||||
return (s_Gamepad.buttons_old & Button) && !(s_Gamepad.buttons_cur & Button);
|
||||
}
|
||||
141
Source/JKSV.cpp
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
#include "JKSV.hpp"
|
||||
#include "Colors.hpp"
|
||||
#include "FsLib.hpp"
|
||||
#include "Input.hpp"
|
||||
#include "Logger.hpp"
|
||||
#include "SDL.hpp"
|
||||
#include "Strings.hpp"
|
||||
#include <switch.h>
|
||||
|
||||
#include "UI/RenderFunctions.hpp"
|
||||
|
||||
#define ABORT_ON_FAILURE(x) \
|
||||
if (!x) \
|
||||
{ \
|
||||
return; \
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr uint8_t BUILD_MON = 12;
|
||||
constexpr uint8_t BUILD_DAY = 5;
|
||||
constexpr uint16_t BUILD_YEAR = 2024;
|
||||
} // namespace
|
||||
|
||||
template <typename... Args>
|
||||
static bool InitializeService(Result (*Function)(Args...), const char *ServiceName, Args... Arguments)
|
||||
{
|
||||
Result Error = (*Function)(Arguments...);
|
||||
if (R_FAILED(Error))
|
||||
{
|
||||
Logger::Log("Error initializing %s: 0x%X.", Error);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
JKSV::JKSV(void)
|
||||
{
|
||||
ABORT_ON_FAILURE(FsLib::Initialize());
|
||||
// Need to init RomFS here for now until I update FsLib to take care of this.
|
||||
ABORT_ON_FAILURE(InitializeService(romfsInit, "RomFS"));
|
||||
// Let FsLib take care of calls to SDMC instead of fs_dev
|
||||
ABORT_ON_FAILURE(FsLib::Dev::InitializeSDMC());
|
||||
// SDL
|
||||
ABORT_ON_FAILURE(SDL::Initialize("JKSV", 1280, 720));
|
||||
ABORT_ON_FAILURE(SDL::Text::Initialize());
|
||||
|
||||
// Services.
|
||||
// Using administrator so JKSV can still run in Applet mode.
|
||||
ABORT_ON_FAILURE(InitializeService(accountInitialize, "Account", AccountServiceType_Administrator));
|
||||
ABORT_ON_FAILURE(InitializeService(nsInitialize, "NS"));
|
||||
ABORT_ON_FAILURE(InitializeService(pdmqryInitialize, "PDMQry"));
|
||||
ABORT_ON_FAILURE(InitializeService(plInitialize, "PL", PlServiceType_User));
|
||||
ABORT_ON_FAILURE(InitializeService(pmshellInitialize, "PMShell"));
|
||||
ABORT_ON_FAILURE(InitializeService(setInitialize, "Set"));
|
||||
ABORT_ON_FAILURE(InitializeService(setsysInitialize, "SetSys"));
|
||||
ABORT_ON_FAILURE(InitializeService(socketInitializeDefault, "Socket"));
|
||||
|
||||
// This needs Set. JKSV also has no internal strings anymore. This is FATAL now.
|
||||
ABORT_ON_FAILURE(Strings::Initialize());
|
||||
|
||||
// Install/setup our color changing characters.
|
||||
SDL::Text::AddColorCharacter(L'#', Colors::Blue);
|
||||
SDL::Text::AddColorCharacter(L'*', Colors::Red);
|
||||
SDL::Text::AddColorCharacter(L'<', Colors::Yellow);
|
||||
SDL::Text::AddColorCharacter(L'>', Colors::Green);
|
||||
|
||||
// This is to check whether the author wanted credit for their work.
|
||||
m_ShowTranslationInfo = std::char_traits<char>::compare(Strings::GetByName(Strings::Names::TranslationInfo, 1), "NULL", 4) != 0;
|
||||
|
||||
// This can't be in an initializer list because it needs SDL initialized.
|
||||
m_HeaderIcon = SDL::TextureManager::CreateLoadTexture("HeaderIcon", "romfs:/Textures/HeaderIcon.png");
|
||||
|
||||
Input::Initialize();
|
||||
|
||||
m_IsRunning = true;
|
||||
}
|
||||
|
||||
JKSV::~JKSV()
|
||||
{
|
||||
socketExit();
|
||||
setsysExit();
|
||||
setExit();
|
||||
pmshellExit();
|
||||
plExit();
|
||||
pdmqryExit();
|
||||
nsExit();
|
||||
accountExit();
|
||||
SDL::Text::Exit();
|
||||
SDL::Exit();
|
||||
FsLib::Exit();
|
||||
}
|
||||
|
||||
bool JKSV::IsRunning(void) const
|
||||
{
|
||||
return m_IsRunning;
|
||||
}
|
||||
|
||||
void JKSV::Update(void)
|
||||
{
|
||||
Input::Update();
|
||||
|
||||
if (Input::ButtonPressed(HidNpadButton_Plus))
|
||||
{
|
||||
m_IsRunning = false;
|
||||
}
|
||||
}
|
||||
|
||||
void JKSV::Render(void)
|
||||
{
|
||||
SDL::FrameBegin(Colors::ClearColor);
|
||||
// Top and bottom divider lines.
|
||||
SDL::RenderLine(NULL, 30, 88, 1250, 88, Colors::White);
|
||||
SDL::RenderLine(NULL, 30, 648, 1250, 648, Colors::White);
|
||||
// Icon
|
||||
m_HeaderIcon->Render(NULL, 66, 27);
|
||||
// "JKSV"
|
||||
SDL::Text::Render(NULL, 130, 32, 34, SDL::Text::NO_TEXT_WRAP, Colors::White, "JKSV");
|
||||
// Translation info in bottom left.
|
||||
if (m_ShowTranslationInfo)
|
||||
{
|
||||
SDL::Text::Render(NULL,
|
||||
8,
|
||||
682,
|
||||
12,
|
||||
SDL::Text::NO_TEXT_WRAP,
|
||||
Colors::White,
|
||||
Strings::GetByName(Strings::Names::TranslationInfo, 0),
|
||||
Strings::GetByName(Strings::Names::TranslationInfo, 1));
|
||||
}
|
||||
SDL::Text::Render(NULL, 8, 700, 12, SDL::Text::NO_TEXT_WRAP, Colors::White, "v %02d.%02d.%04d", BUILD_MON, BUILD_DAY, BUILD_YEAR);
|
||||
|
||||
UI::RenderDialogBox(NULL, 320, 240, 320, 240);
|
||||
|
||||
SDL::FrameEnd();
|
||||
}
|
||||
|
||||
void JKSV::PushState(std::shared_ptr<AppState> NewState)
|
||||
{
|
||||
m_StateVector.push_back(NewState);
|
||||
}
|
||||
32
Source/Logger.cpp
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#include "Logger.hpp"
|
||||
#include "FsLib.hpp"
|
||||
#include <cstdarg>
|
||||
|
||||
namespace
|
||||
{
|
||||
// Path to log file.
|
||||
FsLib::Path s_LogFilePath;
|
||||
// Size of va buffer for log.
|
||||
constexpr size_t VA_BUFFER_SIZE = 0x1000;
|
||||
} // namespace
|
||||
|
||||
void Logger::Initialize(void)
|
||||
{
|
||||
// To do: Update this once config is implemented.
|
||||
s_LogFilePath = "sdmc:/JKSV/JKSV.log";
|
||||
FsLib::File LogFile(s_LogFilePath, FsOpenMode_Create | FsOpenMode_Write);
|
||||
}
|
||||
|
||||
void Logger::Log(const char *Format, ...)
|
||||
{
|
||||
char VaBuffer[VA_BUFFER_SIZE] = {0};
|
||||
|
||||
std::va_list VaList;
|
||||
va_start(VaList, Format);
|
||||
vsnprintf(VaBuffer, VA_BUFFER_SIZE, Format, VaList);
|
||||
va_end(VaList);
|
||||
|
||||
FsLib::File LogFile(s_LogFilePath, FsOpenMode_Append);
|
||||
LogFile << VaBuffer << "\n";
|
||||
LogFile.Flush();
|
||||
}
|
||||
12
Source/Main.cpp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#include "JKSV.hpp"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
JKSV Jksv;
|
||||
while (Jksv.IsRunning())
|
||||
{
|
||||
Jksv.Update();
|
||||
Jksv.Render();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
19
Source/StringUtil.cpp
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#include "StringUtil.hpp"
|
||||
#include <cstdarg>
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr size_t VA_BUFFER_SIZE = 0x1000;
|
||||
}
|
||||
|
||||
std::string StringUtil::GetFormattedString(const char *Format, ...)
|
||||
{
|
||||
char VaBuffer[VA_BUFFER_SIZE];
|
||||
|
||||
std::va_list VaList;
|
||||
va_start(VaList, Format);
|
||||
vsnprintf(VaBuffer, VA_BUFFER_SIZE, Format, VaList);
|
||||
va_end(VaList);
|
||||
|
||||
return std::string(VaBuffer);
|
||||
}
|
||||
90
Source/Strings.cpp
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
#include "Strings.hpp"
|
||||
#include "FsLib.hpp"
|
||||
#include "JSON.hpp"
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace
|
||||
{
|
||||
// This is the actual map where the strings are.
|
||||
std::map<std::pair<std::string, int>, std::string> s_StringMap;
|
||||
// This map is for matching files to the language value
|
||||
std::unordered_map<SetLanguage, std::string_view> s_FileMap = {{SetLanguage_JA, "JA.json"},
|
||||
{SetLanguage_ENUS, "ENUS.json"},
|
||||
{SetLanguage_FR, "FR.json"},
|
||||
{SetLanguage_DE, "DE.json"},
|
||||
{SetLanguage_IT, "IT.json"},
|
||||
{SetLanguage_ES, "ES.json"},
|
||||
{SetLanguage_ZHCN, "ZHCN.json"},
|
||||
{SetLanguage_KO, "KO.json"},
|
||||
{SetLanguage_NL, "NL.json"},
|
||||
{SetLanguage_PT, "PT.json"},
|
||||
{SetLanguage_RU, "RU.json"},
|
||||
{SetLanguage_ZHTW, "ZHTW.json"},
|
||||
{SetLanguage_ENGB, "ENGB.json"},
|
||||
{SetLanguage_FRCA, "FRCA.json"},
|
||||
{SetLanguage_ES419, "ES419.json"},
|
||||
{SetLanguage_ZHHANS, "ZHCN.json"},
|
||||
{SetLanguage_ZHHANT, "ZHTW.json"},
|
||||
{SetLanguage_PTBR, "PTBR.json"}};
|
||||
} // namespace
|
||||
|
||||
static FsLib::Path GetStringFilePath(void)
|
||||
{
|
||||
FsLib::Path ReturnPath = "romfs:/Text";
|
||||
|
||||
uint64_t LanguageCode = 0;
|
||||
Result SetError = setGetLanguageCode(&LanguageCode);
|
||||
if (R_FAILED(SetError))
|
||||
{
|
||||
return ReturnPath / s_FileMap.at(SetLanguage_ENUS);
|
||||
}
|
||||
|
||||
SetLanguage Language;
|
||||
SetError = setMakeLanguage(LanguageCode, &Language);
|
||||
if (R_FAILED(SetError))
|
||||
{
|
||||
return ReturnPath / s_FileMap.at(SetLanguage_ENUS);
|
||||
}
|
||||
return ReturnPath / s_FileMap.at(Language);
|
||||
}
|
||||
|
||||
bool Strings::Initialize()
|
||||
{
|
||||
FsLib::Path StringsPath = GetStringFilePath();
|
||||
|
||||
JSON::Object TextJSON = JSON::NewObject(json_object_from_file, StringsPath.CString());
|
||||
if (!TextJSON)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
json_object_iterator StringIterator = json_object_iter_begin(TextJSON.get());
|
||||
json_object_iterator StringEnd = json_object_iter_end(TextJSON.get());
|
||||
while (!json_object_iter_equal(&StringIterator, &StringEnd))
|
||||
{
|
||||
// Get name of string(s) and pointer to array
|
||||
const char *StringName = json_object_iter_peek_name(&StringIterator);
|
||||
json_object *StringArray = json_object_iter_peek_value(&StringIterator);
|
||||
|
||||
// Loop through array and add them to map so I can be lazier and not have to edit code or do shit to add more strings.
|
||||
size_t ArrayLength = json_object_array_length(StringArray);
|
||||
for (size_t i = 0; i < ArrayLength; i++)
|
||||
{
|
||||
json_object *String = json_object_array_get_idx(StringArray, i);
|
||||
s_StringMap[std::make_pair(StringName, static_cast<int>(i))] = json_object_get_string(String);
|
||||
}
|
||||
json_object_iter_next(&StringIterator);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const char *Strings::GetByName(std::string_view Name, int Index)
|
||||
{
|
||||
if (s_StringMap.find(std::make_pair(Name.data(), Index)) == s_StringMap.end())
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return s_StringMap.at(std::make_pair(Name.data(), Index)).c_str();
|
||||
}
|
||||
16
Source/System/ProgressTask.cpp
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#include "ProgressTask.hpp"
|
||||
|
||||
void System::ProgressTask::Reset(double Goal)
|
||||
{
|
||||
m_Goal = Goal;
|
||||
}
|
||||
|
||||
void System::ProgressTask::UpdateCurrent(double Current)
|
||||
{
|
||||
m_Current = Current;
|
||||
}
|
||||
|
||||
double System::ProgressTask::GetCurrentProgress(void) const
|
||||
{
|
||||
return m_Current / m_Goal;
|
||||
}
|
||||
41
Source/System/Task.cpp
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#include "Task.hpp"
|
||||
#include <cstdarg>
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr size_t VA_BUFFER_SIZE = 0x1000;
|
||||
}
|
||||
|
||||
System::Task::~Task()
|
||||
{
|
||||
m_Thread.join();
|
||||
}
|
||||
|
||||
bool System::Task::IsRunning(void) const
|
||||
{
|
||||
return m_IsRunning;
|
||||
}
|
||||
|
||||
void System::Task::Finished(void)
|
||||
{
|
||||
m_IsRunning = false;
|
||||
}
|
||||
|
||||
void System::Task::SetStatus(const char *Format, ...)
|
||||
{
|
||||
char VaBuffer[VA_BUFFER_SIZE];
|
||||
|
||||
std::va_list VaList;
|
||||
va_start(VaList, Format);
|
||||
vsnprintf(VaBuffer, VA_BUFFER_SIZE, Format, VaList);
|
||||
va_end(VaList);
|
||||
|
||||
std::scoped_lock<std::mutex> StatusLock(m_StatusLock);
|
||||
m_Status = VaBuffer;
|
||||
}
|
||||
|
||||
std::string System::Task::GetStatus(void)
|
||||
{
|
||||
std::scoped_lock<std::mutex> StatusLock(m_StatusLock);
|
||||
return m_Status;
|
||||
}
|
||||
27
Source/UI/RenderFunctions.cpp
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#include "UI/RenderFunctions.hpp"
|
||||
#include "Colors.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
SDL::SharedTexture s_DialogCorners = nullptr;
|
||||
SDL::SharedTexture s_MenuBoundingCorners = nullptr;
|
||||
} // namespace
|
||||
|
||||
void UI::RenderDialogBox(SDL_Texture *Target, int X, int Y, int Width, int Height)
|
||||
{
|
||||
if (!s_DialogCorners)
|
||||
{
|
||||
s_DialogCorners = SDL::TextureManager::CreateLoadTexture("DialogCorners", "romfs:/Textures/DialogCorners.png");
|
||||
}
|
||||
|
||||
// Top
|
||||
s_DialogCorners->RenderPart(Target, X, Y, 0, 0, 16, 16);
|
||||
SDL::RenderRectFill(Target, X + 16, Y, Width - 32, 16, Colors::DialogBox);
|
||||
s_DialogCorners->RenderPart(Target, (X + Width) - 16, Y, 16, 0, 16, 16);
|
||||
// Middle
|
||||
SDL::RenderRectFill(NULL, X, Y + 16, Width, Height - 32, Colors::DialogBox);
|
||||
// Bottom
|
||||
s_DialogCorners->RenderPart(Target, X, (Y + Height) - 16, 0, 16, 16, 16);
|
||||
SDL::RenderRectFill(NULL, X + 16, (Y + Height) - 16, Width - 32, 16, Colors::DialogBox);
|
||||
s_DialogCorners->RenderPart(NULL, (X + Width) - 16, (Y + Height) - 16, 16, 16, 16, 16);
|
||||
}
|
||||
39
inc/cfg.h
|
|
@ -1,39 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace cfg
|
||||
{
|
||||
typedef enum
|
||||
{
|
||||
ALPHA,
|
||||
MOST_PLAYED,
|
||||
LAST_PLAYED
|
||||
} sortTypes;
|
||||
|
||||
void resetConfig();
|
||||
void loadConfig();
|
||||
void saveConfig();
|
||||
|
||||
bool isBlacklisted(const uint64_t& tid);
|
||||
void addTitleToBlacklist(void *a);
|
||||
void removeTitleFromBlacklist(const uint64_t& tid);
|
||||
|
||||
bool isFavorite(const uint64_t& tid);
|
||||
void addTitleToFavorites(const uint64_t& tid);
|
||||
|
||||
bool isDefined(const uint64_t& tid);
|
||||
void pathDefAdd(const uint64_t& tid, const std::string& newPath);
|
||||
std::string getPathDefinition(const uint64_t& tid);
|
||||
|
||||
void addPathToFilter(const uint64_t& tid, const std::string& _p);
|
||||
|
||||
extern std::unordered_map<std::string, bool> config;
|
||||
extern std::vector<uint64_t> blacklist;
|
||||
extern std::vector<uint64_t> favorites;
|
||||
extern uint8_t sortType;
|
||||
extern std::string driveClientID, driveClientSecret, driveRefreshToken;
|
||||
extern std::string webdavOrigin, webdavBasePath, webdavUser, webdavPassword;
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#define HEADER_ERROR "ERROR"
|
||||
|
||||
namespace curlFuncs
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
FILE *f;
|
||||
uint64_t *o;
|
||||
} curlUpArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
std::string path;
|
||||
unsigned int size;
|
||||
uint64_t *o;
|
||||
} curlDlArgs;
|
||||
|
||||
size_t writeDataString(const char *buff, size_t sz, size_t cnt, void *u);
|
||||
size_t writeHeaders(const char *buff, size_t sz, size_t cnt, void *u);
|
||||
size_t readDataFile(char *buff, size_t sz, size_t cnt, void *u);
|
||||
size_t readDataBuffer(char *buff, size_t sz, size_t cnt, void *u);
|
||||
size_t writeDataFile(const char *buff, size_t sz, size_t cnt, void *u);
|
||||
size_t writeDataBuffer(const char *buff, size_t sz, size_t cnt, void *u);
|
||||
|
||||
std::string getHeader(const std::string& _name, std::vector<std::string> *h);
|
||||
|
||||
//Shortcuts/legacy
|
||||
std::string getJSONURL(std::vector<std::string> *headers, const std::string& url);
|
||||
bool getBinURL(std::vector<uint8_t> *out, const std::string& url);
|
||||
}
|
||||
103
inc/data.h
|
|
@ -1,103 +0,0 @@
|
|||
#pragma once
|
||||
#include <switch.h>
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
#include "gfx.h"
|
||||
|
||||
#define BLD_MON 11
|
||||
#define BLD_DAY 5
|
||||
#define BLD_YEAR 2024
|
||||
|
||||
namespace data
|
||||
{
|
||||
//Loads user + title info
|
||||
void init();
|
||||
void exit();
|
||||
bool loadUsersTitles(bool clearUsers);
|
||||
void sortUserTitles();
|
||||
|
||||
//Draws some stats to the upper left corner
|
||||
void dispStats();
|
||||
|
||||
//Global stuff for all titles/saves
|
||||
typedef struct
|
||||
{
|
||||
NacpStruct nacp;
|
||||
std::string title, safeTitle, author;//Shortcuts sorta.
|
||||
SDL_Texture *icon = NULL;
|
||||
bool fav;
|
||||
} titleInfo;
|
||||
|
||||
//Holds stuff specific to user's titles/saves
|
||||
typedef struct
|
||||
{
|
||||
//Makes it easier to grab id
|
||||
uint64_t tid;
|
||||
FsSaveDataInfo saveInfo;
|
||||
PdmPlayStatistics playStats;
|
||||
} userTitleInfo;
|
||||
|
||||
//Class to store user info + titles
|
||||
class user
|
||||
{
|
||||
public:
|
||||
user() = default;
|
||||
user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName);
|
||||
user(const AccountUid& _id, const std::string& _backupName, const std::string& _safeBackupName, SDL_Texture *img);
|
||||
|
||||
//Sets ID
|
||||
void setUID(const AccountUid& _id);
|
||||
|
||||
//Assigns icon
|
||||
void assignIcon(SDL_Texture *_icn) { userIcon = _icn; }
|
||||
|
||||
//Returns user ID
|
||||
AccountUid getUID() const { return userID; }
|
||||
u128 getUID128() const { return uID128; }
|
||||
|
||||
//Returns username
|
||||
std::string getUsername() const { return username; }
|
||||
std::string getUsernameSafe() const { return userSafe; }
|
||||
|
||||
SDL_Texture *getUserIcon(){ return userIcon; }
|
||||
void delIcon(){ SDL_DestroyTexture(userIcon); }
|
||||
|
||||
std::vector<data::userTitleInfo> titleInfo;
|
||||
void addUserTitleInfo(const uint64_t& _tid, const FsSaveDataInfo *_saveInfo, const PdmPlayStatistics *_stats);
|
||||
|
||||
private:
|
||||
AccountUid userID;
|
||||
u128 uID128;
|
||||
std::string username, userSafe;
|
||||
//User icon
|
||||
SDL_Texture *userIcon;
|
||||
};
|
||||
|
||||
//User vector
|
||||
extern std::vector<user> users;
|
||||
//Title data/info map
|
||||
extern std::unordered_map<uint64_t, data::titleInfo> titles;
|
||||
|
||||
//Sets/Retrieves current user/title
|
||||
void setUserIndex(unsigned _sUser);
|
||||
data::user *getCurrentUser();
|
||||
unsigned getCurrentUserIndex();
|
||||
|
||||
void setTitleIndex(unsigned _sTitle);
|
||||
data::userTitleInfo *getCurrentUserTitleInfo();
|
||||
unsigned getCurrentUserTitleInfoIndex();
|
||||
|
||||
//Gets pointer to info that also has title + nacp
|
||||
data::titleInfo *getTitleInfoByTID(const uint64_t& tid);
|
||||
|
||||
//More shortcut functions
|
||||
std::string getTitleNameByTID(const uint64_t& tid);
|
||||
std::string getTitleSafeNameByTID(const uint64_t& tid);
|
||||
SDL_Texture *getTitleIconByTID(const uint64_t& tid);
|
||||
int getTitleIndexInUser(const data::user& u, const uint64_t& tid);
|
||||
extern SetLanguage sysLang;
|
||||
|
||||
}
|
||||
55
inc/fs.h
|
|
@ -1,55 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <minizip/zip.h>
|
||||
#include <minizip/unzip.h>
|
||||
|
||||
#include "fs/fstype.h"
|
||||
#include "fs/file.h"
|
||||
#include "fs/dir.h"
|
||||
#include "fs/zip.h"
|
||||
#include "fs/fsfile.h"
|
||||
#include "fs/remote.h"
|
||||
#include "ui/miscui.h"
|
||||
|
||||
#define BUFF_SIZE 0x4000
|
||||
#define ZIP_BUFF_SIZE 0x20000
|
||||
#define TRANSFER_BUFFER_LIMIT 0xC00000
|
||||
|
||||
namespace fs
|
||||
{
|
||||
copyArgs *copyArgsCreate(const std::string& src, const std::string& dst, const std::string& dev, zipFile z, unzFile unz, bool _cleanup, bool _trimZipPath, uint8_t _trimPlaces);
|
||||
void copyArgsDestroy(copyArgs *c);
|
||||
|
||||
void init();
|
||||
bool mountSave(const FsSaveDataInfo& _m);
|
||||
inline bool unmountSave() { return fsdevUnmountDevice("sv") == 0; }
|
||||
bool commitToDevice(const std::string& dev);
|
||||
std::string getWorkDir();
|
||||
void setWorkDir(const std::string& _w);
|
||||
|
||||
//Loads paths to filter from backup/deletion
|
||||
void loadPathFilters(const uint64_t& tid);
|
||||
bool pathIsFiltered(const std::string& _path);
|
||||
void freePathFilters();
|
||||
|
||||
void createSaveData(FsSaveDataType _type, uint64_t _tid, AccountUid _uid, threadInfo *t);
|
||||
void createSaveDataThreaded(FsSaveDataType _type, uint64_t _tid, AccountUid _uid);
|
||||
bool extendSaveData(const data::userTitleInfo *tinfo, uint64_t extSize, threadInfo *t);
|
||||
void extendSaveDataThreaded(const data::userTitleInfo *tinfo, uint64_t extSize);
|
||||
uint64_t getJournalSize(const data::userTitleInfo *tinfo);
|
||||
uint64_t getJournalSizeMax(const data::userTitleInfo *tinfo);
|
||||
|
||||
//Always threaded
|
||||
void wipeSave();
|
||||
|
||||
void createNewBackup(void *a);
|
||||
void overwriteBackup(void *a);
|
||||
void restoreBackup(void *a);
|
||||
void deleteBackup(void *a);
|
||||
|
||||
void dumpAllUserSaves(void *a);
|
||||
void dumpAllUsersAllSaves(void *a);
|
||||
|
||||
void logOpen();
|
||||
void logWrite(const char *fmt, ...);
|
||||
}
|
||||
54
inc/fs/dir.h
|
|
@ -1,54 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "type.h"
|
||||
|
||||
namespace fs
|
||||
{
|
||||
void mkDir(const std::string& _p);
|
||||
void mkDirRec(const std::string& _p);
|
||||
void delDir(const std::string& _p);
|
||||
bool dirNotEmpty(const std::string& _dir);
|
||||
bool isDir(const std::string& _path);
|
||||
|
||||
//threadInfo is optional. Only for updating task status.
|
||||
void copyDirToDir(const std::string& src, const std::string& dst, threadInfo *t);
|
||||
void copyDirToDirThreaded(const std::string& src, const std::string& dst);
|
||||
void copyDirToDirCommit(const std::string& src, const std::string& dst, const std::string& dev, threadInfo *t);
|
||||
void copyDirToDirCommitThreaded(const std::string& src, const std::string& dst, const std::string& dev);
|
||||
void getDirProps(const std::string& path, unsigned& dirCount, unsigned& fileCount, uint64_t& totalSize);
|
||||
|
||||
class dirItem
|
||||
{
|
||||
public:
|
||||
dirItem(const std::string& pathTo, const std::string& sItem);
|
||||
std::string getItm() const { return itm; }
|
||||
std::string getName() const;
|
||||
std::string getExt() const;
|
||||
bool isDir() const { return dir; }
|
||||
|
||||
private:
|
||||
std::string itm;
|
||||
bool dir = false;
|
||||
};
|
||||
|
||||
//Just retrieves a listing for _path and stores it in item vector
|
||||
class dirList
|
||||
{
|
||||
public:
|
||||
dirList() = default;
|
||||
dirList(const std::string& _path, bool ignoreDotFiles = false);
|
||||
void reassign(const std::string& _path);
|
||||
void rescan();
|
||||
|
||||
std::string getItem(int index) const { return item[index].getItm(); }
|
||||
std::string getItemExt(int index) const { return item[index].getExt(); }
|
||||
bool isDir(int index) const { return item[index].isDir(); }
|
||||
unsigned getCount() const { return item.size(); }
|
||||
fs::dirItem *getDirItemAt(unsigned int _ind) { return &item[_ind]; }
|
||||
|
||||
private:
|
||||
std::string path;
|
||||
std::vector<dirItem> item;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <vector>
|
||||
#include <switch.h>
|
||||
#include <dirent.h>
|
||||
#include <minizip/zip.h>
|
||||
#include <minizip/unzip.h>
|
||||
|
||||
#include "fs.h"
|
||||
#include "data.h"
|
||||
#include "ui.h"
|
||||
|
||||
namespace fs
|
||||
{
|
||||
//Copy args are optional and only used if passed and threaded
|
||||
void copyFile(const std::string& src, const std::string& dst, threadInfo *t);
|
||||
void copyFileThreaded(const std::string& src, const std::string& dst);
|
||||
void copyFileCommit(const std::string& src, const std::string& dst, const std::string& dev, threadInfo *t);
|
||||
void copyFileCommitThreaded(const std::string& src, const std::string& dst, const std::string& dev);
|
||||
void fileDrawFunc(void *a);
|
||||
|
||||
//deletes file
|
||||
void delfile(const std::string& _p);
|
||||
|
||||
//Dumps all titles for current user
|
||||
void dumpAllUserSaves();
|
||||
|
||||
void getShowFileProps(const std::string& _path);
|
||||
void getShowDirProps(const std::string& _path);
|
||||
|
||||
bool fileExists(const std::string& _path);
|
||||
//Returns file size
|
||||
size_t fsize(const std::string& _f);
|
||||
|
||||
class dataFile
|
||||
{
|
||||
public:
|
||||
dataFile(const std::string& _path);
|
||||
~dataFile();
|
||||
void close(){ fclose(f); }
|
||||
|
||||
bool isOpen() const { return opened; }
|
||||
|
||||
bool readNextLine(bool proc);
|
||||
//Finds where variable name ends. When a '(' or '=' is hit. Strips spaces
|
||||
void procLine();
|
||||
std::string getLine() const { return line; }
|
||||
std::string getName() const { return name; }
|
||||
//Reads until ';', ',', or '\n' is hit and returns as string.
|
||||
std::string getNextValueStr();
|
||||
int getNextValueInt();
|
||||
|
||||
private:
|
||||
FILE *f;
|
||||
std::string line, name;
|
||||
size_t lPos = 0;
|
||||
bool opened = false;
|
||||
};
|
||||
|
||||
void logOpen();
|
||||
void logWrite(const char *fmt, ...);
|
||||
void logClose();
|
||||
}
|
||||
100
inc/fs/fsfile.h
|
|
@ -1,100 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <switch.h>
|
||||
#include <stdint.h>
|
||||
|
||||
//Bare minimum wrapper around switch fs for JKSV
|
||||
#define FS_SEEK_SET 0
|
||||
#define FS_SEEK_CUR 1
|
||||
#define FS_SEEK_END 2
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
typedef struct
|
||||
{
|
||||
FsFile _f;
|
||||
Result error;
|
||||
s64 offset, fsize;
|
||||
} FSFILE;
|
||||
|
||||
int fsremove(const char *_p);
|
||||
Result fsDelDirRec(const char *_p);
|
||||
|
||||
char *getDeviceFromPath(char *dev, size_t _max, const char *path);
|
||||
char *getFilePath(char *pathOut, size_t _max, const char *path);
|
||||
|
||||
bool fsMkDir(const char *_p);
|
||||
|
||||
/*Opens file. Device is fetched from path. Libnx romfs doesn't work with this.
|
||||
Mode needs to be:
|
||||
FsOpenMode_Read
|
||||
FsOpenMode_Write
|
||||
FsOpenMode_Append
|
||||
*/
|
||||
bool fsfcreate(const char *_p, int64_t crSize);
|
||||
|
||||
FSFILE *fsfopen(const char *_p, uint32_t mode);
|
||||
|
||||
/*Same as above, but FsFileSystem _s is used. Path cannot have device in it*/
|
||||
FSFILE *fsfopenWithSystem(FsFileSystem *_s, const char *_p, uint32_t mode);
|
||||
|
||||
//Closes _f
|
||||
inline void fsfclose(FSFILE *_f)
|
||||
{
|
||||
if(_f != NULL)
|
||||
{
|
||||
fsFileClose(&_f->_f);
|
||||
free(_f);
|
||||
}
|
||||
}
|
||||
|
||||
//Seeks like stdio
|
||||
inline void fsfseek(FSFILE *_f, int offset, int origin)
|
||||
{
|
||||
switch(origin)
|
||||
{
|
||||
case FS_SEEK_SET:
|
||||
_f->offset = offset;
|
||||
break;
|
||||
|
||||
case FS_SEEK_CUR:
|
||||
_f->offset += offset;
|
||||
break;
|
||||
|
||||
case FS_SEEK_END:
|
||||
_f->offset = offset + _f->fsize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Returns offset
|
||||
inline size_t fsftell(FSFILE *_f) { return _f->offset; }
|
||||
|
||||
//Writes buf to file. Automatically resizes _f to fit buf
|
||||
size_t fsfwrite(const void *buf, size_t sz, size_t count, FSFILE *_f);
|
||||
|
||||
//Reads to buff
|
||||
inline size_t fsfread(void *buf, size_t sz, size_t count, FSFILE *_f)
|
||||
{
|
||||
uint64_t read = 0;
|
||||
_f->error = fsFileRead(&_f->_f, _f->offset, buf, sz * count, 0, &read);
|
||||
_f->offset += read;
|
||||
return read;
|
||||
}
|
||||
|
||||
//Gets byte from file
|
||||
inline char fsfgetc(FSFILE *_f)
|
||||
{
|
||||
char ret = 0;
|
||||
uint64_t read = 0;
|
||||
_f->error = fsFileRead(&_f->_f, _f->offset++, &ret, 1, 0, &read);
|
||||
return ret;
|
||||
}
|
||||
|
||||
//Writes byte to file
|
||||
inline void fsfputc(int ch, FSFILE *_f) { fsfwrite(&ch, 1, 1, _f); }
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "data.h"
|
||||
#include "miscui.h"
|
||||
#include "type.h"
|
||||
|
||||
namespace fs
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
std::string src, dst, dev;
|
||||
zipFile z;
|
||||
unzFile unz;
|
||||
bool cleanup = false, trimZipPath = false;
|
||||
uint8_t trimZipPlaces = 0;
|
||||
uint64_t offset = 0;
|
||||
ui::progBar *prog;
|
||||
threadStatus *thrdStatus;
|
||||
Mutex arglck = 0;
|
||||
void argLock() { mutexLock(&arglck); }
|
||||
void argUnlock() { mutexUnlock(&arglck); }
|
||||
} copyArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FsSaveDataType type;
|
||||
uint64_t tid;
|
||||
AccountUid account;
|
||||
uint16_t index;
|
||||
} svCreateArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const data::userTitleInfo *tinfo;
|
||||
uint64_t extSize;
|
||||
} svExtendArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
std::string path;
|
||||
bool origin = false;
|
||||
unsigned dirCount = 0;
|
||||
unsigned fileCount = 0;
|
||||
uint64_t totalSize = 0;
|
||||
} dirCountArgs;
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "../rfs.h"
|
||||
|
||||
#define JKSV_DRIVE_FOLDER "JKSV"
|
||||
|
||||
namespace fs
|
||||
{
|
||||
extern rfs::IRemoteFS *rfs;
|
||||
extern std::string rfsRootID;
|
||||
|
||||
void remoteInit();
|
||||
void remoteExit();
|
||||
|
||||
// Google Drive
|
||||
void driveInit();
|
||||
std::string driveSignInGetAuthCode();
|
||||
|
||||
// Webdav
|
||||
void webDavInit();
|
||||
}
|
||||
18
inc/fs/zip.h
|
|
@ -1,18 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <minizip/zip.h>
|
||||
#include <minizip/unzip.h>
|
||||
|
||||
#include "type.h"
|
||||
|
||||
namespace fs
|
||||
{
|
||||
//threadInfo is optional and only used when threaded versions are used
|
||||
void copyDirToZip(const std::string& src, zipFile dst, bool trimPath, int trimPlaces, threadInfo *t);
|
||||
void copyDirToZipThreaded(const std::string& src, zipFile dst, bool trimPath, int trimPlaces);
|
||||
void copyZipToDir(unzFile src, const std::string& dst, const std::string& dev, threadInfo *t);
|
||||
void copyZipToDirThreaded(unzFile src, const std::string& dst, const std::string& dev);
|
||||
uint64_t getZipTotalSize(unzFile unz);
|
||||
bool zipNotEmpty(unzFile unz);
|
||||
}
|
||||
66
inc/gd.h
|
|
@ -1,66 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <curl/curl.h>
|
||||
#include <json-c/json.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
|
||||
#include "curlfuncs.h"
|
||||
#include "rfs.h"
|
||||
|
||||
#define HEADER_CONTENT_TYPE_APP_JSON "Content-Type: application/json; charset=UTF-8"
|
||||
#define HEADER_AUTHORIZATION "Authorization: Bearer "
|
||||
|
||||
#define MIMETYPE_FOLDER "application/vnd.google-apps.folder"
|
||||
|
||||
namespace drive
|
||||
{
|
||||
class gd : public rfs::IRemoteFS
|
||||
{
|
||||
public:
|
||||
void setClientID(const std::string& _clientID) { clientID = _clientID; }
|
||||
void setClientSecret(const std::string& _clientSecret) { secretID = _clientSecret; }
|
||||
void setRefreshToken(const std::string& _refreshToken) { rToken = _refreshToken; }
|
||||
|
||||
bool exhangeAuthCode(const std::string& _authCode);
|
||||
bool hasToken() { return token.empty() == false; }
|
||||
bool refreshToken();
|
||||
bool tokenIsValid();
|
||||
|
||||
void clearDriveList() { driveList.clear(); }
|
||||
// TODO: This also gets files that do not belong to JKSV
|
||||
void driveListInit(const std::string& _q);
|
||||
void driveListAppend(const std::string& _q);
|
||||
std::vector<rfs::RfsItem> getListWithParent(const std::string& _parent);
|
||||
void debugWriteList();
|
||||
|
||||
bool createDir(const std::string& _dirName, const std::string& _parent);
|
||||
// TODO: This is problematic, because multiple files could share the same name without a parent.
|
||||
bool dirExists(const std::string& _dirName);
|
||||
bool dirExists(const std::string& _dirName, const std::string& _parent);
|
||||
|
||||
bool fileExists(const std::string& _filename, const std::string& _parent);
|
||||
void uploadFile(const std::string& _filename, const std::string& _parent, curlFuncs::curlUpArgs *_upload);
|
||||
void updateFile(const std::string& _fileID, curlFuncs::curlUpArgs *_upload);
|
||||
void downloadFile(const std::string& _fileID, curlFuncs::curlDlArgs *_download);
|
||||
void deleteFile(const std::string& _fileID);
|
||||
|
||||
std::string getClientID() const { return clientID; }
|
||||
std::string getClientSecret() const { return secretID; }
|
||||
std::string getRefreshToken() const { return rToken; }
|
||||
|
||||
std::string getFileID(const std::string& _name, const std::string& _parent);
|
||||
// TODO: This is problematic, because multiple files could share the same name without a parent.
|
||||
std::string getDirID(const std::string& _name);
|
||||
std::string getDirID(const std::string& _name, const std::string& _parent);
|
||||
|
||||
size_t getDriveListCount() const { return driveList.size(); }
|
||||
rfs::RfsItem *getItemAt(unsigned int _ind) { return &driveList[_ind]; }
|
||||
|
||||
private:
|
||||
std::vector<rfs::RfsItem> driveList;
|
||||
std::string clientID, secretID, token, rToken;
|
||||
};
|
||||
}
|
||||
26
inc/gfx.h
|
|
@ -1,26 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include "textureMgr.h"
|
||||
|
||||
namespace gfx
|
||||
{
|
||||
extern SDL_Renderer *render;
|
||||
extern gfx::textureMgr *texMgr;
|
||||
|
||||
void init();
|
||||
void exit();
|
||||
void present();
|
||||
|
||||
void drawTextf(SDL_Texture *target, int fontSize, int x, int y, const SDL_Color *c, const char *fmt, ...);
|
||||
void drawTextfWrap(SDL_Texture *target, int fontSize, int x, int y, int maxWidth, const SDL_Color* c, const char *fmt, ...);
|
||||
size_t getTextWidth(const char *str, int fontSize);
|
||||
|
||||
//Shortcuts for drawing
|
||||
void texDraw(SDL_Texture *target, SDL_Texture *tex, int x, int y);
|
||||
void texDrawStretch(SDL_Texture *target, SDL_Texture *tex, int x, int y, int w, int h);
|
||||
void texDrawPart(SDL_Texture *target, SDL_Texture *tex, int srcX, int srcY, int srcW, int srcH, int dstX, int dstY);
|
||||
void drawLine(SDL_Texture *target, const SDL_Color *c, int x1, int y1, int x2, int y2);
|
||||
void drawRect(SDL_Texture *target, const SDL_Color *c, int x, int y, int w, int h);
|
||||
void clearTarget(SDL_Texture *target, const SDL_Color *clear);
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
/*Texture manager class
|
||||
Keeps pointers to ALL textures so it is not possible to forget to free them. Also keeps code a little easier to read. A little.*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMG_FMT_PNG,
|
||||
IMG_FMT_JPG,
|
||||
IMG_FMT_BMP
|
||||
} imgTypes;
|
||||
|
||||
namespace gfx
|
||||
{
|
||||
class textureMgr
|
||||
{
|
||||
public:
|
||||
textureMgr() = default;
|
||||
~textureMgr();
|
||||
|
||||
void textureAdd(SDL_Texture *_tex);
|
||||
SDL_Texture *textureCreate(int _w, int _h);
|
||||
SDL_Texture *textureLoadFromFile(const char *_path);
|
||||
SDL_Texture *textureLoadFromMem(imgTypes _type, const void *_dat, size_t _datSize);
|
||||
void textureResize(SDL_Texture **_tex, int _w, int _h);
|
||||
|
||||
private:
|
||||
std::vector<SDL_Texture *> textures;
|
||||
};
|
||||
}
|
||||
53
inc/rfs.h
|
|
@ -1,53 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "curlfuncs.h"
|
||||
#include <mutex>
|
||||
|
||||
#define UPLOAD_BUFFER_SIZE 0x8000
|
||||
#define DOWNLOAD_BUFFER_SIZE 0xC00000
|
||||
#define USER_AGENT "JKSV"
|
||||
|
||||
namespace rfs {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
std::string name, id, parent;
|
||||
bool isDir = false;
|
||||
unsigned int size;
|
||||
} RfsItem;
|
||||
|
||||
class IRemoteFS
|
||||
{
|
||||
public:
|
||||
virtual ~IRemoteFS() {} // Virtual destructor to allow correct deletion through the base class pointer
|
||||
|
||||
virtual bool createDir(const std::string& _dirName, const std::string& _parent) = 0;
|
||||
virtual bool dirExists(const std::string& _dirName, const std::string& _parent) = 0;
|
||||
virtual bool fileExists(const std::string& _filename, const std::string& _parent) = 0;
|
||||
virtual void uploadFile(const std::string& _filename, const std::string& _parent, curlFuncs::curlUpArgs *_upload) = 0;
|
||||
virtual void updateFile(const std::string& _fileID, curlFuncs::curlUpArgs *_upload) = 0;
|
||||
virtual void downloadFile(const std::string& _fileID, curlFuncs::curlDlArgs *_download) = 0;
|
||||
virtual void deleteFile(const std::string& _fileID) = 0;
|
||||
|
||||
virtual std::string getFileID(const std::string& _name, const std::string& _parent) = 0;
|
||||
virtual std::string getDirID(const std::string& _name, const std::string& _parent) = 0;
|
||||
|
||||
virtual std::vector<RfsItem> getListWithParent(const std::string& _parent) = 0;
|
||||
};
|
||||
|
||||
// Shared multi-threading definitions
|
||||
typedef struct
|
||||
{
|
||||
curlFuncs::curlDlArgs *cfa;
|
||||
std::mutex dataLock;
|
||||
std::condition_variable cond;
|
||||
std::vector<uint8_t> sharedBuffer;
|
||||
bool bufferFull = false;
|
||||
unsigned int downloaded = 0;
|
||||
} dlWriteThreadStruct;
|
||||
|
||||
extern std::vector<uint8_t> downloadBuffer;
|
||||
void writeThread_t(void *a);
|
||||
size_t writeDataBufferThreaded(uint8_t *buff, size_t sz, size_t cnt, void *u);
|
||||
}
|
||||
28
inc/type.h
|
|
@ -1,28 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <switch.h>
|
||||
|
||||
//Misc stuff for new menu code
|
||||
typedef void (*funcPtr)(void *);
|
||||
|
||||
class threadStatus
|
||||
{
|
||||
public:
|
||||
void setStatus(const char *fmt, ...);
|
||||
void getStatus(std::string& statusOut);
|
||||
|
||||
private:
|
||||
Mutex statusLock = 0;
|
||||
std::string status;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bool running = false, finished = false;
|
||||
Thread thrd;
|
||||
ThreadFunc thrdFunc;
|
||||
void *argPtr = NULL;
|
||||
funcPtr drawFunc = NULL;//Draw func is passed threadInfo pointer too
|
||||
threadStatus *status;
|
||||
} threadInfo;
|
||||
110
inc/ui.h
|
|
@ -1,110 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <switch.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "data.h"
|
||||
#include "gfx.h"
|
||||
|
||||
//ui headers - split up to keep a bit more organized
|
||||
#include "ui/miscui.h"
|
||||
#include "ui/uistr.h"
|
||||
#include "ui/ttlview.h"
|
||||
#include "ui/thrdProc.h"
|
||||
#include "ui/sldpanel.h"
|
||||
#include "ui/usr.h"
|
||||
#include "ui/ttl.h"
|
||||
#include "ui/fld.h"
|
||||
#include "ui/sett.h"
|
||||
#include "ui/ext.h"
|
||||
#include "ui/fm.h"
|
||||
|
||||
enum menuState
|
||||
{
|
||||
USR_SEL,
|
||||
TTL_SEL,
|
||||
ADV_MDE,
|
||||
EX_MNU,
|
||||
OPT_MNU,
|
||||
FIL_MDE
|
||||
};
|
||||
|
||||
namespace ui
|
||||
{
|
||||
//Current menu/ui state
|
||||
extern int mstate, prevState;
|
||||
|
||||
//Slide/animation scaling
|
||||
extern float animScale;
|
||||
|
||||
//Loading glyph
|
||||
extern const std::string loadGlyphArray[];
|
||||
|
||||
//pad data cause i don't know where else to put it
|
||||
extern PadState pad;
|
||||
extern HidTouchScreenState touchState;
|
||||
static inline void updateInput() { touchState = {0}; padUpdate(&pad); hidGetTouchScreenStates(&touchState, 1); }
|
||||
inline uint64_t padKeysDown() { return padGetButtonsDown(&pad); }
|
||||
inline uint64_t padKeysHeld() { return padGetButtons(&pad); }
|
||||
inline uint64_t padKeysUp() { return padGetButtonsUp(&pad); }
|
||||
|
||||
inline void changeState(int newState)
|
||||
{
|
||||
prevState = mstate;
|
||||
mstate = newState;
|
||||
}
|
||||
|
||||
//Holds theme set id
|
||||
extern ColorSetId thmID;
|
||||
|
||||
//Both UI modes need access to this
|
||||
extern std::string folderMenuInfo;
|
||||
|
||||
/*Colors
|
||||
clearClr = color to clear buffer
|
||||
txtCont = text that contrasts clearClr
|
||||
txtDiag = text color for dialogs
|
||||
*/
|
||||
extern SDL_Color clearClr, transparent, txtCont, txtDiag, rectLt, rectSh, tboxClr, sideRect, divClr, heartColor, slidePanelColor;
|
||||
|
||||
//Textbox graphics
|
||||
extern SDL_Texture *cornerTopLeft, *cornerTopRight, *cornerBottomLeft, *cornerBottomRight;
|
||||
//Menu bounding
|
||||
extern SDL_Texture *mnuTopLeft, *mnuTopRight, *mnuBotLeft, *mnuBotRight;
|
||||
|
||||
//Covers left and right of progress bar to fake being not a rectangle.
|
||||
extern SDL_Texture *progCovLeft, *progCovRight, *diaBox;
|
||||
|
||||
//Side bar from Freebird. RIP.
|
||||
extern SDL_Texture *sideBar;
|
||||
|
||||
//Sets colors and loads font for icon creation
|
||||
void initTheme();
|
||||
|
||||
//Loads graphics and stuff
|
||||
void init();
|
||||
void exit();
|
||||
|
||||
//Inits HID
|
||||
void hidInit();
|
||||
|
||||
//Adds a panel pointer to a vector since they need to be drawn over everything else
|
||||
int registerMenu(ui::menu *m);
|
||||
int registerPanel(ui::slideOutPanel *sop);
|
||||
threadInfo *newThread(ThreadFunc func, void *args, funcPtr _drawFunc);
|
||||
|
||||
//Just draws a screen and flips JIC boot takes long.
|
||||
void showLoadScreen();
|
||||
|
||||
//Clears and draws general stuff used by multiple screens
|
||||
void drawUI();
|
||||
|
||||
//switch case so we don't have problems with multiple main loops like 3DS
|
||||
bool runApp();
|
||||
|
||||
void showPopMessage(int frameCount, const char *fmt, ...);
|
||||
|
||||
//Used for multiple menu functions/callback
|
||||
void toTTL(void *);
|
||||
}
|
||||
10
inc/ui/ext.h
|
|
@ -1,10 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
namespace ui
|
||||
{
|
||||
extern ui::menu *extMenu;
|
||||
void extInit();
|
||||
void extExit();
|
||||
void extUpdate();
|
||||
void extDraw(SDL_Texture *target);
|
||||
}
|
||||
19
inc/ui/fld.h
|
|
@ -1,19 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "ui.h"
|
||||
#include "dir.h"
|
||||
|
||||
namespace ui
|
||||
{
|
||||
//extern ui::menu *fldMenu;
|
||||
extern ui::slideOutPanel *fldPanel;
|
||||
//extern fs::dirList *fldList;
|
||||
|
||||
void fldInit();
|
||||
void fldExit();
|
||||
void fldUpdate();
|
||||
|
||||
//Populate to open menu, refresh for updating after actions
|
||||
void fldPopulateMenu();
|
||||
void fldRefreshMenu();
|
||||
}
|
||||
10
inc/ui/fm.h
|
|
@ -1,10 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
namespace ui
|
||||
{
|
||||
void fmInit();
|
||||
void fmExit();
|
||||
void fmPrep(const FsSaveDataType& _type, const std::string& _dev, const std::string& _baseSDMC, bool _commit);
|
||||
void fmUpdate();
|
||||
void fmDraw(SDL_Texture *target);
|
||||
}
|
||||
165
inc/ui/miscui.h
|
|
@ -1,165 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
#include "type.h"
|
||||
#include "gfx.h"
|
||||
|
||||
#define POP_FRAME_DEFAULT 130
|
||||
|
||||
#define MENU_FONT_SIZE_DEFAULT 18
|
||||
#define MENU_MAX_SCROLL_DEFAULT 15
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MENU_X,
|
||||
MENU_Y,
|
||||
MENU_RECT_WIDTH,
|
||||
MENU_RECT_HEIGHT,
|
||||
MENU_FONT_SIZE,
|
||||
MENU_MAX_SCROLL
|
||||
} menuParams;
|
||||
|
||||
//For smaller classes that aren't easy to get lost in and general functions
|
||||
namespace ui
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
std::string text;
|
||||
bool hold;
|
||||
funcPtr confFunc, cancelFunc;
|
||||
void *args;
|
||||
unsigned lgFrame = 0, frameCount = 0;//To count frames cause I don't have time and am lazy
|
||||
} confirmArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
funcPtr func = NULL;
|
||||
void *args = NULL;
|
||||
HidNpadButton button = (HidNpadButton)0;
|
||||
} menuOptEvent;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SDL_Texture *icn = NULL;
|
||||
std::string txt;
|
||||
int txtWidth;
|
||||
std::vector<menuOptEvent> events;
|
||||
} menuOpt;
|
||||
|
||||
class menu
|
||||
{
|
||||
public:
|
||||
menu() = default;
|
||||
menu(const int& _x, const int& _y, const int& _rW, const int& _fS, const int& _mL);
|
||||
void editParam(int _param, int newVal);
|
||||
|
||||
//Gets executed when menu changes at all
|
||||
void setOnChangeFunc(funcPtr func) { onChange = func; }
|
||||
|
||||
//executed when .update() is called.
|
||||
void setCallback(funcPtr _callback, void *args) { callback = _callback; callbackArgs = args; }
|
||||
|
||||
//Adds option.
|
||||
int addOpt(SDL_Texture *_icn, const std::string& add);
|
||||
|
||||
//Adds an function to be executed on pressing button specified
|
||||
void optAddButtonEvent(unsigned _ind, HidNpadButton _button, funcPtr _func, void *args);
|
||||
//Changes opt text
|
||||
void editOpt(int ind, SDL_Texture *_icn, const std::string& ch);
|
||||
size_t getOptCount() { return opt.size(); }
|
||||
int getOptPos(const std::string& txt);
|
||||
|
||||
//Clears menu stuff
|
||||
~menu();
|
||||
|
||||
//Handles controller input and executes functions for buttons if they're set
|
||||
void update();
|
||||
|
||||
//Returns selected option
|
||||
int getSelected() { return selected; }
|
||||
|
||||
//Returns menu option count
|
||||
int getCount() { return opt.size(); }
|
||||
|
||||
//Draws the menu at x and y. rectWidth is the width of the rectangle drawn under the selected
|
||||
void draw(SDL_Texture *target, const SDL_Color *textClr, bool drawText);
|
||||
|
||||
//Clears and resets menu
|
||||
void reset();
|
||||
|
||||
//Resets selected + start
|
||||
void resetSel() { selected = 0; }
|
||||
|
||||
//Enables control/disables drawing select box
|
||||
void setActive(bool _set);
|
||||
bool getActive() { return isActive; }
|
||||
|
||||
private:
|
||||
//drawing x and y + rectangle width/height. Height is calc'd with font size
|
||||
int x = 0, mY = 0, tY = 0, y = 0, rW = 0, rY = 0, fSize = 0, rH = 0, mL = 0;
|
||||
//Options vector
|
||||
std::vector<ui::menuOpt> opt;
|
||||
//Selected + frame counting for auto-scroll. Hover count is to not break autoscroll
|
||||
int selected = 0, fc = 0, hoverCount = 0, spcWidth = 0;
|
||||
//How much we shift the color of the rectangle
|
||||
uint8_t clrSh = 0;
|
||||
bool clrAdd = true, isActive = true, hover = false;
|
||||
//Option buffer. Basically, text is draw to this so it can't overlap. Also allows scrolling
|
||||
SDL_Texture *optTex;
|
||||
funcPtr onChange = NULL, callback = NULL;
|
||||
void *callbackArgs, *funcArgs;
|
||||
};
|
||||
|
||||
//Progress bar for showing loading. Mostly so people know it didn't freeze
|
||||
class progBar
|
||||
{
|
||||
public:
|
||||
//Constructor. _max is the maximum value
|
||||
progBar() = default;
|
||||
progBar(const uint64_t& _max) { max = _max; }
|
||||
|
||||
void setMax(const uint64_t& _max) { max = _max; };
|
||||
|
||||
//Updates progress
|
||||
void update(const uint64_t& _prog);
|
||||
|
||||
//Draws with text at top
|
||||
void draw(const std::string& text);
|
||||
|
||||
private:
|
||||
uint64_t max = 0, prog = 0;
|
||||
float width = 0;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
std::string message;
|
||||
int rectWidth = 0, frames = 0, y = 720;
|
||||
} popMessage;
|
||||
|
||||
class popMessageMngr
|
||||
{
|
||||
public:
|
||||
~popMessageMngr();
|
||||
|
||||
void update();
|
||||
|
||||
void popMessageAdd(const std::string& mess, int frameTime);
|
||||
void draw();
|
||||
|
||||
private:
|
||||
std::vector<popMessage> popQueue;//All graphics need to be on main thread. Directly adding will cause text issues
|
||||
std::vector<popMessage> message;
|
||||
};
|
||||
|
||||
//General use
|
||||
ui::confirmArgs *confirmArgsCreate(bool _hold, funcPtr _confFunc, funcPtr _cancelFunc, void *_funcArgs, const char *fmt, ...);
|
||||
void confirm(void *a);
|
||||
void showMessage(const char *fmt, ...);
|
||||
bool confirmTransfer(const std::string& f, const std::string& t);
|
||||
bool confirmDelete(const std::string& p);
|
||||
void drawBoundBox(SDL_Texture *target, int x, int y, int w, int h, uint8_t clrSh);
|
||||
void drawTextbox(SDL_Texture *target, int x, int y, int w, int h);
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
namespace ui
|
||||
{
|
||||
void settInit();
|
||||
void settExit();
|
||||
void settUpdate();
|
||||
void settDraw(SDL_Texture *target);
|
||||
|
||||
extern ui::menu *settMenu;
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
namespace ui
|
||||
{
|
||||
//Maybe more later *if* needed, but not now.
|
||||
typedef enum
|
||||
{
|
||||
SLD_LEFT,
|
||||
SLD_RIGHT
|
||||
} slidePanelOrientation;
|
||||
|
||||
//_draw is called and passed the panel texture/target when this.draw() is called.
|
||||
class slideOutPanel
|
||||
{
|
||||
public:
|
||||
slideOutPanel(int _w, int _h, int _y, slidePanelOrientation _side, funcPtr _draw);
|
||||
|
||||
void resizePanel(int _w, int _h, int _y);
|
||||
void update();
|
||||
void setCallback(funcPtr _cb, void *_args) { callback = _cb; cbArgs = _args; }
|
||||
void openPanel() { open = true; }
|
||||
void closePanel() { open = false; }
|
||||
void setX(int _nX){ x = _nX; };
|
||||
bool isOpen() { return open; }
|
||||
void draw(const SDL_Color *backCol);
|
||||
|
||||
private:
|
||||
int w, h, x, y;
|
||||
uint8_t sldSide;
|
||||
bool open = false;
|
||||
SDL_Texture *panel;
|
||||
funcPtr drawFunc, callback = NULL;
|
||||
void *cbArgs = NULL;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "type.h"
|
||||
|
||||
namespace ui
|
||||
{
|
||||
class threadProcMngr
|
||||
{
|
||||
public:
|
||||
~threadProcMngr();
|
||||
//Draw function is used and called to draw on overlay
|
||||
threadInfo *newThread(ThreadFunc func, void *args, funcPtr _drawFunc);
|
||||
void update();
|
||||
void draw();
|
||||
bool empty() { return threads.empty(); }
|
||||
|
||||
private:
|
||||
std::vector<threadInfo *> threads;
|
||||
uint8_t lgFrame = 0, clrShft = 0;
|
||||
bool clrAdd = true;
|
||||
unsigned frameCount = 0;
|
||||
Mutex threadLock = 0;
|
||||
};
|
||||
}
|
||||
17
inc/ui/ttl.h
|
|
@ -1,17 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
namespace ui
|
||||
{
|
||||
void ttlInit();
|
||||
void ttlExit();
|
||||
void ttlSetActive(int usr, bool _set, bool _showSel);
|
||||
void ttlRefresh();
|
||||
|
||||
//JIC for func ptr
|
||||
void ttlReset();
|
||||
void ttlUpdate();
|
||||
void ttlDraw(SDL_Texture *target);
|
||||
|
||||
//File mode needs access to this.
|
||||
extern ui::slideOutPanel *ttlOptsPanel;
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
#include "type.h"
|
||||
#include "data.h"
|
||||
|
||||
namespace ui
|
||||
{
|
||||
class titleTile
|
||||
{
|
||||
public:
|
||||
titleTile(unsigned _w, unsigned _h, bool _fav, SDL_Texture *_icon)
|
||||
{
|
||||
w = _w;
|
||||
h = _h;
|
||||
wS = _w;
|
||||
hS = _h;
|
||||
fav = _fav;
|
||||
icon = _icon;
|
||||
}
|
||||
|
||||
void draw(SDL_Texture *target, int x, int y, bool sel);
|
||||
|
||||
private:
|
||||
unsigned w, h, wS, hS;
|
||||
bool fav = false;
|
||||
SDL_Texture *icon;
|
||||
};
|
||||
|
||||
//Todo less hardcode etc
|
||||
class titleview
|
||||
{
|
||||
public:
|
||||
titleview(const data::user& _u, int _iconW, int _iconH, int _horGap, int _vertGap, int _rowCount, funcPtr _callback);
|
||||
~titleview();
|
||||
|
||||
void update();
|
||||
void refresh();
|
||||
|
||||
void setActive(bool _set, bool _showSel) { active = _set; showSel = _showSel; }
|
||||
bool getActive() { return active; }
|
||||
void setSelected(int _set) { selected = _set; }
|
||||
int getSelected() { return selected; }
|
||||
void draw(SDL_Texture *target);
|
||||
|
||||
private:
|
||||
const data::user *u;//Might not be safe. Users *shouldn't* be touched after initial load
|
||||
bool active = false, showSel = false, clrAdd = true;
|
||||
uint8_t clrShft = 0;
|
||||
funcPtr callback = NULL;
|
||||
int x = 200, y = 62, selected = 0, selRectX = 10, selRectY = 45;
|
||||
int iconW, iconH, horGap, vertGap, rowCount;
|
||||
std::vector<ui::titleTile *> tiles;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <map>
|
||||
|
||||
//Strings since translation support
|
||||
namespace ui
|
||||
{
|
||||
void initStrings();
|
||||
void loadTrans();
|
||||
void saveTranslationFiles(void *a);
|
||||
extern std::map<std::pair<std::string, int>, std::string> strings;
|
||||
|
||||
inline std::string getUIString(const std::string& _name, int ind){ return strings[std::make_pair(_name, ind)]; }
|
||||
inline const char *getUICString(const std::string& _name, int ind){ return strings[std::make_pair(_name, ind)].c_str(); }
|
||||
}
|
||||
14
inc/ui/usr.h
|
|
@ -1,14 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
namespace ui
|
||||
{
|
||||
void usrInit();
|
||||
void usrExit();
|
||||
void usrRefresh();
|
||||
void usrUpdate();
|
||||
void usrDraw(SDL_Texture *target);
|
||||
|
||||
//A lot of stuff needs access to these
|
||||
extern ui::menu *usrMenu;
|
||||
extern ui::slideOutPanel *usrSelPanel;
|
||||
}
|
||||
158
inc/util.h
|
|
@ -1,158 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "data.h"
|
||||
#include "ui.h"
|
||||
#include "file.h"
|
||||
#include "gfx.h"
|
||||
|
||||
namespace util
|
||||
{
|
||||
enum
|
||||
{
|
||||
DATE_FMT_YMD,
|
||||
DATE_FMT_YDM,
|
||||
DATE_FMT_HOYSTE,
|
||||
DATE_FMT_JHK,
|
||||
DATE_FMT_ASC
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CPU_SPEED_204MHz = 204000000,
|
||||
CPU_SPEED_306MHz = 306000000,
|
||||
CPU_SPEED_408MHz = 408000000,
|
||||
CPU_SPEED_510MHz = 510000000,
|
||||
CPU_SPEED_612MHz = 612000000,
|
||||
CPU_SPEED_714MHz = 714000000,
|
||||
CPU_SPEED_816MHz = 816000000,
|
||||
CPU_SPEED_918MHz = 918000000,
|
||||
CPU_SPEED_1020MHz = 1020000000, //Default
|
||||
CPU_SPEED_1122MHz = 1122000000,
|
||||
CPU_SPEED_1224MHz = 1224000000,
|
||||
CPU_SPEED_1326MHz = 1326000000,
|
||||
CPU_SPEED_1428MHz = 1428000000,
|
||||
CPU_SPEED_1581MHz = 1581000000,
|
||||
CPU_SPEED_1683MHz = 1683000000,
|
||||
CPU_SPEED_1785MHz = 1785000000
|
||||
} cpuSpds;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPU_SPEED_0MHz = 0,
|
||||
GPU_SPEED_76MHz = 76800000,
|
||||
GPU_SPEED_153MHz = 153600000,
|
||||
GPU_SPEED_203MHz = 230400000,
|
||||
GPU_SPEED_307MHz = 307200000, //Handheld 1
|
||||
GPU_SPEED_384MHz = 384000000, //Handheld 2
|
||||
GPU_SPEED_460MHz = 460800000,
|
||||
GPU_SPEED_537MHz = 537600000,
|
||||
GPU_SPEED_614MHz = 614400000,
|
||||
GPU_SPEED_768MHz = 768000000, //Docked
|
||||
GPU_SPEED_844MHz = 844800000,
|
||||
GPU_SPEED_921MHZ = 921600000
|
||||
} gpuSpds;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RAM_SPEED_0MHz = 0,
|
||||
RAM_SPEED_40MHz = 40800000,
|
||||
RAM_SPEED_68MHz = 68000000,
|
||||
RAM_SPEED_102MHz = 102000000,
|
||||
RAM_SPEED_204MHz = 204000000,
|
||||
RAM_SPEED_408MHz = 408000000,
|
||||
RAM_SPEED_665MHz = 665600000,
|
||||
RAM_SPEED_800MHz = 800000000,
|
||||
RAM_SPEED_1065MHz = 1065600000,
|
||||
RAM_SPEED_1331MHz = 1331200000,
|
||||
RAM_SPEED_1600MHz = 1600000000
|
||||
} ramSpds;
|
||||
|
||||
//Returns string with date S+ time
|
||||
std::string getDateTime(int fmt);
|
||||
|
||||
//Copys dir list to a menu with 'D: ' + 'F: '
|
||||
void copyDirListToMenu(const fs::dirList& d, ui::menu& m);
|
||||
|
||||
//Removes last folder from '_path'
|
||||
void removeLastFolderFromString(std::string& _path);
|
||||
size_t getTotalPlacesInPath(const std::string& _path);
|
||||
void trimPath(std::string& _path, uint8_t _places);
|
||||
|
||||
inline bool isASCII(const uint32_t& t)
|
||||
{
|
||||
return t > 30 && t < 127;
|
||||
}
|
||||
|
||||
std::string safeString(const std::string& s);
|
||||
|
||||
std::string getStringInput(SwkbdType _type, const std::string& def, const std::string& head, size_t maxLength, unsigned dictCnt, const std::string dictWords[]);
|
||||
|
||||
std::string getExtensionFromString(const std::string& get);
|
||||
std::string getFilenameFromPath(const std::string& get);
|
||||
|
||||
std::string generateAbbrev(const uint64_t& tid);
|
||||
|
||||
//removes char from C++ string
|
||||
void stripChar(char _c, std::string& _s);
|
||||
|
||||
void replaceStr(std::string& _str, const std::string& _find, const std::string& _rep);
|
||||
|
||||
//For future external translation support. Replaces [button] with button chars
|
||||
void replaceButtonsInString(std::string& rep);
|
||||
|
||||
//Creates a basic generic icon for stuff without one
|
||||
SDL_Texture *createIconGeneric(const char *txt, int fontSize, bool clearBack);
|
||||
|
||||
inline u128 accountUIDToU128(AccountUid uid)
|
||||
{
|
||||
return ((u128)uid.uid[0] << 64 | uid.uid[1]);
|
||||
}
|
||||
|
||||
inline AccountUid u128ToAccountUID(u128 id)
|
||||
{
|
||||
AccountUid ret;
|
||||
ret.uid[0] = id >> 64;
|
||||
ret.uid[1] = id;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline std::string getIDStr(const uint64_t& _id)
|
||||
{
|
||||
char tmp[18];
|
||||
sprintf(tmp, "%016lX", _id);
|
||||
return std::string(tmp);
|
||||
}
|
||||
|
||||
inline std::string getIDStrLower(const uint64_t& _id)
|
||||
{
|
||||
char tmp[18];
|
||||
sprintf(tmp, "%08X", (uint32_t)_id);
|
||||
return std::string(tmp);
|
||||
}
|
||||
|
||||
inline std::string generatePathByTID(const uint64_t& tid)
|
||||
{
|
||||
return fs::getWorkDir() + data::getTitleSafeNameByTID(tid) + "/";
|
||||
}
|
||||
|
||||
std::string getSizeString(const uint64_t& _size);
|
||||
|
||||
inline void createTitleDirectoryByTID(const uint64_t& tid)
|
||||
{
|
||||
std::string makePath = fs::getWorkDir() + data::getTitleSafeNameByTID(tid);
|
||||
mkdir(makePath.c_str(), 777);
|
||||
}
|
||||
|
||||
Result accountDeleteUser(AccountUid *uid);
|
||||
|
||||
void sysBoost();
|
||||
void sysNormal();
|
||||
|
||||
inline bool isApplet()
|
||||
{
|
||||
AppletType type = appletGetAppletType();
|
||||
return type == AppletType_LibraryApplet;
|
||||
}
|
||||
|
||||
void checkForUpdate(void *a);
|
||||
}
|
||||
53
inc/webdav.h
|
|
@ -1,53 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <curl/curl.h>
|
||||
#include <string>
|
||||
#include <tinyxml2.h>
|
||||
|
||||
#include "rfs.h"
|
||||
|
||||
namespace rfs {
|
||||
|
||||
// Note: Everything declared an "id" is the full path component from the origin to the resource starting with a "/".
|
||||
// Note: Directories ALWAYS have a trailing / while files NEVER have a trailing /
|
||||
// e.g. /<basePath>/JKSV/
|
||||
// e.g. /<basePath>/JKSV/<title-id>/
|
||||
// e.g. /<basePath>/JKSV/<title-id>/<file>
|
||||
// e.g. /
|
||||
// other string arguments never have any leading or trailing "/"
|
||||
class WebDav : public IRemoteFS {
|
||||
private:
|
||||
CURL* curl;
|
||||
std::string origin;
|
||||
std::string basePath;
|
||||
std::string username;
|
||||
std::string password;
|
||||
|
||||
|
||||
std::vector<RfsItem> parseXMLResponse(const std::string& xml);
|
||||
bool resourceExists(const std::string& id);
|
||||
std::string appendResourceToParentId(const std::string& resourceName, const std::string& parentId, bool isDir);
|
||||
std::string getNamespacePrefix(tinyxml2::XMLElement* root, const std::string& nsURI);
|
||||
|
||||
public:
|
||||
WebDav(const std::string& origin,
|
||||
const std::string& username,
|
||||
const std::string& password);
|
||||
~WebDav();
|
||||
|
||||
bool createDir(const std::string& dirName, const std::string& parentId);
|
||||
bool dirExists(const std::string& dirName, const std::string& parentId);
|
||||
|
||||
bool fileExists(const std::string& filename, const std::string& parentId);
|
||||
void uploadFile(const std::string& filename, const std::string& parentId, curlFuncs::curlUpArgs *_upload);
|
||||
void updateFile(const std::string& fileID, curlFuncs::curlUpArgs *_upload);
|
||||
void downloadFile(const std::string& fileID, curlFuncs::curlDlArgs *_download);
|
||||
void deleteFile(const std::string& fileID);
|
||||
|
||||
std::string getFileID(const std::string& name, const std::string& parentId);
|
||||
std::string getDirID(const std::string& dirName, const std::string& parentId);
|
||||
|
||||
std::vector<RfsItem> getListWithParent(const std::string& _parent);
|
||||
std::string getDisplayNameFromURL(const std::string &url);
|
||||
};
|
||||
}
|
||||
BIN
romfs/icon.png
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 249 B |
|
Before Width: | Height: | Size: 287 B |
|
Before Width: | Height: | Size: 267 B |
|
Before Width: | Height: | Size: 290 B |
|
Before Width: | Height: | Size: 287 B |
|
Before Width: | Height: | Size: 257 B |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 279 B |
|
Before Width: | Height: | Size: 285 B |
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||
|
|
@ -1,218 +0,0 @@
|
|||
appletModeWarning = 0, "*ADVERTENCIA*: JKSV se está ejecutando en modo 'applet'. Algunas características no funcionarán."
|
||||
author = 0, "Impeeza"
|
||||
confirmBlacklist = 0, "¿Estás seguro que deseas adicionar #%s# a la lista negra?"
|
||||
confirmCopy = 0, "¿Seguro que desea copiar #%s# a #%s#?"
|
||||
confirmCreateAllSaveData = 0, "¿Seguro que desea crear todos los Datos de Partidas Guardadas en este sistema para #%s#? ¡Puede tomar un tiempo dependiendo de la cantidad de títulos sean encontrados!"
|
||||
confirmDelete = 0, "¿Seguro que desea borrar #%s#? *¡Es permanente!*"
|
||||
confirmDeleteBackupsAll = 0, "¿Seguro que desea borrar *TODOS* los respaldos de partidas guardadas para todos sus juegos?"
|
||||
confirmDeleteBackupsTitle = 0, "¿Seguro que desea borrar *TODOS* los respaldos de partidas guardadas para #%s#?"
|
||||
confirmDeleteSaveData = 0, "*ADVERTENCIA*: Ésto eliminará la partida guardada para #%s# *DE SU SISTEMA*. ¿Está seguro que así lo desea?"
|
||||
|
||||
#CHANGED=============================================>
|
||||
confirmDriveOverwrite = 0, "Al descargar este respaldo desde el servidor remoto se reemplazará el que actualmente está en la tarjeta SD, ¿Continuar?"
|
||||
#<====================================================
|
||||
|
||||
confirmOverwrite = 0, "¿Sobrescribir #%s#?"
|
||||
confirmResetSaveData = 0, "*ADVERTENCIA*: Ésto restablecerá la partida guardada para este juego, como si nunca se hubiera ejecutado. ¿Está seguro que es lo que desea?"
|
||||
confirmRestore = 0, "¿Seguro que desea restaurar #%s#?"
|
||||
|
||||
#CHANGED=============================================>
|
||||
debugStatus = 0, "Número de Usuarios: "
|
||||
debugStatus = 1, "Usuario Actual: "
|
||||
debugStatus = 2, "Título Actual: "
|
||||
debugStatus = 3, "Título Seguro: "
|
||||
debugStatus = 4, "Tipo órden: "
|
||||
#<====================================================
|
||||
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Si [A]"
|
||||
extrasMenu = 0, "Navegador de SD a SD"
|
||||
extrasMenu = 1, "Navegar 'ProdInfo'"
|
||||
extrasMenu = 2, "Navegar 'Safe'"
|
||||
extrasMenu = 3, "Navegar 'System'"
|
||||
extrasMenu = 4, "Navegar 'User'"
|
||||
extrasMenu = 5, "Eliminar actualizaciones pendientes"
|
||||
extrasMenu = 6, "Detener proceso"
|
||||
extrasMenu = 7, "Montar 'System Save'"
|
||||
extrasMenu = 8, "Recargar Lista de Títulos"
|
||||
extrasMenu = 9, "Navegar 'Process RomFS'"
|
||||
extrasMenu = 10, "Realizar respaldo de la carpeta de JKSV"
|
||||
extrasMenu = 11, "*[DEV]* Extraer Archivos de Lenguaje actuales"
|
||||
fileModeFileProperties = 0, "Ruta: %s\nTamaño: %s"
|
||||
fileModeFolderProperties = 0, "Ruta: %s\nSubCarpetas: %u\nCantidad Archivos: %u\nTamaño Total: %s"
|
||||
fileModeMenu = 0, "Copiar a "
|
||||
fileModeMenu = 1, "Borrar"
|
||||
fileModeMenu = 2, "Renombrar"
|
||||
fileModeMenu = 3, "Crear Carpeta"
|
||||
fileModeMenu = 4, "Propiedades"
|
||||
fileModeMenu = 5, "Cerrar"
|
||||
fileModeMenu = 6, "Adicionar a filtros de Carpetas"
|
||||
fileModeMenuMkDir = 0, "Nuevo"
|
||||
folderMenuNew = 0, "Nuevo Respaldo"
|
||||
|
||||
#CHANGED=============================================>
|
||||
helpFolder = 0, "[A] Selecionar [Y] Restaurar [X] Borrar [ZR] Subir [B] Cerrar"
|
||||
#<====================================================
|
||||
|
||||
helpSettings = 0, "[A] Cambiar [X] Predeterminados [B] Atrás"
|
||||
helpTitle = 0, "[A] Seleccionar [L][R] Cambiar Página [Y] Favoritos [X] Opciones de Títulos [B] Atrás"
|
||||
helpUser = 0, "[A] Seleccionar [Y] Extraer Todos [X] Opciones de Usuario"
|
||||
holdingText = 0, "(Sostenga) "
|
||||
holdingText = 1, "(Siga Sosteniendo) "
|
||||
holdingText = 2, "(¡Ya Casi!) "
|
||||
|
||||
#CHANGED=============================================>
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Tiempo Jugado: %02d:%02d"
|
||||
infoStatus = 3, "Veces Ejecutado: %u"
|
||||
infoStatus = 4, "Editor: %s"
|
||||
infoStatus = 5, "Tipo Partida Guardada: %s"
|
||||
infoStatus = 6, "Índice de Caché: %u"
|
||||
infoStatus = 7, "Usuario: %s"
|
||||
infoStatus = 9, ""
|
||||
#<=====================================================
|
||||
|
||||
loadingStartPage = 0, "Cargando..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Configs."
|
||||
onlineErrorConnecting = 0, "¡Error Conectando!"
|
||||
onlineNoUpdates = 0, "No hay actualizaciones disponibles."
|
||||
popAddedToPathFilter = 0, "Se adicionó '#%s#' a filtros de carpeta."
|
||||
popCPUBoostEnabled = 0, "Aumento de CPU para ZIP."
|
||||
popChangeOutputError = 0, "#%s# contiene carácteres ilegales o no-ASCII."
|
||||
popChangeOutputFolder = 0, "Se cambia #%s# por #%s#"
|
||||
|
||||
#CHANGED=============================================>
|
||||
popDriveFailed = 0, "Falla al iniciar Google Drive."
|
||||
popRemoteNotActive = 0, "Servidor Remoto no está disponible."
|
||||
popDriveStarted = 0, "Se ha iniciado Google Drive correctamente."
|
||||
popWebdavStarted = 0, "Se ha iniciado Webdav Correctamente."
|
||||
popWebdavFailed = 0, "Falla al iniciar Webdav."
|
||||
#<====================================================
|
||||
|
||||
popErrorCommittingFile = 0, "¡Error guardando archivo!"
|
||||
popFolderIsEmpty = 0, "¡La carpeta está vacía!"
|
||||
popProcessShutdown = 0, "#%s# Apagado satisfactorio."
|
||||
|
||||
#CHANGED=============================================>
|
||||
popSVIExported = 0, "SVI Exportado."
|
||||
#<====================================================
|
||||
|
||||
popSaveIsEmpty = 0, "¡Partida Guardada está vacía!"
|
||||
popTrashEmptied = 0, "Papelera Vaciada"
|
||||
popZipIsEmpty = 0, "¡Archivo ZIP está vacío!"
|
||||
saveDataBackupDeleted = 0, "#%s# ha sido borrado."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# ha sido movido a papelera."
|
||||
saveDataCreatedForUser = 0, "Se creó Partida Guardada para %s!"
|
||||
saveDataCreationFailed = 0, "¡Error en creación de Partida Guardada!"
|
||||
saveDataDeleteAllUser = 0, "*¿SEGURO QUE DESEA BORRAR TODAS LAS PARTIDAS GUARDADAS DE %s?*"
|
||||
saveDataDeleteSuccess = 0, "¡Se borró la Partida Guardada de #%s#!"
|
||||
saveDataExtendFailed = 0, "Error al expandir la partida guardada."
|
||||
saveDataExtendSuccess = 0, "¡Partida Guardada para #%s# expandida con éxito!"
|
||||
saveDataIndexText = 0, "Guardar Índice: "
|
||||
saveDataNoneFound = 0, "¡No se encontraron partidas guardadas para #%s#!"
|
||||
saveDataResetSuccess = 0, "¡Partida Guardada para #%s# restablecida!"
|
||||
saveDataTypeText = 0, "Datos de Sistema"
|
||||
saveDataTypeText = 1, "Partida Guardada"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Datos de Dispositivo"
|
||||
saveDataTypeText = 4, "Almacenamiento Temporal"
|
||||
saveDataTypeText = 5, "Almacenamiento de Caché"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Caché"
|
||||
saveTypeMainMenu = 3, "Sistema"
|
||||
saveTypeMainMenu = 4, "BCAT de Sistema"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Vaciar Papelera"
|
||||
settingsMenu = 1, "Buscar Actualizaciones"
|
||||
settingsMenu = 2, "Configurar carpeta de salida para JKSV"
|
||||
settingsMenu = 3, "Editar lista negra de Títulos"
|
||||
settingsMenu = 4, "Eliminar todos los respaldos"
|
||||
settingsMenu = 5, "Incluír Datos de Dispositivo con los Usuarios: "
|
||||
settingsMenu = 6, "Crear respaldo automático al restaurar: "
|
||||
settingsMenu = 7, "Nombrar Automáticamente los respaldos: "
|
||||
settingsMenu = 8, "Overclock/Aumento de CPU: "
|
||||
settingsMenu = 9, "Sostener para Borrar: "
|
||||
settingsMenu = 10, "Sostener para Restaurar: "
|
||||
settingsMenu = 11, "Sostener para Sobreescribir: "
|
||||
settingsMenu = 12, "Montar forzado: "
|
||||
settingsMenu = 13, "Datos de la cuenta de Sistema: "
|
||||
settingsMenu = 14, "Habilitar escritura para datos de Sistema: "
|
||||
settingsMenu = 15, "Usar comandos FS directamente: "
|
||||
settingsMenu = 16, "Exportar partidas guardadas a archivos ZIP: "
|
||||
settingsMenu = 17, "Forzar el uso de idioma Inglés: "
|
||||
settingsMenu = 18, "Habilitar papelera: "
|
||||
settingsMenu = 19, "Ordenar Títulos: "
|
||||
settingsMenu = 20, "Escala de Animación: "
|
||||
settingsMenu = 21, "Subir automáticamente a GDrive/Webdav: "
|
||||
settingsOff = 0, "Apagado"
|
||||
settingsOn = 0, ">Encendido>"
|
||||
sortType = 0, "Alfabéticamente"
|
||||
sortType = 1, "Por Duración Juegos"
|
||||
sortType = 2, "Recientemente Jugado"
|
||||
swkbdEnterName = 0, "Ingrese un nuevo nombre"
|
||||
swkbdExpandSize = 0, "Ingrese nuevo tamaño en MB"
|
||||
swkbdMkDir = 0, "Ingrese nombre de carpeta"
|
||||
swkbdNewSafeTitle = 0, "Ingrese Nueva Carpeta de Salida"
|
||||
swkbdProcessID = 0, "Ingrese ID de proceso"
|
||||
swkbdRename = 0, "Ingrese un nuevo nombre para el elemento"
|
||||
swkbdSaveIndex = 0, "Ingrese Índice de Caché"
|
||||
swkbdSetWorkDir = 0, "Ingrese Nueva Carpeta de Salida"
|
||||
swkbdSysSavID = 0, "Ingrese ID de Datos de Sistema"
|
||||
threadStatusAddingFileToZip = 0, "Agregando '#%s#' a archivo ZIP..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusCalculatingSaveSize = 0, "Calculando tamaño de partida guardada..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusCheckingForUpdate = 0, "Verificando actualizaciones..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusCompressingSaveForUpload = 0, "Comprimiendo #%s# para subirlo..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusCopyingFile = 0, "Copiando '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creando Partida Guardada para #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Descomprimiendo '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Borrando..."
|
||||
threadStatusDeletingSaveData = 0, "Borrando Partida Guardada para #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Borrando Actualización Pendiente..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusDownloadingFile = 0, "Descargando #%s#..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusDownloadingUpdate = 0, "Borrando Actualización..."
|
||||
threadStatusExtendingSaveData = 0, "Expandiendo Datos Guardados para #%s#..."
|
||||
threadStatusGetDirProps = 0, "Obteniendo propiedades de Carpeta..."
|
||||
threadStatusOpeningFolder = 0, "Abriendo '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Guardando contenidos de carpeta de JKSV en archivo ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Restableciendo datos de partida..."
|
||||
threadStatusSavingTranslations = 0, "Guardando archivo maestro..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusUploadingFile = 0, "Subiendo #%s#..."
|
||||
#<====================================================
|
||||
|
||||
titleOptions = 0, "Información"
|
||||
titleOptions = 1, "Lista Negra"
|
||||
titleOptions = 2, "Cambiar Carpeta de Salida"
|
||||
titleOptions = 3, "Abrir en Modo Archivo"
|
||||
titleOptions = 4, "Borrar todos los respaldos"
|
||||
titleOptions = 5, "Restablecer Datos de Partida"
|
||||
titleOptions = 6, "Borrar Datos de Partida"
|
||||
titleOptions = 7, "Expandir Datos de Partida"
|
||||
|
||||
#CHANGED=============================================>
|
||||
titleOptions = 8, "Exportar SVI"
|
||||
#<====================================================
|
||||
|
||||
translationMainPage = 0, "Traducción: "
|
||||
userOptions = 0, "Extrar Todo para "
|
||||
userOptions = 1, "Crear Datos de Partida"
|
||||
userOptions = 2, "Crear Todos los Datos de Partida"
|
||||
userOptions = 3, "Borrar Datos de Partida para todos los Usuarios"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "Shadow2560"
|
||||
confirmBlacklist = 0, "Souhaitez-vous vraiment ajouter #%s# à votre liste noire?"
|
||||
confirmCopy = 0, "Souhaitez-vous vraiment copier #%s# vers #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Souhaitez-vous vraiment créer toutes les données de sauvegarde de ce système pour #%s# ? Cela peut prendre un certain temps en fonction du nombre de titres trouvés."
|
||||
confirmDelete = 0, "Souhaitez-vous vraiment supprimer #%s# ? *Ceci sera permanent* !"
|
||||
confirmDeleteBackupsAll = 0, "Êtes-vous sûr de vouloir supprimer *toutes* vos sauvegardes pour tous vos jeux ?"
|
||||
confirmDeleteBackupsTitle = 0, "Souhaitez-vous vraiment supprimer toutes les sauvegardes sauvegardées pour #%s#?"
|
||||
confirmDeleteSaveData = 0, "*ATTENTION* : Ceci *effacera* les données sauvegardées pour #%s# *de votre système*. Êtes-vous sûr de vouloir faire cela ?"
|
||||
confirmDriveOverwrite = 0, "Le téléchargement de cette sauvegarde depuis le disque dur écrasera celle qui se trouve sur votre carte SD. Continuer?"
|
||||
confirmOverwrite = 0, "Souhaitez-vous vraiment écraser #%s#?"
|
||||
confirmResetSaveData = 0, "*ATTENTION* : Cela *réinitialisera* les données de sauvegarde de ce jeu comme s'il n'avait jamais été exécuté auparavant. Êtes-vous sûr de vouloir faire cela ?"
|
||||
confirmRestore = 0, "Souhaitez-vous vraiment restaurer #%s#?"
|
||||
debugStatus = 0, "Nombre d'utilisateurs: "
|
||||
debugStatus = 1, "Utilisateur actuel: "
|
||||
debugStatus = 2, "Titre actuel: "
|
||||
debugStatus = 3, "Titre sauvegardé: "
|
||||
debugStatus = 4, "Type de tri: "
|
||||
dialogNo = 0, "Non [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Oui [A]"
|
||||
extrasMenu = 0, "Explorateur SD vers SD"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Supprimer la mise à jour en attente"
|
||||
extrasMenu = 6, "Terminer le processus"
|
||||
extrasMenu = 7, "Monter la sauvegarde système"
|
||||
extrasMenu = 8, "Re-scanner les titres"
|
||||
extrasMenu = 9, "Monter le processus RomFS"
|
||||
extrasMenu = 10, "Sauvegarder le répertoire de JKSV"
|
||||
extrasMenu = 11, "*[DEV]* Forcer la langue en en-US"
|
||||
fileModeFileProperties = 0, "Chemin: %s\nTaille: %s"
|
||||
fileModeFolderProperties = 0, "Chemin: %s\nSous-répertoires: %u\nNombre de fichiers: %u\nTaille totale: %s"
|
||||
fileModeMenu = 0, "Copier vers "
|
||||
fileModeMenu = 1, "Supprimer"
|
||||
fileModeMenu = 2, "Renommer"
|
||||
fileModeMenu = 3, "Créer un nouveau dossier"
|
||||
fileModeMenu = 4, "Propriétés"
|
||||
fileModeMenu = 5, "Fermer"
|
||||
fileModeMenu = 6, "Ajouter aux filtres de chemins"
|
||||
fileModeMenuMkDir = 0, "Nouveau"
|
||||
folderMenuNew = 0, "Nouvelle sauvegarde"
|
||||
helpFolder = 0, "[A] Sélectionner [Y] Restorer [X] Suprimer [ZR] Upload [B] Fermer"
|
||||
helpSettings = 0, "[A] Basculer [X] Défauts [B] Retour"
|
||||
helpTitle = 0, "[A] Sélectionner [L][R] Saut de page [Y] Favorie [X] Options du titre [B] Retour"
|
||||
helpUser = 0, "[A] Sélectionner [X] Options pour l'utilisateur"
|
||||
holdingText = 0, "(Maintenir) "
|
||||
holdingText = 1, "(Garder maintenu) "
|
||||
holdingText = 2, "(Presque fini!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Temps de jeu: %02d:%02d"
|
||||
infoStatus = 3, "Nombre de fois lancé: %u"
|
||||
infoStatus = 4, "Auteur: %s"
|
||||
infoStatus = 5, "Type de sauvegarde: %s"
|
||||
infoStatus = 6, "Index du Cache: %u"
|
||||
infoStatus = 7, "Utilisateur: %s"
|
||||
loadingStartPage = 0, "Chargement..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Paramètres"
|
||||
onlineErrorConnecting = 0, "Erreur de connection!"
|
||||
onlineNoUpdates = 0, "Aucune mise à jour disponible."
|
||||
popAddedToPathFilter = 0, "'#%s#' ajouté aux filtres de chemins."
|
||||
popCPUBoostEnabled = 0, "CPU Boost activé pour les ZIP."
|
||||
popChangeOutputError = 0, "#%s# contient des caractères incorrects ou non-ASCII."
|
||||
popChangeOutputFolder = 0, "#%s# modifié en #%s#"
|
||||
popDriveFailed = 0, "Echec du démarrage de Google Drive."
|
||||
popRemoteNotActive = 0, "Remote n'est pas utilisable"
|
||||
popDriveStarted = 0, "Google Drive lancé avec succès."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Erreur d'ajout du fichier à la sauvegarde!"
|
||||
popFolderIsEmpty = 0, "Le dossier est vide!"
|
||||
popProcessShutdown = 0, "#%s# terminé avec succès."
|
||||
popSVIExported = 0, "SVI Exporté."
|
||||
popSaveIsEmpty = 0, "Les données de la sauvegarde sont vides!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "Le fichier ZIP est vide!"
|
||||
saveDataBackupDeleted = 0, "#%s# a été supprimé."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# a été déplacé dans la corbeille."
|
||||
saveDataCreatedForUser = 0, "Données de sauvegarde créée pour %s!"
|
||||
saveDataCreationFailed = 0, "Echec de la création des données de sauvegarde!"
|
||||
saveDataDeleteAllUser = 0, "*Souhaitez-vous vraiment supprimer toutes les données de sauvegarde pour %s?*"
|
||||
saveDataDeleteSuccess = 0, "Données de la sauvegarde pour #%s# Supprimée!"
|
||||
saveDataExtendFailed = 0, "Echec de l'extention des données de la sauvegarde."
|
||||
saveDataExtendSuccess = 0, "Données de la sauvegarde pour #%s# étendue!"
|
||||
saveDataIndexText = 0, "Index de la sauvegarde: "
|
||||
saveDataNoneFound = 0, "Aucune sauvegarde trouvée pour #%s#!"
|
||||
saveDataResetSuccess = 0, "Sauvegarde pour #%s# réinitialisée!"
|
||||
saveDataTypeText = 0, "Sauvegarde système"
|
||||
saveDataTypeText = 1, "Données de sauvegarde"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Sauvegarde de périphérique"
|
||||
saveDataTypeText = 4, "Stockage temporaire"
|
||||
saveDataTypeText = 5, "Stockage cache"
|
||||
saveDataTypeText = 6, "BCAT système"
|
||||
saveTypeMainMenu = 0, "Périphérique"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "Système"
|
||||
saveTypeMainMenu = 4, "BCAT système"
|
||||
saveTypeMainMenu = 5, "Stockage SysTemp"
|
||||
settingsMenu = 0, "Vider la corbeille"
|
||||
settingsMenu = 1, "Vérifier les mises à jour"
|
||||
settingsMenu = 2, "Définir le dossier de sortie de JKSV"
|
||||
settingsMenu = 3, "Modifier les titres de la liste noire"
|
||||
settingsMenu = 4, "Supprimer toutes les sauvegardes sauvegardées"
|
||||
settingsMenu = 5, "Inclure les sauvegardes du matériel avec les utilisateurs: "
|
||||
settingsMenu = 6, "Sauvegarder automatiquement avant la restauration: "
|
||||
settingsMenu = 7, "Nom automatique des sauvegardes: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Maintenir pour supprimer: "
|
||||
settingsMenu = 10, "Maintenir pour restaurer: "
|
||||
settingsMenu = 11, "Maintenir pour écraser: "
|
||||
settingsMenu = 12, "Forcer le montage: "
|
||||
settingsMenu = 13, "Compte des sauvegardes système: "
|
||||
settingsMenu = 14, "Activer l'écriture pour les sauvegardes système: "
|
||||
settingsMenu = 15, "Utiliser directement les commandes FS : "
|
||||
settingsMenu = 16, "Exporter les sauvegardes en ZIP: "
|
||||
settingsMenu = 17, "Forcer l'utilisation de l'anglais: "
|
||||
settingsMenu = 18, "Activer la corbeille: "
|
||||
settingsMenu = 19, "Type de tri des titres: "
|
||||
settingsMenu = 20, "Échelle d'animation: "
|
||||
settingsOff = 0, "Désactivé"
|
||||
settingsOn = 0, ">Activé>"
|
||||
sortType = 0, "Alphabétique"
|
||||
sortType = 1, "Temps de jeu"
|
||||
sortType = 2, "Joué dernièrement"
|
||||
swkbdEnterName = 0, "Entrez un nouveau nom"
|
||||
swkbdExpandSize = 0, "Entrez la nouvelle taille en MB"
|
||||
swkbdMkDir = 0, "Entrez un nom de dossier"
|
||||
swkbdNewSafeTitle = 0, "Entrez un nouveau nom de dossier"
|
||||
swkbdProcessID = 0, "Entrez l'ID du processus"
|
||||
swkbdRename = 0, "Entrez un nouveau nom pour l'objet"
|
||||
swkbdSaveIndex = 0, "Entrez l'index du cache"
|
||||
swkbdSetWorkDir = 0, "Entrez un nouveau chemin de sortie"
|
||||
swkbdSysSavID = 0, "Entrez l'ID de la sauvegarde système"
|
||||
threadStatusAddingFileToZip = 0, "Ajout de '#%s#' au ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calcul de la taille de la sauvegarde..."
|
||||
threadStatusCheckingForUpdate = 0, "Vérification de mises à jour..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compression de #%s# pour l'upload..."
|
||||
threadStatusCopyingFile = 0, "Copie de '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Création de la sauvegarde pour #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Décompression de '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Suppression..."
|
||||
threadStatusDeletingSaveData = 0, "Supression de la sauvegarde pour #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Suppression de la mise à jour en attente..."
|
||||
threadStatusDownloadingFile = 0, "Téléchargement de #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Téléchargement de la mise à jour..."
|
||||
threadStatusExtendingSaveData = 0, "Extention de la sauvegarde pour #%s#..."
|
||||
threadStatusGetDirProps = 0, "Obtention des propriétés du dossier..."
|
||||
threadStatusOpeningFolder = 0, "Ouverture de '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Ecriture du contenu du répertoire JKSV dans le ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Réinitialisation de la sauvegarde..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Upload de #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Liste noir"
|
||||
titleOptions = 2, "Changer le dossier de sortie"
|
||||
titleOptions = 3, "Ouvrir en mode fichier"
|
||||
titleOptions = 4, "Supprimer toutes les sauvegardes de la sauvegarde"
|
||||
titleOptions = 5, "Réinitialiser la sauvegarde"
|
||||
titleOptions = 6, "Supprimer la sauvegarde"
|
||||
titleOptions = 7, "Etendre la sauvegarde"
|
||||
titleOptions = 8, "Exporter SVI"
|
||||
translationMainPage = 0, "Traduction: "
|
||||
userOptions = 0, "Dumper tout pour"
|
||||
userOptions = 1, "Sauvegarder la sauvegarde"
|
||||
userOptions = 2, "Sauvegarder toutes les sauvegardes"
|
||||
userOptions = 3, "Supprimer toutes les sauvegardes de l'utilisateur"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "SimoCasa"
|
||||
confirmBlacklist = 0, "Sei sicuro di voler aggiungere #%s# alla tua blacklist?"
|
||||
confirmCopy = 0, "Sei sicuro di voler copiare #%s# in #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Sei sicuro di voler creare tutti i dati di salvataggio su questo sistema per #%s#? Può metterci un po' di tempo in base ai titoli trovati."
|
||||
confirmDelete = 0, "Sei sicuro di voler cancellare #%s#? *È permanente*!"
|
||||
confirmDeleteBackupsAll = 0, "Sei sicuro di voler cancellare *tutti* i tuoi backup dei salvataggi di gioco?"
|
||||
confirmDeleteBackupsTitle = 0, "Sei sicuro di voler cancellare tutti i salvataggi di backup di #%s#?"
|
||||
confirmDeleteSaveData = 0, "*ATTENZIONE*: Questo *cancellerà* il salvataggio di #%s# *dal tuo sistema*. Sei sicuro di volerlo fare?"
|
||||
confirmDriveOverwrite = 0, "Scaricando questo backup da Drive sovrascriverai quello nella tua scheda SD. Vuoi continuare?"
|
||||
confirmOverwrite = 0, "Sei sicuro di voler sovrascrivere #%s#?"
|
||||
confirmResetSaveData = 0, "*ATTENZIONE*: Questo *resetterà* i dati di salvataggio per questo gioco come se non fosse mai stato eseguito prima. Sei sicuro di volerlo fare?"
|
||||
confirmRestore = 0, "Sei sicuro di voler ripristinare #%s#?"
|
||||
debugStatus = 0, "Numero Utenti: "
|
||||
debugStatus = 1, "Utente Corrente: "
|
||||
debugStatus = 2, "Titolo Corrente: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Tipo Ordinamento: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Si [A]"
|
||||
extrasMenu = 0, "Browser da SD a SD"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Rimuovi Aggiornamento in attesa"
|
||||
extrasMenu = 6, "Termina Processo"
|
||||
extrasMenu = 7, "Monta Salvataggio di Sistema"
|
||||
extrasMenu = 8, "Riscansiona Titoli"
|
||||
extrasMenu = 9, "Monta Processo RomFS"
|
||||
extrasMenu = 10, "Backup cartella JKSV"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Percorso: %s\nDimensione: %s"
|
||||
fileModeFolderProperties = 0, "Percorso: %s\nSottocartelle: %u\nNumero File: %u\nDimensione totale: %s"
|
||||
fileModeMenu = 0, "Copia in "
|
||||
fileModeMenu = 1, "Elimina"
|
||||
fileModeMenu = 2, "Rinomina"
|
||||
fileModeMenu = 3, "Crea Cartella"
|
||||
fileModeMenu = 4, "Proprietà"
|
||||
fileModeMenu = 5, "Chiudi"
|
||||
fileModeMenu = 6, "Aggiungi ai Filtri del Percorso"
|
||||
fileModeMenuMkDir = 0, "Nuovo"
|
||||
folderMenuNew = 0, "Nuovo Backup"
|
||||
helpFolder = 0, "[A] Seleziona [Y] Ripristina [X] Cancella [ZR] Upload [B] Chiudi"
|
||||
helpSettings = 0, "[A] Attiva/Disattiva [X] Predefinite [B] Indietro"
|
||||
helpTitle = 0, "[A] Seleziona [L][R] Jump [Y] Preferiti [X] Opzioni Titolo [B] Indietro"
|
||||
helpUser = 0, "[A] Seleziona [Y] Dump di tutti i Salvataggi [X] Opzioni Utente"
|
||||
holdingText = 0, "(Tieni Premuto) "
|
||||
holdingText = 1, "(Continua a Premere) "
|
||||
holdingText = 2, "(Ci sei quasi!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Tempo di Gioco: %02d:%02d"
|
||||
infoStatus = 3, "Avvii Totali: %u"
|
||||
infoStatus = 4, "Casa Editrice: %s"
|
||||
infoStatus = 5, "Tipo Salvataggio: %s"
|
||||
infoStatus = 6, "Indice della Cache: %u"
|
||||
infoStatus = 7, "Utente: %s"
|
||||
loadingStartPage = 0, "Caricamento..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Impost."
|
||||
onlineErrorConnecting = 0, "Errore di Connessione!"
|
||||
onlineNoUpdates = 0, "Nessun Aggiornamento Disponibile."
|
||||
popAddedToPathFilter = 0, "'#%s#' aggiunto ai filtri del percorso."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Abilitato per ZIP."
|
||||
popChangeOutputError = 0, "#%s# contiene caratteri illeciti o non-ASCII."
|
||||
popChangeOutputFolder = 0, "#%s# cambiato in #%s#"
|
||||
popDriveFailed = 0, "Impossibile avviare Google Drive."
|
||||
popRemoteNotActive = 0, "Remote non è Disponibile"
|
||||
popDriveStarted = 0, "Google Drive avviato con successo."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Errore durante il commiting del file da salvare!"
|
||||
popFolderIsEmpty = 0, "La cartella è vuota!"
|
||||
popProcessShutdown = 0, "#%s# spento con successo."
|
||||
popSVIExported = 0, "SVI Esportato."
|
||||
popSaveIsEmpty = 0, "Il salvataggio è vuoto!"
|
||||
popTrashEmptied = 0, "Cestino Svuotato"
|
||||
popZipIsEmpty = 0, "Il file ZIP è vuoto!"
|
||||
saveDataBackupDeleted = 0, "#%s# è stato cancellato."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# è stato spostato nel cestino."
|
||||
saveDataCreatedForUser = 0, "Salvataggio creato per %s!"
|
||||
saveDataCreationFailed = 0, "Creazione salvataggio fallita!"
|
||||
saveDataDeleteAllUser = 0, "*SEI SICURO DI VOLER CANCELLARE TUTTI I SALVATAGGI DI %s?*"
|
||||
saveDataDeleteSuccess = 0, "Salvataggio di #%s# cancellato!"
|
||||
saveDataExtendFailed = 0, "Estensione salvataggio fallita."
|
||||
saveDataExtendSuccess = 0, "Salvataggio di #%s# esteso!"
|
||||
saveDataIndexText = 0, "Indice di backup: "
|
||||
saveDataNoneFound = 0, "Nessun Salvataggio trovato per #%s#!"
|
||||
saveDataResetSuccess = 0, "Salvataggio di #%s# resettato!"
|
||||
saveDataTypeText = 0, "Sistema"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Dispositivo"
|
||||
saveDataTypeText = 4, "Temporanea"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Disposit."
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "Sistema"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Svuota Cestino"
|
||||
settingsMenu = 1, "Controllo Aggiornamenti"
|
||||
settingsMenu = 2, "Imposta cartella JKSV di Output"
|
||||
settingsMenu = 3, "Modifica titoli in Blacklist"
|
||||
settingsMenu = 4, "Cancella tutti i Salvataggi di Backup"
|
||||
settingsMenu = 5, "Includi Salvataggi Dispositivo con Utenti: "
|
||||
settingsMenu = 6, "Backup Automatico nel Ripristino: "
|
||||
settingsMenu = 7, "Auto-Rinominazione Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Tieni premuto per eliminare: "
|
||||
settingsMenu = 10, "Tieni premuto per ripristinare: "
|
||||
settingsMenu = 11, "Tieni premuto per sovrascrivere: "
|
||||
settingsMenu = 12, "Forza Montaggio: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Abilita scrittura su Salvataggi Sistema: "
|
||||
settingsMenu = 15, "Usa comandi FS direttamente: "
|
||||
settingsMenu = 16, "Esporta salvataggio in ZIP: "
|
||||
settingsMenu = 17, "Forza utilizzo Inglese: "
|
||||
settingsMenu = 18, "Abilita Cestino: "
|
||||
settingsMenu = 19, "Tipo di ordinamento del Titolo: "
|
||||
settingsMenu = 20, "Scala di Animazione: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alfabetico"
|
||||
sortType = 1, "Tempo di Gioco"
|
||||
sortType = 2, "Ultima Partita"
|
||||
swkbdEnterName = 0, "Inserisci nuovo nome"
|
||||
swkbdExpandSize = 0, "Inserisci nuova dimensione in MB"
|
||||
swkbdMkDir = 0, "Inserisci nome cartella"
|
||||
swkbdNewSafeTitle = 0, "Inserisci una nuova cartella di output"
|
||||
swkbdProcessID = 0, "Inserisci Process ID"
|
||||
swkbdRename = 0, "Inserisci un nuovo nome per elemento"
|
||||
swkbdSaveIndex = 0, "Inserisci l'Indice della Cache"
|
||||
swkbdSetWorkDir = 0, "Inserisci un nuovo Percorso Output"
|
||||
swkbdSysSavID = 0, "Inserisci System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Aggiungi '#%s#' a ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calcolo dimensione salvataggio..."
|
||||
threadStatusCheckingForUpdate = 0, "Controllo Aggiornamenti..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressione di #%s# per l'upload..."
|
||||
threadStatusCopyingFile = 0, "Copiando '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creazione salvataggio per #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressione '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Cancellando..."
|
||||
threadStatusDeletingSaveData = 0, "Cancellazione salvataggio di #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Cancellazione dell'aggiornamento in sospeso..."
|
||||
threadStatusDownloadingFile = 0, "Download di #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Download aggiornamento..."
|
||||
threadStatusExtendingSaveData = 0, "Estensione Salvataggio per #%s#..."
|
||||
threadStatusGetDirProps = 0, "Ottenimento le proprietà della cartella..."
|
||||
threadStatusOpeningFolder = 0, "Apertura '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Scrittura del contenuto della cartella JKSV su ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Reset salvataggio..."
|
||||
threadStatusSavingTranslations = 0, "Salvataggio del file master..."
|
||||
threadStatusUploadingFile = 0, "Upload di #%s#..."
|
||||
titleOptions = 0, "Informazioni"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Cambia Cartella Output"
|
||||
titleOptions = 3, "Apri in Modalità File"
|
||||
titleOptions = 4, "Elimina tutti i Salvataggi di Backup"
|
||||
titleOptions = 5, "Resetta Salvataggio"
|
||||
titleOptions = 6, "Elimina Salvataggio"
|
||||
titleOptions = 7, "Estendi Salvataggio"
|
||||
titleOptions = 8, "Esporta SVI"
|
||||
translationMainPage = 0, "Traduzione: "
|
||||
userOptions = 0, "Dump di tutto per "
|
||||
userOptions = 1, "Crea salvataggio"
|
||||
userOptions = 2, "Crea tutti salvataggi"
|
||||
userOptions = 3, "Cancella tutti salvataggi Utente"
|
||||
|
|
@ -1,215 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "ブラックリストに#%s#を追加してもよろしいですか?"
|
||||
confirmCopy = 0, "#%s#を#%s#にコピーしてもよろしいですか?"
|
||||
confirmCreateAllSaveData = 0, "このシステムで#%s#のすべてのセーブデータを作成してもよろしいですか?見つかったタイトルの数によっては、時間がかかる場合があります。"
|
||||
confirmDelete = 0, "#%s#を削除してもよろしいですか? これは永続的です!"
|
||||
confirmDeleteBackupsAll = 0, "全てのゲームのセーブバックアップを全て削除してもよろしいですか?"
|
||||
confirmDeleteBackupsTitle = 0, "#%s#のすべてのセーブデータのバックアップを削除してもよろしいですか?"
|
||||
confirmDeleteSaveData = 0, "警告: これにより、#%s#のセーブデータがシステムから消去されます。 これを実行してもよろしいですか?"
|
||||
|
||||
#CHANGED=============================================>
|
||||
confirmDriveOverwrite = 0, "このバックアップをドライブからダウンロードすると、SDカードにあるバックアップが上書きされます。続行しますか"
|
||||
#<====================================================
|
||||
|
||||
confirmOverwrite = 0, "#%s#を上書きしてもよろしいですか?"
|
||||
confirmResetSaveData = 0, "警告: これにより、このゲームのセーブデータが、以前に実行されたことがないかのようにリセットされます。これを実行してもよろしいですか?"
|
||||
confirmRestore = 0, "#%s#を復元してもよろしいですか?"
|
||||
|
||||
#CHANGED=============================================>
|
||||
debugStatus = 0, "ユーザー数: "
|
||||
debugStatus = 1, "現在のユーザー: "
|
||||
debugStatus = 2, "現在のタイトル: "
|
||||
debugStatus = 3, "安全なタイトル: "
|
||||
debugStatus = 4, "ソートの種類: "
|
||||
#<====================================================
|
||||
|
||||
dialogNo = 0, "いいえ [B]"
|
||||
dialogOK = 0, "了解 [A]"
|
||||
dialogYes = 0, "はい [A]"
|
||||
extrasMenu = 0, "SDからSDブラウザ"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "保留中のアップデータを削除する"
|
||||
extrasMenu = 6, "プロセスを終了します"
|
||||
extrasMenu = 7, "マウントシステムSave"
|
||||
extrasMenu = 8, "タイトルの再スキャン"
|
||||
extrasMenu = 9, "マウントプロセスRomFS"
|
||||
extrasMenu = 10, "JKSVフォルダをバックアップ"
|
||||
extrasMenu = 11, "*[DEV]* 出力en-US"
|
||||
fileModeFileProperties = 0, "パス: %s\n容量: %s"
|
||||
fileModeFolderProperties = 0, "パス: %s\nサブフォルダ: %u\nファイル数: %u\n全体の大きさ: %s"
|
||||
fileModeMenu = 0, "コピー先 "
|
||||
fileModeMenu = 1, "削除"
|
||||
fileModeMenu = 2, "リネーム"
|
||||
fileModeMenu = 3, "ディレクトリ作成"
|
||||
fileModeMenu = 4, "プロパティ"
|
||||
fileModeMenu = 5, "閉じる"
|
||||
fileModeMenu = 6, "パスフィルターに追加"
|
||||
fileModeMenuMkDir = 0, "新規"
|
||||
folderMenuNew = 0, "新規バックアップ"
|
||||
|
||||
#CHANGED=============================================>
|
||||
helpFolder = 0, "[A] 選択 [Y] リストア [X] 削除 [ZR] アップロード [B] 閉じる"
|
||||
#<====================================================
|
||||
|
||||
helpSettings = 0, "[A] トグル [X] デフォルト [B] 戻る"
|
||||
helpTitle = 0, "[A] 選択 [L][R] ジャンプ [Y] お気に入り [X] タイトルオプション [B] 戻る"
|
||||
helpUser = 0, "[A] 選択 [X] ユーザー設定"
|
||||
holdingText = 0, "(所有) "
|
||||
holdingText = 1, "(保持し続けます) "
|
||||
holdingText = 2, "(もうすぐです!) "
|
||||
|
||||
#CHANGED=============================================>
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "プレイ時間: %02d:%02d"
|
||||
infoStatus = 3, "起動回数: %u"
|
||||
infoStatus = 4, "出版社: %s"
|
||||
infoStatus = 5, "セーブの種類: %s"
|
||||
infoStatus = 6, "キャッシュインデックス: %u"
|
||||
infoStatus = 7, "ユーザー: %s"
|
||||
#<=====================================================
|
||||
|
||||
loadingStartPage = 0, "読み込み中..."
|
||||
mainMenuExtras = 0, "エクストラ"
|
||||
mainMenuSettings = 0, "設定"
|
||||
onlineErrorConnecting = 0, "接続エラー!"
|
||||
onlineNoUpdates = 0, "利用可能なアップデートはありません。"
|
||||
popAddedToPathFilter = 0, "'#%s#' パスフィルターに追加されました。"
|
||||
popCPUBoostEnabled = 0, "ZIPでCPUブーストが有効になっています。"
|
||||
popChangeOutputError = 0, "#%s# は、不正な文字または非ASCII文字が含まれています。"
|
||||
popChangeOutputFolder = 0, "#%s# から #%s# に変更"
|
||||
|
||||
#CHANGED=============================================>
|
||||
popDriveFailed = 0, "Google Driveの起動に失敗しました。"
|
||||
popRemoteNotActive = 0, "Remoteドライブは使用できません"
|
||||
popDriveStarted = 0, "Google Driveが正常に起動しました。"
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
#<====================================================
|
||||
|
||||
popErrorCommittingFile = 0, "保存するファイルのコミット中にエラーが発生しました!"
|
||||
popFolderIsEmpty = 0, "フォルダは空です!"
|
||||
popProcessShutdown = 0, "#%s# 正常にシャットダウンしました。"
|
||||
|
||||
#CHANGED=============================================>
|
||||
popSVIExported = 0, "SVIをエクスポートしました。"
|
||||
#<====================================================
|
||||
|
||||
popSaveIsEmpty = 0, "セーブデータは空です!"
|
||||
popTrashEmptied = 0, "ゴミ箱を空にする"
|
||||
popZipIsEmpty = 0, "ZIPファイルは空です!"
|
||||
saveDataBackupDeleted = 0, "#%s#が削除されました。"
|
||||
saveDataBackupMovedToTrash = 0, "#%s#はゴミ箱に移動されました"
|
||||
saveDataCreatedForUser = 0, "#%s#用に作成されたデータを保存する!"
|
||||
saveDataCreationFailed = 0, "セーブデータの作成に失敗しました!"
|
||||
saveDataDeleteAllUser = 0, "#%s#のすべての保存データを削除してもよろしいですか?*"
|
||||
saveDataDeleteSuccess = 0, "#%s#のセーブデータは削除されました!"
|
||||
saveDataExtendFailed = 0, "セーブデータの拡張に失敗しました。"
|
||||
saveDataExtendSuccess = 0, "#%s#のセーブデータを拡張!"
|
||||
saveDataIndexText = 0, "存檔索引號:"
|
||||
saveDataNoneFound = 0, "#%s#のセーブデータが見つかりません!"
|
||||
saveDataResetSuccess = 0, "#%s#のセーブデータをリセット!"
|
||||
saveDataTypeText = 0, "システム\n"
|
||||
saveDataTypeText = 1, "アカウント\n"
|
||||
saveDataTypeText = 2, "BCAT\n"
|
||||
saveDataTypeText = 3, "デバイス\n"
|
||||
saveDataTypeText = 4, "一時的なもの\n"
|
||||
saveDataTypeText = 5, "キャッシュ\n"
|
||||
saveDataTypeText = 6, "システムBCAT\n"
|
||||
saveTypeMainMenu = 0, "デバイス"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "キャッシュ"
|
||||
saveTypeMainMenu = 3, "システム"
|
||||
saveTypeMainMenu = 4, "システム BCAT"
|
||||
saveTypeMainMenu = 5, "システマティックストレージ機器"
|
||||
settingsMenu = 0, "ゴミ箱を空にする"
|
||||
settingsMenu = 1, "アップデートを確認する"
|
||||
settingsMenu = 2, "JKSVセーブデータ保存出力フォルダを設定する"
|
||||
settingsMenu = 3, "ブラックリストに載っているタイトルを編集する"
|
||||
settingsMenu = 4, "すべての保存バックアップを削除する"
|
||||
settingsMenu = 5, "ユーザーと一緒にデバイスのセーブデータを含める: "
|
||||
settingsMenu = 6, "復元時の自動バックアップ: "
|
||||
settingsMenu = 7, "自動名前バックアップ: "
|
||||
settingsMenu = 8, "オーバークロック/CPUブースト: "
|
||||
settingsMenu = 9, "削除するために保持: "
|
||||
settingsMenu = 10, "保持して復元: "
|
||||
settingsMenu = 11, "上書きするために保持: "
|
||||
settingsMenu = 12, "フォースマウント: "
|
||||
settingsMenu = 13, "アカウントシステムセーブデータ: "
|
||||
settingsMenu = 14, "システムセーブデータへの書き込みを有効にする: "
|
||||
settingsMenu = 15, "FSコマンドを直接使用する: "
|
||||
settingsMenu = 16, "セーブデータをZIPにエクスポート: "
|
||||
settingsMenu = 17, "英語を強制的に使用する: "
|
||||
settingsMenu = 18, "ごみ箱を有効にする: "
|
||||
settingsMenu = 19, "タイトルの並べ替えタイプ: "
|
||||
settingsMenu = 20, "アニメーションスケール: "
|
||||
settingsOff = 0, "オフ"
|
||||
settingsOn = 0, ">オン>"
|
||||
sortType = 0, "アルファベット順"
|
||||
sortType = 1, "プレイ時間"
|
||||
sortType = 2, "最後にプレイ"
|
||||
swkbdEnterName = 0, "新しい名前を入力してください"
|
||||
swkbdExpandSize = 0, "新しいサイズをMBで入力"
|
||||
swkbdMkDir = 0, "フォルダ名を入力してください"
|
||||
swkbdNewSafeTitle = 0, "新規出力先フォルダを入力してください"
|
||||
swkbdProcessID = 0, "プロセスIDを入力してください"
|
||||
swkbdRename = 0, "アイテムの新しい名前を入力してください"
|
||||
swkbdSaveIndex = 0, "キャッシュインデックスを入力してください"
|
||||
swkbdSetWorkDir = 0, "新しい出力パスを入力してください"
|
||||
swkbdSysSavID = 0, "システムセーブIDを入力してください"
|
||||
threadStatusAddingFileToZip = 0, "#%s#をZIPに追加中..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusCalculatingSaveSize = 0, "保存データサイズの算出中..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusCheckingForUpdate = 0, "アップデートの確認中..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusCompressingSaveForUpload = 0, "アップロードのために #%s# を圧縮中..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusCopyingFile = 0, "#%s#をコピーしています..."
|
||||
threadStatusCreatingSaveData = 0, "#%s#のセームデータの作成中..."
|
||||
threadStatusDecompressingFile = 0, "#%s#の解凍中..."
|
||||
threadStatusDeletingFile = 0, "削除中..."
|
||||
threadStatusDeletingSaveData = 0, "#%s#のセーブデータを削除中..."
|
||||
threadStatusDeletingUpdate = 0, "保留中のアップデータを削除中..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusDownloadingFile = 0, "ダウンロード中 #%s#..."
|
||||
#<====================================================
|
||||
|
||||
threadStatusDownloadingUpdate = 0, "アップデータをダウンロード中..."
|
||||
threadStatusExtendingSaveData = 0, "#%s#のセーブデータを拡張中..."
|
||||
threadStatusGetDirProps = 0, "フォルダプロパティの取得中..."
|
||||
threadStatusOpeningFolder = 0, "#%s#を開き中..."
|
||||
threadStatusPackingJKSV = 0, "JKSVフォルダの内容をZIPに書き込み中..."
|
||||
threadStatusResettingSaveData = 0, "セーブデータをリストアしています..."
|
||||
threadStatusSavingTranslations = 0, "ファイルマスタの保存中..."
|
||||
|
||||
#CHANGED=============================================>
|
||||
threadStatusUploadingFile = 0, "アップロード中 #%s#..."
|
||||
#<====================================================
|
||||
|
||||
titleOptions = 0, "インフォメーション"
|
||||
titleOptions = 1, "ブラックリスト"
|
||||
titleOptions = 2, "出力フォルダを変更する"
|
||||
titleOptions = 3, "ファイルモードで開く"
|
||||
titleOptions = 4, "すべてのセーブデータバックアップを削除する"
|
||||
titleOptions = 5, "セーブデータをリセット"
|
||||
titleOptions = 6, "セーブデータを削除"
|
||||
titleOptions = 7, "セーブデータを拡張"
|
||||
|
||||
#CHANGED=============================================>
|
||||
titleOptions = 8, "エクスポートSVI"
|
||||
#<====================================================
|
||||
|
||||
translationMainPage = 0, "翻訳: "
|
||||
userOptions = 0, "すべてをダンプする "
|
||||
userOptions = 1, "セーブデータを作成"
|
||||
userOptions = 2, "全てのセーブデータを作成"
|
||||
userOptions = 3, "全てのユーザーセーブデータを削除"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "블랙리스트에 #%s#을(를) 추가하겠습니까?"
|
||||
confirmCopy = 0, "#%s#을(를) #%s#에 복사하겠습니까?"
|
||||
confirmCreateAllSaveData = 0, "이 시스템에서 #%s#에 대한 모든 저장 데이터를 생성하겠습니까? 검색된 타이틀 수에 따라 시간이 걸릴 수 있습니다."
|
||||
confirmDelete = 0, "#%s#을(를) 삭제하겠습니까? *영구적입니다*!"
|
||||
confirmDeleteBackupsAll = 0, "모든 게임에 대한 *모든* 저장 백업을 삭제하겠습니까?"
|
||||
confirmDeleteBackupsTitle = 0, "#%s#에 대한 모든 백업 백업을 삭제하겠습니까?"
|
||||
confirmDeleteSaveData = 0, "경고*: 이렇게 하면 #%s#에 대한 저장 데이터가 *시스템에서* 지워집니다. 정말 하겠습니까?"
|
||||
confirmDriveOverwrite = 0, "드라이브에서 이 백업을 다운로드하면 SD 카드에 있는 백업을 덮어씁니다. 계속합니까?"
|
||||
confirmOverwrite = 0, "#%s#을(를) 덮어쓰시겠습니까?"
|
||||
confirmResetSaveData = 0, "경고*: 이렇게 하면 이 게임의 저장 데이터가 이전에 실행되지 않은 것처럼 *리셋됩니다*. 정말 하겠습니까?"
|
||||
confirmRestore = 0, "#%s#을(를) 복원하겠습니까?"
|
||||
debugStatus = 0, "사용자 수: "
|
||||
debugStatus = 1, "현자 사용자: "
|
||||
debugStatus = 2, "현재 제목: "
|
||||
debugStatus = 3, "안전 제목: "
|
||||
debugStatus = 4, "정렬 유형: "
|
||||
dialogNo = 0, "아니오 [B]"
|
||||
dialogOK = 0, "확인 [A]"
|
||||
dialogYes = 0, "예 [A]"
|
||||
extrasMenu = 0, "SD에서 SD 브라우저로"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: 안전"
|
||||
extrasMenu = 3, "BIS: 시스템"
|
||||
extrasMenu = 4, "BIS: 사용자"
|
||||
extrasMenu = 5, "보류 중인 업데이트 제거"
|
||||
extrasMenu = 6, "프로세스 종료"
|
||||
extrasMenu = 7, "시스템 저장 인식"
|
||||
extrasMenu = 8, "제목 다시 검색"
|
||||
extrasMenu = 9, "프로세스 RomFS 인식"
|
||||
extrasMenu = 10, "JKSV 폴더 백업"
|
||||
extrasMenu = 11, "*[DEV]* 출력 en-US"
|
||||
fileModeFileProperties = 0, "경로: %s\n크기: %s"
|
||||
fileModeFolderProperties = 0, "경로: %s\n하위 폴더: %u\n파일 수: %u\n전체 크기: %s"
|
||||
fileModeMenu = 0, "에게 복사 "
|
||||
fileModeMenu = 1, "삭제"
|
||||
fileModeMenu = 2, "이름 바꾸기"
|
||||
fileModeMenu = 3, "폴더 만들기"
|
||||
fileModeMenu = 4, "속성"
|
||||
fileModeMenu = 5, "닫기"
|
||||
fileModeMenu = 6, "경로 필터에 추가"
|
||||
fileModeMenuMkDir = 0, "새로 만들기"
|
||||
folderMenuNew = 0, "새 백업"
|
||||
helpFolder = 0, "[A] 선택 [Y] 복원 [X] 삭제 [ZR] 업로드 [B] 닫기"
|
||||
helpSettings = 0, "[A] 전환 [X] 기본 [B] 뒤로가기"
|
||||
helpTitle = 0, "[A] 선택 [L][R] 점프 [Y] 즐겨찾기 [X] 제목 옵션 [B] 뒤로가기"
|
||||
helpUser = 0, "[A] 선택 [Y] 모든 세이브 덤프 [X] 사용자 옵션"
|
||||
holdingText = 0, "(길게 누르기) "
|
||||
holdingText = 1, "(계속 누르기) "
|
||||
holdingText = 2, "(거의 완료!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "즐긴 시간: %02d:%02d"
|
||||
infoStatus = 3, "총 실행 수: %u"
|
||||
infoStatus = 4, "발행자: %s"
|
||||
infoStatus = 5, "저장 유형: %s"
|
||||
infoStatus = 6, "캐시 인덱스: %u"
|
||||
infoStatus = 7, "사용자: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "로드 중..."
|
||||
mainMenuExtras = 0, "추가"
|
||||
mainMenuSettings = 0, "설정"
|
||||
onlineErrorConnecting = 0, "연결 오류!"
|
||||
onlineNoUpdates = 0, "사용 가능한 업데이트가 없습니다."
|
||||
popAddedToPathFilter = 0, "'#%s#'이(가) 경로 필터에 추가되었습니다."
|
||||
popCPUBoostEnabled = 0, "ZIP를 위한 CPU 부스트가 활성화되었습니다."
|
||||
popChangeOutputError = 0, "#%s#에 잘못된 또는 ASCII가 아닌 문자가 포함되어 있습니다."
|
||||
popChangeOutputFolder = 0, "#%s#이(가) #%s#로 변경되었습니다."
|
||||
popDriveFailed = 0, "구글 드라이브 시작에 실패했습니다."
|
||||
popRemoteNotActive = 0, "구글 드라이브를 사용할 수 없습니다."
|
||||
popDriveStarted = 0, "구글 드라이브가 성공적으로 시작되었습니다."
|
||||
popWebdavStarted = 0, "Webdav가 성공적으로 시작되었습니다."
|
||||
popWebdavFailed =, 0, "Webdav를 시작하지 못했습니다."
|
||||
popErrorCommittingFile = 0, "저장할 파일을 커밋하는 동안 오류가 발생했습니다!"
|
||||
popFolderIsEmpty = 0, "폴더가 비어 있습니다!"
|
||||
popProcessShutdown = 0, "#%s#이(가) 성공적으로 종료되었습니다."
|
||||
popSVIExported = 0, "SVI를 내보냈습니다."
|
||||
popSaveIsEmpty = 0, "저장 데이터가 비어 있습니다!"
|
||||
popTrashEmptied = 0, "휴지통이 비었습니다."
|
||||
popZipIsEmpty = 0, "ZIP 파일이 비어 있습니다!"
|
||||
saveDataBackupDeleted = 0, "#%s#이(가) 삭제되었습니다."
|
||||
saveDataBackupMovedToTrash = 0, "#%s#이(가) 휴지통으로 이동되었습니다."
|
||||
saveDataCreatedForUser = 0, "%s에 대해 생성된 데이터 저장!"
|
||||
saveDataCreationFailed = 0, "저장 데이터 생성 실패!"
|
||||
saveDataDeleteAllUser = 0, "*%s에 대한 모든 저장 데이터를 삭제하겠습니까?*"
|
||||
saveDataDeleteSuccess = 0, "#%s#에 대한 저장 데이터가 삭제되었습니다!"
|
||||
saveDataExtendFailed = 0, "저장 데이터 확장에 실패했습니다."
|
||||
saveDataExtendSuccess = 0, "#%s#에 대한 데이터 저장이 확장되었습니다!"
|
||||
saveDataNoneFound = 0, "#%s#에 대한 저장을 찾을 수 없습니다!"
|
||||
saveDataResetSuccess = 0, "#%s# 재설정을 위해 저장합니다!"
|
||||
saveDataTypeText = 0, "시스템"
|
||||
saveDataTypeText = 1, "계정"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "장치"
|
||||
saveDataTypeText = 4, "임시"
|
||||
saveDataTypeText = 5, "캐시"
|
||||
saveDataTypeText = 6, "시스템 BCAT"
|
||||
saveTypeMainMenu = 0, "장치"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "캐시"
|
||||
saveTypeMainMenu = 3, "시스템"
|
||||
saveTypeMainMenu = 4, "시스템 BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp 스토리지템"
|
||||
settingsMenu = 0, "휴지통 비우기"
|
||||
settingsMenu = 1, "업데이트 확인"
|
||||
settingsMenu = 2, "JKSV 저장 출력 폴더 설정"
|
||||
settingsMenu = 3, "블랙리스트에 있는 제목 편집"
|
||||
settingsMenu = 4, "모든 저장 백업 삭제"
|
||||
settingsMenu = 5, "사용자와 함께 장치 저장 포함: "
|
||||
settingsMenu = 6, "복원 시 자동 백업: "
|
||||
settingsMenu = 7, "자동 이름 백업: "
|
||||
settingsMenu = 8, "오버클럭/CPU 부스트: "
|
||||
settingsMenu = 9, "삭제하려면 길게 누르기: "
|
||||
settingsMenu = 10, "복원하려면 길게 누르기: "
|
||||
settingsMenu = 11, "덮어쓰려면 길게 누르기: "
|
||||
settingsMenu = 12, "강제 인식: "
|
||||
settingsMenu = 13, "계정 시스템 저장: "
|
||||
settingsMenu = 14, "시스템 저장에 쓰기 활성화: "
|
||||
settingsMenu = 15, "FS 명령을 직접 사용: "
|
||||
settingsMenu = 16, "저장된 파일을 ZIP으로 내보내기: "
|
||||
settingsMenu = 17, "강제 영어 사용: "
|
||||
settingsMenu = 18, "휴지통 활성화: "
|
||||
settingsMenu = 19, "제목 정렬 유형: "
|
||||
settingsMenu = 20, "애니메이션 스케일: "
|
||||
settingsOff = 0, "끔"
|
||||
settingsOn = 0, ">켬>"
|
||||
sortType = 0, "알파벳"
|
||||
sortType = 1, "즐긴 시간"
|
||||
sortType = 2, "마지막 실행"
|
||||
swkbdEnterName = 0, "새 이름 입력"
|
||||
swkbdExpandSize = 0, "새 MB 크기 입력"
|
||||
swkbdMkDir = 0, "폴더 이름 입력"
|
||||
swkbdNewSafeTitle = 0, "새 출력 폴더 입력"
|
||||
swkbdProcessID = 0, "프로세스 ID 입력"
|
||||
swkbdRename = 0, "항목의 새 이름을 입력"
|
||||
swkbdSaveIndex = 0, "캐시 인덱스 입력"
|
||||
swkbdSetWorkDir = 0, "새 출력 경로 입력"
|
||||
swkbdSysSavID = 0, "시스템 저장 ID 입력"
|
||||
threadStatusAddingFileToZip = 0, "'#%s#'을(를) ZIP에 추가하는 중..."
|
||||
threadStatusCalculatingSaveSize = 0, "저장 데이터 크기 계산 중..."
|
||||
threadStatusCheckingForUpdate = 0, "업데이트 확인 중..."
|
||||
threadStatusCompressingSaveForUpload = 0, "업로드를 위해 #%s# 압축 중..."
|
||||
threadStatusCopyingFile = 0, "'#%s#' 복사 중..."
|
||||
threadStatusCreatingSaveData = 0, "#%s#에 대한 저장 데이터 생성 중..."
|
||||
threadStatusDecompressingFile = 0, "'#%s#' 압축 해제 중..."
|
||||
threadStatusDeletingFile = 0, "삭제 중..."
|
||||
threadStatusDeletingSaveData = 0, "#%s#에 대한 저장 데이터 삭제 중..."
|
||||
threadStatusDeletingUpdate = 0, "대기 중인 업데이트 삭제 중..."
|
||||
threadStatusDownloadingFile = 0, "#%s# 다운로드 중..."
|
||||
threadStatusDownloadingUpdate = 0, "업데이트 다운로드 중..."
|
||||
threadStatusExtendingSaveData = 0, "#%s#에 대한 저장 데이터 확장 중..."
|
||||
threadStatusGetDirProps = 0, "폴더 속성 가져오기..."
|
||||
threadStatusOpeningFolder = 0, "'#%s#'을(를) 여는 중..."
|
||||
threadStatusPackingJKSV = 0, "JKSV 폴더 내용을 ZIP에 쓰는 중..."
|
||||
threadStatusResettingSaveData = 0, "저장 데이터 재설정 중..."
|
||||
threadStatusSavingTranslations = 0, "마스터 파일 저장 중..."
|
||||
threadStatusUploadingFile = 0, "#%s# 업로드 중..."
|
||||
titleOptions = 0, "정보"
|
||||
titleOptions = 1, "블랙리스트"
|
||||
titleOptions = 2, "출력 폴더 변경"
|
||||
titleOptions = 3, "파일 모드에서 열기"
|
||||
titleOptions = 4, "모든 저장 백업 삭제"
|
||||
titleOptions = 5, "저장 데이터 재설정"
|
||||
titleOptions = 6, "저장 데이터 삭제"
|
||||
titleOptions = 7, "저장 데이터 확장"
|
||||
titleOptions = 8, "SVI 내보내기"
|
||||
translationMainPage = 0, "번역: "
|
||||
userOptions = 0, "에 대해 모두 덤프 "
|
||||
userOptions = 1, "저장 데이터 생성"
|
||||
userOptions = 2, "모든 저장 데이터 생성"
|
||||
userOptions = 3, "모든 사용자 저장 삭제"
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
author = 0, "NULL"
|
||||
confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?"
|
||||
confirmCopy = 0, "Are you sure you want to copy #%s# to #%s#?"
|
||||
confirmCreateAllSaveData = 0, "Are you sure you would like to create all save data on this system for #%s#? This can take a while depending on how many titles are found."
|
||||
confirmDelete = 0, "Are you sure you want to delete #%s#? *This is permanent*!"
|
||||
confirmDeleteBackupsAll = 0, "Are you sure you would like to delete *all* of your save backups for all of your games?"
|
||||
confirmDeleteBackupsTitle = 0, "Are you sure you would like to delete all save backups for #%s#?"
|
||||
confirmDeleteSaveData = 0, "*WARNING*: This *will* erase the save data for #%s# *from your system*. Are you sure you want to do this?"
|
||||
confirmDriveOverwrite = 0, "Downloading this backup from drive will overwrite the one on your SD card. Continue?"
|
||||
confirmOverwrite = 0, "Are you sure you want to overwrite #%s#?"
|
||||
confirmResetSaveData = 0, "*WARNING*: This *will* reset the save data for this game as if it was never ran before. Are you sure you want to do this?"
|
||||
confirmRestore = 0, "Are you sure you want to restore #%s#?"
|
||||
debugStatus = 0, "User Count: "
|
||||
debugStatus = 1, "Current User: "
|
||||
debugStatus = 2, "Current Title: "
|
||||
debugStatus = 3, "Safe Title: "
|
||||
debugStatus = 4, "Sort Type: "
|
||||
dialogNo = 0, "No [B]"
|
||||
dialogOK = 0, "OK [A]"
|
||||
dialogYes = 0, "Yes [A]"
|
||||
extrasMenu = 0, "SD to SD Browser"
|
||||
extrasMenu = 1, "BIS: ProdInfoF"
|
||||
extrasMenu = 2, "BIS: Safe"
|
||||
extrasMenu = 3, "BIS: System"
|
||||
extrasMenu = 4, "BIS: User"
|
||||
extrasMenu = 5, "Remove Pending Update"
|
||||
extrasMenu = 6, "Terminate Process"
|
||||
extrasMenu = 7, "Mount System Save"
|
||||
extrasMenu = 8, "Rescan Titles"
|
||||
extrasMenu = 9, "Mount Process RomFS"
|
||||
extrasMenu = 10, "Backup JKSV Folder"
|
||||
extrasMenu = 11, "*[DEV]* Output en-US"
|
||||
fileModeFileProperties = 0, "Path: %s\nSize: %s"
|
||||
fileModeFolderProperties = 0, "Path: %s\nSub Folders: %u\nFile Count: %u\nTotal Size: %s"
|
||||
fileModeMenu = 0, "Copy To "
|
||||
fileModeMenu = 1, "Delete"
|
||||
fileModeMenu = 2, "Rename"
|
||||
fileModeMenu = 3, "Make Dir"
|
||||
fileModeMenu = 4, "Properties"
|
||||
fileModeMenu = 5, "Close"
|
||||
fileModeMenu = 6, "Add to Path Filters"
|
||||
fileModeMenuMkDir = 0, "New"
|
||||
folderMenuNew = 0, "New Backup"
|
||||
helpFolder = 0, "[A] Select [Y] Restore [X] Delete [ZR] Upload [B] Close"
|
||||
helpSettings = 0, "[A] Toggle [X] Defaults [B] Back"
|
||||
helpTitle = 0, "[A] Select [L][R] Jump [Y] Favorite [X] Title Options [B] Back"
|
||||
helpUser = 0, "[A] Select [Y] Dump All Saves [X] User Options"
|
||||
holdingText = 0, "(Hold) "
|
||||
holdingText = 1, "(Keep Holding) "
|
||||
holdingText = 2, "(Almost There!) "
|
||||
infoStatus = 0, "TID: %016lX"
|
||||
infoStatus = 1, "SID: %016lX"
|
||||
infoStatus = 2, "Play Time: %02d:%02d"
|
||||
infoStatus = 3, "Total Launches: %u"
|
||||
infoStatus = 4, "Publisher: %s"
|
||||
infoStatus = 5, "Save Type: %s"
|
||||
infoStatus = 6, "Cache Index: %u"
|
||||
infoStatus = 7, "User: %s"
|
||||
infoStatus = 9, ""
|
||||
loadingStartPage = 0, "Loading..."
|
||||
mainMenuExtras = 0, "Extras"
|
||||
mainMenuSettings = 0, "Settings"
|
||||
onlineErrorConnecting = 0, "Error Connecting!"
|
||||
onlineNoUpdates = 0, "No Updates Available."
|
||||
popAddedToPathFilter = 0, "'#%s#' added to path filters."
|
||||
popCPUBoostEnabled = 0, "CPU Boost Enabled for ZIP."
|
||||
popChangeOutputError = 0, "#%s# contains illegal or non-ASCII characters."
|
||||
popChangeOutputFolder = 0, "#%s# changed to #%s#"
|
||||
popDriveFailed = 0, "Failed to start Google Drive."
|
||||
popRemoteNotActive = 0, "Remote is not available"
|
||||
popDriveStarted = 0, "Google Drive started successfully."
|
||||
popWebdavStarted = 0, "Webdav started successfully."
|
||||
popWebdavFailed =, 0, "Failed to start Webdav."
|
||||
popErrorCommittingFile = 0, "Error committing file to save!"
|
||||
popFolderIsEmpty = 0, "Folder is empty!"
|
||||
popProcessShutdown = 0, "#%s# successfully shutdown."
|
||||
popSVIExported = 0, "SVI Exported."
|
||||
popSaveIsEmpty = 0, "Save data is empty!"
|
||||
popTrashEmptied = 0, "Trash emptied"
|
||||
popZipIsEmpty = 0, "ZIP file is empty!"
|
||||
saveDataBackupDeleted = 0, "#%s# has been deleted."
|
||||
saveDataBackupMovedToTrash = 0, "#%s# has been moved to trash."
|
||||
saveDataCreatedForUser = 0, "Save data created for %s!"
|
||||
saveDataCreationFailed = 0, "Save data creation failed!"
|
||||
saveDataDeleteAllUser = 0, "*ARE YOU SURE YOU WANT TO DELETE ALL SAVE DATA FOR %s?*"
|
||||
saveDataDeleteSuccess = 0, "Save data for #%s# deleted!"
|
||||
saveDataExtendFailed = 0, "Failed to extend save data."
|
||||
saveDataExtendSuccess = 0, "Save data for #%s# extended!"
|
||||
saveDataNoneFound = 0, "No saves found for #%s#!"
|
||||
saveDataResetSuccess = 0, "Save for #%s# reset!"
|
||||
saveDataTypeText = 0, "System"
|
||||
saveDataTypeText = 1, "Account"
|
||||
saveDataTypeText = 2, "BCAT"
|
||||
saveDataTypeText = 3, "Device"
|
||||
saveDataTypeText = 4, "Temporary"
|
||||
saveDataTypeText = 5, "Cache"
|
||||
saveDataTypeText = 6, "System BCAT"
|
||||
saveTypeMainMenu = 0, "Device"
|
||||
saveTypeMainMenu = 1, "BCAT"
|
||||
saveTypeMainMenu = 2, "Cache"
|
||||
saveTypeMainMenu = 3, "System"
|
||||
saveTypeMainMenu = 4, "System BCAT"
|
||||
saveTypeMainMenu = 5, "SysTemp Storagetem"
|
||||
settingsMenu = 0, "Empty Trash Bin"
|
||||
settingsMenu = 1, "Check for Updates"
|
||||
settingsMenu = 2, "Set JKSV Save Output Folder"
|
||||
settingsMenu = 3, "Edit Blacklisted Titles"
|
||||
settingsMenu = 4, "Delete All Save Backups"
|
||||
settingsMenu = 5, "Include Device Saves With Users: "
|
||||
settingsMenu = 6, "Auto Backup On Restore: "
|
||||
settingsMenu = 7, "Auto-Name Backups: "
|
||||
settingsMenu = 8, "Overclock/CPU Boost: "
|
||||
settingsMenu = 9, "Hold To Delete: "
|
||||
settingsMenu = 10, "Hold To Restore: "
|
||||
settingsMenu = 11, "Hold To Overwrite: "
|
||||
settingsMenu = 12, "Force Mount: "
|
||||
settingsMenu = 13, "Account System Saves: "
|
||||
settingsMenu = 14, "Enable Writing to System Saves: "
|
||||
settingsMenu = 15, "Use FS Commands Directly: "
|
||||
settingsMenu = 16, "Export Saves to ZIP: "
|
||||
settingsMenu = 17, "Force English To Be Used: "
|
||||
settingsMenu = 18, "Enable Trash Bin: "
|
||||
settingsMenu = 19, "Title Sorting Type: "
|
||||
settingsMenu = 20, "Animation Scale: "
|
||||
settingsOff = 0, "Off"
|
||||
settingsOn = 0, ">On>"
|
||||
sortType = 0, "Alphabetical"
|
||||
sortType = 1, "Time Played"
|
||||
sortType = 2, "Last Played"
|
||||
swkbdEnterName = 0, "Enter a new name"
|
||||
swkbdExpandSize = 0, "Enter New Size in MB"
|
||||
swkbdMkDir = 0, "Enter a folder name"
|
||||
swkbdNewSafeTitle = 0, "Input New Output Folder"
|
||||
swkbdProcessID = 0, "Enter Process ID"
|
||||
swkbdRename = 0, "Enter a new name for item"
|
||||
swkbdSaveIndex = 0, "Enter Cache Index"
|
||||
swkbdSetWorkDir = 0, "Enter a new Output Path"
|
||||
swkbdSysSavID = 0, "Enter System Save ID"
|
||||
threadStatusAddingFileToZip = 0, "Adding '#%s#' to ZIP..."
|
||||
threadStatusCalculatingSaveSize = 0, "Calculating save data size..."
|
||||
threadStatusCheckingForUpdate = 0, "Checking for updates..."
|
||||
threadStatusCompressingSaveForUpload = 0, "Compressing #%s# for upload..."
|
||||
threadStatusCopyingFile = 0, "Copying '#%s#'..."
|
||||
threadStatusCreatingSaveData = 0, "Creating Save Data for #%s#..."
|
||||
threadStatusDecompressingFile = 0, "Decompressing '#%s#'..."
|
||||
threadStatusDeletingFile = 0, "Deleting..."
|
||||
threadStatusDeletingSaveData = 0, "Deleting Save Data for #%s#..."
|
||||
threadStatusDeletingUpdate = 0, "Deleting pending update..."
|
||||
threadStatusDownloadingFile = 0, "Downloading #%s#..."
|
||||
threadStatusDownloadingUpdate = 0, "Downloading update..."
|
||||
threadStatusExtendingSaveData = 0, "Extending Save Data for #%s#..."
|
||||
threadStatusGetDirProps = 0, "Getting Folder Properties..."
|
||||
threadStatusOpeningFolder = 0, "Opening '#%s#'..."
|
||||
threadStatusPackingJKSV = 0, "Writing JKSV folder contents to ZIP..."
|
||||
threadStatusResettingSaveData = 0, "Resetting save data..."
|
||||
threadStatusSavingTranslations = 0, "Saving the file master..."
|
||||
threadStatusUploadingFile = 0, "Uploading #%s#..."
|
||||
titleOptions = 0, "Information"
|
||||
titleOptions = 1, "Blacklist"
|
||||
titleOptions = 2, "Change Output Folder"
|
||||
titleOptions = 3, "Open in File Mode"
|
||||
titleOptions = 4, "Delete All Save Backups"
|
||||
titleOptions = 5, "Reset Save Data"
|
||||
titleOptions = 6, "Delete Save Data"
|
||||
titleOptions = 7, "Extend Save Data"
|
||||
titleOptions = 8, "Export SVI"
|
||||
translationMainPage = 0, "Translation: "
|
||||
userOptions = 0, "Dump All For "
|
||||
userOptions = 1, "Create Save Data"
|
||||
userOptions = 2, "Create All Save Data"
|
||||
userOptions = 3, "Delete All User Saves"
|
||||