Skip to content
This repository was archived by the owner on Jan 24, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
85fc68a
Update 1
Simo3ds Aug 6, 2024
8b56e94
Merge branch 'Alexyo21:master' into update
Simo3ds Nov 15, 2024
fc8e9f7
First part of up to date commits and translation
Simo3ds Nov 15, 2024
a8d86e2
Merge branch 'update' of https://github.com/Simo3ds/Polari3DS-ITA int…
Simo3ds Nov 15, 2024
34c445e
Update build.yml
Simo3ds Nov 15, 2024
0bb742c
Update build.yml
Simo3ds Nov 15, 2024
8ddf33b
Second part of translation. Various file translated.
Simo3ds Nov 16, 2024
137f4c1
Update README.md
Simo3ds Nov 16, 2024
d370f49
Third Part of translation, rosalina menu under translation.
Simo3ds Nov 17, 2024
75fdfe5
fix misstyping
Simo3ds Nov 17, 2024
ffbd991
I'm almost ready to drop the translation in a few moments
Simo3ds Nov 24, 2024
707118a
Fix misstyping
Simo3ds Nov 24, 2024
1c8c640
Fix another misstyping
Simo3ds Nov 24, 2024
3f78868
Resize 1
Simo3ds Nov 24, 2024
c7e1937
Tradotta la parte dei plugin, che mi son dimenticato.
Simo3ds Nov 24, 2024
84eed47
fix 1
Simo3ds Nov 26, 2024
7ce7fce
Merge pull request #7 from Simo3ds/update
Simo3ds Nov 26, 2024
1b18026
resize 2
Simo3ds Nov 26, 2024
e222481
Test: fix 3
Simo3ds Nov 26, 2024
0bdca23
test: fix 4
Simo3ds Nov 26, 2024
4083996
test: fix 5
Simo3ds Nov 26, 2024
b84550f
Test: fiix 6
Simo3ds Nov 26, 2024
617f296
me as a dumb person, now guess this gonna work.
Simo3ds Nov 26, 2024
5692b54
nvm fix 8
Simo3ds Nov 26, 2024
d240ad5
fix 9
Simo3ds Nov 26, 2024
1c4db38
letsogski non so leggere i reminder
Simo3ds Nov 26, 2024
f0c4c92
fake version updated (still need to sync some luma commit), need to f…
Simo3ds Nov 26, 2024
2520554
fix (I've lost the count, maybe 12??)
Simo3ds Nov 26, 2024
74e97cd
fix 14
Simo3ds Nov 26, 2024
9f36999
fix 15
Simo3ds Nov 26, 2024
a0ba6a0
fix 16
Simo3ds Nov 26, 2024
eebfa2a
fix 17
Simo3ds Nov 26, 2024
fdb0dfd
fix 18
Simo3ds Nov 26, 2024
bfb7208
fix 20: I should got it now!
Simo3ds Nov 26, 2024
a1f2b50
resize (the resize will be notice in config menu)
Simo3ds Nov 26, 2024
2271157
text fix
Simo3ds Nov 26, 2024
9159e93
Merge pull request #8 from Simo3ds/update
Simo3ds Nov 26, 2024
c0b06b1
rosalina: fix display bug in MiscellaneousMenu_UpdateTimeDateNtp
Alexyo21 Jul 27, 2025
0a6a3df
font change as previous commit
Alexyo21 Jul 27, 2025
01e3645
2025 finally hahha ops a lil late
Alexyo21 Jul 27, 2025
e9d6448
new luma version
Alexyo21 Jul 27, 2025
03836d1
Update README.md
Alexyo21 Jul 28, 2025
002eb98
Silent updates note
Alexyo21 Jul 28, 2025
f517936
Build test. Translation coming next
Simo3ds Aug 23, 2025
8933e39
Back to the old days where actions was working
Simo3ds Aug 23, 2025
7f27a2f
Update Makefile
Simo3ds Aug 23, 2025
65ecc3b
Update Makefile
Simo3ds Aug 23, 2025
22634f9
Update README.md
Simo3ds Aug 23, 2025
51b9ec7
Update README.md
Alexyo21 Aug 23, 2025
a44e421
Update Fake Version to latest luma 3ds version
Simo3ds Aug 27, 2025
2b6995d
test 1 (is this broken?)
Simo3ds Aug 27, 2025
c282f4f
test 2 (are these broken?)
Simo3ds Aug 27, 2025
a166265
test 3 (are these broken?)
Simo3ds Aug 27, 2025
4afbb0b
test 4 (are these broken?)
Simo3ds Aug 27, 2025
9989283
test 6 (are these broken?)
Simo3ds Aug 27, 2025
388293e
Merge branch 'master' of https://github.com/Simo3ds/Polari3DS-ITA
Simo3ds Aug 27, 2025
3e55e3e
TEST ONLY
Simo3ds Aug 27, 2025
8aa9093
Delete .github/workflows/c-cpp.yml
Simo3ds Aug 27, 2025
6660797
Update build.yml
Simo3ds Aug 27, 2025
959bbf6
Update build.yml
Simo3ds Aug 27, 2025
b34d6fb
Update build.yml (test of downgrade)
Simo3ds Aug 27, 2025
8706a26
Update build.yml
Simo3ds Aug 27, 2025
0b44fbe
Update build.yml
Simo3ds Aug 29, 2025
6608de8
TEST for webhook
Simo3ds Aug 29, 2025
98af7df
Delete sysmodules/rosalina/include/csvc.h
Simo2ds Aug 29, 2025
9e70f04
re sync this files
Simo3ds Aug 29, 2025
1185184
re sync these files
Simo3ds Aug 29, 2025
3ef79e6
resync these files
Simo3ds Aug 29, 2025
9d57540
resync these files (should be everything as is now)
Simo3ds Aug 29, 2025
0d8a31d
Fix misstypo
Simo3ds Aug 29, 2025
7cc1e21
TEST updated webhooks function (ignore it)
Simo3ds Aug 29, 2025
9ed5594
Update arm9/source/config.c
Simo3ds Aug 29, 2025
0072199
Update arm9/source/config.c
Simo3ds Aug 29, 2025
4ffc856
Update sysmodules/rosalina/source/menus/config_extra.c
Simo3ds Aug 29, 2025
2bffb52
Update plgloader.c
Simo3ds Aug 31, 2025
6a9cb1b
fix typo
Simo3ds Sep 11, 2025
59cd86e
fix typo
Simo3ds Sep 11, 2025
577f43b
various fixes
Simo3ds Sep 14, 2025
e1a3509
various fixes pt 2
Simo3ds Sep 14, 2025
3cf411d
missed italian translation part
Simo2ds Sep 14, 2025
8be1404
Fix
Simo3ds Sep 14, 2025
af6c057
Merge branch 'main' of https://github.com/Simo3ds/Polari3DS-ITA
Simo3ds Sep 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI
name: P3

on:
push:
Expand All @@ -24,10 +24,10 @@ jobs:
with:
fetch-depth: 0
- name: safedir
run: git config --system --add safe.directory /__w/Luma3DS/Luma3DS
run: git config --global --add safe.directory /__w/Polari3DS-ITA/Polari3DS-ITA
- name: Build
run: make -j$(nproc --all)
- uses: actions/upload-artifact@v4
with:
name: Polari3DS-nightly
name: Polari3DS-ITA_beta
path: boot.firm
14 changes: 11 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# Polari3DS
# Polari3DS-ITA
*Noob/Advanced-proof (N)3DS "Custom Firmware"*
*READ BELOW!!!!*
#

From today you won't need to download polari from pc anymore I present you to polari refresher, the new old updater refreshed to have polari always fresh 😅, indeed.
https://github.com/Alexyo21/polari-refresher
I use this spot for telling anyone who reads this that from now on polari3ds will have silent updates (no version changes since it breaks one file) when the changes are the one from official repo or bug fixes from official repo as well that don't touch or meddle with ini file or config: dw I will warn you if there is one...


twl redirection to sd patch:
https://github.com/Alexyo21/twl_firm_patcher
Expand All @@ -30,15 +32,18 @@ https://github.com/cooolgamer/the-pirate-launcher
#

## next update
Bug fix on new3ds menu thanks to lisko(will provvide soon I am on vacation)

* nighshift remake;
* nighshift remake(it has been a while I should make a poll) ;
* fix quick debugger in loader (missing process and data...)

(little feature)/(improvements):
Nothing at the moment
Nothing at the moment

Revision

* Chainloader isn't coming back i am making a separate app for that is memory safer;
* Chainloader isn't coming back i am making a separate app for that is memory safer;

NOT AT THE MOMENT
Expand Down Expand Up @@ -74,6 +79,9 @@ Restored UNITINFO and enable rosalina on safe_firm and disable arm11exceptions
- Press Start on Rosalina menu to toggle wifi -> [Original](https://github.com/DullPointer/Luma3DS/commit/c1a20558bed3d792d54069719a898006af20ba85)
- Press Select on Rosalina menu to toggle LEDs -> [Original](https://github.com/DullPointer/Luma3DS/commit/fa70d374c00e39dee8b9ef54f60deb1da35a0c51) (and press X to force blue led as a workaround when the battery is low)
- Press Y for a surprise;
Press B to enable the patch for stargate3ds, before booting the card through nrimal means I mean not not booting firmware itself
- Press Select on Rosalina menu to toggle LEDs -> [Original](https://github.com/DullPointer/Luma3DS/commit/fa70d374c00e39dee8b9ef54f60deb1da35a0c51) (and press X to force blue led as a workaround when the battery is low)
- Press Y for a surprise;
Press B to enable the patch for stargate3ds, before booting the card through nrimal means I mean not not booting firmware itself
- Added n3ds clock + L2 status in rosalina menu -> [Original](https://github.com/DullPointer/Luma3DS/commit/2dbfa8b5c9b719b7f3056691f54332f42da6de8d)
also selectable per title
Expand Down Expand Up @@ -162,4 +170,4 @@ also added inside the cfw itself (thinking i have to add someone else, though do
This software is licensed under the terms of the GPLv3. You can find a copy of the license in the LICENSE.txt file.

Files in the GDB stub are instead triple-licensed as MIT or "GPLv2 or any later version", in which case it's specified in the file header.
Also consider the copyright updated to 2023 in all files obviously it will retain the og authors, i will manualuy update the one i "play with"
Also consider the copyright updated to 2023 in all files obviously it will retain the og authors, i will manualuy update the one i "play with"
373 changes: 182 additions & 191 deletions arm9/source/config.c

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion arm9/source/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@

#define FVERSION_MAJOR 13 // fake version spoofing
#define FVERSION_MINOR 3
#define FVERSION_BUILD 2
#define FVERSION_BUILD 3

enum multiOptions
{
Expand Down
2 changes: 1 addition & 1 deletion arm9/source/crypto.c
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ void kernel9Loader(Arm9Bin *arm9Section)
aes_use_keyslot(arm9BinSlot);
aes(startOfArm9Bin, startOfArm9Bin, arm9SectionSize / AES_BLOCK_SIZE, arm9BinCtr, AES_CTR_MODE, AES_INPUT_BE | AES_INPUT_NORMAL);

if(*startOfArm9Bin != 0x47704770 && *startOfArm9Bin != 0xB0862000) error("Failed to decrypt the Arm9 binary.");
if(*startOfArm9Bin != 0x47704770 && *startOfArm9Bin != 0xB0862000) error("Decriptazione dei file ARM9 bin fallita.");
}

void computePinHash(u8 *outbuf, const u8 *inbuf)
Expand Down
50 changes: 25 additions & 25 deletions arm9/source/exceptions.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,21 +61,21 @@ void detectAndProcessExceptionDumps(void)
const vu8 *additionalData = stackDump + dumpHeader->stackDumpSize;

static const char *handledExceptionNames[] = {
"FIQ", "undefined instruction", "prefetch abort", "data abort"
"FIQ", "Istruzioni indefinite", "Crash Prefetch", "Crash Dati"
},
*specialExceptions[] = {
"kernel panic", "svcBreak"
"panico kernel", "svcBreak"
},
*registerNames[] = {
"R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "R10", "R11", "R12",
"SP", "LR", "PC", "CPSR", "FPEXC"
},
*faultStatusNames[] = {
"Alignment", "Instr.cache maintenance op.",
"Ext.Abort on translation - Lv1", "Ext.Abort on translation - Lv2",
"Translation - Section", "Translation - Page", "Access bit - Section", "Access bit - Page",
"Domain - Section", "Domain - Page", "Permission - Section", "Permission - Page",
"Precise External Abort", "Imprecise External Abort", "Debug event"
"Est.Crash su traduzione - Lv1", "Est.Crash su traduzione- Lv2",
"Traduzione - Sezione", "Traduzione - Pagina", "Accesso bit - Sezione", "Accesso bit - Pagina",
"Dominio - Sezione", "Dominio - Pagina", "Permissi - Sezione", "Permissi - Pagina",
"Crash Esterno Preciso", "Crash Esterno Impreciso", "Evento di debug"
};

static const u32 faultStatusValues[] = {
Expand All @@ -85,38 +85,38 @@ void detectAndProcessExceptionDumps(void)

initScreens();

drawString(true, 10, 10, COLOR_RED, "An exception occurred");
drawString(true, 10, 10, COLOR_RED, "Si e' verificato un errore");
u32 posY;
if(dumpHeader->processor == 11) posY = drawFormattedString(true, 10, 30, COLOR_WHITE, "Processor: Arm11 (core %u)", dumpHeader->core);
else posY = drawString(true, 10, 30, COLOR_WHITE, "Processor: Arm9");
if(dumpHeader->processor == 11) posY = drawFormattedString(true, 10, 30, COLOR_WHITE, "Processore: Arm11 (core %u)", dumpHeader->core);
else posY = drawString(true, 10, 30, COLOR_WHITE, "Processore: Arm9");

if(dumpHeader->type == 2)
{
if((regs[16] & 0x20) == 0 && dumpHeader->codeDumpSize >= 4)
{
u32 instr = *(vu32 *)(stackDump - 4);
if(instr == 0xE12FFF7E)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[0]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[0]);
else if(instr == 0xEF00003C)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[1]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[1]);
else
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s", handledExceptionNames[dumpHeader->type]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s", handledExceptionNames[dumpHeader->type]);
}
else if((regs[16] & 0x20) != 0 && dumpHeader->codeDumpSize >= 2)
{
u16 instr = *(vu16 *)(stackDump - 2);
if(instr == 0xBEFE)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[0]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[0]);
else if(instr == 0xDF3C)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[1]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s (%s)", handledExceptionNames[dumpHeader->type], specialExceptions[1]);
else
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s", handledExceptionNames[dumpHeader->type]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s", handledExceptionNames[dumpHeader->type]);
}
else
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s", handledExceptionNames[dumpHeader->type]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s", handledExceptionNames[dumpHeader->type]);
}
else
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Exception type: %s", handledExceptionNames[dumpHeader->type]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Tipo di eccezione: %s", handledExceptionNames[dumpHeader->type]);

if(dumpHeader->processor == 11 && dumpHeader->type >= 2)
{
Expand All @@ -125,7 +125,7 @@ void detectAndProcessExceptionDumps(void)
for(u32 i = 0; i < 15; i++)
if(xfsr == faultStatusValues[i])
{
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Fault status: %s", faultStatusNames[i]);
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Livello fatalita': %s", faultStatusNames[i]);
break;
}
}
Expand All @@ -135,7 +135,7 @@ void detectAndProcessExceptionDumps(void)
u32 size = dumpHeader->additionalDataSize;
if(dumpHeader->processor == 11)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE,
"Current process: %.8s (%016llX)", (const char *)additionalData, *(vu64 *)(additionalData + 8));
"Processo corrente: %.8s (%016llX)", (const char *)additionalData, *(vu64 *)(additionalData + 8));
else
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE,
"Arm9 memory dump at offset %X size %lX", (uintptr_t)additionalData - (uintptr_t)dumpHeader, size);
Expand All @@ -153,13 +153,13 @@ void detectAndProcessExceptionDumps(void)
}

if(dumpHeader->processor == 11 && dumpHeader->type == 3)
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "%-7s%08lX Access type: %s", "FAR", regs[19], regs[17] & (1u << 11) ? "Write" : "Read");
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "%-7s%08lX Tipo di accesso: %s", "FAR", regs[19], regs[17] & (1u << 11) ? "Scrittura" : "Lettura");

posY += SPACING_Y;

u32 mode = regs[16] & 0xF;
if(dumpHeader->type == 3 && (mode == 7 || mode == 11))
posY = drawString(true, 10, posY + SPACING_Y, COLOR_YELLOW, "Incorrect dump: failed to dump code and/or stack") + SPACING_Y;
posY = drawString(true, 10, posY + SPACING_Y, COLOR_YELLOW, "Dump non correttto: Dump di codice e/o dello stack fallito") + SPACING_Y;

u32 posYBottom = drawString(false, 10, 10, COLOR_WHITE, "Stack dump:") + SPACING_Y;

Expand All @@ -171,7 +171,7 @@ void detectAndProcessExceptionDumps(void)
drawFormattedString(false, 10 + 10 * SPACING_X + 3 * i * SPACING_X, posYBottom, COLOR_WHITE, "%02X", *stackDump);
}

static const char *choiceMessage[] = {"Press A to save the crash dump", "Press any other button to shutdown"};
static const char *choiceMessage[] = {"Premi A per salvare una copia del crash", "Premi qualsiasi altro tasto per spegnere"};

drawString(true, 10, posY + SPACING_Y, COLOR_WHITE, choiceMessage[0]);
drawString(true, 10, posY + SPACING_Y + SPACING_Y , COLOR_WHITE, choiceMessage[1]);
Expand All @@ -191,12 +191,12 @@ void detectAndProcessExceptionDumps(void)

if(fileWrite((void *)dumpHeader, path, dumpHeader->totalSize))
{
posY = drawString(true, 10, posY + SPACING_Y, COLOR_WHITE, "You can find the dump in the following file:");
posY = drawString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Puoi trovare la copia del crash nel seguente file:");
posY = drawFormattedString(true, 10, posY + SPACING_Y, COLOR_WHITE, "%s:/luma/%s", isSdMode ? "SD" : "CTRNAND", path) + SPACING_Y;
}
else posY = drawString(true, 10, posY + SPACING_Y, COLOR_RED, "Error writing the dump file");
else posY = drawString(true, 10, posY + SPACING_Y, COLOR_RED, "Errore durante la scrittura della copia");

drawString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Press any button to shutdown");
drawString(true, 10, posY + SPACING_Y, COLOR_WHITE, "Premi un qualsiasi altro tasto per spegnere");

waitInput(false);

Expand Down
23 changes: 12 additions & 11 deletions arm9/source/firm.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ static inline u32 loadFirmFromStorage(FirmwareType firmType)

if(!firmSize) return 0;

static const char *extFirmError = "The external FIRM is not valid.";
static const char *extFirmError = "Il FIRM esterno non e' valido.";

if(firmSize <= sizeof(Cxi) + 0x200) error(extFirmError);

Expand All @@ -139,14 +139,14 @@ static inline u32 loadFirmFromStorage(FirmwareType firmType)
u8 cetk[0xA50];

if(fileRead(cetk, cetkFiles[(u32)firmType], sizeof(cetk)) != sizeof(cetk))
error("The cetk is missing or corrupted.");
error("Il cetk è mancante o corrotto.");

firmSize = decryptNusFirm((Ticket *)(cetk + 0x140), (Cxi *)firm, firmSize);

if(!firmSize) error("Unable to decrypt the external FIRM.");
if(!firmSize) error("Impossibile scriptare il FIRM esterno.");
}

if(!checkFirm(firmSize)) error("The external FIRM is invalid or corrupted.");
if(!checkFirm(firmSize)) error("Il FIRM esterno non e' valido o e' corrotto.");

return firmSize;
}
Expand Down Expand Up @@ -195,6 +195,7 @@ u32 loadNintendoFirm(FirmwareType *firmType, FirmwareSource nandType, bool loadF
loadedFromStorage = true;
firmSize = result;
}
else if(ctrNandError) error("Impossibile montare la CTRNAND o caricare il CTRNAND FIRM.\nPlerfavore usarne uno esterno.");
else storageLoadError = true;
}
// If all attempts failed, panic.
Expand Down Expand Up @@ -285,7 +286,7 @@ void loadHomebrewFirm(u32 pressed)
u32 maxPayloadSize = (u32)((u8 *)0x27FFE000 - (u8 *)firm),
payloadSize = fileRead(firm, path, maxPayloadSize);

if(payloadSize <= 0x200 || !checkFirm(payloadSize)) error("The payload is invalid or corrupted.");
if(payloadSize <= 0x200 || !checkFirm(payloadSize)) error("Il payload e' invalido o corrotto.");

char absPath[24 + 255];

Expand Down Expand Up @@ -376,7 +377,7 @@ typedef struct CopyKipResult {
// Copy a KIP, decompressing it in place if necessary (TwlBg)
static CopyKipResult copyKip(u8 *dst, const u8 *src, u32 maxSize, bool decompress)
{
const char *extModuleSizeError = "The external FIRM modules are too large.";
const char *extModuleSizeError = "I moduli dei FIRM esterni sono troppo grandi.";
CopyKipResult res = { 0 };
Cxi *dstCxi = (Cxi *)dst;
const Cxi *srcCxi = (const Cxi *)src;
Expand All @@ -397,7 +398,7 @@ static CopyKipResult copyKip(u8 *dst, const u8 *src, u32 maxSize, bool decompres
u8 *codeAddr = (u8 *)exefs + sizeof(ExeFsHeader) + fh->offset;

if (memcmp(fh->name, ".code\0\0\0", 8) != 0 || fh->offset != 0 || exefs->fileHeaders[1].size != 0)
error("One of the external FIRM modules have invalid layout.");
error("Uno dei moduli dei FIRM esterni ha un layout invalido.");

// If it's already decompressed or we don't need to, there is not much left to do
if (!decompress || !isCompressed)
Expand Down Expand Up @@ -483,7 +484,7 @@ static void mergeSection0(FirmwareType firmType, u32 firmVersion, bool loadFromS

//3) Read or copy the modules
u8 *dst = firm->section[0].address;
const char *extModuleSizeError = "The external FIRM modules are too large.";
const char *extModuleSizeError = "I moduli dei FIRM esterni sono troppo grandi.";
// SAFE_FIRM only for N3DS and only if ENABLESAFEFIRMROSALINA is on
u32 maxModuleSize = !isLgyFirm ? 0x80000 : 0x600000;
u32 dstModuleSize = 0;
Expand All @@ -506,7 +507,7 @@ static void mergeSection0(FirmwareType firmType, u32 firmVersion, bool loadFromS
fileRead(dst, fileName, dstModuleSize) != dstModuleSize ||
memcmp(((Cxi *)dst)->ncch.magic, "NCCH", 4) != 0 ||
memcmp(moduleList[i].name, ((Cxi *)dst)->exHeader.systemControlInfo.appTitle, sizeof(((Cxi *)dst)->exHeader.systemControlInfo.appTitle)) != 0)
error("An external FIRM module is invalid or corrupted.");
error("Un modulo di FIRM esterno e' invalido o corrotto");

dst += dstModuleSize;
maxModuleSize -= dstModuleSize;
Expand Down Expand Up @@ -536,12 +537,12 @@ static void mergeSection0(FirmwareType firmType, u32 firmVersion, bool loadFromS
if (isLgyFirm)
{
if (patchK11ModuleLoadingLgy(newKipSectionSize, kernel11Addr, kernel11Size) != 0)
error("Failed to load sysmodules");
error("Caricamento dei moduli di sistema fallito");
}
else
{
if (patchK11ModuleLoading(oldKipSectionSize, newKipSectionSize, nbModules, kernel11Addr, kernel11Size) != 0)
error("Failed to load sysmodules");
error("Caricamento dei moduli di sistema fallito");
}
}

Expand Down
6 changes: 3 additions & 3 deletions arm9/source/fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static bool switchToMainDir(bool isSd)
{
if (f_mkdir(mainDir) != FR_OK)
{
error("Failed to create luma directory.");
error("Creazione del percorso luma fallito.");
return false;
}
return switchToMainDir(isSd);
Expand Down Expand Up @@ -309,8 +309,8 @@ bool payloadMenu(char *path, bool *hasDisplayedMenu)
initScreens();
*hasDisplayedMenu = true;

drawString(true, 10, 10, COLOR_TITLE, "Polari3DS chainloader");
drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Press A to select, START to quit");
drawString(true, 10, 10, COLOR_TITLE, "Polari3DS-ITA chainloader");
drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Premi A per scegliere, START per uscire");

for(u32 i = 0, posY = 10 + 3 * SPACING_Y, color = COLOR_GREEN; i < payloadNum; i++, posY += SPACING_Y)
{
Expand Down
6 changes: 3 additions & 3 deletions arm9/source/itcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ void __attribute__((section(".patchITCM"), target("arm"), aligned(16))) patchITC
// Error checking
if (otpSize != sizeof(Otp))
{
error("OTP is not the correct size.");
error("L'OTP non è della dimensione corretta.");
}

else
Expand All @@ -24,7 +24,7 @@ void __attribute__((section(".patchITCM"), target("arm"), aligned(16))) patchITC

if (otp.magic != OTP_MAGIC)
{
error("Unable to parse OTP. Is it decrypted properly?");
error("Impossibile scansionare OTP. E' decriptato correttamente?");
}

else
Expand Down Expand Up @@ -80,7 +80,7 @@ void __attribute__((section(".PatchITCMCid"), target("arm"), aligned(16))) Patch
// Error checking
if (cidSize != sizeof(nandinfo.nandCid))
{
error("NandCid is not the correct size.");
error("La dimensione della NandCid non e' corretta");
}

else
Expand Down
Loading
Loading