Added german translation and bugfixes
This commit is contained in:
6
.github/workflows/main.yml
vendored
6
.github/workflows/main.yml
vendored
@@ -24,9 +24,9 @@ jobs:
|
|||||||
- name: Setup ENV parameters
|
- name: Setup ENV parameters
|
||||||
run: |
|
run: |
|
||||||
VER_FILE=Makefile
|
VER_FILE=Makefile
|
||||||
VERSION=$(awk '/^LPVERSION_MAJOR/{print $3}' $VER_FILE).$(awk '/^LPVERSION_MINOR/{print $3}' $VER_FILE).$(awk '/^LPVERSION_BUGFX/{print $3}' $VER_FILE)
|
VERSION=$(awk '/^APLVERSION_MAJOR/{print $3}' $VER_FILE).$(awk '/^APLVERSION_MINOR/{print $3}' $VER_FILE).$(awk '/^APLVERSION_BUGFX/{print $3}' $VER_FILE)
|
||||||
echo "TAG=${VERSION}" >> "${GITHUB_ENV}"
|
echo "TAG=${VERSION}" >> "${GITHUB_ENV}"
|
||||||
echo "RELEASE_NAME=CommonProblemResolver ${VERSION}" >> "${GITHUB_ENV}"
|
echo "RELEASE_NAME=AllgemeinerProblemLoeser ${VERSION}" >> "${GITHUB_ENV}"
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
@@ -43,4 +43,4 @@ jobs:
|
|||||||
generate_release_notes: yes
|
generate_release_notes: yes
|
||||||
make_latest: true
|
make_latest: true
|
||||||
files: |
|
files: |
|
||||||
output/CommonProblemResolver.bin
|
output/APL.bin
|
||||||
|
|||||||
10
Makefile
10
Makefile
@@ -9,13 +9,13 @@ include $(DEVKITARM)/base_rules
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
IPL_LOAD_ADDR := 0x40008000
|
IPL_LOAD_ADDR := 0x40008000
|
||||||
LPVERSION_MAJOR := 0
|
APLVERSION_MAJOR := 0
|
||||||
LPVERSION_MINOR := 3
|
APLVERSION_MINOR := 3
|
||||||
LPVERSION_BUGFX := 4
|
APLVERSION_BUGFX := 4
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
TARGET := CommonProblemResolver
|
TARGET := AllgemeinerProblemLoeser
|
||||||
BUILDDIR := build
|
BUILDDIR := build
|
||||||
OUTPUTDIR := output
|
OUTPUTDIR := output
|
||||||
SOURCEDIR = source
|
SOURCEDIR = source
|
||||||
@@ -37,7 +37,7 @@ FFCFG_INC := '"../$(SOURCEDIR)/libs/fatfs/ffconf.h"'
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
CUSTOMDEFINES := -DIPL_LOAD_ADDR=$(IPL_LOAD_ADDR)
|
CUSTOMDEFINES := -DIPL_LOAD_ADDR=$(IPL_LOAD_ADDR)
|
||||||
CUSTOMDEFINES += -DLP_VER_MJ=$(LPVERSION_MAJOR) -DLP_VER_MN=$(LPVERSION_MINOR) -DLP_VER_BF=$(LPVERSION_BUGFX)
|
CUSTOMDEFINES += -DAPL_VER_MJ=$(APLVERSION_MAJOR) -DAPL_VER_MN=$(APLVERSION_MINOR) -DAPL_VER_BF=$(APLVERSION_BUGFX)
|
||||||
CUSTOMDEFINES += -DGFX_INC=$(GFX_INC) -DFFCFG_INC=$(FFCFG_INC)
|
CUSTOMDEFINES += -DGFX_INC=$(GFX_INC) -DFFCFG_INC=$(FFCFG_INC)
|
||||||
|
|
||||||
# 0: UART_A, 1: UART_B.
|
# 0: UART_A, 1: UART_B.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# CommonProblemResolver (CPR)
|
# AllgemeinerProblemLoeser (APL)
|
||||||
|
|
||||||
Rescue your switch without a pc!
|
Rescue your switch without a pc!
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
1. Get your favorite payload injector
|
1. Get your favorite payload injector
|
||||||
2. Inject CPR as a payload
|
2. Inject APL as a payload
|
||||||
|
|
||||||
Navigate around the menus using the joycons.
|
Navigate around the menus using the joycons.
|
||||||
- A: Select
|
- A: Select
|
||||||
@@ -30,5 +30,6 @@ Join [our discord](https://discord.gg/VkaRjYN) for help.
|
|||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
This is heavily based on [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) by suchmememanyskill,
|
- **German translation:** Switch Bros.
|
||||||
which itself is based on [Lockpick_RCM](https://github.com/shchmue/Lockpick_RCM), and thus also based on [Hekate](https://github.com/CTCaer/hekate)
|
- This is heavily based on [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) by suchmememanyskill,
|
||||||
|
which itself is based on [Lockpick_RCM](https://github.com/shchmue/Lockpick_RCM), and thus also based on [Hekate](https://github.com/CTCaer/hekate)
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ int listdir(char *path, u32 hos_folder)
|
|||||||
memcpy(&path[dirLength], "/", 1);
|
memcpy(&path[dirLength], "/", 1);
|
||||||
memcpy(&path[dirLength + 1], fno.fname, strlen(fno.fname) + 1);
|
memcpy(&path[dirLength + 1], fno.fname, strlen(fno.fname) + 1);
|
||||||
// gfx_printf("THING: %s\n", fno.fname);
|
// gfx_printf("THING: %s\n", fno.fname);
|
||||||
// gfx_printf("Path: %s\n", dir);
|
// gfx_printf("Pfad: %s\n", dir);
|
||||||
// Is it a directory?
|
// Is it a directory?
|
||||||
if (fno.fattrib & AM_DIR)
|
if (fno.fattrib & AM_DIR)
|
||||||
{
|
{
|
||||||
@@ -223,7 +223,7 @@ int _fix_attributes(char *path, u32 *total, u32 hos_folder, u32 check_first_run)
|
|||||||
|
|
||||||
void m_entry_fixArchiveBit(u32 type){
|
void m_entry_fixArchiveBit(u32 type){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Fix Archive Bits\n\n");
|
gfx_printf("\n\n-- Behebe Archive Bit\n\n");
|
||||||
|
|
||||||
char path[256];
|
char path[256];
|
||||||
char label[16];
|
char label[16];
|
||||||
@@ -235,20 +235,20 @@ void m_entry_fixArchiveBit(u32 type){
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
strcpy(path, "/");
|
strcpy(path, "/");
|
||||||
strcpy(label, "SD Card");
|
strcpy(label, "SD-Karte");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
default:
|
default:
|
||||||
strcpy(path, "/Nintendo");
|
strcpy(path, "/Nintendo");
|
||||||
strcpy(label, "Nintendo folder");
|
strcpy(label, "Nintendo Ordner");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfx_printf("Traversing all %s files!\nThis may take some time...\n\n", label);
|
gfx_printf("Durchlaufe alle %s Dateien!\nDas kann einige Zeit dauern...\n\n", label);
|
||||||
_fix_attributes(path, &total, type, type);
|
_fix_attributes(path, &total, type, type);
|
||||||
gfx_printf("%kTotal archive bits cleared: %d!%k", 0xFF96FF00, total, 0xFFCCCCCC);
|
gfx_printf("%kAnzahl reparierter Archiv bits: %d!%k", 0xFF96FF00, total, 0xFFCCCCCC);
|
||||||
|
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
gfx_printf("\n\n Fertig! Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -256,7 +256,7 @@ void m_entry_fixArchiveBit(u32 type){
|
|||||||
|
|
||||||
void m_entry_fixAIOUpdate(){
|
void m_entry_fixAIOUpdate(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Fix broken Switch-AiO-Updater update.\n\n");
|
gfx_printf("\n\n-- Behebe fehlerhaftes AIO-switch-updater Update.\n\n");
|
||||||
|
|
||||||
char *aio_fs_path = CpyStr("sd:/atmosphere/fusee-secondary.bin.aio");
|
char *aio_fs_path = CpyStr("sd:/atmosphere/fusee-secondary.bin.aio");
|
||||||
char *aio_p_path = CpyStr("sd:/sept/payload.bin.aio");
|
char *aio_p_path = CpyStr("sd:/sept/payload.bin.aio");
|
||||||
@@ -267,7 +267,7 @@ void m_entry_fixAIOUpdate(){
|
|||||||
char *o_strt_path = CpyStr("sd:/atmosphere/stratosphere.romfs");
|
char *o_strt_path = CpyStr("sd:/atmosphere/stratosphere.romfs");
|
||||||
|
|
||||||
if (FileExists(aio_fs_path)) {
|
if (FileExists(aio_fs_path)) {
|
||||||
gfx_printf("Detected aio updated fusee-secondary file -> replacing original\n\n");
|
gfx_printf("Von AIO aktualisierte fusee-secondary erkannt -> ersetze Original\n\n");
|
||||||
if (FileExists(o_fs_path)) {
|
if (FileExists(o_fs_path)) {
|
||||||
_DeleteFileSimple(o_fs_path);
|
_DeleteFileSimple(o_fs_path);
|
||||||
}
|
}
|
||||||
@@ -277,7 +277,7 @@ void m_entry_fixAIOUpdate(){
|
|||||||
free(o_fs_path);
|
free(o_fs_path);
|
||||||
|
|
||||||
if (FileExists(aio_p_path)) {
|
if (FileExists(aio_p_path)) {
|
||||||
gfx_printf("Detected aio updated paload file -> replacing original\n\n");
|
gfx_printf("Von AIO aktualisierte payload erkannt -> ersetze Original\n\n");
|
||||||
if (FileExists(o_p_path)) {
|
if (FileExists(o_p_path)) {
|
||||||
_DeleteFileSimple(o_p_path);
|
_DeleteFileSimple(o_p_path);
|
||||||
}
|
}
|
||||||
@@ -287,7 +287,7 @@ void m_entry_fixAIOUpdate(){
|
|||||||
free(o_p_path);
|
free(o_p_path);
|
||||||
|
|
||||||
if (FileExists(aio_strt_path)) {
|
if (FileExists(aio_strt_path)) {
|
||||||
gfx_printf("Detected aio updated stratosphere file -> replacing original\n\n");
|
gfx_printf("Von AIO aktualisierte stratosphere erkannt -> ersetzte Original\n\n");
|
||||||
if (FileExists(o_strt_path)) {
|
if (FileExists(o_strt_path)) {
|
||||||
_DeleteFileSimple(o_strt_path);
|
_DeleteFileSimple(o_strt_path);
|
||||||
}
|
}
|
||||||
@@ -297,13 +297,13 @@ void m_entry_fixAIOUpdate(){
|
|||||||
free(o_strt_path);
|
free(o_strt_path);
|
||||||
|
|
||||||
|
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
gfx_printf("\n\n Fertig, druecke eine Taste um Fortzufahren.");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
void m_entry_fixClingWrap(){
|
void m_entry_fixClingWrap(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Fixing ClingWrap.\n\n");
|
gfx_printf("\n\n-- Repariere Bootloader, Kips und Patches.\n\n");
|
||||||
char *bpath = CpyStr("sd:/_b0otloader");
|
char *bpath = CpyStr("sd:/_b0otloader");
|
||||||
char *bopath = CpyStr("sd:/bootloader");
|
char *bopath = CpyStr("sd:/bootloader");
|
||||||
char *kpath = CpyStr("sd:/atmosphere/_k1ps");
|
char *kpath = CpyStr("sd:/atmosphere/_k1ps");
|
||||||
@@ -320,7 +320,7 @@ void m_entry_fixClingWrap(){
|
|||||||
if (res){
|
if (res){
|
||||||
DrawError(newErrCode(res));
|
DrawError(newErrCode(res));
|
||||||
}
|
}
|
||||||
gfx_printf("-- Fixed Bootloader\n");
|
gfx_printf("-- Bootloader repariert!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FileExists(kpath)) {
|
if (FileExists(kpath)) {
|
||||||
@@ -331,7 +331,7 @@ void m_entry_fixClingWrap(){
|
|||||||
if (res){
|
if (res){
|
||||||
DrawError(newErrCode(res));
|
DrawError(newErrCode(res));
|
||||||
}
|
}
|
||||||
gfx_printf("-- Fixed kips\n");
|
gfx_printf("-- kips repariert!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FileExists(ppath)) {
|
if (FileExists(ppath)) {
|
||||||
@@ -339,7 +339,7 @@ void m_entry_fixClingWrap(){
|
|||||||
_DeleteFileSimple(popath);
|
_DeleteFileSimple(popath);
|
||||||
}
|
}
|
||||||
_RenameFileSimple(ppath,popath);
|
_RenameFileSimple(ppath,popath);
|
||||||
gfx_printf("-- Fixed patches.ini\n");
|
gfx_printf("-- patches.ini repariert!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
free(bpath);
|
free(bpath);
|
||||||
@@ -349,14 +349,14 @@ void m_entry_fixClingWrap(){
|
|||||||
free(ppath);
|
free(ppath);
|
||||||
free(popath);
|
free(popath);
|
||||||
|
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
gfx_printf("\n\n Fertig! Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _deleteTheme(char* basePath, char* folderId){
|
void _deleteTheme(char* basePath, char* folderId){
|
||||||
char *path = CombinePaths(basePath, folderId);
|
char *path = CombinePaths(basePath, folderId);
|
||||||
if (FileExists(path)) {
|
if (FileExists(path)) {
|
||||||
gfx_printf("-- Theme found: %s\n", path);
|
gfx_printf("-- Theme gefunden: %s\n", path);
|
||||||
FolderDelete(path);
|
FolderDelete(path);
|
||||||
}
|
}
|
||||||
free(path);
|
free(path);
|
||||||
@@ -364,40 +364,43 @@ void _deleteTheme(char* basePath, char* folderId){
|
|||||||
|
|
||||||
void m_entry_deleteInstalledThemes(){
|
void m_entry_deleteInstalledThemes(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Deleting installed themes.\n\n");
|
gfx_printf("\n\n-- Loesche installierte Themes.\n\n");
|
||||||
_deleteTheme("sd:/atmosphere/contents", "0100000000001000");
|
_deleteTheme("sd:/atmosphere/contents", "0100000000001000");
|
||||||
_deleteTheme("sd:/atmosphere/contents", "0100000000001007");
|
_deleteTheme("sd:/atmosphere/contents", "0100000000001007");
|
||||||
_deleteTheme("sd:/atmosphere/contents", "0100000000001013");
|
_deleteTheme("sd:/atmosphere/contents", "0100000000001013");
|
||||||
|
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
gfx_printf("\n\n Fertig! Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
void m_entry_deleteBootFlags(){
|
void m_entry_deleteBootFlags(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Disabling automatic sysmodule startup.\n\n");
|
gfx_printf("\n\n-- Automatisches starten der sysmodule deaktivieren.\n\n");
|
||||||
char *storedPath = CpyStr("sd:/atmosphere/contents");
|
char *storedPath = CpyStr("sd:/atmosphere/contents");
|
||||||
int readRes = 0;
|
int readRes = 0;
|
||||||
Vector_t fileVec = ReadFolder(storedPath, &readRes);
|
Vector_t fileVec = ReadFolder(storedPath, &readRes);
|
||||||
if (readRes){
|
if (readRes){
|
||||||
clearFileVector(&fileVec);
|
clearFileVector(&fileVec);
|
||||||
|
free(storedPath);
|
||||||
DrawError(newErrCode(readRes));
|
DrawError(newErrCode(readRes));
|
||||||
} else {
|
} else {
|
||||||
vecDefArray(FSEntry_t*, fsEntries, fileVec);
|
vecDefArray(FSEntry_t*, fsEntries, fileVec);
|
||||||
for (int i = 0; i < fileVec.count; i++){
|
for (int i = 0; i < fileVec.count; i++){
|
||||||
|
|
||||||
char *suf = "/flags/boot2.flag";
|
char *suf = "/flags/boot2.flag";
|
||||||
char *flagPath = CombinePaths(storedPath, fsEntries[i].name);
|
char *subPath = CombinePaths(storedPath, fsEntries[i].name);
|
||||||
flagPath = CombinePaths(flagPath, suf);
|
char *flagPath = CombinePaths(subPath, suf);
|
||||||
|
free(subPath);
|
||||||
if (FileExists(flagPath)) {
|
if (FileExists(flagPath)) {
|
||||||
gfx_printf("Deleting: %s\n", flagPath);
|
gfx_printf("Loesche: %s\n", flagPath);
|
||||||
_DeleteFileSimple(flagPath);
|
_DeleteFileSimple(flagPath);
|
||||||
}
|
} else {
|
||||||
free(flagPath);
|
free(flagPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
clearFileVector(&fileVec);
|
||||||
|
free(storedPath);
|
||||||
|
}
|
||||||
|
gfx_printf("\n\n Fertig! Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,9 +408,9 @@ void m_entry_deleteBootFlags(){
|
|||||||
|
|
||||||
void m_entry_fixMacSpecialFolders(){
|
void m_entry_fixMacSpecialFolders(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- Fix mac folders (this can take some time, please wait.)\n\n");
|
gfx_printf("\n\n-- Mac-Ordner reparieren (dies kann ein wenig dauern, bitte warten.)\n\n");
|
||||||
listdir("/", 0);
|
listdir("/", 0);
|
||||||
gfx_printf("\n\rDone, press a key to proceed.");
|
gfx_printf("\n\n Fertig! Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
|
|
||||||
// browse path
|
// browse path
|
||||||
@@ -419,24 +422,24 @@ void m_entry_fixMacSpecialFolders(){
|
|||||||
|
|
||||||
void m_entry_stillNoBootInfo(){
|
void m_entry_stillNoBootInfo(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\n\n-- My switch still does not boot.\n\n");
|
gfx_printf("\n\n-- Meine Switch startet immer noch nicht.\n\n");
|
||||||
|
|
||||||
gfx_printf("%kDo you have a gamecard inserted?\n", COLOR_WHITE);
|
gfx_printf("%kSteckt eine Spiel-Cardrige im Slot?\n", COLOR_WHITE);
|
||||||
gfx_printf("Try taking it out and reboot.\n\n");
|
gfx_printf("Entferne sie und starte neu.\n\n");
|
||||||
|
|
||||||
gfx_printf("%kDid you recently update Atmosphere/DeepSea?\n", COLOR_WHITE);
|
gfx_printf("%kHast du vor kurzem Atmosphere/OmniNX aktualisiert?\n", COLOR_WHITE);
|
||||||
gfx_printf("Insert your sdcard into a computer, delete 'atmosphere', 'bootloader' & 'sept', download your preffered CFW and put the files back on your switch.\n\n");
|
gfx_printf("Stecke die SD-Karte in deinen PC, hol das neue Paket vom NiklasCFW Discord-Server und entpacke die .zip Datei auf deine SD-Karte und überschreibe alle Dateien.\nDanach kannst du den OmniNX-Installer-Payload ausfuehren.\n\n");
|
||||||
|
|
||||||
gfx_printf("%kDid you just buy a new SD-card?\n", COLOR_WHITE);
|
gfx_printf("%kHast du eine neue SD-Karte gekauft?\n", COLOR_WHITE);
|
||||||
gfx_printf("Make sure its not a fake card.\n\n");
|
gfx_printf("Vergewissere dich das es keine fake/SanDisk Karte ist.\n\n");
|
||||||
|
|
||||||
gfx_printf("\n\n Done, press a key to proceed.");
|
gfx_printf("\n\n Druecke eine Taste um zurueckzukehren");
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
void m_entry_ViewCredits(){
|
void m_entry_ViewCredits(){
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
gfx_printf("\nCommon Problem Resolver v%d.%d.%d\nBy Team Neptune\n\nBased on TegraExplorer by SuchMemeManySkill,\nLockpick_RCM & Hekate, from shchmue & CTCaer\n\n\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF);
|
gfx_printf("\nAllgemeinerProblemLoeser %d.%d.%d\nVon Team Neptune - (NiklasCFW Fork - Uebersetzt von Switch Bros.)\n\nBasierend auf TegraExplorer von SuchMemeManySkill,\nLockpick_RCM & Hekate, von shchmue & CTCaer\n\n\n", APL_VER_MJ, APL_VER_MN, APL_VER_BF);
|
||||||
hidWait();
|
hidWait();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ void gfx_printTopInfo() {
|
|||||||
bq24193_get_property(BQ24193_ChargeStatus, ¤t_charge_status);
|
bq24193_get_property(BQ24193_ChargeStatus, ¤t_charge_status);
|
||||||
SETCOLOR(COLOR_DEFAULT, COLOR_WHITE);
|
SETCOLOR(COLOR_DEFAULT, COLOR_WHITE);
|
||||||
gfx_con_setpos(0, 0);
|
gfx_con_setpos(0, 0);
|
||||||
gfx_printf("CPR %d.%d.%d | Battery: %d%% %c\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF, battery >> 8, ((current_charge_status) ? 129 : 32));
|
gfx_printf("APL %d.%d.%d | Battery: %d%% %c\n", APL_VER_MJ, APL_VER_MN, APL_VER_BF, battery >> 8, ((current_charge_status) ? 129 : 32));
|
||||||
RESETCOLOR;
|
RESETCOLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,13 @@
|
|||||||
#define COLOR_GREY 0xFF888888
|
#define COLOR_GREY 0xFF888888
|
||||||
#define COLOR_DARKGREY 0xFF333333
|
#define COLOR_DARKGREY 0xFF333333
|
||||||
#define COLOR_ORANGE 0xFFFFA500
|
#define COLOR_ORANGE 0xFFFFA500
|
||||||
#define COLOR_GREEN 0xFF008000
|
#define COLOR_GREEN 0xFF00FF00
|
||||||
#define COLOR_VIOLET 0xFFEE82EE
|
#define COLOR_VIOLET 0xFFEE82EE
|
||||||
|
#define COLOR_PURPLE 0xFF7C49EF
|
||||||
#define COLOR_BLUE 0xFF0000FF
|
#define COLOR_BLUE 0xFF0000FF
|
||||||
|
#define COLOR_CYAN 0xFF00FFFF
|
||||||
#define COLOR_RED 0xFF0000FF
|
#define COLOR_RED 0xFF0000FF
|
||||||
#define COLOR_YELLOW 0xFFFF0000
|
#define COLOR_YELLOW 0xFFFFFF00
|
||||||
|
|
||||||
#define COLORTORGB(color) (color & 0x00FFFFFF)
|
#define COLORTORGB(color) (color & 0x00FFFFFF)
|
||||||
#define SETCOLOR(fg, bg) gfx_con_setcol(fg, 1, bg)
|
#define SETCOLOR(fg, bg) gfx_con_setcol(fg, 1, bg)
|
||||||
|
|||||||
@@ -242,9 +242,9 @@ scriptFunction(funcWait){
|
|||||||
|
|
||||||
scriptFunction(funcGetVer){
|
scriptFunction(funcGetVer){
|
||||||
int *arr = malloc(3 * sizeof(int));
|
int *arr = malloc(3 * sizeof(int));
|
||||||
arr[0] = LP_VER_MJ;
|
arr[0] = APL_VER_MJ;
|
||||||
arr[1] = LP_VER_MN;
|
arr[1] = APL_VER_MN;
|
||||||
arr[2] = LP_VER_BF;
|
arr[2] = APL_VER_BF;
|
||||||
Vector_t res = vecFromArray(arr, 3, sizeof(int));
|
Vector_t res = vecFromArray(arr, 3, sizeof(int));
|
||||||
return newVar(IntArrayType, 1, .vectorType = res);
|
return newVar(IntArrayType, 1, .vectorType = res);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "../cpr/cpr.h"
|
#include "../apl/apl.h"
|
||||||
|
|
||||||
extern hekate_config h_cfg;
|
extern hekate_config h_cfg;
|
||||||
|
|
||||||
@@ -48,32 +48,30 @@ enum {
|
|||||||
MainRebootRCM,
|
MainRebootRCM,
|
||||||
// MainRebootNormal,
|
// MainRebootNormal,
|
||||||
MainRebootHekate,
|
MainRebootHekate,
|
||||||
MainRebootAMS,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
MenuEntry_t mainMenuEntries[] = {
|
MenuEntry_t mainMenuEntries[] = {
|
||||||
[MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Bootfixes --"},
|
[MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Behebe Start Probleme --"},
|
||||||
[DeleteBootFlags] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Disable automatic sysmodule startup"},
|
[DeleteBootFlags] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Automatisches starten der sysmodule deaktivieren"},
|
||||||
[DeleteThemes] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Delete installed themes"},
|
[DeleteThemes] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Loesche installierte Themes"},
|
||||||
[FixClingWrap] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix ClingWrap"},
|
[FixClingWrap] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Repariere SigPatches"},
|
||||||
[FixAIOUpdaterBoot] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix Switch-AiO-Updater update"},
|
[FixAIOUpdaterBoot] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Behebe fehlerhaftes AIO-switch-updater Update"},
|
||||||
[FixArchiveBitA] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix archive bit (all folders except nintendo)"},
|
[FixArchiveBitA] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Behebe Archive Bit (alle Ordner ausser Nintendo)"},
|
||||||
[FixArchiveBitN] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix archive bit (nintendo folder)"},
|
[FixArchiveBitN] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Behebe Archive Bit (Nintendo Ordner)"},
|
||||||
// [FixAll] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Try everything"},
|
// [FixAll] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Try everything"},
|
||||||
|
|
||||||
[MainConvenience] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Convenience --"},
|
[MainConvenience] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Bequemlichkeit --"},
|
||||||
[FixMacSpecialFolders] = {.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "Remove special folders created by Mac"},
|
[FixMacSpecialFolders] = {.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "Entferne spezielle MacOS Dateien"},
|
||||||
|
|
||||||
[MainOther] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Other --"},
|
[MainOther] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Sonstiges --"},
|
||||||
[MainViewStillNoBootInfo] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "My switch still does not boot"},
|
[MainViewStillNoBootInfo] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Meine Switch startet nicht mehr"},
|
||||||
[MainViewCredits] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Credits"},
|
[MainViewCredits] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Ueber"},
|
||||||
|
|
||||||
[MainExit] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Exit --"},
|
[MainExit] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Beenden --"},
|
||||||
[MainPowerOff] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Power off"},
|
[MainPowerOff] = {.optionUnion = COLORTORGB(COLOR_PURPLE), .name = "Ausschalten"},
|
||||||
[MainRebootRCM] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to RCM"},
|
[MainRebootRCM] = {.optionUnion = COLORTORGB(COLOR_PURPLE), .name = "Neustart in RCM-Modus"},
|
||||||
// [MainRebootNormal] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot normally"},
|
// [MainRebootNormal] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Normaler Neustart"},
|
||||||
[MainRebootHekate] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to bootloader/update.bin"},
|
[MainRebootHekate] = {.optionUnion = COLORTORGB(COLOR_PURPLE), .name = "Neustart in hekate"}
|
||||||
[MainRebootAMS] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to atmosphere/reboot_payload.bin"}
|
|
||||||
|
|
||||||
|
|
||||||
// [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"},
|
// [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"},
|
||||||
@@ -102,10 +100,6 @@ void HandleSD(){
|
|||||||
extern bool is_sd_inited;
|
extern bool is_sd_inited;
|
||||||
extern int launch_payload(char *path);
|
extern int launch_payload(char *path);
|
||||||
|
|
||||||
void RebootToAMS(){
|
|
||||||
launch_payload("sd:/atmosphere/reboot_payload.bin");
|
|
||||||
}
|
|
||||||
|
|
||||||
void RebootToHekate(){
|
void RebootToHekate(){
|
||||||
launch_payload("sd:/bootloader/update.bin");
|
launch_payload("sd:/bootloader/update.bin");
|
||||||
}
|
}
|
||||||
@@ -140,7 +134,6 @@ menuPaths mainMenuPaths[] = {
|
|||||||
[MainRebootHekate] = RebootToHekate,
|
[MainRebootHekate] = RebootToHekate,
|
||||||
[MainRebootRCM] = reboot_rcm,
|
[MainRebootRCM] = reboot_rcm,
|
||||||
[MainPowerOff] = power_off,
|
[MainPowerOff] = power_off,
|
||||||
[MainRebootAMS] = RebootToAMS,
|
|
||||||
[MainViewCredits] = m_entry_ViewCredits,
|
[MainViewCredits] = m_entry_ViewCredits,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -151,7 +144,6 @@ void EnterMainMenu(){
|
|||||||
sd_unmount();
|
sd_unmount();
|
||||||
|
|
||||||
// // -- Exit --
|
// // -- Exit --
|
||||||
mainMenuEntries[MainRebootAMS].hide = (!sd_get_card_mounted() || !FileExists("sd:/atmosphere/reboot_payload.bin"));
|
|
||||||
mainMenuEntries[MainRebootHekate].hide = (!sd_get_card_mounted() || !FileExists("sd:/bootloader/update.bin"));
|
mainMenuEntries[MainRebootHekate].hide = (!sd_get_card_mounted() || !FileExists("sd:/bootloader/update.bin"));
|
||||||
mainMenuEntries[MainRebootRCM].hide = h_cfg.t210b01;
|
mainMenuEntries[MainRebootRCM].hide = h_cfg.t210b01;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user