diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d3834de..e223c505 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: CI +name: P3 on: push: @@ -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 diff --git a/README.md b/README.md index fb9af0f9..79020640 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 @@ -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 @@ -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" diff --git a/arm9/source/config.c b/arm9/source/config.c index 73884c2e..8252bebd 100644 --- a/arm9/source/config.c +++ b/arm9/source/config.c @@ -53,7 +53,7 @@ ConfigurationStatus needConfig; static CfgData oldConfig; static CfgDataMcu configDataMcu; -static_assert(sizeof(CfgDataMcu) > 0, "wrong data size"); +static_assert(sizeof(CfgDataMcu) > 0, "Dimensione dati sbagliata"); // INI parsing // =========================================================== @@ -633,9 +633,9 @@ static size_t saveLumaIniConfigToStr(char *out) } if (VERSION_BUILD != 0) { - sprintf(lumaVerStr, "Polari3DS v%d.%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR, (int)VERSION_BUILD); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR, (int)VERSION_BUILD); } else { - sprintf(lumaVerStr, "Polari3DS v%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR); } if (ISRELEASE) { @@ -841,216 +841,207 @@ void writeConfig(bool isConfigOptions) writeConfigMcu(); if(updateIni && !writeLumaIniConfig()) - error("Error writing the configuration file"); + error("Errore nella scrittura del file di configurazione."); } void configMenu(bool oldPinStatus, u32 oldPinMode) { - static const char *multiOptionsText[] = { "Default EmuNAND: 1( ) 2( ) 3( ) 4( )", - "Screen brightness: 4( ) 3( ) 2( ) 1( )", - "Splash: Off( ) Before( ) After( ) payloads", - "PIN lock: Off( ) 4( ) 6( ) 8( ) digits", - "New 3DS CPU: Off( ) Clock( ) L2( ) Clock+L2( )", - "Hbmenu autoboot: Off( ) 3DS( ) DSi( )", - "Force audio: Off( ) Headphones( ) Speakers( )" + static const char *multiOptionsText[] = { "EmuNAND predefinita: 1( ) 2( ) 3( ) 4( )", + "Luminosita schermo: 4( ) 3( ) 2( ) 1( )", + "Splash: Disattivato( ) Prima( ) Dopo( ) payloads", + "Blocco PIN: Disattivato( ) 4( ) 6( ) 8( ) cifre", + "New 3DS CPU: Disattivato( ) Clock( ) L2( ) Clock+L2( )", + "Autoavvio hbmenu: Disattivato( ) 3DS( ) DSi( )", + "Forza l'audio: Disattivato( ) Cuffie( ) Casse( )" }; - static const char *singleOptionsText[] = { "( ) Autoboot EmuNAND", - "( ) Enable loading external FIRMs and modules", - "( ) Enable game patching", - "( ) Redirect app. syscore threads to core2", - "( ) Show NAND or user string in System Settings", - "( ) Show GBA boot screen in patched AGB_FIRM", - "( ) Patch scheduler cpu to perf mode", - "( ) Allow Left+Right / Up+Down combos for DSi", - "( ) Cut 3DS Wifi in sleep mode", - "( ) Set developer UNITINFO", - "( ) Disable Arm11 exception handlers", - "( ) Enable Rosalina on SAFE_FIRM", - "( ) Enable instant reboot + disable Errdisp", - "( ) Show Advanced Settings", - "( ) Enable Nand Cid and Otp hardware patching", + static const char *singleOptionsText[] = { "( ) Avvia automaticamente l'EmuNAND", + "( ) Ab. il caricamento di FIRM e moduli est.", + "( ) Abilita patching dei giochi", + "( ) Reindirizza i threads app. syscore al core2", + "( ) Mostra NAND o str. utente in imp. di sis.", + "( ) Mostra sch. avv. GBA nell'AGB_FIRM patchato", + "( ) Abilita la modalita' prestazioni", + "( ) Abilita filtri pers. di upscaling per DSi", + "( ) Ammetti combo Sinistra+Destra/Su+Giu' per DSi", + "( ) Interr. il wifi del 3DS nella mod. riposo", + "( ) Imposta UNITINFO come svilup.", + "( ) Disabilita gli Arm11 exception handlers", + "( ) Abilita Rosalina nel SAFE_FIRM", + "( ) Abilita il riavvio ist. + disabilita Errdisp", + "( ) Mostra le impostazioni avanzate", + "( ) Abilita il patching di Nand Cid e Otp hardware", // Should always be the last 2 entries - "\nBoot chainloader", - "\nSave and exit" + "\nAvvia il chainloader", + "\nSalva ed esci", }; - static const char *optionsDescription[] = { "Select the default EmuNAND.\n\n" - "It will be booted when no directional\n" - "pad buttons are pressed (Up/Right/Down\n" - "/Left equal EmuNANDs 1/2/3/4).", - - "Select the screen brightness.", - - "Enable splash screen support.\n\n" - "\t* 'Before payloads' displays it\n" - "before booting payloads\n" - "(intended for splashes that display\n" - "button hints).\n\n" - "\t* 'After payloads' displays it\n" - "afterwards.\n\n" - "Edit the duration in lumae.ini (3s\n" - "default).", - - "Activate a PIN lock.\n\n" - "The PIN will be asked each time\n" - "Luma3DS boots.\n\n" - "4, 6 or 8 digits can be selected.\n\n" - "The ABXY buttons and the directional\n" - "pad buttons can be used as keys.\n\n" - "A message can also be displayed\n" - "(refer to the wiki for instructions).", - - "Select the New 3DS CPU mode.\n\n" - "This won't apply to\n" - "New 3DS exclusive/enhanced games.\n\n" - "'Clock+L2' can cause issues with some\n" - "games.", - - "Enable autobooting into homebrew menu,\n" - "either into 3DS or DSi mode.\n\n" - "Autobooting into a gamecard title is\n" - "not supported.\n\n" - "Refer to the \"autoboot\" section in the\n" - "configuration file to configure\n" - "this feature.", + static const char *optionsDescription[] = { "Seleziona l'EmuNAND predefinita.\n\n" + "Verra' avviata quando nesssun tasto \n" + "del DPAD e' premuto (Su/Destra/Giu'\n" + "/Sinistra corrispondono alle EmuNAND 1/2/3/4).", + + "Seleziona la luminosita' dello schermo.", + + "Abilita il supporto delle schermate splash.\n\n" + "\t* 'Prima payloads' lo mostra\n" + "prima di avviare le payloads\n" + "(inteso per splash che mostrano\n" + "indicazioni di tasti).\n\n" + "\t* 'Dopo payloads' lo mostra\n" + "dopo.\n\n" + "Modifica la durata nel file lumae.ini (3s\n" + "predefinita).", + + "Abilita un blocco PIN.\n\n" + "Il PIN verra' chiesto ogni volta che\n" + "Polari3DS si avvia.\n\n" + "Puo' essere impostato a 4, 6 o 8 cifre.\n\n" + "I tasti ABXY e i tasti del DPAD\n" + "possono essere usati come chiavi del blocco.\n\n" + "Puo' essere mostrato anche un messaggio\n" + "(Consulta la wiki per istruzioni).", + + "Seleziona la modalita' del New 3DS CPU.\n\n" + "Questo non verra' applicato per i\n" + "giochi esclusivi/potenziati per New3DS.\n\n" + "'Clock+L2' puo' creare problemi con alcuni\n" + "giochi.", + + "Abilita l'avvio automatico nell'homebrew menu,\n" + "sia in modalita' 3DS che DSi.\n\n" + "L'avvio automatico in una scheda di gioco\n" + "non e' supportato.\n\n" + "Riferisciti alla sezione \"autoboot\"\n" + "nel file di configurazione per impostare\n" + "questa funzione.", - "Force audio output to HPs or speakers.\n\n" - "Currently only for NATIVE_FIRM.\n\n" - "Due to software limitations, this gets\n" - "undone if you actually insert then\n" - "remove HPs (just enter then exit sleep\n" - "mode if this happens).\n\n" - "Also gets bypassed for camera shutter\n" - "sound.", - - - - "If enabled, an EmuNAND\n" - "will be launched on boot.\n\n" - "Otherwise, SysNAND will.\n\n" - "Hold L on boot to switch NAND.\n\n" - "To use a different EmuNAND from the\n" - "default, hold a directional pad button\n" - "(Up/Right/Down/Left equal EmuNANDs\n" + "Forza l'output audio alle cuffie o alle casse.\n\n" + "Attualmente solo per NATIVE_FIRM.\n\n" + "Per via di limitazioni software, questo smettte di\n" + "funzionare se inserisci e poi\n" + "rimuovi le cuffie (se questo succede, entra ed esci dalla\n" + "modalita' riposo).\n\n" + "Viene anche bypassato dai suoni\n" + "di scatto della fotocamera.", + + + + "Se abilitato, un EmuNAND\n" + "verra' lanciata all'avvio.\n\n" + "Altrimenti, la SysNAND lo fara'\n\n" + "Mantieni L all'avvio per cambiare NAND.\n\n" + "Per usare un EmuNAND differente dalla\n" + "predefinita, mantieni un tasto del DPAD\n" + "(Su/Destra/Giu'/Sinistra corrispondono alle EmuNANDs\n" "1/2/3/4).", - "Enable loading external FIRMs and\n" - "system modules.\n\n" - "This isn't needed in most cases.\n\n" - "Refer to the wiki for instructions.", - - "Enable overriding the region and\n" - "language configuration and the usage\n" - "of patched code binaries, exHeaders,\n" - "IPS code patches and LayeredFS\n" - "for specific games.\n\n" - "Also makes certain DLCs for out-of-\n" - "region games work.\n\n" - "Refer to the wiki for instructions.", - - "Redirect app. threads that would spawn\n" - "on core1, to core2 (which is an extra\n" - "CPU core for applications that usually\n" - "remains unused).\n\n" - "This improves the performance of very\n" - "demanding games (like Pok\x82mon US/UM)\n" // CP437 - "by about 10%. Can break some games\n" - "and other applications.\n", - - "Enable showing the current NAND:\n\n" + "Abilita il caricamento di FIRM e moduli di\n" + "sistema esterni.\n\n" + "Questo non e' necessario nella maggior parte dei casi.\n\n" + "Consulta la wiki per maggiori istruzioni.", + + "Abilita l'oltrepassaggio del blocco regionale e\n" + "della configurazione di lingua\n" + "di codici binari patchati, exHeaders,\n" + "IPS codici patchati e LayeredFS\n" + "Per giochi specifici.\n\n" + "Fa anche si' che certi DLC per giochi fuori\n" + "dalla regione funzionino.\n\n" + "Consulta la Wiki per istruzioni.", + + "Reindirizza i threads app. threads che si generano\n" + "sul core1, al core2 (che e' un core della\n" + "CPU aggiuntivo per applicazioni che solitamente\n" + "restano inutilizzate).\n\n" + "Questo migliora le prestazioni di giochi\n" + "veramente pesanti (come Pok\x82mon US/UM)\n" // CP437 + "di circa il 10%. Puo' rompere alcuni giochi\n" + "e altre applicazioni.\n", + + "Abilita la visualizzazione della NAND attuale:\n\n" "\t* Sys = SysNAND\n" "\t* Emu = EmuNAND 1\n" "\t* EmuX = EmuNAND X\n\n" - "or a user-defined custom string in\n" - "System Settings.\n\n" - "Refer to the wiki for instructions.", - - "Enable showing the GBA boot screen\n" - "when booting GBA games.", - - "Enable patching the default scheduler\n" - "for cpu arm11 used in 3DS software by\n" - "its contents, like games, apps, ecc.\n\n" - "It may happen deadlock if some apps,\n" - "take to many resources, so use this\n" - "when needed not all times, like:\n" - "in games where latency is essential,\n" - "or apps that perform heavy tasks.", - - "Allow Left+Right and Up+Down button\n" - "combos (using DPAD and CPAD\n" - "simultaneously) in DS(i) software.\n\n" - "Commercial software filter these\n" - "combos on their own too, though.\n\n" - "Enable replacing the default upscaling\n" - "filter used for DS(i) software by the\n" - "contents of:\n\n" + "o una stringa personalizzata e definita\n" + "dall'utente nelle Impostazioni di sistema.\n\n" + "Consulta la wiki per maggiori istruzioni.", + + "Abilita la visualizzazione dello schermo di avvio del GBA\n" + "quando si avviano giochi GBA.", + + "Abilita il rimpiazzo dei filtri di\n" + "upscaling usati per i software DS(i) con i\n" + "contenuti di:\n\n" "/luma/twl_upscaling_filter.bin\n\n" - "Refer to the wiki for further details.", + "Consulta la wiki per maggiori dettagli su questa funzione.", + + "Ammetti le combinazioni Sinistra+Destra/Su+Giu'\n" + "(usando il DPAD e il CPAD\n" + "simultaneamente) nei software DS(i).\n\n" + "I software commerciali filtrano\n" + "da soli queste combinazioni pero.", - "Cut the 3DS wifi in sleep mode.\n\n" - "Useful to save battery but prevent\n" - "some features like streetpass or\n" - "spotpass to work on sleep mode.\n\n" - "Use this if you don't use them\n" - "want to save battery in sleep mode.", + "Togli il wifi al 3DS in modalita' riposo.\n\n" + "Utile per risparmiare batteria ma impedira' ad\n" + "alcune funzioni come streetpass o\n" + "spotpass di funzionare in modalira riposo.\n\n" + "Usa questo se non vuoi usarle e\n" + "vuoi risparmiare batteria in modalita riposo.", - "Make the console be always detected\n" - "as a development unit, and conversely.\n" - "(which breaks online features, amiibo\n" - "and retail CIAs, but allows installing\n" - "and booting some developer software).\n\n" - "Only select this if you know what you\n" - "are doing!", + "Fa si' che la console sia sempre riconosciuta\n" + "come unita di sviluppo, e convertirla.\n" + "(la quale rompe le funzioni online, amiibo\n" + "e i retail CIA, ma consente l'installazione\n" + "di alcuni software di sviluppo).\n\n" + "Seleziona questo solamente se sai cosa\n" + "stai facendo!", - "Disables the fatal error exception\n" - "handlers for the Arm11 CPU.\n\n" - "Note: Disabling the exception handlers\n" - "will disqualify you from submitting\n" - "issues or bug reports to the Luma3DS\n" - "GitHub repository!", - - "Enables Rosalina, the kernel ext.\n" - "and sysmodule reimplementations on\n" - "SAFE_FIRM (New 3DS only).\n\n" - "Also suppresses QTM error 0xF96183FE,\n" - "allowing to use 8.1-11.3 N3DS on\n" - "New 2DS XL consoles.\n\n" - "Only select this if you know what you\n" - "are doing!", + "Disabilita gli improvvisi errori fatali handlers \n" + "per la CPU Arm11.\n\n" + "Nota: Disabilitare gli improvvisi handlers\n" + "ti rimuovera dal creare\n" + "issue o bug report nella repository Luma3DS\n" + "di GitHub!", + + "Abilita Rosalina, il kernel esterno.\n" + "e la reimplementazione dei moduli di sistema\n" + "SAFE_FIRM (Solo per New3DS).\n\n" + "Permette anche di sorpassare l'errore QTM 0xF96183FE,\n" + "permettendo così di usare la versione 8.1-11.3 N3DS su\n" + "New 2DSXL console.\n\n" + "Seleziona questo solamente se sai cosa\n" + "stai facendo!", - "Disable rebooting after an Errdisp\n" - "error occurs. It also enable instant\n" - "reboot combo, this can corrupt your\n" - "SDcard so be careful with this.\n" - "The combo is A + B + X + Y + Start.\n\n" - "Only select this if you know what you\n" - "are doing!\n\n" - "Also added hardware error bypass and\n" - "bypass broken nvram.", + "Disabilita il riavvio dopo che sono capitati\n" + "errori ErrDisp. Abilita anche istantaneamente una\n" + "combo di riavvio, questo puo' corrompere la\n" + "tua scheda SD quindi stai attento con questo.\n" + "La combo e' A + B + X + Y + Start.\n\n" + "Seleziona questo solamente se sai cosa\n" + "stai facendo!", - "Disabling this will hide extra\n" - "settings from the luma configuration\n" - "menu.", + "Disablitare questo fara' si che le impostazioni\n" + "aggiuntive del menuu di configurazione di luma\n" + "vengano nascoste.", - "Enabling this will cause the complete\n" - "of the otp and nand cid, so that you\n" - "can use another console nand backup\n" - "on another hardware, so use this carefuly\n" - "are doing and bla bla you already know.\n\n" - "Remember to put nand_cid.bin and otp.bin\n" - "to sd luma directory cause well is where\n" - "it reads them and works only on sd card,\n" - "cause the nand is still encrypted.", + "Abilitare questo sara' la causa completa di\n" + "di otp e della nand cid, quindi puoi\n" + "usare un backup nand di un'altra console\n" + "su un altro hardware, quindi usa questo stando attento\n" + "a cosa stai e bla bla sai gia'.\n\n" + "Ricorda di mettere i file nand_cid.bin e otp.bin\n" + "nel percorso luma nella sd luma directory perche' e' dove\n" + "vengono letti e funziona solo con una scheda sd,\n" + "perche' la nand e' sempre criptata.", // Should always be the last 2 entries - "Boot to the Luma3DS chainloader menu.", - - "Save the changes and exit. To discard\n" - "any changes press the POWER button.\n" - "Use START as a shortcut to this entry." + "Avvia il menu chainloader di Luma3DS", + + "Salva i cambiamenti ed esci. Per annullare\n" + "un qualsiasi cambiamento premere il tasto POWER.\n" + "Premi Start come shortcout per questa entrata.", }; FirmwareSource nandType = FIRMWARE_SYSNAND; @@ -1131,8 +1122,8 @@ void configMenu(bool oldPinStatus, u32 oldPinMode) "FIRM1" }; drawString(true, 10, 10, COLOR_TITLE, CONFIG_TITLE); - drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Use the DPAD and A to change settings"); - drawFormattedString(false, 10, SCREEN_HEIGHT - 2 * SPACING_Y, COLOR_YELLOW, "Booted from %s via %s", isSdMode ? "SD" : "CTRNAND", bootTypes[(u32)bootType]); + drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Usa il DPAD e A per cambiare le imp."); + drawFormattedString(false, 10, SCREEN_HEIGHT - 2 * SPACING_Y, COLOR_YELLOW, "Avviato da %s via %s", isSdMode ? "SD" : "CTRNAND", bootTypes[(u32)bootType]); //Character to display a selected option char selected = 'x'; @@ -1311,7 +1302,7 @@ void configMenu(bool oldPinStatus, u32 oldPinMode) else if(oldPinStatus) { if(!fileDelete(PIN_FILE)) - error("Unable to delete PIN file"); + error("Impos. eliminare il file del PIN"); } while(HID_PAD & PIN_BUTTONS); diff --git a/arm9/source/config.h b/arm9/source/config.h index 0f4c5cd6..30a74850 100644 --- a/arm9/source/config.h +++ b/arm9/source/config.h @@ -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 { diff --git a/arm9/source/crypto.c b/arm9/source/crypto.c index b3742b4c..af574ff3 100755 --- a/arm9/source/crypto.c +++ b/arm9/source/crypto.c @@ -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) diff --git a/arm9/source/exceptions.c b/arm9/source/exceptions.c index 966d3101..383c52f7 100644 --- a/arm9/source/exceptions.c +++ b/arm9/source/exceptions.c @@ -61,10 +61,10 @@ 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", @@ -72,10 +72,10 @@ void detectAndProcessExceptionDumps(void) }, *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[] = { @@ -85,10 +85,10 @@ 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) { @@ -96,27 +96,27 @@ void detectAndProcessExceptionDumps(void) { 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) { @@ -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; } } @@ -135,10 +135,10 @@ 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); + "Memoria Arm9 estratta all'offset %X di dim. %lX", (uintptr_t)additionalData - (uintptr_t)dumpHeader, size); } posY += SPACING_Y; @@ -153,15 +153,15 @@ 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, "Estrazione non correttta: Estrazione di codice e/o dello stack fallita") + SPACING_Y; - u32 posYBottom = drawString(false, 10, 10, COLOR_WHITE, "Stack dump:") + SPACING_Y; + u32 posYBottom = drawString(false, 10, 10, COLOR_WHITE, "Estrazione stack:") + SPACING_Y; for(u32 line = 0; line < 19 && stackDump < additionalData; line++) { @@ -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]); @@ -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); diff --git a/arm9/source/firm.c b/arm9/source/firm.c index 031349ec..deab208f 100755 --- a/arm9/source/firm.c +++ b/arm9/source/firm.c @@ -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); @@ -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; } @@ -198,7 +198,7 @@ u32 loadNintendoFirm(FirmwareType *firmType, FirmwareSource nandType, bool loadF else storageLoadError = true; } // If all attempts failed, panic. - if(ctrNandError && storageLoadError) error("Unable to mount CTRNAND or load the CTRNAND FIRM.\nPlease use an external one."); + if(ctrNandError && storageLoadError) error("Impossibile montare la CTRNAND o caricare il CTRNAND FIRM.\nPer favore usarne uno esterno."); //Check that the FIRM is right for the console from the Arm9 section address bool isO3dsFirm = firm->section[3].offset == 0 && firm->section[2].address == (u8 *)0x8006800; @@ -285,7 +285,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]; @@ -376,7 +376,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; @@ -397,7 +397,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) @@ -483,7 +483,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; @@ -506,7 +506,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; @@ -536,12 +536,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"); } } diff --git a/arm9/source/fs.c b/arm9/source/fs.c index 55450f40..3d5b4571 100644 --- a/arm9/source/fs.c +++ b/arm9/source/fs.c @@ -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); @@ -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) { diff --git a/arm9/source/itcm.c b/arm9/source/itcm.c index fade22de..a9d7f12d 100644 --- a/arm9/source/itcm.c +++ b/arm9/source/itcm.c @@ -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 @@ -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 @@ -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 diff --git a/arm9/source/main.c b/arm9/source/main.c index a269fb0c..e56b5590 100644 --- a/arm9/source/main.c +++ b/arm9/source/main.c @@ -139,29 +139,29 @@ void main(int argc, char **argv, u32 magicWord) mcuFwVersion = ((u16)mcuFwVerHi << 16) | mcuFwVerLo; // Check if fw is older than factory. See https://www.3dbrew.org/wiki/MCU_Services#MCU_firmware_versions for a table - if (mcuFwVerHi < 1) error("Unsupported MCU FW version %d.%d.", (int)mcuFwVerHi, (int)mcuFwVerLo); + if (mcuFwVerHi < 1) error("Versione MCU FW non supportata %d.%d.", (int)mcuFwVerHi, (int)mcuFwVerLo); I2C_readRegBuf(I2C_DEV_MCU, 0x7F, mcuConsoleInfo, 9); - if(isInvalidLoader) error("Launched using an unsupported loader."); + if(isInvalidLoader) error("Avviato usando un loader non supportato."); installArm9Handlers(); if(memcmp(launchedPath, u"sdmc", 8) == 0) { - if(!mountSdCardPartition(true)) error("Failed to mount SD."); + if(!mountSdCardPartition(true)) error("Montaggio SD fallito."); isSdMode = true; } else if(memcmp(launchedPath, u"nand", 8) == 0) { - if(!remountCtrNandPartition(true)) error("Failed to mount CTRNAND."); + if(!remountCtrNandPartition(true)) error("Montaggio CTRNAND fallito."); isSdMode = false; } else if(bootType == NTR || memcmp(launchedPath, u"firm", 8) == 0) { if(mountSdCardPartition(true)) isSdMode = true; else if(remountCtrNandPartition(true)) isSdMode = false; - else error("Failed to mount SD and CTRNAND."); + else error("Montaggio SD e CTRNAND fallito."); if(bootType == NTR) { @@ -179,7 +179,7 @@ void main(int argc, char **argv, u32 magicWord) mountPoint[i] = (char)launchedPath[i]; mountPoint[i] = 0; - error("Launched from an unsupported location: %s.", mountPoint); + error("Avviato da un allocamento non supportato: %s.", mountPoint); } detectAndProcessExceptionDumps(); @@ -367,7 +367,7 @@ void main(int argc, char **argv, u32 magicWord) { locateEmuNand(&nandType, &emunandIndex, true); if(nandType == FIRMWARE_EMUNAND && (*(vu16 *)(SDMMC_BASE + REG_SDSTATUS0) & TMIO_STAT0_WRPROTECT) == 0) //Make sure the SD card isn't write protected - error("The SD card is locked, EmuNAND can not be used.\nPlease turn the write protection switch off."); + error("La scheda SD e' bloccata, l'EmuNAND non puo' essere usata.\nPerfavore sblocca la protezione da scrittura."); } ctrNandLocation = nandType; // for CTRNAND partition @@ -406,7 +406,7 @@ void main(int argc, char **argv, u32 magicWord) break; } - if(res != 0) error("Failed to apply %u FIRM patch(es).", res); + if(res != 0) error("Applicazione a %u FIRM patch(es) fallita.", res); unmountPartitions(); if(bootType != FIRMLAUNCH) deinitScreens(); diff --git a/arm9/source/patches.c b/arm9/source/patches.c index a1bc3b82..3c6e5dd7 100644 --- a/arm9/source/patches.c +++ b/arm9/source/patches.c @@ -51,7 +51,7 @@ u8 *getProcess9Info(u8 *pos, u32 size, u32 *process9Size, u32 *process9MemAddr) { u8 *temp = memsearch(pos, "NCCH", size, 4); - if(temp == NULL) error("Failed to get Process9 data."); + if(temp == NULL) error("Ricezione dati Process9 non riuscita"); Cxi *off = (Cxi *)(temp - 0x100); @@ -76,7 +76,7 @@ u32 *getKernel11Info(u8 *pos, u32 size, u32 *baseK11VA, u8 **freeK11Space, u32 * static const u8 pattern[] = {0x00, 0xB0, 0x9C, 0xE5}; *arm11ExceptionsPage = (u32 *)memsearch(pos, pattern, size, sizeof(pattern)); - if(*arm11ExceptionsPage == NULL) error("Failed to get Kernel11 data."); + if(*arm11ExceptionsPage == NULL) error("Ricezione dati Kenrel11 non riuscita"); u32 *arm11SvcTable; diff --git a/arm9/source/pin.c b/arm9/source/pin.c index a2cf2e2b..573b08e8 100644 --- a/arm9/source/pin.c +++ b/arm9/source/pin.c @@ -54,10 +54,10 @@ void newPin(bool allowSkipping, u32 pinMode) u8 length = 4 + 2 * (pinMode - 1); - drawString(true, 10, 10, COLOR_TITLE, "Enter a new PIN using ABXY and the DPad"); - drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, allowSkipping ? "Press START to skip, SELECT to reset" : "Press SELECT to reset"); + drawString(true, 10, 10, COLOR_TITLE, "Inserisci un nuovo PIN usando ABXY e il DPAD"); + drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, allowSkipping ? "Premi START per saltare, SELECT per resettare" : "Premi SELECT per resettare"); - drawFormattedString(true, 10, 10 + 3 * SPACING_Y, COLOR_WHITE, "PIN (%u digits): ", length); + drawFormattedString(true, 10, 10 + 3 * SPACING_Y, COLOR_WHITE, "PIN (%u cifre): ", length); //Pad to AES block length with zeroes __attribute__((aligned(4))) u8 enteredPassword[AES_BLOCK_SIZE] = {0}; @@ -122,7 +122,7 @@ void newPin(bool allowSkipping, u32 pinMode) memcpy(pin.hash, tmp, sizeof(tmp)); if(!fileWrite(&pin, PIN_FILE, sizeof(PinData))) - error("Error writing the PIN file"); + error("Errore nella scrittura del file PIN"); } bool verifyPin(u32 pinMode) @@ -148,8 +148,8 @@ bool verifyPin(u32 pinMode) swapFramebuffers(true); - drawString(true, 10, 10, COLOR_TITLE, "Enter the PIN using ABXY and the DPad to proceed"); - drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Press START to shutdown, SELECT to clear"); + drawString(true, 10, 10, COLOR_TITLE, "Inserisci il PIN usando ABXY e il DPad per procedere"); + drawString(true, 10, 10 + SPACING_Y, COLOR_TITLE, "Premi START per spegnere, SELECT per resettare"); drawFormattedString(true, 10, 10 + 3 * SPACING_Y, COLOR_WHITE, "PIN (%u digits): ", lengthBlock[0]); @@ -225,7 +225,7 @@ bool verifyPin(u32 pinMode) { reset = true; - drawString(true, 10, 10 + 5 * SPACING_Y, COLOR_RED, "Wrong PIN, try again"); + drawString(true, 10, 10 + 5 * SPACING_Y, COLOR_RED, "Il PIN è sbagliato, riprova"); } } diff --git a/arm9/source/utils.c b/arm9/source/utils.c index 1a218ca1..b5f0547c 100644 --- a/arm9/source/utils.c +++ b/arm9/source/utils.c @@ -149,9 +149,9 @@ void error(const char *fmt, ...) va_end(args); initScreens(); - drawString(true, 10, 10, COLOR_RED, "An error has occurred:"); + drawString(true, 10, 10, COLOR_RED, "Si e' verificato un errore:"); u32 posY = drawString(true, 10, 30, COLOR_WHITE, buf); - drawString(true, 10, posY + 2 * SPACING_Y, COLOR_WHITE, "Press any button to shutdown"); + drawString(true, 10, posY + 2 * SPACING_Y, COLOR_WHITE, "Premi un qualsiasi tasto per spegnere"); waitInput(false); diff --git a/sysmodules/loader/source/3dsx.c b/sysmodules/loader/source/3dsx.c index cb821022..ae1f677f 100644 --- a/sysmodules/loader/source/3dsx.c +++ b/sysmodules/loader/source/3dsx.c @@ -36,7 +36,7 @@ static _3DSX_Reloc s_relocBuf[MAXRELOCS]; u32 ldrArgvBuf[ARGVBUF_SIZE/4]; -#define SEC_ASSERT(x) do { if (!(x)) { Log_PrintP("Assertion failed: %s", #x); return false; } } while (0) +#define SEC_ASSERT(x) do { if (!(x)) { Log_PrintP("Asserzione fallita: %s", #x); return false; } } while (0) typedef struct { @@ -60,13 +60,13 @@ bool Ldr_Get3dsxSize(u32* pSize, IFile *file) if (IFile_Read2(file, &hdr, sizeof(hdr), 0) != sizeof(hdr)) { - Log_PrintP("Cannot read 3DSX header"); + Log_PrintP("Impossibile leggere la testata file 3DSX"); return false; } if (hdr.magic != _3DSX_MAGIC) { - Log_PrintP("Not a valid 3DSX file"); + Log_PrintP("File 3DSX non valido"); return false; } @@ -122,7 +122,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile { if (IFile_Read2(file, &extraPage[i*nRelocTables], hdr.relocHdrSize, readOffset) != hdr.relocHdrSize) { - Log_PrintP("Cannot read relheader %d", i); + Log_PrintP("impossibile leggere la testata del file correlata %d", i); return 0; } readOffset += hdr.relocHdrSize; @@ -131,7 +131,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile // Read the code segment if (IFile_Read2(file, d.segPtrs[0], hdr.codeSegSize, readOffset) != hdr.codeSegSize) { - Log_PrintP("Cannot read code segment"); + Log_PrintP("Impossibile leggere il segmento di codice"); return 0; } readOffset += hdr.codeSegSize; @@ -139,7 +139,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile // Read the rodata segment if (IFile_Read2(file, d.segPtrs[1], hdr.rodataSegSize, readOffset) != hdr.rodataSegSize) { - Log_PrintP("Cannot read rodata segment"); + Log_PrintP("Impossibile leggere i segmenti rodata"); return 0; } readOffset += hdr.rodataSegSize; @@ -148,7 +148,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile u32 dataLoadSegSize = hdr.dataSegSize - hdr.bssSize; if (IFile_Read2(file, d.segPtrs[2], dataLoadSegSize, readOffset) != dataLoadSegSize) { - Log_PrintP("Cannot read data segment"); + Log_PrintP("Impossibile leggere il segmento di dati"); return 0; } readOffset += dataLoadSegSize; @@ -178,7 +178,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile u32 readSize = toDo*sizeof(_3DSX_Reloc); if (IFile_Read2(file, s_relocBuf, readSize, readOffset) != readSize) { - Log_PrintP("Cannot read reloc table (%d,%d)", i, j); + Log_PrintP("Impossibile leggere la tavola riallocata (%d,%d)", i, j); return 0; } readOffset += readSize; @@ -200,7 +200,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile { if (subType != 0) { - Log_PrintP("Unsupported absolute reloc subtype (%lu)", subType); + Log_PrintP("Sottotipo di reloc assoluto non supportato (%lu)", subType); return 0; } *pos = addr; @@ -214,7 +214,7 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile case 0: *pos = data; break; // 32-bit signed offset case 1: *pos = data &~ BIT(31); break; // 31-bit signed offset default: - Log_PrintP("Unsupported relative reloc subtype (%lu)", subType); + Log_PrintP("Sottotipo di reloc relativo non supportato (%lu)", subType); return 0; } break; diff --git a/sysmodules/loader/source/main.c b/sysmodules/loader/source/main.c index 37ed5390..aa3931ea 100644 --- a/sysmodules/loader/source/main.c +++ b/sysmodules/loader/source/main.c @@ -130,7 +130,7 @@ static const ServiceManagerNotificationEntry notifications[] = { }; static u8 CTR_ALIGN(4) staticBufferForHbldr[0x400]; -static_assert(ARGVBUF_SIZE > 2 * PATH_MAX, "Wrong 3DSX argv buffer size"); +static_assert(ARGVBUF_SIZE > 2 * PATH_MAX, "Dimensione argv 3DSX buffer errata"); int main(void) { diff --git a/sysmodules/rosalina/include/font.h b/sysmodules/rosalina/include/font.h index 8f5b0e0c..616b9797 100644 --- a/sysmodules/rosalina/include/font.h +++ b/sysmodules/rosalina/include/font.h @@ -2,3085 +2,169 @@ #include "utils.h" -//--------------------------------------------------------------------------------- -// Linux 6x10 font -// https://github.com/torvalds/linux/tree/master/lib/fonts -//--------------------------------------------------------------------------------- #define FONT_WIDTH 6 #define FONT_HEIGHT 10 -//--------------------------------------------------------------------------------- -static const unsigned char font[] = { - - /* 0 0x00 '^@' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 1 0x01 '^A' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x84, /* 10000100 */ - 0xCC, /* 11001100 */ - 0x84, /* 10000100 */ - 0xCC, /* 11001100 */ - 0xB4, /* 10110100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 2 0x02 '^B' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0xFC, /* 11111100 */ - 0xB4, /* 10110100 */ - 0xFC, /* 11111100 */ - 0xB4, /* 10110100 */ - 0xCC, /* 11001100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 3 0x03 '^C' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x7C, /* 01111100 */ - 0x7C, /* 01111100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 4 0x04 '^D' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x7C, /* 01111100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 5 0x05 '^E' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x6C, /* 01101100 */ - 0x6C, /* 01101100 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 6 0x06 '^F' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x7C, /* 01111100 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 7 0x07 '^G' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x78, /* 01111000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 8 0x08 '^H' */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xCC, /* 11001100 */ - 0x84, /* 10000100 */ - 0xCC, /* 11001100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - - /* 9 0x09 '^I' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x48, /* 01001000 */ - 0x84, /* 10000100 */ - 0x48, /* 01001000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 10 0x0A '^J' */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xCC, /* 11001100 */ - 0xB4, /* 10110100 */ - 0x78, /* 01111000 */ - 0xB4, /* 10110100 */ - 0xCC, /* 11001100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - - /* 11 0x0B '^K' */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x14, /* 00010100 */ - 0x20, /* 00100000 */ - 0x78, /* 01111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 12 0x0C '^L' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 13 0x0D '^M' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x14, /* 00010100 */ - 0x14, /* 00010100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x70, /* 01110000 */ - 0x60, /* 01100000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 14 0x0E '^N' */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x24, /* 00100100 */ - 0x3C, /* 00111100 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x6C, /* 01101100 */ - 0x6C, /* 01101100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 15 0x0F '^O' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x6C, /* 01101100 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 16 0x10 '^P' */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x60, /* 01100000 */ - 0x70, /* 01110000 */ - 0x78, /* 01111000 */ - 0x70, /* 01110000 */ - 0x60, /* 01100000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 17 0x11 '^Q' */ - 0x00, /* 00000000 */ - 0x04, /* 00000100 */ - 0x0C, /* 00001100 */ - 0x1C, /* 00011100 */ - 0x3C, /* 00111100 */ - 0x1C, /* 00011100 */ - 0x0C, /* 00001100 */ - 0x04, /* 00000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 18 0x12 '^R' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x10, /* 00010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 19 0x13 '^S' */ - 0x00, /* 00000000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x00, /* 00000000 */ - 0x48, /* 01001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 20 0x14 '^T' */ - 0x3C, /* 00111100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x3C, /* 00111100 */ - 0x14, /* 00010100 */ - 0x14, /* 00010100 */ - 0x14, /* 00010100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 21 0x15 '^U' */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x20, /* 00100000 */ - 0x50, /* 01010000 */ - 0x48, /* 01001000 */ - 0x24, /* 00100100 */ - 0x14, /* 00010100 */ - 0x08, /* 00001000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - - /* 22 0x16 '^V' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xF8, /* 11111000 */ - 0xF8, /* 11111000 */ - 0xF8, /* 11111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 23 0x17 '^W' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x10, /* 00010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 24 0x18 '^X' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 25 0x19 '^Y' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 26 0x1A '^Z' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x7C, /* 01111100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 27 0x1B '^[' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x7C, /* 01111100 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 28 0x1C '^\' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 29 0x1D '^]' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x48, /* 01001000 */ - 0x84, /* 10000100 */ - 0xFC, /* 11111100 */ - 0x84, /* 10000100 */ - 0x48, /* 01001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 30 0x1E '^^' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x7C, /* 01111100 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 31 0x1F '^_' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x7C, /* 01111100 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 32 0x20 ' ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 33 0x21 '!' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 34 0x22 '"' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 35 0x23 '#' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x7C, /* 01111100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x7C, /* 01111100 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 36 0x24 '$' */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x50, /* 01010000 */ - 0x38, /* 00111000 */ - 0x14, /* 00010100 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - - /* 37 0x25 '%' */ - 0x00, /* 00000000 */ - 0x64, /* 01100100 */ - 0x64, /* 01100100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x4C, /* 01001100 */ - 0x4C, /* 01001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 38 0x26 '&' */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x48, /* 01001000 */ - 0x50, /* 01010000 */ - 0x20, /* 00100000 */ - 0x54, /* 01010100 */ - 0x48, /* 01001000 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 39 0x27 ''' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 40 0x28 '(' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - - /* 41 0x29 ')' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x00, /* 00000000 */ - - /* 42 0x2A '*' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 43 0x2B '+' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 44 0x2C ',' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - - /* 45 0x2D '-' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 46 0x2E '.' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 47 0x2F '/' */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - - /* 48 0x30 '0' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x54, /* 01010100 */ - 0x64, /* 01100100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 49 0x31 '1' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x30, /* 00110000 */ - 0x50, /* 01010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 50 0x32 '2' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 51 0x33 '3' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x04, /* 00000100 */ - 0x18, /* 00011000 */ - 0x04, /* 00000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 52 0x34 '4' */ - 0x00, /* 00000000 */ - 0x08, /* 00001000 */ - 0x18, /* 00011000 */ - 0x28, /* 00101000 */ - 0x48, /* 01001000 */ - 0x7C, /* 01111100 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 53 0x35 '5' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 54 0x36 '6' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x20, /* 00100000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 55 0x37 '7' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 56 0x38 '8' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 57 0x39 '9' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 58 0x3A ':' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 59 0x3B ';' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - - /* 60 0x3C '<' */ - 0x00, /* 00000000 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x04, /* 00000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 61 0x3D '=' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 62 0x3E '>' */ - 0x00, /* 00000000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 63 0x3F '?' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 64 0x40 '@' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x5C, /* 01011100 */ - 0x54, /* 01010100 */ - 0x5C, /* 01011100 */ - 0x40, /* 01000000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 65 0x41 'A' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 66 0x42 'B' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x38, /* 00111000 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 67 0x43 'C' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 68 0x44 'D' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 69 0x45 'E' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 70 0x46 'F' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 71 0x47 'G' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x5C, /* 01011100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 72 0x48 'H' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 73 0x49 'I' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 74 0x4A 'J' */ - 0x00, /* 00000000 */ - 0x1C, /* 00011100 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 75 0x4B 'K' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x48, /* 01001000 */ - 0x50, /* 01010000 */ - 0x60, /* 01100000 */ - 0x50, /* 01010000 */ - 0x48, /* 01001000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 76 0x4C 'L' */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 77 0x4D 'M' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x6C, /* 01101100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 78 0x4E 'N' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x64, /* 01100100 */ - 0x54, /* 01010100 */ - 0x4C, /* 01001100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 79 0x4F 'O' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 80 0x50 'P' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x78, /* 01111000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 81 0x51 'Q' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x54, /* 01010100 */ - 0x48, /* 01001000 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 82 0x52 'R' */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x78, /* 01111000 */ - 0x50, /* 01010000 */ - 0x48, /* 01001000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 83 0x53 'S' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 84 0x54 'T' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 85 0x55 'U' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 86 0x56 'V' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 87 0x57 'W' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x6C, /* 01101100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 88 0x58 'X' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 89 0x59 'Y' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 90 0x5A 'Z' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x40, /* 01000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 91 0x5B '[' */ - 0x18, /* 00011000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 92 0x5C '\' */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - - /* 93 0x5D ']' */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - - /* 94 0x5E '^' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 95 0x5F '_' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 96 0x60 '`' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 97 0x61 'a' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 98 0x62 'b' */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x58, /* 01011000 */ - 0x64, /* 01100100 */ - 0x44, /* 01000100 */ - 0x64, /* 01100100 */ - 0x58, /* 01011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 99 0x63 'c' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 100 0x64 'd' */ - 0x00, /* 00000000 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - 0x34, /* 00110100 */ - 0x4C, /* 01001100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 101 0x65 'e' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 102 0x66 'f' */ - 0x00, /* 00000000 */ - 0x0C, /* 00001100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 103 0x67 'g' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x34, /* 00110100 */ - 0x4C, /* 01001100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x04, /* 00000100 */ - 0x38, /* 00111000 */ - - /* 104 0x68 'h' */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 105 0x69 'i' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 106 0x6A 'j' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x60, /* 01100000 */ - - /* 107 0x6B 'k' */ - 0x00, /* 00000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x48, /* 01001000 */ - 0x50, /* 01010000 */ - 0x70, /* 01110000 */ - 0x48, /* 01001000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 108 0x6C 'l' */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 109 0x6D 'm' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x68, /* 01101000 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 110 0x6E 'n' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x58, /* 01011000 */ - 0x64, /* 01100100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 111 0x6F 'o' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 112 0x70 'p' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x58, /* 01011000 */ - 0x64, /* 01100100 */ - 0x44, /* 01000100 */ - 0x64, /* 01100100 */ - 0x58, /* 01011000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - - /* 113 0x71 'q' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x34, /* 00110100 */ - 0x4C, /* 01001100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - - /* 114 0x72 'r' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x58, /* 01011000 */ - 0x64, /* 01100100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 115 0x73 's' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x40, /* 01000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 116 0x74 't' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x0C, /* 00001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 117 0x75 'u' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 118 0x76 'v' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 119 0x77 'w' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 120 0x78 'x' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 121 0x79 'y' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x04, /* 00000100 */ - 0x38, /* 00111000 */ - - /* 122 0x7A 'z' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 123 0x7B '{' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - - /* 124 0x7C '|' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - - /* 125 0x7D '}' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x00, /* 00000000 */ - - /* 126 0x7E '~' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x20, /* 00100000 */ - 0x54, /* 01010100 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 127 0x7F '' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - /* 128 0x80 '\200' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - - /* 129 0x81 '\201' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 130 0x82 '\202' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 131 0x83 '\203' */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 132 0x84 '\204' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 133 0x85 '\205' */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 134 0x86 '\206' */ - 0x18, /* 00011000 */ - 0x24, /* 00100100 */ - 0x18, /* 00011000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 135 0x87 '\207' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - - /* 136 0x88 '\210' */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 137 0x89 '\211' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 138 0x8A '\212' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 139 0x8B '\213' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 140 0x8C '\214' */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 141 0x8D '\215' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 142 0x8E '\216' */ - 0x44, /* 01000100 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 143 0x8F '\217' */ - 0x30, /* 00110000 */ - 0x48, /* 01001000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 144 0x90 '\220' */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x78, /* 01111000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 145 0x91 '\221' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x14, /* 00010100 */ - 0x7C, /* 01111100 */ - 0x50, /* 01010000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 146 0x92 '\222' */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x50, /* 01010000 */ - 0x50, /* 01010000 */ - 0x78, /* 01111000 */ - 0x50, /* 01010000 */ - 0x50, /* 01010000 */ - 0x5C, /* 01011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 147 0x93 '\223' */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 148 0x94 '\224' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 149 0x95 '\225' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 150 0x96 '\226' */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 151 0x97 '\227' */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 152 0x98 '\230' */ - 0x00, /* 00000000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x04, /* 00000100 */ - 0x38, /* 00111000 */ - - /* 153 0x99 '\231' */ - 0x84, /* 10000100 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 154 0x9A '\232' */ - 0x88, /* 10001000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 155 0x9B '\233' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x50, /* 01010000 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - - /* 156 0x9C '\234' */ - 0x30, /* 00110000 */ - 0x48, /* 01001000 */ - 0x40, /* 01000000 */ - 0x70, /* 01110000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 157 0x9D '\235' */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 158 0x9E '\236' */ - 0x00, /* 00000000 */ - 0x70, /* 01110000 */ - 0x48, /* 01001000 */ - 0x70, /* 01110000 */ - 0x48, /* 01001000 */ - 0x5C, /* 01011100 */ - 0x48, /* 01001000 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 159 0x9F '\237' */ - 0x00, /* 00000000 */ - 0x0C, /* 00001100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x60, /* 01100000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 160 0xA0 '\240' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 161 0xA1 '\241' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 162 0xA2 '\242' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 163 0xA3 '\243' */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x4C, /* 01001100 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 164 0xA4 '\244' */ - 0x34, /* 00110100 */ - 0x58, /* 01011000 */ - 0x00, /* 00000000 */ - 0x58, /* 01011000 */ - 0x64, /* 01100100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 165 0xA5 '\245' */ - 0x58, /* 01011000 */ - 0x44, /* 01000100 */ - 0x64, /* 01100100 */ - 0x54, /* 01010100 */ - 0x4C, /* 01001100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 166 0xA6 '\246' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x04, /* 00000100 */ - 0x3C, /* 00111100 */ - 0x44, /* 01000100 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 167 0xA7 '\247' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 168 0xA8 '\250' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x40, /* 01000000 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 169 0xA9 '\251' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 170 0xAA '\252' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x04, /* 00000100 */ - 0x04, /* 00000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 171 0xAB '\253' */ - 0x20, /* 00100000 */ - 0x60, /* 01100000 */ - 0x24, /* 00100100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x44, /* 01000100 */ - 0x08, /* 00001000 */ - 0x1C, /* 00011100 */ - 0x00, /* 00000000 */ - - /* 172 0xAC '\254' */ - 0x20, /* 00100000 */ - 0x60, /* 01100000 */ - 0x24, /* 00100100 */ - 0x28, /* 00101000 */ - 0x10, /* 00010000 */ - 0x28, /* 00101000 */ - 0x58, /* 01011000 */ - 0x3C, /* 00111100 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - - /* 173 0xAD '\255' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 174 0xAE '\256' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x24, /* 00100100 */ - 0x48, /* 01001000 */ - 0x90, /* 10010000 */ - 0x48, /* 01001000 */ - 0x24, /* 00100100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 175 0xAF '\257' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x90, /* 10010000 */ - 0x48, /* 01001000 */ - 0x24, /* 00100100 */ - 0x48, /* 01001000 */ - 0x90, /* 10010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 176 0xB0 '\260' */ - 0x10, /* 00010000 */ - 0x44, /* 01000100 */ - 0x10, /* 00010000 */ - 0x44, /* 01000100 */ - 0x10, /* 00010000 */ - 0x44, /* 01000100 */ - 0x10, /* 00010000 */ - 0x44, /* 01000100 */ - 0x10, /* 00010000 */ - 0x44, /* 01000100 */ - - /* 177 0xB1 '\261' */ - 0xA8, /* 10101000 */ - 0x54, /* 01010100 */ - 0xA8, /* 10101000 */ - 0x54, /* 01010100 */ - 0xA8, /* 10101000 */ - 0x54, /* 01010100 */ - 0xA8, /* 10101000 */ - 0x54, /* 01010100 */ - 0xA8, /* 10101000 */ - 0x54, /* 01010100 */ - - /* 178 0xB2 '\262' */ - 0xDC, /* 11011100 */ - 0x74, /* 01110100 */ - 0xDC, /* 11011100 */ - 0x74, /* 01110100 */ - 0xDC, /* 11011100 */ - 0x74, /* 01110100 */ - 0xDC, /* 11011100 */ - 0x74, /* 01110100 */ - 0xDC, /* 11011100 */ - 0x74, /* 01110100 */ - - /* 179 0xB3 '\263' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 180 0xB4 '\264' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 181 0xB5 '\265' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 182 0xB6 '\266' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xE8, /* 11101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 183 0xB7 '\267' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xF8, /* 11111000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 184 0xB8 '\270' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 185 0xB9 '\271' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xE8, /* 11101000 */ - 0x08, /* 00001000 */ - 0xE8, /* 11101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 186 0xBA '\272' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 187 0xBB '\273' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xF8, /* 11111000 */ - 0x08, /* 00001000 */ - 0xE8, /* 11101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 188 0xBC '\274' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xE8, /* 11101000 */ - 0x08, /* 00001000 */ - 0xF8, /* 11111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 189 0xBD '\275' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xF8, /* 11111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 190 0xBE '\276' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 191 0xBF '\277' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xF0, /* 11110000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 192 0xC0 '\300' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 193 0xC1 '\301' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 194 0xC2 '\302' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 195 0xC3 '\303' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 196 0xC4 '\304' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 197 0xC5 '\305' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xFC, /* 11111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 198 0xC6 '\306' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 199 0xC7 '\307' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x2C, /* 00101100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 200 0xC8 '\310' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x2C, /* 00101100 */ - 0x20, /* 00100000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 201 0xC9 '\311' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x20, /* 00100000 */ - 0x2C, /* 00101100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 202 0xCA '\312' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xEC, /* 11101100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 203 0xCB '\313' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xEC, /* 11101100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 204 0xCC '\314' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x2C, /* 00101100 */ - 0x20, /* 00100000 */ - 0x2C, /* 00101100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 205 0xCD '\315' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 206 0xCE '\316' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xEC, /* 11101100 */ - 0x00, /* 00000000 */ - 0xEC, /* 11101100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 207 0xCF '\317' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 208 0xD0 '\320' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 209 0xD1 '\321' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 210 0xD2 '\322' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 211 0xD3 '\323' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 212 0xD4 '\324' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 213 0xD5 '\325' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 214 0xD6 '\326' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 215 0xD7 '\327' */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0xFC, /* 11111100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - - /* 216 0xD8 '\330' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xFC, /* 11111100 */ - 0x10, /* 00010000 */ - 0xFC, /* 11111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 217 0xD9 '\331' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0xF0, /* 11110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 218 0xDA '\332' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1C, /* 00011100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 219 0xDB '\333' */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - - /* 220 0xDC '\334' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - - /* 221 0xDD '\335' */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - 0xE0, /* 11100000 */ - - /* 222 0xDE '\336' */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - 0x1C, /* 00011100 */ - - /* 223 0xDF '\337' */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 224 0xE0 '\340' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x34, /* 00110100 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x34, /* 00110100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 225 0xE1 '\341' */ - 0x18, /* 00011000 */ - 0x24, /* 00100100 */ - 0x44, /* 01000100 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x58, /* 01011000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - - /* 226 0xE2 '\342' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 227 0xE3 '\343' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x28, /* 00101000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 228 0xE4 '\344' */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x24, /* 00100100 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x24, /* 00100100 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 229 0xE5 '\345' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 230 0xE6 '\346' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x74, /* 01110100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - - /* 231 0xE7 '\347' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x0C, /* 00001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 232 0xE8 '\350' */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 233 0xE9 '\351' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x7C, /* 01111100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 234 0xEA '\352' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x28, /* 00101000 */ - 0x6C, /* 01101100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 235 0xEB '\353' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x20, /* 00100000 */ - 0x18, /* 00011000 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x24, /* 00100100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 236 0xEC '\354' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 237 0xED '\355' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x04, /* 00000100 */ - 0x38, /* 00111000 */ - 0x54, /* 01010100 */ - 0x54, /* 01010100 */ - 0x38, /* 00111000 */ - 0x40, /* 01000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 238 0xEE '\356' */ - 0x00, /* 00000000 */ - 0x3C, /* 00111100 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x38, /* 00111000 */ - 0x40, /* 01000000 */ - 0x40, /* 01000000 */ - 0x3C, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 239 0xEF '\357' */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x44, /* 01000100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 240 0xF0 '\360' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0xFC, /* 11111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 241 0xF1 '\361' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x7C, /* 01111100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 242 0xF2 '\362' */ - 0x00, /* 00000000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 243 0xF3 '\363' */ - 0x00, /* 00000000 */ - 0x08, /* 00001000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x10, /* 00010000 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 244 0xF4 '\364' */ - 0x00, /* 00000000 */ - 0x0C, /* 00001100 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - - /* 245 0xF5 '\365' */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x10, /* 00010000 */ - 0x60, /* 01100000 */ - 0x00, /* 00000000 */ - - /* 246 0xF6 '\366' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x7C, /* 01111100 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 247 0xF7 '\367' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x20, /* 00100000 */ - 0x54, /* 01010100 */ - 0x08, /* 00001000 */ - 0x20, /* 00100000 */ - 0x54, /* 01010100 */ - 0x08, /* 00001000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 248 0xF8 '\370' */ - 0x30, /* 00110000 */ - 0x48, /* 01001000 */ - 0x48, /* 01001000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 249 0xF9 '\371' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 250 0xFA '\372' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 251 0xFB '\373' */ - 0x00, /* 00000000 */ - 0x04, /* 00000100 */ - 0x08, /* 00001000 */ - 0x08, /* 00001000 */ - 0x50, /* 01010000 */ - 0x50, /* 01010000 */ - 0x20, /* 00100000 */ - 0x20, /* 00100000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 252 0xFC '\374' */ - 0x60, /* 01100000 */ - 0x50, /* 01010000 */ - 0x50, /* 01010000 */ - 0x50, /* 01010000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 253 0xFD '\375' */ - 0x60, /* 01100000 */ - 0x10, /* 00010000 */ - 0x20, /* 00100000 */ - 0x70, /* 01110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 254 0xFE '\376' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 255 0xFF '\377' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ +static const unsigned char font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x84, 0xCC, 0x84, 0xCC, + 0xB4, 0x78, 0x00, 0x00, 0x00, 0x78, 0xFC, 0xB4, 0xFC, 0xB4, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x7C, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0x38, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x6C, 0x6C, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, + 0x7C, 0x7C, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFC, 0xFC, 0xCC, 0x84, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x30, 0x48, 0x84, 0x48, + 0x30, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xCC, 0xB4, 0x78, 0xB4, 0xCC, 0xFC, 0xFC, 0xFC, 0x00, 0x3C, + 0x14, 0x20, 0x78, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x38, 0x10, 0x38, 0x10, + 0x00, 0x00, 0x00, 0x18, 0x14, 0x14, 0x10, 0x10, 0x70, 0x60, 0x00, 0x00, 0x00, 0x3C, 0x24, 0x3C, + 0x24, 0x24, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x10, 0x54, 0x38, 0x6C, 0x38, 0x54, 0x10, 0x00, 0x00, + 0x00, 0x40, 0x60, 0x70, 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x1C, 0x3C, 0x1C, + 0x0C, 0x04, 0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x10, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00, 0x48, + 0x48, 0x48, 0x48, 0x48, 0x00, 0x48, 0x00, 0x00, 0x3C, 0x54, 0x54, 0x54, 0x3C, 0x14, 0x14, 0x14, + 0x00, 0x00, 0x38, 0x44, 0x20, 0x50, 0x48, 0x24, 0x14, 0x08, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x10, 0x54, 0x38, 0x10, 0x7C, 0x00, + 0x00, 0x10, 0x38, 0x54, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x54, + 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x7C, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x20, 0x7C, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x84, 0xFC, 0x84, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, + 0x38, 0x38, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x00, 0x10, 0x00, 0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x7C, 0x28, 0x28, 0x7C, 0x28, 0x00, 0x00, 0x10, 0x38, 0x54, 0x50, 0x38, 0x14, 0x54, 0x38, + 0x10, 0x00, 0x00, 0x64, 0x64, 0x08, 0x10, 0x20, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x30, 0x48, 0x50, + 0x20, 0x54, 0x48, 0x34, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x10, 0x20, 0x00, 0x00, 0x10, 0x54, 0x38, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, + 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, + 0x00, 0x38, 0x44, 0x4C, 0x54, 0x64, 0x44, 0x38, 0x00, 0x00, 0x00, 0x10, 0x30, 0x50, 0x10, 0x10, + 0x10, 0x7C, 0x00, 0x00, 0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x20, 0x7C, 0x00, 0x00, 0x00, 0x38, + 0x44, 0x04, 0x18, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, 0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x08, + 0x00, 0x00, 0x00, 0x7C, 0x40, 0x78, 0x04, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, 0x18, 0x20, 0x40, + 0x78, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x7C, 0x04, 0x04, 0x08, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x10, 0x20, 0x00, 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, + 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x38, 0x44, 0x5C, 0x54, 0x5C, 0x40, 0x38, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x7C, + 0x44, 0x44, 0x00, 0x00, 0x00, 0x78, 0x24, 0x24, 0x38, 0x24, 0x24, 0x78, 0x00, 0x00, 0x00, 0x38, + 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00, 0x00, 0x00, 0x78, 0x24, 0x24, 0x24, 0x24, 0x24, 0x78, + 0x00, 0x00, 0x00, 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, 0x7C, 0x40, 0x40, + 0x78, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x38, 0x44, 0x40, 0x5C, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x00, 0x44, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x38, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x08, 0x08, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x44, + 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C, + 0x00, 0x00, 0x00, 0x44, 0x6C, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x44, 0x64, 0x54, + 0x4C, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x54, + 0x48, 0x34, 0x00, 0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00, 0x00, 0x00, 0x38, + 0x44, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x6C, 0x44, 0x00, 0x00, + 0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, + 0x10, 0x10, 0x00, 0x00, 0x00, 0x7C, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7C, 0x00, 0x00, 0x18, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, + 0x04, 0x04, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, 0x10, 0x28, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x04, 0x3C, + 0x44, 0x3C, 0x00, 0x00, 0x00, 0x40, 0x40, 0x58, 0x64, 0x44, 0x64, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x00, 0x00, 0x00, 0x04, 0x04, 0x34, 0x4C, 0x44, 0x4C, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x7C, 0x40, 0x3C, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x10, + 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x44, 0x4C, 0x34, 0x04, 0x38, + 0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, + 0x10, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x40, + 0x40, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, + 0x64, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x58, 0x64, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x44, + 0x4C, 0x34, 0x04, 0x04, 0x00, 0x00, 0x00, 0x58, 0x64, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3C, 0x40, 0x38, 0x04, 0x78, 0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x10, 0x10, 0x10, 0x0C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, + 0x44, 0x3C, 0x04, 0x38, 0x00, 0x00, 0x00, 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, 0x00, 0x08, 0x10, + 0x10, 0x10, 0x20, 0x10, 0x10, 0x10, 0x08, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10, + 0x10, 0x00, 0x20, 0x10, 0x10, 0x10, 0x08, 0x10, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x54, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x7C, 0x00, 0x00, + 0x00, 0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x10, 0x20, 0x00, 0x28, 0x00, 0x44, 0x44, 0x44, + 0x4C, 0x34, 0x00, 0x00, 0x08, 0x10, 0x00, 0x38, 0x44, 0x7C, 0x40, 0x3C, 0x00, 0x00, 0x10, 0x28, + 0x00, 0x38, 0x04, 0x3C, 0x44, 0x3C, 0x00, 0x00, 0x00, 0x28, 0x00, 0x38, 0x04, 0x3C, 0x44, 0x3C, + 0x00, 0x00, 0x10, 0x08, 0x00, 0x38, 0x04, 0x3C, 0x44, 0x3C, 0x00, 0x00, 0x18, 0x24, 0x18, 0x38, + 0x04, 0x3C, 0x44, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x10, 0x20, + 0x10, 0x28, 0x00, 0x38, 0x44, 0x7C, 0x40, 0x3C, 0x00, 0x00, 0x00, 0x28, 0x00, 0x38, 0x44, 0x7C, + 0x40, 0x3C, 0x00, 0x00, 0x20, 0x10, 0x00, 0x38, 0x44, 0x7C, 0x40, 0x3C, 0x00, 0x00, 0x00, 0x28, + 0x00, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x10, 0x28, 0x00, 0x30, 0x10, 0x10, 0x10, 0x38, + 0x00, 0x00, 0x20, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x44, 0x10, 0x28, 0x44, + 0x44, 0x7C, 0x44, 0x44, 0x00, 0x00, 0x30, 0x48, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x00, 0x00, + 0x10, 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x14, 0x7C, + 0x50, 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x50, 0x50, 0x78, 0x50, 0x50, 0x5C, 0x00, 0x00, 0x10, 0x28, + 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, + 0x00, 0x00, 0x20, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x10, 0x28, 0x00, 0x44, + 0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x20, 0x10, 0x00, 0x44, 0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x3C, 0x04, 0x38, 0x84, 0x38, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x38, 0x00, 0x00, 0x88, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x38, 0x54, 0x50, 0x54, 0x38, 0x10, 0x00, 0x30, 0x48, 0x40, 0x70, 0x40, 0x40, 0x44, 0x78, + 0x00, 0x00, 0x00, 0x44, 0x28, 0x7C, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70, 0x48, 0x70, + 0x48, 0x5C, 0x48, 0x44, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x10, 0x38, 0x10, 0x10, 0x60, 0x00, 0x00, + 0x08, 0x10, 0x00, 0x38, 0x04, 0x3C, 0x44, 0x3C, 0x00, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x10, + 0x10, 0x38, 0x00, 0x00, 0x08, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x08, 0x10, + 0x00, 0x44, 0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x34, 0x58, 0x00, 0x58, 0x64, 0x44, 0x44, 0x44, + 0x00, 0x00, 0x58, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x38, 0x04, 0x3C, + 0x44, 0x3C, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x10, 0x20, 0x40, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x40, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x04, 0x04, 0x00, 0x00, 0x00, 0x20, 0x60, + 0x24, 0x28, 0x10, 0x28, 0x44, 0x08, 0x1C, 0x00, 0x20, 0x60, 0x24, 0x28, 0x10, 0x28, 0x58, 0x3C, + 0x08, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x48, 0x90, 0x48, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x48, 0x24, 0x48, 0x90, 0x00, 0x00, + 0x10, 0x44, 0x10, 0x44, 0x10, 0x44, 0x10, 0x44, 0x10, 0x44, 0xA8, 0x54, 0xA8, 0x54, 0xA8, 0x54, + 0xA8, 0x54, 0xA8, 0x54, 0xDC, 0x74, 0xDC, 0x74, 0xDC, 0x74, 0xDC, 0x74, 0xDC, 0x74, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x28, 0x28, 0x28, 0x28, + 0xE8, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x00, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x28, 0x28, 0x28, 0xE8, 0x08, 0xE8, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, + 0x00, 0xF8, 0x08, 0xE8, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xE8, 0x08, 0xF8, 0x00, 0x00, + 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xF0, + 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xFC, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1C, + 0x10, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x28, 0x28, 0x28, 0x28, 0x2C, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x2C, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x20, 0x2C, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xEC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0xEC, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x2C, 0x20, 0x2C, 0x28, 0x28, + 0x28, 0x28, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0xEC, + 0x00, 0xEC, 0x28, 0x28, 0x28, 0x28, 0x10, 0x10, 0x10, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x28, 0x28, 0x28, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x1C, 0x10, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xFC, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x10, 0x10, 0x10, 0xFC, 0x10, 0xFC, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFC, 0xFC, + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, + 0xFC, 0xFC, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x34, 0x48, 0x48, 0x48, 0x34, 0x00, 0x00, 0x18, 0x24, 0x44, 0x48, 0x48, 0x44, + 0x44, 0x58, 0x40, 0x00, 0x00, 0x7C, 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7C, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x7C, 0x24, 0x10, 0x08, 0x10, 0x24, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x48, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x48, 0x48, 0x48, 0x74, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x0C, 0x00, 0x00, + 0x38, 0x10, 0x38, 0x44, 0x44, 0x38, 0x10, 0x38, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, + 0x44, 0x38, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x28, 0x6C, 0x00, 0x00, 0x00, 0x18, + 0x20, 0x18, 0x24, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x54, 0x54, 0x54, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x38, 0x54, 0x54, 0x38, 0x40, 0x00, 0x00, 0x00, 0x3C, 0x40, 0x40, + 0x38, 0x40, 0x40, 0x3C, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x10, 0x20, 0x00, 0x38, 0x00, 0x00, 0x00, 0x08, + 0x10, 0x20, 0x10, 0x08, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x7C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x54, 0x08, 0x20, 0x54, 0x08, 0x00, 0x00, + 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x08, 0x08, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x60, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x10, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const int font_size = sizeof(font); diff --git a/sysmodules/rosalina/source/errdisp.c b/sysmodules/rosalina/source/errdisp.c index 024fdc93..072f6953 100644 --- a/sysmodules/rosalina/source/errdisp.c +++ b/sysmodules/rosalina/source/errdisp.c @@ -142,11 +142,11 @@ static int ERRF_FormatRegisterDump(char *out, const ERRF_ExceptionData *exceptio static int ERRF_FormatGenericInfo(char *out, const ERRF_FatalErrInfo *info) { static const char *types[] = { - "generic", "corrupted", "card removed", "exception", "result failure", "generic (log only)", "invalid" + "generico", "corrotto", "scheda rimossa", "errore", "risulta fallito", "generico (solo log)", "invalido" }; static const char *exceptionTypes[] = { - "prefetch abort", "data abort", "undefined instruction", "VFP", "invalid" + "aborto prefetch", "aborto dati", "istruzioni indefinite", "VFP", "invalido" }; const char *type = (u32)info->type > (u32)ERRF_ERRTYPE_LOG_ONLY ? types[6] : types[(u32)info->type]; @@ -160,12 +160,12 @@ static int ERRF_FormatGenericInfo(char *out, const ERRF_FatalErrInfo *info) const char *exceptionType = (u32) info->data.exception_data.excep.type > (u32)ERRF_EXCEPTION_VFP ? exceptionTypes[4] : exceptionTypes[(u32)info->data.exception_data.excep.type]; - out += sprintf(out, "Error type: exception (%s)\n", exceptionType); + out += sprintf(out, "Tipo di errore: errore (%s)\n", exceptionType); } else - out += sprintf(out, "Error type: %s\n", type); + out += sprintf(out, "Tipo di errore: %s\n", type); - out += sprintf(out, "\nProcess ID: %lu\n", info->procId); + out += sprintf(out, "\nID Programma: %lu\n", info->procId); res = svcOpenProcess(&processHandle, info->procId); if(R_SUCCEEDED(res)) @@ -175,8 +175,8 @@ static int ERRF_FormatGenericInfo(char *out, const ERRF_FatalErrInfo *info) svcGetProcessInfo((s64 *)name, processHandle, 0x10000); svcGetProcessInfo((s64 *)&titleId, processHandle, 0x10001); svcCloseHandle(processHandle); - out += sprintf(out, "Process name: %s\n", name); - out += sprintf(out, "Process title ID: %016llx\n", titleId); + out += sprintf(out, "Nome programma: %s\n", name); + out += sprintf(out, "ID Titolo del programma: %016llx\n", titleId); } out += sprintf(out, "\n"); @@ -194,27 +194,27 @@ static int ERRF_FormatError(char *out, const ERRF_FatalErrInfo *info, bool isLog u64 timeNow = osGetTime(); u64 timeAtBoot = timeNow - (1000 * svcGetSystemTick() / SYSCLOCK_ARM11); dateTimeToString(dateTimeStr, timeNow, false); - out += sprintf(out, "Reported on: %s\n", dateTimeStr); + out += sprintf(out, "Riportato su: %s\n", dateTimeStr); dateTimeToString(dateTimeStr, timeAtBoot, false); - out += sprintf(out, "System booted on: %s\n\n", dateTimeStr); + out += sprintf(out, "Sistema avviato su: %s\n\n", dateTimeStr); } switch (info->type) { case ERRF_ERRTYPE_NAND_DAMAGED: - out += sprintf(out, "The NAND chip has been damaged.\n"); + out += sprintf(out, "Il chip della NAND e' danneggiato.\n"); break; case ERRF_ERRTYPE_CARD_REMOVED: { - const char *medium = R_MODULE(info->resCode) == RM_SDMC ? "SD card" : "cartridge"; - out += sprintf(out, "The %s was removed.\n", medium); + const char *medium = R_MODULE(info->resCode) == RM_SDMC ? "Scheda SD" : "cartuccia"; + out += sprintf(out, "La %s e' stata rimossa.\n", medium); break; } case ERRF_ERRTYPE_GENERIC: case ERRF_ERRTYPE_LOG_ONLY: out += ERRF_FormatGenericInfo(out, info); - out += sprintf(out, "Address: 0x%08lx\n", info->pcAddr); - out += sprintf(out, "Error code: 0x%08lx\n", info->resCode); + out += sprintf(out, "Indirizzo: 0x%08lx\n", info->pcAddr); + out += sprintf(out, "Codice errore: 0x%08lx\n", info->resCode); break; case ERRF_ERRTYPE_EXCEPTION: out += ERRF_FormatGenericInfo(out, info); @@ -223,11 +223,11 @@ static int ERRF_FormatError(char *out, const ERRF_FatalErrInfo *info, bool isLog break; case ERRF_ERRTYPE_FAILURE: out += ERRF_FormatGenericInfo(out, info); - out += sprintf(out, "Error code: 0x%08lx\n", info->resCode); - out += sprintf(out, "Reason: %.96s\n", info->data.failure_mesg); + out += sprintf(out, "Codice errore: 0x%08lx\n", info->resCode); + out += sprintf(out, "Ragioni: %.96s\n", info->data.failure_mesg); break; default: - out += sprintf(out, "Invalid fatal error data.\n"); + out += sprintf(out, "Errore fatale dati invalido.\n"); } // We might not always have enough space to display this on screen, so keep it to the log file @@ -243,7 +243,7 @@ static void ERRF_DisplayError(ERRF_FatalErrInfo *info, bool continueAfterErrdisp { Draw_Lock(); - u32 posY = Draw_DrawString(10, 10, COLOR_RED, "An error occurred (ErrDisp)"); + u32 posY = Draw_DrawString(10, 10, COLOR_RED, "Si e' verificato un errore (ErrDisp)"); char buf[0x400]; ERRF_FormatError(buf, info, false); @@ -251,9 +251,9 @@ static void ERRF_DisplayError(ERRF_FatalErrInfo *info, bool continueAfterErrdisp posY = Draw_DrawString(10, posY, COLOR_WHITE, buf); if(continueAfterErrdisp) - posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_TITLE, "Press any button to continue.\nThere is a high chance that it crashed.\nTo reboot, press A + B + X + Y + Start."); + posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_TITLE, "Premi un qualsiasi tasto.\nC'e' una grande possibilita' che sia crashato.\nPer riavviare, premi A + B + X + Y + Start."); else - posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Press any button to reboot."); + posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Premi un qualsiasi tasto per riavviare."); Draw_FlushFramebuffer(); Draw_Unlock(); diff --git a/sysmodules/rosalina/source/gdb/debug.c b/sysmodules/rosalina/source/gdb/debug.c index 12418ccc..a339ed47 100644 --- a/sysmodules/rosalina/source/gdb/debug.c +++ b/sysmodules/rosalina/source/gdb/debug.c @@ -560,7 +560,7 @@ int GDB_SendStopReply(GDBContext *ctx, const DebugEventInfo *info) const char *kinds[] = { "", "r", "", "a" }; WatchpointKind kind = GDB_GetWatchpointKind(ctx, exc.stop_point.fault_information); if(kind == WATCHPOINT_DISABLED) - GDB_SendDebugString(ctx, "Warning: unknown watchpoint encountered!\n"); + GDB_SendDebugString(ctx, "Avvertenza: Punto di osservazione incontrato sconosciuto!\n"); GDB_ParseCommonThreadInfo(buffer, ctx, SIGTRAP); return GDB_SendFormattedPacket(ctx, "%s%swatch:%08lx;", buffer, kinds[(u32)kind], exc.stop_point.fault_information); diff --git a/sysmodules/rosalina/source/gdb/remote_command.c b/sysmodules/rosalina/source/gdb/remote_command.c index 39691c0d..7b3a939f 100644 --- a/sysmodules/rosalina/source/gdb/remote_command.c +++ b/sysmodules/rosalina/source/gdb/remote_command.c @@ -64,7 +64,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(ConvertVAToPA) Result r = svcOpenProcess(&process, ctx->pid); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid process (wtf?)\n"); + n = sprintf(outbuf, "Processo non valido (ma che ca?)\n"); goto end; } r = svcControlProcess(process, PROCESSOP_GET_PA_FROM_VA, (u32)&pa, val); @@ -72,7 +72,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(ConvertVAToPA) if (R_FAILED(r)) { - n = sprintf(outbuf, "An error occured: %08lX\n", r); + n = sprintf(outbuf, "Si e' verificato un errore: %08lX\n", r); goto end; } } @@ -97,7 +97,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(SyncRequestInfo) if(ctx->selectedThreadId == 0) { - n = sprintf(outbuf, "Cannot run this command without a selected thread.\n"); + n = sprintf(outbuf, "Impossibile eseguire questo comando senza un thread selezionato.\n"); goto end; } @@ -109,7 +109,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(SyncRequestInfo) r = svcOpenProcess(&process, ctx->pid); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid process (wtf?)\n"); + n = sprintf(outbuf, "Processo non valido (ma che ca?)\n"); goto end; } @@ -119,14 +119,14 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(SyncRequestInfo) if(R_FAILED(r) || id == MAX_DEBUG_THREAD) { - n = sprintf(outbuf, "Invalid or running thread.\n"); + n = sprintf(outbuf, "Thread non valido o in esecuzione.\n"); goto end; } r = svcReadProcessMemory(&cmdId, ctx->debug, ctx->threadInfos[id].tls + 0x80, 4); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid or running thread.\n"); + n = sprintf(outbuf, "Thread non valido o in esecuzione.\n"); goto end; } @@ -142,7 +142,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(SyncRequestInfo) if(R_FAILED(r) || ((regs.cpu_registers.cpsr & 0x20) && !(instr == 0xDF32 || (instr == 0xDFFE && regs.cpu_registers.r[12] == 0x32))) || (!(regs.cpu_registers.cpsr & 0x20) && !(instr == 0xEF000032 || (instr == 0xEF0000FE && regs.cpu_registers.r[12] == 0x32)))) { - n = sprintf(outbuf, "The selected thread is not currently performing a sync request (svc 0x32).\n"); + n = sprintf(outbuf, "Il thread selezionato non sta attualmente perf. una richiesta di sincr. (svc 0x32).\n"); goto end; } @@ -151,7 +151,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(SyncRequestInfo) r = svcCopyHandle(&handle, CUR_PROCESS_HANDLE, (Handle)regs.cpu_registers.r[0], process); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid handle.\n"); + n = sprintf(outbuf, "Handle non valido.\n"); goto end; } @@ -221,14 +221,14 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(TranslateHandle) r = svcOpenProcess(&process, ctx->pid); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid process (wtf?)\n"); + n = sprintf(outbuf, "Processo non valido (ma che ca?)\n"); goto end; } r = svcCopyHandle(&handle, CUR_PROCESS_HANDLE, (Handle)val, process); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid handle.\n"); + n = sprintf(outbuf, "Handle non valido.\n"); goto end; } @@ -293,17 +293,17 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(ListAllHandles) r = svcOpenProcess(&process, ctx->pid); if(R_FAILED(r)) { - n = sprintf(outbuf, "Invalid process (wtf?)\n"); + n = sprintf(outbuf, "Processo non valido (ma che ca?).\n"); goto end; } if (R_FAILED(count = svcControlProcess(process, PROCESSOP_GET_ALL_HANDLES, (u32)procHandles, val))) - n = sprintf(outbuf, "An error occured: %08lX\n", count); + n = sprintf(outbuf, "Si e' verificato un errore: %08lX\n", count); else if (count == 0) - n = sprintf(outbuf, "Process has no handles ?\n"); + n = sprintf(outbuf, "Il processo non ha handles?\n"); else { - n = sprintf(outbuf, "Found %ld handles.\n", count); + n = sprintf(outbuf, "Trovati %ld handles.\n", count); const char *comma = ""; for (s32 i = 0; i < count && n < (GDB_BUF_LEN >> 1) - 20; ++i) @@ -339,7 +339,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(GetMmuConfig) r = svcOpenProcess(&process, ctx->pid); if(R_FAILED(r)) - n = sprintf(outbuf, "Invalid process (wtf?)\n"); + n = sprintf(outbuf, "Processo non valido (ma che ca?)\n"); else { s64 TTBCR, TTBR0; @@ -370,7 +370,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(GetMemRegions) if(R_FAILED(svcOpenProcess(&handle, ctx->pid))) { - posInBuffer = sprintf(outbuf, "Invalid process (wtf?)\n"); + posInBuffer = sprintf(outbuf, "Processo non valido (ma che ca?)\n"); return GDB_SendHexPacket(ctx, outbuf, posInBuffer); } @@ -396,7 +396,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(ToggleExternalMemoryAccess) ctx->enableExternalMemoryAccess = !ctx->enableExternalMemoryAccess; - n = sprintf(outbuf, "External memory access %s successfully.\n", ctx->enableExternalMemoryAccess ? "enabled" : "disabled"); + n = sprintf(outbuf, "Accesso alla memoria esterna %s con successo.\n", ctx->enableExternalMemoryAccess ? "abilitato" : "disabilitato"); return GDB_SendHexPacket(ctx, outbuf, n); } @@ -442,7 +442,7 @@ GDB_DECLARE_REMOTE_COMMAND_HANDLER(GetThreadPriority) int n; char outbuf[GDB_BUF_LEN / 2 + 1]; - n = sprintf(outbuf, "Thread (%ld) priority: 0x%02lX\n", ctx->selectedThreadId, + n = sprintf(outbuf, "Thread (%ld) priorita': 0x%02lX\n", ctx->selectedThreadId, GDB_GetDynamicThreadPriority(ctx, ctx->selectedThreadId)); return GDB_SendHexPacket(ctx, outbuf, n); @@ -452,7 +452,7 @@ GDB_DECLARE_QUERY_HANDLER(Rcmd) { char commandData[GDB_BUF_LEN / 2 + 1]; char *endpos; - const char *errstr = "Unrecognized command.\n"; + const char *errstr = "Comando non riconosciuto.\n"; u32 len = strlen(ctx->commandData); if(len == 0 || (len % 2) == 1 || GDB_DecodeHex(commandData, ctx->commandData, len / 2) != len / 2) diff --git a/sysmodules/rosalina/source/gdb/thread.c b/sysmodules/rosalina/source/gdb/thread.c index 97e4eaeb..0e08c21a 100644 --- a/sysmodules/rosalina/source/gdb/thread.c +++ b/sysmodules/rosalina/source/gdb/thread.c @@ -359,31 +359,31 @@ GDB_DECLARE_QUERY_HANDLER(ThreadExtraInfo) } r = svcGetDebugThreadParam(&dummy, &val, ctx->debug, id, DBGTHREAD_PARAMETER_SCHEDULING_MASK_LOW); - sStatus = R_SUCCEEDED(r) ? (val == 1 ? ", running, " : ", idle, ") : ""; + sStatus = R_SUCCEEDED(r) ? (val == 1 ? ", in esecuzione, " : ", idle, ") : ""; val = (u32)GDB_GetDynamicThreadPriority(ctx, id); if(val == 65) sThreadDynamicPriority[0] = 0; else - sprintf(sThreadDynamicPriority, "dynamic prio.: %ld, ", (s32)val); + sprintf(sThreadDynamicPriority, "prio. dinamica: %ld, ", (s32)val); //prio. sta per priorita' r = svcGetDebugThreadParam(&dummy, &val, ctx->debug, id, DBGTHREAD_PARAMETER_PRIORITY); if(R_FAILED(r)) sThreadStaticPriority[0] = 0; else - sprintf(sThreadStaticPriority, "static prio.: %ld, ", (s32)val); + sprintf(sThreadStaticPriority, "prio. statica: %ld, ", (s32)val); r = svcGetDebugThreadParam(&dummy, &val, ctx->debug, id, DBGTHREAD_PARAMETER_CPU_IDEAL); if(R_FAILED(r)) sCoreIdeal[0] = 0; else - sprintf(sCoreIdeal, "ideal core: %lu, ", val); + sprintf(sCoreIdeal, "core ideale: %lu, ", val); r = svcGetDebugThreadParam(&dummy, &val, ctx->debug, id, DBGTHREAD_PARAMETER_CPU_CREATOR); // Creator = "first ran, and running the thread" if(R_FAILED(r)) sCoreCreator[0] = 0; else - sprintf(sCoreCreator, "running on core %lu", val); + sprintf(sCoreCreator, "in esecuzione sul core %lu", val); n = sprintf(buf, "TLS: 0x%08lx%s%s%s%s%s", tls, sStatus, sThreadDynamicPriority, sThreadStaticPriority, sCoreIdeal, sCoreCreator); diff --git a/sysmodules/rosalina/source/luma_config.c b/sysmodules/rosalina/source/luma_config.c index fd883053..a59053dd 100644 --- a/sysmodules/rosalina/source/luma_config.c +++ b/sysmodules/rosalina/source/luma_config.c @@ -139,9 +139,9 @@ static size_t LumaConfig_SaveLumaIniConfigToStr(char *out, const CfgData *cfg) } if (GET_VERSION_REVISION(version) != 0) { - sprintf(lumaVerStr, "Polari3DS v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version)); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version)); } else { - sprintf(lumaVerStr, "Polari3DS v%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version)); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version)); } if (isRelease) { @@ -251,9 +251,9 @@ static size_t LumaConfig_SavePerformanceLumaIniConfigToStr(char *out, const CfgD } if (GET_VERSION_REVISION(version) != 0) { - sprintf(lumaVerStr, "Polari3DS v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version)); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version)); } else { - sprintf(lumaVerStr, "Polari3DS v%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version)); + sprintf(lumaVerStr, "Polari3DS-ITA v%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version)); } if (isRelease) { diff --git a/sysmodules/rosalina/source/luminance.c b/sysmodules/rosalina/source/luminance.c index d5a59743..d788ca0e 100644 --- a/sysmodules/rosalina/source/luminance.c +++ b/sysmodules/rosalina/source/luminance.c @@ -206,36 +206,36 @@ void Luminance_RecalibrateBrightnessDefaults(void) Draw_Lock(); Draw_ClearFramebuffer(); - Draw_DrawString(10, 10, COLOR_TITLE, "Permanent brightness recalibration - by Nutez"); + Draw_DrawString(10, 10, COLOR_TITLE, "Ricalibrazione permanente luminosita' - di Nutez"); u32 posY = 30; - posY = Draw_DrawString(10, posY, COLOR_RED, "WARNING: ") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * brightness preview not possible here\n due to glitch risk.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * test values via 'Change screen brightness'.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * avoid frequent use to minimise NAND(!) wear.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * 172 is only presumed(!) safe for prolonged use.") + (SPACING_Y*2); + posY = Draw_DrawString(10, posY, COLOR_RED, "ATTENZIONE: ") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * L'anteprima della lum. non e' possibile qui\n per rischio glitch.") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * testa i valori via 'Cambia luminosita' schermi'.") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * e' frequente per minimizzare il consumo della NAND(!).") + SPACING_Y;//note that (?) mean that is a possible uncorrect translation + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * 172 e' solamente presunto(!) sicuro per uso prolungato.") + (SPACING_Y*2); - sprintf(fmtbuf, "%c Level 1 value: %i", (sel == 0 ? '>' : ' '), s_blPwmData.luminanceLevels[0]); + sprintf(fmtbuf, "%c Liv.1 valore: %i", (sel == 0 ? '>' : ' '), s_blPwmData.luminanceLevels[0]); posY = Draw_DrawString(10, posY, COLOR_WHITE, fmtbuf) + SPACING_Y; - sprintf(fmtbuf, "%c Level 2 value: %i", (sel == 1 ? '>' : ' '), s_blPwmData.luminanceLevels[1]); + sprintf(fmtbuf, "%c Liv.2 valore: %i", (sel == 1 ? '>' : ' '), s_blPwmData.luminanceLevels[1]); posY = Draw_DrawString(10, posY, COLOR_WHITE, fmtbuf) + SPACING_Y; - sprintf(fmtbuf, "%c Level 3 value: %i", (sel == 2 ? '>' : ' '), s_blPwmData.luminanceLevels[2]); + sprintf(fmtbuf, "%c Liv.3 valore: %i", (sel == 2 ? '>' : ' '), s_blPwmData.luminanceLevels[2]); posY = Draw_DrawString(10, posY, COLOR_WHITE, fmtbuf) + SPACING_Y; - sprintf(fmtbuf, "%c Level 4 value: %i", (sel == 3 ? '>' : ' '), s_blPwmData.luminanceLevels[3]); + sprintf(fmtbuf, "%c Liv.4 valore: %i", (sel == 3 ? '>' : ' '), s_blPwmData.luminanceLevels[3]); posY = Draw_DrawString(10, posY, COLOR_WHITE, fmtbuf) + SPACING_Y; - sprintf(fmtbuf, "%c Level 5 value: %i", (sel == 4 ? '>' : ' '), s_blPwmData.luminanceLevels[4]); + sprintf(fmtbuf, "%c Liv.5 valore: %i", (sel == 4 ? '>' : ' '), s_blPwmData.luminanceLevels[4]); posY = Draw_DrawString(10, posY, COLOR_WHITE, fmtbuf) + (SPACING_Y*2); - posY = Draw_DrawString(10, posY, COLOR_GREEN, "Controls:") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " UP/DOWN to choose level to edit.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " RIGHT/LEFT for +/-1, +hold L1 or R1 for +/-10.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " Press START to save all value changes.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " Reboot may be required to see applied changes.") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, " Press B to exit."); + posY = Draw_DrawString(10, posY, COLOR_GREEN, "Controlli:") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " SU/GIU' per selezionare il livello da modificare.") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " SINISTRA/DESTRA per +/-1, + mantieni L o R per +/-10.") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " Premi START per salvare tutti i cambiamenti ai val. .") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " Il riavvio e' necessario per vedere i camb. applicati.") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, " Premi B per uscire."); Draw_FlushFramebuffer(); Draw_Unlock(); diff --git a/sysmodules/rosalina/source/main.c b/sysmodules/rosalina/source/main.c index d81002f8..06b73f6c 100644 --- a/sysmodules/rosalina/source/main.c +++ b/sysmodules/rosalina/source/main.c @@ -122,8 +122,8 @@ void initSystem(void) svcBreak(USERBREAK_PANIC); miscellaneousMenu.items[0].title = Luma_SharedConfig->selected_hbldr_3dsx_tid == HBLDR_DEFAULT_3DSX_TID ? - "Switch the hb. title to the current app." : - "Switch the hb. title to " HBLDR_DEFAULT_3DSX_TITLE_NAME; + "Cambia il titolo hb. con l'app corrente" : + "Cambia il titolo hb. con " HBLDR_DEFAULT_3DSX_TITLE_NAME; // **** DO NOT init services that don't come from KIPs here **** // Instead, init the service only where it's actually init (then deinit it). diff --git a/sysmodules/rosalina/source/menu.c b/sysmodules/rosalina/source/menu.c index 8ca9e12e..3c368338 100644 --- a/sysmodules/rosalina/source/menu.c +++ b/sysmodules/rosalina/source/menu.c @@ -314,7 +314,7 @@ static const char *menuGetScreenTypeStr(u8 vendorId) { case 1: return "IPS"; // SHARP case 12: return "TN"; // JDN - default: return "unknown"; + default: return "sconosciuto"; } } @@ -618,9 +618,9 @@ static void menuDraw(Menu *menu, u32 selected) Draw_DrawFormattedString(SCREEN_BOT_WIDTH - 10 - SPACING_X * 19, SCREEN_BOT_HEIGHT - 20, COLOR_WHITE, "%19s", ""); if(isRelease) - Draw_DrawFormattedString(10, SCREEN_BOT_HEIGHT - 20, COLOR_TITLE, "Polari3DS %s", versionString); + Draw_DrawFormattedString(10, SCREEN_BOT_HEIGHT - 20, COLOR_TITLE, "Polari3DS-ITA %s", versionString); else - Draw_DrawFormattedString(10, SCREEN_BOT_HEIGHT - 20, COLOR_TITLE, "Polari3DS %s-%08lx", versionString, commitHash); + Draw_DrawFormattedString(10, SCREEN_BOT_HEIGHT - 20, COLOR_TITLE, "Polari3DS-ITA %s-%08lx", versionString, commitHash); Draw_FlushFramebuffer(); } diff --git a/sysmodules/rosalina/source/menus.c b/sysmodules/rosalina/source/menus.c index e083008a..a61d1ca7 100644 --- a/sysmodules/rosalina/source/menus.c +++ b/sysmodules/rosalina/source/menus.c @@ -53,11 +53,11 @@ #include "configExtra_ini.h" Menu rosalinaMenu = { - "Rosalina menu", + "Menu rosalina", { - { "Screenshot NFTs", METHOD, .method = &RosalinaMenu_TakeScreenshot }, - { "Change screen brightness", METHOD, .method = &RosalinaMenu_ChangeScreenBrightness }, - { "Cheater", METHOD, .method = &RosalinaMenu_Cheats }, + { "Cattura Schermo NFTs", METHOD, .method = &RosalinaMenu_TakeScreenshot }, + { "Cambia luminosita schermo", METHOD, .method = &RosalinaMenu_ChangeScreenBrightness }, + { "Trucchi", METHOD, .method = &RosalinaMenu_Cheats }, { "", METHOD, .method = PluginLoader__MenuOption}, { "Screen filters...", MENU, .menu = &screenFiltersMenu }, { "Process hacker", METHOD, .method = &RosalinaMenu_ProcessList }, @@ -96,11 +96,11 @@ void RosalinaMenu_SaveSettings(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Save settings"); + Draw_DrawString(10, 10, COLOR_TITLE, "Salva le impostazioni"); if (R_SUCCEEDED(res)) - Draw_DrawString(10, 30, COLOR_WHITE, "Operation succeeded."); + Draw_DrawString(10, 30, COLOR_WHITE, "Operazione compiuta."); else - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operation failed (0x%08lx).", res); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operazione fallita (0x%08lx).", res); Draw_FlushFramebuffer(); Draw_Unlock(); } @@ -114,22 +114,22 @@ void RosalinaMenu_ShowSystemInfo(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- System info"); + Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- Informazioni Sistema"); u32 posY = 30; if (areScreenTypesInitialized) { - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Top screen type: %s\n", topScreenType); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Bottom screen type: %s\n\n", bottomScreenType); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Tipo di schermo sup.: %s\n", topScreenType); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Tipo di schermo inf.: %s\n\n", bottomScreenType); } - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Kernel version: %lu.%lu-%lu\n\n", GET_VERSION_MAJOR(kver), GET_VERSION_MINOR(kver), GET_VERSION_REVISION(kver)); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Versione kernel: %lu.%lu-%lu\n\n", GET_VERSION_MAJOR(kver), GET_VERSION_MINOR(kver), GET_VERSION_REVISION(kver)); if (mcuFwVersion != 0 && mcuInfoTableRead) { - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "MCU FW version: %lu.%lu\n", GET_VERSION_MAJOR(mcuFwVersion), GET_VERSION_MINOR(mcuFwVersion)); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "PMIC vendor: %hhu\n", mcuInfoTable[1]); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Battery vendor: %hhu\n\n", mcuInfoTable[2]); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Versione MCU FW: %lu.%lu\n", GET_VERSION_MAJOR(mcuFwVersion), GET_VERSION_MINOR(mcuFwVersion)); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Venditore PMIC: %hhu\n", mcuInfoTable[1]); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Venditore Batteria: %hhu\n\n", mcuInfoTable[2]); } Draw_FlushFramebuffer(); @@ -158,17 +158,15 @@ void RosalinaMenu_ShowDebugInfo(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- Debug info"); + Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- informazioni di Debug"); - u32 posY = 30; - - posY = Draw_DrawString(10, posY, COLOR_WHITE, memoryMap); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Kernel ext PA: %08lx - %08lx\n\n", kextPa, kextPa + kextSize); + u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, memoryMap); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Kernel esterno PA: %08lx - %08lx\n\n", kextPa, kextPa + kextSize); if (R_SUCCEEDED(FSUSER_GetSdmcSpeedInfo(&speedInfo))) { u32 clkDiv = 1 << (1 + (speedInfo.sdClkCtrl & 0xFF)); posY = Draw_DrawFormattedString( - 10, posY, COLOR_WHITE, "SDMC speed: HS=%d %lukHz\n", + 10, posY, COLOR_WHITE, "Velocità SDMC: HS=%d %lukHz\n", (int)speedInfo.highSpeedModeEnabled, SYSCLOCK_SDMMC / (1000 * clkDiv) ); } @@ -176,7 +174,7 @@ void RosalinaMenu_ShowDebugInfo(void) { u32 clkDiv = 1 << (1 + (speedInfo.sdClkCtrl & 0xFF)); posY = Draw_DrawFormattedString( - 10, posY, COLOR_WHITE, "NAND speed: HS=%d %lukHz\n", + 10, posY, COLOR_WHITE, "Velocità NAND: HS=%d %lukHz\n", (int)speedInfo.highSpeedModeEnabled, SYSCLOCK_SDMMC / (1000 * clkDiv) ); } @@ -202,14 +200,14 @@ void RosalinaMenu_ShowCredits(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- Polari3DS credits"); + Draw_DrawString(10, 10, COLOR_TITLE, "Rosalina -- Polari3DS-ITA crediti"); - u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Luma3DS (c) 2016-2024 AuroraWright, TuxSH") + SPACING_Y; + u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Luma3DS (c) 2016-2025 AuroraWright, TuxSH") + SPACING_Y; posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "3DSX loading code by fincs"); posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Networking code & basic GDB functionality by Stary"); posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "InputRedirection by Stary (PoC by ShinyQuagsire)"); - + posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Polari3DS, un progetto di Alexyo21"); posY += 2 * SPACING_Y; Draw_DrawString(10, posY, COLOR_WHITE, @@ -255,13 +253,13 @@ void RosalinaMenu_ChangeScreenBrightness(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Screen brightness"); + Draw_DrawString(10, 10, COLOR_TITLE, "Luminosita' schermo"); u32 posY = 30; posY = Draw_DrawFormattedString( 10, posY, COLOR_WHITE, - "Preset: %lu to %lu, Extended: 0 to 172.\n", + "Predefinita: da %lu a %lu, Estesa: da 0 a 172.\n", minLum, maxLum ); @@ -269,29 +267,29 @@ void RosalinaMenu_ChangeScreenBrightness(void) 10, posY, luminanceTop > trueMax ? COLOR_RED : COLOR_WHITE, - "Top screen luminance: %lu\n", + "Luminosita' schermo superiore: %lu\n", luminanceTop ); posY = Draw_DrawFormattedString( 10, posY, luminanceBot > trueMax ? COLOR_RED : COLOR_WHITE, - "Bottom screen luminance: %lu \n\n", + "Luminosita' schermo inferiore: %lu \n\n", luminanceBot ); - posY = Draw_DrawString(10, posY, COLOR_GREEN, "Controls:\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Up/Down for +/-1, Right/Left for +/-10.\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Hold X/A for Top/Bottom screen only. \n"); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Hold L/R for extended limits (<%lu may glitch). \n", minLum); - if (hasTopScreen) { posY = Draw_DrawString(10, posY, COLOR_WHITE, "Press Y to toggle screen backlights.\n\n"); } + posY = Draw_DrawString(10, posY, COLOR_GREEN, "Comandi:\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Su/Giu' per +/-1, Destra/Sinistra per +/-10.\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Mantieni X/A per fare solo schermo Superiore/Inferiore. \n"); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Mantieni L/R per estendere i limiti (<%lu puo' glitcharsi). \n", minLum); + if (hasTopScreen) { posY = Draw_DrawString(10, posY, COLOR_WHITE, "Premi Y per impostare le luci di fondo dello schermo.\n\n"); } - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Press START to begin, B to exit.\n\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Premi START per iniziare, B per uscire.\n\n"); - posY = Draw_DrawString(10, posY, COLOR_RED, "WARNING: \n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * values rarely glitch >172, do not use these!\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * all changes revert on shell reopening.\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * bottom framebuffer will be visible until exit.\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, " * bottom screen functions as normal with\nbacklight turned off.\n"); + posY = Draw_DrawString(10, posY, COLOR_RED, "ATTENZIONE: \n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * I valori glitchano raramente >172, Non usare questi!\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * Tuti i cambiamenti vengono ripristinati alla riapertura degli schermi dalla M.S.\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * il framebuffer superiore sarà visibile fino a che non uscirai.\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, " * le funzioni dello schermo superiore torneranno normali quando\nla luce di fondo viene spenta.\n"); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -449,17 +447,17 @@ void RosalinaMenu_PowerPerformanceOptions(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Power & performance options"); - Draw_DrawString(10, 30, COLOR_WHITE, "Press X to power off, press A to reboot."); - Draw_DrawString(10, 40, COLOR_RED, "Press Y to force reboot"); - Draw_DrawString(10, 50, COLOR_WHITE, "Press Up: boot Homebrew with max app memory*."); - Draw_DrawString(10, 60, COLOR_RED, "*pressing home or power button will cause crash!"); + Draw_DrawString(10, 10, COLOR_TITLE, "Opzioni di spegnimento"); + Draw_DrawString(10, 30, COLOR_WHITE, "Premi X per spegnere, premi A per riavviare,"); + Draw_DrawString(10, 40, COLOR_RED, "Premi Y per forzare il riavvio"); + Draw_DrawString(10, 50, COLOR_WHITE, "Premi Su: Avvia Homebrew con la massima memoria app"); + Draw_DrawString(10, 60, COLOR_RED, "*premendo i tasti home o power causerai un crash!"); if (isN3DS) { - Draw_DrawString(10, 70, COLOR_WHITE, "Press Left: reboot with core2 redirect."); - Draw_DrawString(10, 80, COLOR_WHITE, "Press Right: boot Homebrew with max mem* & core2."); + Draw_DrawString(10, 70, COLOR_WHITE, "Premi L: riavvia con il core2 reindirizzato."); + Draw_DrawString(10, 80, COLOR_WHITE, "Premi R: avvia homebrew con la massima mem* & core2."); } - Draw_DrawString(10, 90, COLOR_WHITE, "Press Down: clear performance settings and reboot."); - Draw_DrawString(10, 110, COLOR_WHITE, "Press B to go back."); + Draw_DrawString(10, 90, COLOR_WHITE, "Premi Giu': resetta le impostazioni delle prestazioni e riavvia."); + Draw_DrawString(10, 110, COLOR_WHITE, "Premi B per tornare indietro."); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -535,8 +533,8 @@ void RosalinaMenu_HomeMenu(void) // Trigger Home Button press Draw_Lock(); Draw_ClearFramebuffer(); - Draw_DrawString(10, 30, COLOR_WHITE, "Exit Rosalina to get back to the Home Menu."); - Draw_DrawString(10, 40, COLOR_WHITE, "Press A to confirm"); + Draw_DrawString(10, 30, COLOR_WHITE, "Esci da Rosalina per ritornare al menu Homne"); + Draw_DrawString(10, 40, COLOR_WHITE, "Premi A per confermare"); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -686,17 +684,17 @@ void RosalinaMenu_TakeScreenshot(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Screenshot"); + Draw_DrawString(10, 10, COLOR_TITLE, "Cattura schermo"); if (R_FAILED(res)) - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operation failed (0x%08lx).", (u32)res); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operazione fallita (0x%08lx).", (u32)res); else { u32 t1 = (u32)(1000 * timeSpentConvertingScreenshot / SYSCLOCK_ARM11); u32 t2 = (u32)(1000 * timeSpentWritingScreenshot / SYSCLOCK_ARM11); u32 posY = 30; - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Operation succeeded.\n\n"); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Time spent converting: %5lums\n", t1); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Time spent writing files: %5lums\n", t2); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Operazione eseguita con successo.\n\n"); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Tempo impiegato a convertire: %5lums\n", t1); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Tempo impiegato a scrivere il file: %5lums\n", t2); } Draw_FlushFramebuffer(); diff --git a/sysmodules/rosalina/source/menus/cheats.c b/sysmodules/rosalina/source/menus/cheats.c index e1515c4b..c427db6e 100755 --- a/sysmodules/rosalina/source/menus/cheats.c +++ b/sysmodules/rosalina/source/menus/cheats.c @@ -1653,13 +1653,13 @@ static Result Cheat_MapMemoryAndApplyCheat(u32 pid, CheatDescription* const chea } else { - sprintf(failureReason, "Debug process failed"); + sprintf(failureReason, "Processo di debug fallito"); svcCloseHandle(processHandle); } } else { - sprintf(failureReason, "Open process failed"); + sprintf(failureReason, "Processo di apertura fallito"); } return res; } @@ -2046,14 +2046,14 @@ void RosalinaMenu_Cheats(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Cheats"); + Draw_DrawString(10, 10, COLOR_TITLE, "Trucchi"); if (titleId == 0) { - Draw_DrawString(10, 30, COLOR_WHITE, "No suitable title found"); + Draw_DrawString(10, 30, COLOR_WHITE, "Nessun titolo idoneo trovato"); } else { - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "No cheats found for title %016llX", titleId); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Nessun trucco trovato per\n il titolo %016llX", titleId); } Draw_FlushFramebuffer(); @@ -2074,7 +2074,7 @@ void RosalinaMenu_Cheats(void) } if (R_SUCCEEDED(r)) { - Draw_DrawFormattedString(10, 10, COLOR_TITLE, "Cheat list"); + Draw_DrawFormattedString(10, 10, COLOR_TITLE, "Lista Trucchi"); for (s32 i = 0; i < CHEATS_PER_MENU_PAGE && page * CHEATS_PER_MENU_PAGE + i < cheatCount; i++) { @@ -2090,7 +2090,7 @@ void RosalinaMenu_Cheats(void) } else { - Draw_DrawFormattedString(10, 10, COLOR_TITLE, "ERROR: %08lx", r); + Draw_DrawFormattedString(10, 10, COLOR_TITLE, "ERRORE: %08lx", r); Draw_DrawFormattedString(10, 30, COLOR_RED, failureReason); } Draw_FlushFramebuffer(); diff --git a/sysmodules/rosalina/source/menus/config_extra.c b/sysmodules/rosalina/source/menus/config_extra.c index 951ef5e5..dfddc53f 100644 --- a/sysmodules/rosalina/source/menus/config_extra.c +++ b/sysmodules/rosalina/source/menus/config_extra.c @@ -19,30 +19,18 @@ config_extra configExtra = { .suppressLeds = true, .cutSlotPower = false, .cutSleepWifi = false, .homeToRosalina = false, .toggleBottomLcd = false, .turnLedsOffStandby = false, .perGamePlugin = false }; bool configExtraSaved = false; -static const char menuText[8][32] = { - "Automatically suppress LEDs", - "Cut power to TWL Flashcards", - "Cut 3DS WiFi in sleep mode", - "Home button opens Rosalina", - "St+Se toggle bottom LCD in menu", - "Disable led during standby", - "Enable plugin loader per-game", - "Save config. Changes saved" -}; - static char menuDisplay[8][64]; Menu configExtraMenu = { - "Extra config menu", + "Menu configurazione extra", { - { menuText[0], METHOD, .method = &ConfigExtra_SetSuppressLeds }, - { menuText[1], METHOD, .method = &ConfigExtra_SetCutSlotPower }, - { menuText[2], METHOD, .method = &ConfigExtra_SetCutSleepWifi }, - { menuText[3], METHOD, .method = &ConfigExtra_SetHomeToRosalina }, - { menuText[4], METHOD, .method = &ConfigExtra_SetToggleBottomLcd, .visibility = &old2DScheck }, - { menuText[5], METHOD, .method = &ConfigExtra_SetTurnLedsOffStandby }, - { menuText[6], METHOD, .method = &ConfigExtra_SetPerGamePlugin }, - { menuText[7], METHOD, .method = &ConfigExtra_WriteConfigExtra }, + { menuText[0], METHOD, .method = &ConfigExtra_SetSuppressLeds}, + { menuText[1], METHOD, .method = &ConfigExtra_SetCutSlotPower}, + { menuText[2], METHOD, .method = &ConfigExtra_SetCutSleepWifi}, + { menuText[3], METHOD, .method = &ConfigExtra_SetHomeToRosalina}, + { menuText[4], METHOD, .method = &ConfigExtra_SetToggleBottomLcd}, + { menuText[5], METHOD, .method = &ConfigExtra_SetTurnLedsOffStandby}, + { menuText[6], METHOD, .method = &ConfigExtra_WriteConfigExtra}, {}, } }; diff --git a/sysmodules/rosalina/source/menus/debugger_menu.c b/sysmodules/rosalina/source/menus/debugger_menu.c index b531bfed..bacc1868 100644 --- a/sysmodules/rosalina/source/menus/debugger_menu.c +++ b/sysmodules/rosalina/source/menus/debugger_menu.c @@ -32,11 +32,11 @@ #include "menus.h" Menu debuggerMenu = { - "Debugger options menu", + "Menu impostazioni del debugger", { - {"Enable debugger", METHOD, .method = &DebuggerMenu_EnableDebugger}, - {"Disable debugger", METHOD, .method = &DebuggerMenu_DisableDebugger}, - {"Force-debug next application at launch", METHOD, .method = &DebuggerMenu_DebugNextApplicationByForce}, + {"Abilita il debugger", METHOD, .method = &DebuggerMenu_EnableDebugger}, + {"Disabilita il debugger", METHOD, .method = &DebuggerMenu_DisableDebugger}, + {"Forza-debug all'avvio della prossima applicazione", METHOD, .method = &DebuggerMenu_DebugNextApplicationByForce}, {}, }}; @@ -57,25 +57,25 @@ void DebuggerMenu_EnableDebugger(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Debugger options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu impostazioni del debugger"); if (alreadyEnabled) - Draw_DrawString(10, 30, COLOR_WHITE, "Already enabled!"); + Draw_DrawString(10, 30, COLOR_WHITE, "Gia' attivato!"); else if (!isSocURegistered) - Draw_DrawString(10, 30, COLOR_WHITE, "Can't start the debugger before the system has fi-\nnished loading."); + Draw_DrawString(10, 30, COLOR_WHITE, "Impossibile avviare il debugger prima che il sistema abbia \nfinito di caricarsi."); else { - Draw_DrawString(10, 30, COLOR_WHITE, "Starting debugger..."); + Draw_DrawString(10, 30, COLOR_WHITE, "Avviando il debugger..."); if (!done) { res = debuggerEnable(5 * 1000 * 1000 * 1000LL); if (res != 0) - sprintf(buf, "Starting debugger... failed (0x%08lx).", (u32)res); + sprintf(buf, "Avviando il debugger... fallito (0x%08lx).", (u32)res); done = true; } if (res == 0) - Draw_DrawString(10, 30, COLOR_WHITE, "Starting debugger... OK."); + Draw_DrawString(10, 30, COLOR_WHITE, "Avviando il debugger... OK."); else Draw_DrawString(10, 30, COLOR_WHITE, buf); } @@ -93,13 +93,13 @@ void DebuggerMenu_DisableDebugger(void) char buf[65]; if (res != 0) - sprintf(buf, "Failed to disable debugger (0x%08lx).", (u32)res); + sprintf(buf, "Disattivazione del debugger fallita (0x%08lx).", (u32)res); do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Debugger options menu"); - Draw_DrawString(10, 30, COLOR_WHITE, initialized ? (res == 0 ? "Debugger disabled successfully." : buf) : "Debugger not enabled."); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu impostazioni del debugger"); + Draw_DrawString(10, 30, COLOR_WHITE, initialized ? (res == 0 ? "Debugger disattivato con successo." : buf) : "Debugger non abilitato."); Draw_FlushFramebuffer(); Draw_Unlock(); } while (!(waitInput() & KEY_B) && !menuShouldExit); @@ -119,29 +119,29 @@ void DebuggerMenu_DebugNextApplicationByForce(void) switch (res) { case 0: - strcpy(buf, "Operation already performed."); + strcpy(buf, "Operazione gia' esewguita."); break; case 1: - sprintf(buf, "Operation succeeded.\nUse port %d to connect to the next launched\napplication.", nextApplicationGdbCtx->localPort); + sprintf(buf, "Operazione eseguita con successo.\nUsa la porta %d per connettere la prossima\napplicatione avviata.", nextApplicationGdbCtx->localPort); break; case 2: - strcpy(buf, "Failed to allocate a slot.\nPlease unselect a process in the process list first"); + strcpy(buf, "Allocazione di uno slot fallita.\nPerfavore prima deseleziona un processo nella lista processi."); break; default: if (!R_SUCCEEDED(res)) { - sprintf(buf, "Operation failed (0x%08lx).", (u32)res); + sprintf(buf, "Operazione fallita (0x%08lx).", (u32)res); } break; } } else - strcpy(buf, "Debugger not enabled."); + strcpy(buf, "Debugger non abilitato."); do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Debugger options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu impostazioni del debugger"); Draw_DrawString(10, 30, COLOR_WHITE, buf); Draw_FlushFramebuffer(); Draw_Unlock(); diff --git a/sysmodules/rosalina/source/menus/miscellaneous.c b/sysmodules/rosalina/source/menus/miscellaneous.c index e8d13ddf..b855c0e1 100644 --- a/sysmodules/rosalina/source/menus/miscellaneous.c +++ b/sysmodules/rosalina/source/menus/miscellaneous.c @@ -73,16 +73,16 @@ typedef struct DspFirm { } DspFirm; Menu miscellaneousMenu = { - "Miscellaneous options menu", + "Menu opzioni miste", { - { "Switch the hb. title to the current app.", METHOD, .method = &MiscellaneousMenu_SwitchBoot3dsxTargetTitle }, - { "Change the menu combo", METHOD, .method = &MiscellaneousMenu_ChangeMenuCombo }, - { "Start InputRedirection", METHOD, .method = &MiscellaneousMenu_InputRedirection }, - { "Update time and date via NTP", METHOD, .method = &MiscellaneousMenu_UpdateTimeDateNtp }, + { "Cambia il titolo hb. con la seguente app.", METHOD, .method = &MiscellaneousMenu_SwitchBoot3dsxTargetTitle }, + { "Cambia la combo di rosalina", METHOD, .method = &MiscellaneousMenu_ChangeMenuCombo }, + { "Avvia InputRedirection", METHOD, .method = &MiscellaneousMenu_InputRedirection }, + { "Aggiorna data e ora via NTP", METHOD, .method = &MiscellaneousMenu_UpdateTimeDateNtp }, { "Nullify user time offset", METHOD, .method = &MiscellaneousMenu_NullifyUserTimeOffset }, - { "Dump DSP firmware", METHOD, .method = &MiscellaneousMenu_DumpDspFirm }, - // { "Chainloader", METHOD, .method = &chainloader }, - { "Set Play Coins to 300", METHOD, .method = &MiscellaneousMenu_MaxPlayCoins }, + { "Estrai il DSP firmware", METHOD, .method = &MiscellaneousMenu_DumpDspFirm }, + { "Imposta le monete di gioco a 300", METHOD, .method = &MiscellaneousMenu_MaxPlayCoins }, + // { "Chainloader", METHOD, .method = &chainloader }, {}, } }; @@ -115,7 +115,7 @@ void MiscellaneousMenu_SwitchBoot3dsxTargetTitle(void) else { res = -1; - strcpy(failureReason, "no suitable process found"); + strcpy(failureReason, "nessun processo idoneo trovato"); } } else @@ -137,9 +137,9 @@ void MiscellaneousMenu_SwitchBoot3dsxTargetTitle(void) Luma_SharedConfig->hbldr_3dsx_tid = newTid; if (compareTids(newTid, HBLDR_DEFAULT_3DSX_TID)) - miscellaneousMenu.items[0].title = "Switch the hb. title to the current app."; + miscellaneousMenu.items[0].title = "Cambia il titolo hb. con la seguente app."; else - miscellaneousMenu.items[0].title = "Switch the hb. title to " HBLDR_DEFAULT_3DSX_TITLE_NAME; + miscellaneousMenu.items[0].title = "Cambia il titolo hb. a " HBLDR_DEFAULT_3DSX_TITLE_NAME; Draw_Lock(); Draw_ClearFramebuffer(); @@ -148,12 +148,12 @@ void MiscellaneousMenu_SwitchBoot3dsxTargetTitle(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); if(R_SUCCEEDED(res)) - Draw_DrawString(10, 30, COLOR_WHITE, "Operation succeeded."); + Draw_DrawString(10, 30, COLOR_WHITE, "Operazione eseguita con successo."); else - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operation failed (%s).", failureReason); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operazione fallita (%s).", failureReason); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -174,10 +174,10 @@ void MiscellaneousMenu_ChangeMenuCombo(void) LumaConfig_ConvertComboToString(comboStrOrig, menuCombo); Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); - posY = Draw_DrawFormattedString(10, 30, COLOR_WHITE, "The current menu combo is: %s", comboStrOrig); - posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Please enter the new combo:"); + posY = Draw_DrawFormattedString(10, 30, COLOR_WHITE, "La combo di rosalina corrente e': %s", comboStrOrig); + posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Perfavore inserisci la nuova combo:"); menuCombo = waitCombo(); LumaConfig_ConvertComboToString(comboStr, menuCombo); @@ -185,12 +185,12 @@ void MiscellaneousMenu_ChangeMenuCombo(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); - posY = Draw_DrawFormattedString(10, 30, COLOR_WHITE, "The current menu combo is: %s", comboStrOrig); - posY = Draw_DrawFormattedString(10, posY + SPACING_Y, COLOR_WHITE, "Please enter the new combo: %s", comboStr) + SPACING_Y; + posY = Draw_DrawFormattedString(10, 30, COLOR_WHITE, "La combo di rosalina corrente e': %s", comboStrOrig); + posY = Draw_DrawFormattedString(10, posY + SPACING_Y, COLOR_WHITE, "Perfavore inserisci la nuova combo: %s", comboStr) + SPACING_Y; - posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Successfully changed the menu combo."); + posY = Draw_DrawString(10, posY + SPACING_Y, COLOR_WHITE, "Combo cambiata con successo."); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -211,9 +211,9 @@ void MiscellaneousMenu_InputRedirection(void) { res = InputRedirection_Disable(5 * 1000 * 1000 * 1000LL); if(res != 0) - sprintf(buf, "Failed to stop InputRedirection (0x%08lx).", (u32)res); + sprintf(buf, "Fallita l'interruzione di InputRedirection (0x%08lx).", (u32)res); else - miscellaneousMenu.items[2].title = "Start InputRedirection"; + miscellaneousMenu.items[2].title = "Avvia l' InputRedirection"; } else { @@ -241,13 +241,13 @@ void MiscellaneousMenu_InputRedirection(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); if(!wasEnabled && cantStart) - Draw_DrawString(10, 30, COLOR_WHITE, "Can't start the input redirection before the system\nhas finished loading."); + Draw_DrawString(10, 30, COLOR_WHITE, "Impossibile avviare input redirection prima che il sistema abbia\nhas finito di caricarsi."); else if(!wasEnabled) { - Draw_DrawString(10, 30, COLOR_WHITE, "Starting InputRedirection..."); + Draw_DrawString(10, 30, COLOR_WHITE, "Avviando InputRedirection..."); if(!done) { res = InputRedirection_DoOrUndoPatches(); @@ -272,15 +272,15 @@ void MiscellaneousMenu_InputRedirection(void) } if(res != 0) - sprintf(buf, "Starting InputRedirection... failed (0x%08lx).", (u32)res); + sprintf(buf, "Avviando InputRedirection... fallita (0x%08lx).", (u32)res); else - miscellaneousMenu.items[2].title = "Stop InputRedirection"; + miscellaneousMenu.items[2].title = "Interrompi InputRedirection"; done = true; } if(res == 0) - Draw_DrawString(10, 30, COLOR_WHITE, "Starting InputRedirection... OK."); + Draw_DrawString(10, 30, COLOR_WHITE, "Avviando InputRedirection... OK."); else Draw_DrawString(10, 30, COLOR_WHITE, buf); } @@ -289,16 +289,16 @@ void MiscellaneousMenu_InputRedirection(void) if(res == 0) { u32 posY = 30; - posY = Draw_DrawString(10, posY, COLOR_WHITE, "InputRedirection stopped successfully.\n\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "InputRedirection interrota con successo.\n\n"); if (isN3DS) { posY = Draw_DrawString( 10, posY, COLOR_WHITE, - "This might cause a key press to be repeated in\n" - "Home Menu for no reason.\n\n" - "Just pressing ZL/ZR on the console is enough to fix\nthis.\n" + "Questo puo' essere causa per aver premuto un tasto e averlo ripetuto nel\n" + "Menu Home senza ragione.\n\n" + "Solamente premendo ZL/ZR sulla console e' necessario per risolvere\nquesto.\n" ); } } @@ -340,7 +340,7 @@ void MiscellaneousMenu_UpdateTimeDateNtp(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); absOffset = utcOffset - 12; absOffset = absOffset < 0 ? -absOffset : absOffset; @@ -377,25 +377,20 @@ void MiscellaneousMenu_UpdateTimeDateNtp(void) } } - Draw_Lock(); - Draw_ClearFramebuffer(); - Draw_FlushFramebuffer(); - Draw_Unlock(); - do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); absOffset = utcOffset; absOffset = absOffset < 0 ? -absOffset : absOffset; - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Current UTC offset: %c%02d", utcOffset < 0 ? '-' : '+', absOffset); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "UTC offset corrente: %c%02d", utcOffset < 0 ? '-' : '+', absOffset); if (cantStart) - Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Can't sync time/date before the system\nhas finished loading.") + SPACING_Y; + Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Impossibile sincr. la data/ora prima che il sistema\nabbia finito di caricarsi.") + SPACING_Y; else if (R_FAILED(res)) - Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Operation failed (%08lx).", (u32)res) + SPACING_Y; + Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Operazione fallita (%08lx).", (u32)res) + SPACING_Y; else - Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Time/date updated successfully.") + SPACING_Y; + Draw_DrawFormattedString(10, posY + 2 * SPACING_Y, COLOR_WHITE, "Data/ora aggiornate con successo.") + SPACING_Y; Draw_FlushFramebuffer(); Draw_Unlock(); @@ -415,11 +410,11 @@ void MiscellaneousMenu_NullifyUserTimeOffset(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); if(R_SUCCEEDED(res)) - Draw_DrawString(10, 30, COLOR_WHITE, "Operation succeeded.\n\nPlease reboot to finalize the changes."); + Draw_DrawString(10, 30, COLOR_WHITE, "Operazione eseguita con successo.\n\nRiavvia la console per finalizzare i cambiamenti."); else - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operation failed (0x%08lx).", res); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operazione fallita (0x%08lx).", res); Draw_FlushFramebuffer(); Draw_Unlock(); } @@ -495,13 +490,13 @@ void MiscellaneousMenu_DumpDspFirm(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); if(R_SUCCEEDED(res)) - Draw_DrawString(10, 30, COLOR_WHITE, "DSP firm. successfully written to /3ds/dspfirm.cdc\non the SD card."); + Draw_DrawString(10, 30, COLOR_WHITE, "DSP firm. scritto con successo in /3ds/dspfirm.cdc\nsulla scheda SD."); else Draw_DrawFormattedString( 10, 30, COLOR_WHITE, - "Operation failed (0x%08lx).\n\nMake sure that Home Menu is running and that your\nSD card is inserted.", + "Operazione fallita (0x%08lx).\n\nAssicurati che l'home menu sia in esecuzione e che la\nscheda SD sia inserita.", res ); Draw_FlushFramebuffer(); @@ -564,13 +559,13 @@ void MiscellaneousMenu_MaxPlayCoins(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Miscellaneous options menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu opzioni miste"); if(R_SUCCEEDED(res)) - Draw_DrawString(10, 30, COLOR_WHITE, "Play Coins successfully set to 300."); + Draw_DrawString(10, 30, COLOR_WHITE, "Monete di gioco impostate correttamente a 300."); else Draw_DrawFormattedString(10, 30, COLOR_WHITE, - "Error occured while setting Play Coins (0x%08lx).", + "Si e' verificato un errore durante il settaggio delle monete di gioco (0x%08lx).", res ); diff --git a/sysmodules/rosalina/source/menus/n3ds.c b/sysmodules/rosalina/source/menus/n3ds.c index 24d06329..0163849b 100644 --- a/sysmodules/rosalina/source/menus/n3ds.c +++ b/sysmodules/rosalina/source/menus/n3ds.c @@ -47,12 +47,12 @@ static bool qtmCalRead = false; Menu N3DSMenu = { "New 3DS menu", { - { "Enable L2 cache", METHOD, .method = &N3DSMenu_EnableDisableL2Cache }, + { "Abilita la L2 cache", METHOD, .method = &N3DSMenu_EnableDisableL2Cache }, { clkRateBuf, METHOD, .method = &N3DSMenu_ChangeClockRate }, { new3dsMenuConfigBuf, METHOD, .method = &N3DSMenu_UpdateConfig, .visibility = ¤tTitleAvailable }, - { "Temporarily disable Super-Stable 3D", METHOD, .method = &N3DSMenu_ToggleSs3d, .visibility = &N3DSMenu_CheckNotN2dsXl }, + { "Disabilita temporaneamente il SS3D", METHOD, .method = &N3DSMenu_ToggleSs3d, .visibility = &N3DSMenu_CheckNotN2dsXl }, { "Test parallax barrier positions", METHOD, .method = &N3DSMenu_TestBarrierPositions, .visibility = &N3DSMenu_CheckNotN2dsXl }, - { "Super-Stable 3D calibration", METHOD, .method = &N3DSMenu_Ss3dCalibration, .visibility = &N3DSMenu_CheckNotN2dsXl }, + { "Super-Stable 3D: calibrazione", METHOD, .method = &N3DSMenu_Ss3dCalibration, .visibility = &N3DSMenu_CheckNotN2dsXl }, {}, } }; @@ -81,10 +81,10 @@ void N3DSMenu_UpdateStatus(void) svcGetSystemInfo(&higherClkRate, 0x10001, 1); svcGetSystemInfo(&L2CacheEnabled, 0x10001, 2); - N3DSMenu.items[0].title = L2CacheEnabled ? "Disable L2 cache" : "Enable L2 cache"; - sprintf(clkRateBuf, "Set clock rate to %luMHz", clkRate != 268 ? 268 : (u32)higherClkRate); + N3DSMenu.items[0].title = L2CacheEnabled ? "Disabilita la L2 cache" : "Abilita la L2 cache"; + sprintf(clkRateBuf, "Imposta il clock rate a %luMHz", clkRate != 268 ? 268 : (u32)higherClkRate); - sprintf(new3dsMenuBuf, "New 3DS settings: [%luMHz%s", clkRate == 268 ? 268 : (u32)higherClkRate, L2CacheEnabled ? " & L2]" : "]"); + sprintf(new3dsMenuBuf, "Impostazioni New3DS: [%luMHz%s", clkRate == 268 ? 268 : (u32)higherClkRate, L2CacheEnabled ? " & L2]" : "]"); rosalinaMenu.items[8].title = new3dsMenuBuf; @@ -220,7 +220,7 @@ void N3DSMenu_UpdateConfig(void) void N3DSMenu_UpdateConfigStatus(void) { - sprintf(new3dsMenuConfigBuf, "Auto run current title as N3DS: %s", currentTitleUseN3DS ? "[true]" : "[false]"); + sprintf(new3dsMenuConfigBuf, "Esecuzione automatica titolo corrente come N3DS: %s", currentTitleUseN3DS ? "[true]" : "[false]"); } void N3DSMenu_ToggleSs3d(void) diff --git a/sysmodules/rosalina/source/menus/process_list.c b/sysmodules/rosalina/source/menus/process_list.c index eb2e962d..4759c0b2 100644 --- a/sysmodules/rosalina/source/menus/process_list.c +++ b/sysmodules/rosalina/source/menus/process_list.c @@ -110,8 +110,8 @@ static void ProcessListMenu_DumpMemory(const char *name, void *start, u32 size) #define TRY(expr) if(R_FAILED(res = (expr))) goto end; Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Memory dump"); - const char * wait_message = "Please wait, this may take a while..."; + Draw_DrawString(10, 10, COLOR_TITLE, "Dump di memoria"); + const char * wait_message = "Prego attendi, questo puo' richiedere tanto tempo..."; Draw_DrawString(10, 30, COLOR_WHITE, wait_message); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -198,17 +198,17 @@ static void ProcessListMenu_DumpMemory(const char *name, void *start, u32 size) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Memory dump"); + Draw_DrawString(10, 10, COLOR_TITLE, "Dump di memoria"); Draw_DrawFormattedString(10, 30, COLOR_WHITE, "%*s", strlen(wait_message), " "); if(R_FAILED(res)) { - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operation failed (0x%.8lx).", res); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Operazione fallita (0x%.8lx).", res); } else { - Draw_DrawString(10, 30, COLOR_WHITE, "Operation succeeded."); + Draw_DrawString(10, 30, COLOR_WHITE, "Operazione eseguita con successo."); } - Draw_DrawString(10, 30+SPACING_Y, COLOR_WHITE, "Press B to go back."); + Draw_DrawString(10, 30+SPACING_Y, COLOR_WHITE, "Premi B per tornare indietro."); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -406,29 +406,29 @@ static void ProcessListMenu_MemoryViewer(const ProcessInfo *info) void drawMenu(void) { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Memory viewer"); + Draw_DrawString(10, 10, COLOR_TITLE, "Visualizzatore memoria"); // Instructions const u32 instructionsY = 30; u32 viewerY = instructionsY + SPACING_Y + 6; - Draw_DrawString(10, instructionsY, COLOR_WHITE, "D-PAD to move, X to jump, Y to search, A to edit."); + Draw_DrawString(10, instructionsY, COLOR_WHITE, "D-PAD per muovere, X per skippare, Y per cercare, A per modificare."); switch(menuMode) { case MENU_MODE_NORMAL: - Draw_DrawString(10 + SPACING_X * 9, instructionsY, COLOR_GREEN, "move"); + Draw_DrawString(10 + SPACING_X * 9, instructionsY, COLOR_GREEN, "muovi"); break; case MENU_MODE_GOTO: - Draw_DrawString(10 + SPACING_X * 20, instructionsY, COLOR_GREEN, "jump"); + Draw_DrawString(10 + SPACING_X * 20, instructionsY, COLOR_GREEN, "salta"); break; case MENU_MODE_SEARCH: - Draw_DrawString(10 + SPACING_X * 31, instructionsY, COLOR_GREEN, "search"); + Draw_DrawString(10 + SPACING_X * 31, instructionsY, COLOR_GREEN, "cerca"); break; default: break; } if(editing) - Draw_DrawString(10 + SPACING_X * 44, instructionsY, COLOR_RED, "edit"); + Draw_DrawString(10 + SPACING_X * 44, instructionsY, COLOR_RED, "modifica"); // ------------------------------------------ // Location @@ -436,17 +436,18 @@ static void ProcessListMenu_MemoryViewer(const ProcessInfo *info) viewerY += SPACING_Y; if(codeAvailable && heapAvailable) { - Draw_DrawString(10, infoY, COLOR_WHITE, "Press L or R to switch between heap and code."); + Draw_DrawString(10, infoY, COLOR_WHITE, "Premi L o R per scambiare tra i dati e il codice."); if((u32)menus[MENU_MODE_NORMAL].buf == heapDestAddress) - Draw_DrawString(10 + SPACING_X * 31, infoY, COLOR_GREEN, "heap"); + Draw_DrawString(10 + SPACING_X * 31, infoY, COLOR_GREEN, "dati"); if((u32)menus[MENU_MODE_NORMAL].buf == codeDestAddress) - Draw_DrawString(10 + SPACING_X * 40, infoY, COLOR_GREEN, "code"); + Draw_DrawString(10 + SPACING_X * 40, infoY, COLOR_GREEN, "codice"); } else { - Draw_DrawString(10, infoY, COLOR_WHITE, "SELECT to dump memory, START to toggle ASCII view."); + Draw_DrawString(10, infoY, COLOR_WHITE, "SELECT per fare il dump di memoria, START per impostare la visualizzazione ASCII."); if(ascii) Draw_DrawString(10 + SPACING_X * 39, infoY, COLOR_GREEN, "ASCII"); + } // ------------------------------------------ @@ -706,7 +707,7 @@ void RosalinaMenu_ProcessList(void) Draw_Lock(); if(page != pagePrev) Draw_ClearFramebuffer(); - Draw_DrawString(10, 10, COLOR_TITLE, "Process list"); + Draw_DrawString(10, 10, COLOR_TITLE, "Lista processi"); if(gdbServer.super.running) { diff --git a/sysmodules/rosalina/source/menus/quick_switchers.c b/sysmodules/rosalina/source/menus/quick_switchers.c index 8bba3ca1..b7156d16 100644 --- a/sysmodules/rosalina/source/menus/quick_switchers.c +++ b/sysmodules/rosalina/source/menus/quick_switchers.c @@ -40,13 +40,13 @@ static char g_menuDisplay[NO_OF_SWITCHABLES][266]; u32 entryCount = 0; Menu quickSwitchersMenu = { - "Quick-Switchers menu", + "Menu Scambio rapido", { { g_switchables[0].menuText, METHOD, .method = &QuickSwitchers_TwlBg}, { g_switchables[1].menuText, METHOD, .method = &QuickSwitchers_Widescreen}, { g_switchables[2].menuText, METHOD, .method = &QuickSwitchers_AgbBg}, { g_switchables[3].menuText, METHOD, .method = &QuickSwitchers_OpenAgb}, - { "Revert TWL widescreen", METHOD, .method = &QuickSwitchers_RevertWidescreen}, + { "Ripristina lo schermo largo TWL", METHOD, .method = &QuickSwitchers_RevertWidescreen}, {}, } }; @@ -92,7 +92,7 @@ void QuickSwitchers_DisplayFiles(void) Draw_Lock(); Draw_DrawFormattedString(10, 10, COLOR_TITLE, "%s Quick-Switcher - by Nutez", g_switchables[g_switchablesIndex].menuText); - Draw_DrawFormattedString(10, 30, COLOR_WHITE, "No files found"); + Draw_DrawFormattedString(10, 30, COLOR_WHITE, "Nessun file trovato"); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -123,7 +123,7 @@ void QuickSwitchers_DisplayFiles(void) } else { - Draw_DrawFormattedString(10, 10, COLOR_TITLE, "ERROR: %08lx", r); + Draw_DrawFormattedString(10, 10, COLOR_TITLE, "ERRORE: %08lx", r); } Draw_FlushFramebuffer(); Draw_Unlock(); @@ -318,17 +318,17 @@ void QuickSwitchers_RevertWidescreen(void) { if(R_SUCCEEDED(FSUSER_RenameFile(sdmcArchive, fsMakePath(PATH_ASCII, twlbgBakPath), sdmcArchive, fsMakePath(PATH_ASCII, twlbgPath)))) // renames chosen file to the required name for external programme { - item->title = "Revert TWL widescreen: [Succeeded]"; + item->title = "Ripristina lo schermo largo TWL: [Successo]"; } else { FSUSER_RenameFile(sdmcArchive, fsMakePath(PATH_ASCII, widescreenPath), sdmcArchive, fsMakePath(PATH_ASCII, twlbgPath)); - item->title = "Revert TWL widescreen: [Unneeded]"; + item->title = "Ripristina lo schermo largo TWL: [Non necessario]"; } } else { - item->title = "Revert TWL widescreen: [Unneeded]"; + item->title = "Ripristina lo schermo largo TWL: [Non necessario]"; } FSUSER_CloseArchive(sdmcArchive); diff --git a/sysmodules/rosalina/source/menus/screen_filters.c b/sysmodules/rosalina/source/menus/screen_filters.c index f03e3500..b6812932 100644 --- a/sysmodules/rosalina/source/menus/screen_filters.c +++ b/sysmodules/rosalina/source/menus/screen_filters.c @@ -196,7 +196,7 @@ static void ScreenFiltersMenu_SetColorCurveCorrection(bool top, u8 colorCurveCor } Menu screenFiltersMenu = { - "Screen filters menu", + "Menu Filtri Schermi", { { "[6500K] Default temperature", METHOD, .method = &ScreenFiltersMenu_SetDefault }, { "[10000K] Aquarium", METHOD, .method = &ScreenFiltersMenu_SetAquarium }, @@ -405,7 +405,7 @@ static u32 ScreenFiltersMenu_AdvancedConfigurationHelper(const ScreenFilter *fil char buf[64]; Draw_DrawCharacter(10, posY, COLOR_TITLE, pos == offset++ ? '>' : ' '); - posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Temperature: %12dK \n", filter->cct); + posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Temperatura: %12dK \n", filter->cct); floatToString(buf, filter->gamma, 2, true); Draw_DrawCharacter(10, posY, COLOR_TITLE, pos == offset++ ? '>' : ' '); @@ -413,14 +413,14 @@ static u32 ScreenFiltersMenu_AdvancedConfigurationHelper(const ScreenFilter *fil floatToString(buf, filter->contrast, 2, true); Draw_DrawCharacter(10, posY, COLOR_TITLE, pos == offset++ ? '>' : ' '); - posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Contrast: %13s \n", buf); + posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Contrasto: %13s \n", buf); floatToString(buf, filter->brightness, 2, true); Draw_DrawCharacter(10, posY, COLOR_TITLE, pos == offset++ ? '>' : ' '); - posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Brightness: %13s \n", buf); + posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Luminosita': %13s \n", buf); Draw_DrawCharacter(10, posY, COLOR_TITLE, pos == offset++ ? '>' : ' '); - posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Invert: %13s \n", filter->invert ? "true" : "false"); + posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "Inverti i colori: %13s \n", filter->invert ? "true" : "false"); return posY; } @@ -439,17 +439,17 @@ void ScreenFiltersMenu_AdvancedConfiguration(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Screen filters menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu Filtro schermi"); posY = 30; - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Use left/right to increase/decrease the sel. value.\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Hold R to change the value faster.\n"); - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Update both screens: %s (L to toggle) \n", sync ? "yes" : "no") + SPACING_Y; + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Usa Sinistra/Destra per Aument./Dimin. il val. selez.\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Mantieni R per cambiare il val. velocemente\n"); + posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Aggiorna gli schermi: %s (L per impostare) \n", sync ? "si" : "no") + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Top screen:\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Schermo superiore:\n"); posY = ScreenFiltersMenu_AdvancedConfigurationHelper(&topScreenFilter, 0, pos, posY) + SPACING_Y; - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Bottom screen:\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Schermo inferiore:\n"); posY = ScreenFiltersMenu_AdvancedConfigurationHelper(&bottomScreenFilter, 5, pos, posY) + SPACING_Y; input = waitInputWithTimeoutEx(&held, -1); diff --git a/sysmodules/rosalina/source/menus/sysconfig.c b/sysmodules/rosalina/source/menus/sysconfig.c index 3f43ce9a..5f98120b 100644 --- a/sysmodules/rosalina/source/menus/sysconfig.c +++ b/sysmodules/rosalina/source/menus/sysconfig.c @@ -46,18 +46,18 @@ #include "luminance.h" Menu sysconfigMenu = { - "System configuration menu", + "Menu configurazione di sistema", { - { "Control Wireless connection", METHOD, .method = &SysConfigMenu_ControlWifi }, - { "Toggle LEDs", METHOD, .method = &SysConfigMenu_ToggleLEDs }, - { "Toggle Wireless", METHOD, .method = &SysConfigMenu_ToggleWireless }, - { "Toggle rehid folder: ", METHOD, .method = &SysConfigMenu_ToggleRehidFolder }, - { "Toggle Power Button", METHOD, .method=&SysConfigMenu_TogglePowerButton }, - { "Toggle power to card slot", METHOD, .method=&SysConfigMenu_ToggleCardIfPower }, - { "Permanent Brightness Recalibration", METHOD, .method = &Luminance_RecalibrateBrightnessDefaults }, - { "Software Volume Control", METHOD, .method = &AdjustVolume }, - { "Extra Config...", MENU, .menu = &configExtraMenu }, - { "Tips", METHOD, .method = &SysConfigMenu_Tip }, + { "Controlla la connessione wireless", METHOD, .method = &SysConfigMenu_ControlWifi }, + { "Attiva/Disattiva LED", METHOD, .method = &SysConfigMenu_ToggleLEDs }, + { "Attiva/Disattiva Wireless", METHOD, .method = &SysConfigMenu_ToggleWireless }, + { "Attiva/Disattiva la cartella rehid: ", METHOD, .method = &SysConfigMenu_ToggleRehidFolder }, + { "Attiva/Disattiva il tasto Power", METHOD, .method=&SysConfigMenu_TogglePowerButton }, + { "Attiva/Disattiva power allo slot delle schede", METHOD, .method=&SysConfigMenu_ToggleCardIfPower}, + { "Ricalibrazione luminosita' schermo permanente", METHOD, .method = &Luminance_RecalibrateBrightnessDefaults }, + { "Controllo volume software", METHOD, .method = &AdjustVolume }, + { "Config. extra...", MENU, .menu = &configExtraMenu }, + { "Consigli", METHOD, .method = &SysConfigMenu_Tip }, {}, } }; @@ -76,12 +76,11 @@ void SysConfigMenu_ToggleLEDs(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - Draw_DrawString(10, 30, COLOR_WHITE, "Press A to toggle, press B to go back."); - Draw_DrawString(10, 50, COLOR_RED, "WARNING:"); - Draw_DrawString(10, 60, COLOR_WHITE, " * Entering sleep mode will reset the LED state!"); - Draw_DrawString(10, 70, COLOR_WHITE, " * LEDs cannot be toggled when the battery is low!"); - + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + Draw_DrawString(10, 30, COLOR_WHITE, "Press A per attivare/disattivare, premi B per tornare indietro."); + Draw_DrawString(10, 50, COLOR_RED, "ATTENZIONE:"); + Draw_DrawString(10, 60, COLOR_WHITE, " * Entrare in modalita' riposo resettera' lo stato dei LED!"); + Draw_DrawString(10, 70, COLOR_WHITE, " * I LED non possono essere attivati quando la batteria e' bassa!"); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -109,22 +108,22 @@ void SysConfigMenu_ToggleWireless(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - Draw_DrawString(10, 30, COLOR_WHITE, "Press A to toggle, press B to go back."); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + Draw_DrawString(10, 30, COLOR_WHITE, "Premi A per Attivare/Disattivare, premi B per tornare indietro."); u8 wireless = (*(vu8 *)((0x10140000 | (1u << 31)) + 0x180)); if(nwmRunning) { - Draw_DrawString(10, 50, COLOR_WHITE, "Current status:"); - Draw_DrawString(100, 50, (wireless ? COLOR_GREEN : COLOR_RED), (wireless ? " ON " : " OFF")); + Draw_DrawString(10, 50, COLOR_WHITE, "Stato attuale:"); + Draw_DrawString(100, 50, (wireless ? COLOR_GREEN : COLOR_RED), (wireless ? " ACCESO " : " SPENTO ")); } else { - Draw_DrawString(10, 50, COLOR_RED, "NWM isn't running."); - Draw_DrawString(10, 60, COLOR_RED, "If you're currently on Test Menu,"); - Draw_DrawString(10, 70, COLOR_RED, "exit then press R+RIGHT to toggle the WiFi."); - Draw_DrawString(10, 80, COLOR_RED, "Otherwise, simply exit and wait a few seconds."); + Draw_DrawString(10, 50, COLOR_RED, "NWM non e' in esecuzione."); + Draw_DrawString(10, 60, COLOR_RED, "Se sei attualmente nel Menu di Test,"); + Draw_DrawString(10, 70, COLOR_RED, "esci e premi R+DESTRA per attivare/disattivare il wifi."); + Draw_DrawString(10, 80, COLOR_RED, "Altrimenti, esci e aspetta qualche secondo."); } Draw_FlushFramebuffer(); @@ -150,12 +149,12 @@ void SysConfigMenu_UpdateStatus(bool control) if(control) { - item->title = "Control Wireless connection"; + item->title = "Controlla la connessione wireless"; item->method = &SysConfigMenu_ControlWifi; } else { - item->title = "Disable forced wireless connection"; + item->title = "Disabilita la connessione wireless forzata"; item->method = &SysConfigMenu_DisableForcedWifiConnection; } } @@ -196,10 +195,9 @@ static bool SysConfigMenu_ForceWifiConnection(u32 slot) char infoString[80] = {0}; u32 infoStringColor = forcedConnection ? COLOR_GREEN : COLOR_RED; if(forcedConnection) - sprintf(infoString, "Succesfully forced a connection to: %s", ssid); + sprintf(infoString, "Connessione forzata con successo a: %s", ssid); else - sprintf(infoString, "Failed to connect to slot %d", (int)slot + 1); - + sprintf(infoString, "Fallito il tent. di connes. allo slot: %d", (int)slot + 1); Draw_Lock(); Draw_ClearFramebuffer(); Draw_FlushFramebuffer(); @@ -208,10 +206,9 @@ static bool SysConfigMenu_ForceWifiConnection(u32 slot) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); Draw_DrawString(10, 30, infoStringColor, infoString); - Draw_DrawString(10, 40, COLOR_WHITE, "Press B to go back."); - + Draw_DrawString(10, 40, COLOR_WHITE, "Premi B per tornare indietro."); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -241,11 +238,11 @@ void SysConfigMenu_TogglePowerButton(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - Draw_DrawString(10, 30, COLOR_WHITE, "Press A to toggle, press B to go back."); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + Draw_DrawString(10, 30, COLOR_WHITE, "Premi A per Attivare/Disattivare, Premi B per tornare indietro."); - Draw_DrawString(10, 50, COLOR_WHITE, "Current status:"); - Draw_DrawString(100, 50, (((mcuIRQMask & 0x00000001) == 0x00000001) ? COLOR_RED : COLOR_GREEN), (((mcuIRQMask & 0x00000001) == 0x00000001) ? " DISABLED" : " ENABLED ")); + Draw_DrawString(10, 50, COLOR_WHITE, "Stato attuale:"); + Draw_DrawString(100, 50, (((mcuIRQMask & 0x00000001) == 0x00000001) ? COLOR_RED : COLOR_GREEN), (((mcuIRQMask & 0x00000001) == 0x00000001) ? " DISABILITATO" : " ABILITATO ")); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -282,7 +279,7 @@ void SysConfigMenu_ControlWifi(void) if (R_SUCCEEDED(ACI_LoadNetworkSetting(i))) ACI_GetNetworkWirelessEssidSecuritySsid(ssids[i]); else - strcpy(ssids[i], "(not configured)"); + strcpy(ssids[i], "(non configurato)"); } if (R_SUCCEEDED(resInit)) acExit(); @@ -290,8 +287,8 @@ void SysConfigMenu_ControlWifi(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Press A to force a connection to slot, B to go back\n\n"); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu Configurazione di sistema"); + u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Premi A per forzare la connessione per uno slot, Premi B per annullare\n\n"); for (u32 i = 0; i < 3; i++) { @@ -344,9 +341,8 @@ void SysConfigMenu_DisableForcedWifiConnection(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - Draw_DrawString(10, 30, COLOR_WHITE, "Forced connection successfully disabled.\nNote: auto-connection may remain broken."); - + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + Draw_DrawString(10, 30, COLOR_WHITE, "Connessione forzata disabilitata con successo.\nNota:La connessione automatica puo' rimanere rotta."); u32 pressed = waitInputWithTimeout(1000); if(pressed & KEY_B) return; @@ -370,11 +366,11 @@ void SysConfigMenu_ToggleCardIfPower(void) if (R_FAILED(res)) cardIfStatus = false; Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Press A to toggle, press B to go back.\n\n"); - posY = Draw_DrawString(10, posY, COLOR_WHITE, "Inserting or removing a card will reset the status,\nand you'll need to reinsert the cart if you want to\nplay it.\n\n"); - Draw_DrawString(10, posY, COLOR_WHITE, "Current status:"); - Draw_DrawString(100, posY, !cardIfStatus ? COLOR_RED : COLOR_GREEN, !cardIfStatus ? " DISABLED" : " ENABLED "); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Premi A peer attivare/disattivare, premi B per tornare indietro.\n\n"); + posY = Draw_DrawString(10, posY, COLOR_WHITE, "Inserire o rimuovere una scheda resettera' lo stato,\ne dovrai reinserire la scheda se vorrai\ngiocarci.\n\n"); + Draw_DrawString(10, posY, COLOR_WHITE, "Stato attuale:"); + Draw_DrawString(100, posY, !cardIfStatus ? COLOR_RED : COLOR_GREEN, !cardIfStatus ? " DISABILITATO " : " ABILITATO "); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -407,11 +403,11 @@ void SysConfigMenu_ToggleRehidFolder(void) if(R_SUCCEEDED(FSUSER_RenameDirectory(sdmcArchive, fsMakePath(PATH_ASCII, rehidPath), sdmcArchive, fsMakePath(PATH_ASCII, rehidOffPath)))) { - item->title = "Toggle rehid folder: [Disabled]"; + item->title = "Attiva/Disattiva cartella rehid: [Disabilitata]"; } else if(R_SUCCEEDED(FSUSER_RenameDirectory(sdmcArchive, fsMakePath(PATH_ASCII, rehidOffPath), sdmcArchive, fsMakePath(PATH_ASCII, rehidPath)))) { - item->title = "Toggle rehid folder: [Enabled]"; + item->title = "Attiva/Disattiva cartella rehid: [Abilitata]"; } FSUSER_CloseArchive(sdmcArchive); @@ -430,11 +426,11 @@ void SysConfigMenu_UpdateRehidFolderStatus(void) if(R_SUCCEEDED(FSUSER_OpenDirectory(&dir, sdmcArchive, fsMakePath(PATH_ASCII, rehidPath)))) { FSDIR_Close(dir); - item->title = "Toggle rehid folder: [Enabled]"; + item->title = "Attiva/Disattiva cartella rehid: [Abilitata]"; } else { - item->title = "Toggle rehid folder: [Disabled]"; + item->title = "Attiva/Disattiva cartella rehid: [Disabilitata]"; } FSUSER_CloseArchive(sdmcArchive); @@ -451,18 +447,18 @@ void SysConfigMenu_Tip(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Tips"); - Draw_DrawString(10, 30, COLOR_WHITE, "On Rosalina menu:"); - Draw_DrawString(10, 50, COLOR_WHITE, " * Press start to toggle Wifi"); - Draw_DrawString(10, 60, COLOR_WHITE, " * Press select to toggle LEDs (cannot be toggled"); - Draw_DrawString(10, 70, COLOR_WHITE, " if battery is low or if the system is put on"); - Draw_DrawString(10, 80, COLOR_WHITE, " sleep mode)"); - Draw_DrawString(10, 90, COLOR_WHITE, " * Press Y to force blue led (allows bypassing"); - Draw_DrawString(10, 100, COLOR_WHITE, " toggle led restriction on low battery)"); - Draw_DrawString(10, 120, COLOR_WHITE, " While system is running:"); - Draw_DrawString(10, 140, COLOR_WHITE, " * Press A + B + X + Y + Start to instant reboot"); - Draw_DrawString(10, 150, COLOR_WHITE, " * Press Start + Select to toggle bottom screen"); - Draw_DrawString(10, 170, COLOR_WHITE, " *Use ExtraConfig Menu to set preferences in luma"); + Draw_DrawString(10, 10, COLOR_TITLE, "Consigli"); + Draw_DrawString(10, 30, COLOR_WHITE, "Sul menu Rosalina:"); + Draw_DrawString(10, 50, COLOR_WHITE, " * Premi start per attivare/disattivare il Wifi"); + Draw_DrawString(10, 60, COLOR_WHITE, " * Premi select per attivare/disattivare i LEDs (non possono essere attivati"); + Draw_DrawString(10, 70, COLOR_WHITE, " se la batteria e' bassa o il sistema e'"); + Draw_DrawString(10, 80, COLOR_WHITE, " in mod. riposo)"); + Draw_DrawString(10, 90, COLOR_WHITE, " * Premi Y per forzare il led blu (accetta il bypass della"); + Draw_DrawString(10, 100, COLOR_WHITE, " restrizione dell'attivazione con batteria bassa)"); + Draw_DrawString(10, 120, COLOR_WHITE, " Mentre il Sistema e' in esecuzione:"); + Draw_DrawString(10, 140, COLOR_WHITE, " * Premi A + B + X + Y + Start per riavviare istantaneamente"); + Draw_DrawString(10, 150, COLOR_WHITE, " * Premi Start + Select per attivare/disattivare lo schermo inf."); + Draw_DrawString(10, 170, COLOR_WHITE, " *Usa l'ExtraConfigMenu per vedere piu' impostazioni su luma"); Draw_FlushFramebuffer(); Draw_Unlock(); diff --git a/sysmodules/rosalina/source/plugin/display.c b/sysmodules/rosalina/source/plugin/display.c index 5b954c69..54679362 100644 --- a/sysmodules/rosalina/source/plugin/display.c +++ b/sysmodules/rosalina/source/plugin/display.c @@ -3,7 +3,7 @@ #include "draw.h" #include -static const char *__press_b_to_close = "Press [B] to close"; +static const char *__press_b_to_close = "Premi [B] per chiudere"; void DispMessage(const char *title, const char *message) { @@ -34,7 +34,7 @@ u32 DispErrMessage(const char *title, const char *message, const Result error { char buf[100]; - sprintf(buf, "Error code: 0x%08lX", error); + sprintf(buf, "Codice errore: 0x%08lX", error); menuEnter(); Draw_Lock(); diff --git a/sysmodules/rosalina/source/plugin/file_loader.c b/sysmodules/rosalina/source/plugin/file_loader.c index 0e2a3499..06584be5 100644 --- a/sysmodules/rosalina/source/plugin/file_loader.c +++ b/sysmodules/rosalina/source/plugin/file_loader.c @@ -134,8 +134,8 @@ static Result CheckPluginCompatibility(_3gx_Header *header, u32 processTitle) return 0; } - sprintf(errorBuf, "The plugin - %s -\nis not compatible with this game.\n" \ - "Contact \"%s\" for more infos.", header->infos.titleMsg, header->infos.authorMsg); + sprintf(errorBuf, "Il plugin - %s -\nnon e' compatibile con questo gioco.\n" \ + "Contatta \"%s\" per piu' info.", header->infos.titleMsg, header->infos.authorMsg); PluginLoaderCtx.error.message = errorBuf; @@ -186,16 +186,16 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) } if (R_FAILED((res = IFile_GetSize(&plugin, &fileSize)))) - ctx->error.message = "Couldn't get file size"; + ctx->error.message = "Impos. ottere le dim. del file"; if (!res && R_FAILED(res = Check_3gx_Magic(&plugin))) { const char * errors[] = { - "Couldn't read file.", - "Invalid plugin file\nNot a valid 3GX plugin format!", - "Outdated plugin file\nCheck for an updated plugin.", - "Outdated plugin loader\nCheck for Luma3DS updates." + "Impos. leggere il file", + "Plugin file non valido\nIl plugin non e' in un formato 3gx valido!", + "Plugin file obsoleto\nControlla per una ver. aggiornata del plugin.", + "Caricatore plugin obsoleto\nControlla aggiornamenti di Luma3DS" }; ctx->error.message = errors[R_MODULE(res) == RM_LDR ? R_DESCRIPTION(res) : 0]; @@ -203,7 +203,7 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) // Read header if (!res && R_FAILED((res = Read_3gx_Header(&plugin, &fileHeader)))) - ctx->error.message = "Couldn't read file"; + ctx->error.message = "Impossibile leggere il file"; // Check compatibility if (!res && fileHeader.infos.compatibility == PLG_COMPAT_EMULATOR) { @@ -228,12 +228,12 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) // Set memory region size according to header if (!res && R_FAILED((res = MemoryBlock__SetSize(memRegionSizes[fileHeader.infos.memoryRegionSize])))) { - ctx->error.message = "Couldn't set memblock size."; + ctx->error.message = "Impossibile impostare la dimensione blocco mem"; } // Ensure memory block is mounted if (!res && R_FAILED((res = MemoryBlock__IsReady()))) - ctx->error.message = "Failed to allocate memory."; + ctx->error.message = "Allocamento a memoria fallito"; // Plugins will not exceed 5MB so this is fine if (!res) { @@ -243,11 +243,11 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) // Parse rest of header if (!res && R_FAILED((res = Read_3gx_ParseHeader(&plugin, header)))) - ctx->error.message = "Couldn't read file"; + ctx->error.message = "Impossibile leggere il file"; // Read embedded save/load functions if (!res && R_FAILED((res = Read_3gx_EmbeddedPayloads(&plugin, header)))) - ctx->error.message = "Invalid save/load payloads."; + ctx->error.message = "Payload di salva./carica. invalida"; // Save exe checksum if (!res) @@ -258,9 +258,9 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) // Read code if (!res && R_FAILED(res = Read_3gx_LoadSegments(&plugin, header, ctx->memblock.memblock + sizeof(PluginHeader)))) { - if (res == MAKERESULT(RL_PERMANENT, RS_INVALIDARG, RM_LDR, RD_NO_DATA)) ctx->error.message = "This plugin requires a loading function."; - else if (res == MAKERESULT(RL_PERMANENT, RS_INVALIDARG, RM_LDR, RD_INVALID_ADDRESS)) ctx->error.message = "This plugin file is corrupted."; - else ctx->error.message = "Couldn't read plugin's code"; + if (res == MAKERESULT(RL_PERMANENT, RS_INVALIDARG, RM_LDR, RD_NO_DATA)) ctx->error.message = "Questo plugin richiede una funzione di caricamento."; + else if (res == MAKERESULT(RL_PERMANENT, RS_INVALIDARG, RM_LDR, RD_INVALID_ADDRESS)) ctx->error.message = "Questo plugin e' corrotto."; + else ctx->error.message = "Impossibile leggere il codice del plugin."; } if (R_FAILED(res)) @@ -302,7 +302,7 @@ bool TryToLoadPlugin(Handle process, bool isHomebrew) if (R_FAILED((res = svcMapProcessMemoryEx(CUR_PROCESS_HANDLE, procStart, process, procStart, 0x1000, 0)))) { - ctx->error.message = "Couldn't map process"; + ctx->error.message = "Impossibile mappare il processo"; ctx->error.code = res; goto exitFail; } diff --git a/sysmodules/rosalina/source/plugin/memoryblock.c b/sysmodules/rosalina/source/plugin/memoryblock.c index 586bc4b7..0b7fe39b 100644 --- a/sysmodules/rosalina/source/plugin/memoryblock.c +++ b/sysmodules/rosalina/source/plugin/memoryblock.c @@ -77,9 +77,9 @@ Result MemoryBlock__IsReady(void) if (R_FAILED(res)) { if (isN3DS || (ctx->pluginMemoryStrategy == PLG_STRATEGY_MODE3)) - PluginLoader__Error("Cannot map plugin memory.", res); + PluginLoader__Error("Impossibile mappare la memoria del plugin", res); else - PluginLoader__Error("A console reboot is needed to\nclose extended memory games.\n\nPress [B] to reboot.", res); + PluginLoader__Error("Un riavvio della console e' necessario\nper chiudere giochi di memoria estesa\n\nPremi [B] per riavviare", res); svcKernelSetState(7); } else @@ -118,7 +118,7 @@ Result MemoryBlock__Free(void) memblock->memblock = NULL; if (R_FAILED(res)) - PluginLoader__Error("Couldn't free memblock", res); + PluginLoader__Error("Impossibile liberare i blocchi mem", res); // memblock penso sia blocchi di memoria, ma siccome è più breve così, resterà così, in inglese. return res; } @@ -140,12 +140,12 @@ Result MemoryBlock__ToSwapFile(void) fsMakePath(PATH_ASCII, g_swapFileName), FS_OPEN_RWC); if (R_FAILED(res)) { - PluginLoader__Error("CRITICAL: Failed to open swap file.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Apertura file di\n scambio fallita\n\nLa console si riavviera'", res); svcKernelSetState(7); } if (!ctx->isSwapFunctionset) { - PluginLoader__Error("CRITICAL: Swap save function\nis not set.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Funzione di\n scambio salvataggio\nnon impostata\n\nLa console si riavviera'", res); svcKernelSetState(7); } ctx->swapLoadChecksum = saveSwapFunc(memblock->memblock, memblock->memblock + g_memBlockSize, g_loadSaveSwapArgs); @@ -153,7 +153,7 @@ Result MemoryBlock__ToSwapFile(void) res = IFile_Write(&file, &written, memblock->memblock, toWrite, FS_WRITE_FLUSH); if (R_FAILED(res) || written != toWrite) { - PluginLoader__Error("CRITICAL: Couldn't write swap to SD.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Impossibile scrivere\n lo scambio su SD\n\nLa console si riavviera'", res); svcKernelSetState(7); } @@ -174,14 +174,14 @@ Result MemoryBlock__FromSwapFile(void) fsMakePath(PATH_ASCII, g_swapFileName), FS_OPEN_READ); if (R_FAILED(res)) { - PluginLoader__Error("CRITICAL: Failed to open swap file.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Apertura file di\n scambio fallita\n\nLa console si riavviera'", res); svcKernelSetState(7); } res = IFile_Read(&file, &read, memblock->memblock, toRead); if (R_FAILED(res) || read != toRead) { - PluginLoader__Error("CRITICAL: Couldn't read swap from SD.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Impossibile leggere lo scambio su SD.\n\nLa console si riavviera'", res); svcKernelSetState(7); } @@ -190,7 +190,7 @@ Result MemoryBlock__FromSwapFile(void) PluginLoaderContext *ctx = &PluginLoaderCtx; if (checksum != ctx->swapLoadChecksum) { res = -1; - PluginLoader__Error("CRITICAL: Swap file is corrupted.\n\nConsole will now reboot.", res); + PluginLoader__Error("CRITICO: Il file di scambio e' corrotto\n\nLa console si riavviera'", res); svcKernelSetState(7); } @@ -212,7 +212,7 @@ Result MemoryBlock__MountInProcess(void) // Executable if (R_FAILED((res = svcMapProcessMemoryEx(target, 0x07000000, CUR_PROCESS_HANDLE, (u32) memblock->memblock, header->exeSize, isPrivate ? MAPEXFLAGS_PRIVATE : 0)))) { - error->message = "Couldn't map exe memory block"; + error->message = "Impossibile mappare il blocco di memoria in esecuzione"; error->code = res; return res; } @@ -220,7 +220,7 @@ Result MemoryBlock__MountInProcess(void) // Heap (to be used by the plugin) if (R_FAILED((res = svcMapProcessMemoryEx(target, header->heapVA, CUR_PROCESS_HANDLE, (u32) memblock->memblock + header->exeSize, header->heapSize, isPrivate ? MAPEXFLAGS_PRIVATE : 0)))) { - error->message = "Couldn't map heap memory block"; + error->message = "Impossibile mappare vari blocchi di memoria"; error->code = res; } diff --git a/sysmodules/rosalina/source/plugin/plgloader.c b/sysmodules/rosalina/source/plugin/plgloader.c index fab93eeb..1f11097a 100644 --- a/sysmodules/rosalina/source/plugin/plgloader.c +++ b/sysmodules/rosalina/source/plugin/plgloader.c @@ -20,7 +20,7 @@ #define PERS_USER_FILE_MAGIC 0x53524550 // PERS -static const char *g_title = "Plugin loader"; +static const char *g_title = "Caricatore plugin"; static char menuBuf[64], fileNameBuf[64]; static u64 programId = 0; @@ -105,22 +105,22 @@ void PluginLoader__MenuOption(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "Per game plugin config"); - Draw_DrawString(10, 30, COLOR_WHITE, "Press Y to manually toggle plugin loader."); + Draw_DrawString(10, 10, COLOR_TITLE, "Config. plugin per gioco"); + Draw_DrawString(10, 30, COLOR_WHITE, "Premi Y per sel. il caricatore plugin manualmente"); if(currentTitleUsesPlugin) { - Draw_DrawString(10, 50, COLOR_GREEN, "Plugin loader auotmatically enabled for this title."); - Draw_DrawString(10, 60, COLOR_WHITE, "Press X to disable auto plugin loader for this title."); + Draw_DrawString(10, 50, COLOR_GREEN, "Caricatore plugin auto. abilitato per questo titolo."); + Draw_DrawString(10, 60, COLOR_WHITE, "Premi X per disabilitare il \ncaricatore plugin auto. \nper questo titolo."); } else { - Draw_DrawString(10, 50, COLOR_RED, "Automatic plugin loader disabled for this title."); - Draw_DrawString(10, 60, COLOR_WHITE, "Press X to enable auto plugin loader for this title."); + Draw_DrawString(10, 50, COLOR_RED, "Caricatore plugin auto. disabilitato per questo titolo."); + Draw_DrawString(10, 60, COLOR_WHITE, "Premi X per abilitare il \ncaricatore plugin auto. \nper questo titolo."); } - Draw_DrawString(10, 80, COLOR_WHITE, "Relaunch current title to apply changes."); - Draw_DrawString(10, 100, COLOR_WHITE, "Press B to go back."); + Draw_DrawString(10, 80, COLOR_WHITE, "Rilancia il titolo corrente per \nsalvare i cambiamenti."); + Draw_DrawString(10, 100, COLOR_WHITE, "Premi B per tornare indietro."); Draw_FlushFramebuffer(); Draw_Unlock(); @@ -165,11 +165,11 @@ void PluginLoader__UpdateMenu(void) { static const char *status[2] = { - "Plugin Loader: [Disabled]%s", - "Plugin Loader: [Enabled]%s" + "Caricatore Plugin: [Disabilitato]%s", + "Caricatore Plugin: [Abilitato]%s" }; - sprintf(menuBuf, status[PluginLoaderCtx.isEnabled], " [Per Game]"); + sprintf(menuBuf, status[PluginLoaderCtx.isEnabled], " [Per Gioco]"); rosalinaMenu.items[3].title = configExtra.perGamePlugin ? menuBuf : status[PluginLoaderCtx.isEnabled]; } diff --git a/sysmodules/rosalina/source/utils.c b/sysmodules/rosalina/source/utils.c index 9bbf055d..b8354cec 100644 --- a/sysmodules/rosalina/source/utils.c +++ b/sysmodules/rosalina/source/utils.c @@ -49,21 +49,21 @@ void formatUserMemoryState(char *outbuf, MemState state) { static const char *states[12] = { - "Free", - "Reserved", + "Libero", + "Riservato", "IO", - "Static", - "Code", - "Private", - "Shared", - "Continuous", + "Statico", + "Codice", + "Privato", + "Condiviso", + "Continuo", "Aliased", "Alias", - "AliasCode", - "Locked" + "CodiceAlias", + "Bloccato" }; - strcpy(outbuf, state > 11 ? "Unknown" : states[state]); + strcpy(outbuf, state > 11 ? "Sconosciuto" : states[state]); } u32 formatMemoryMapOfProcess(char *outbuf, u32 bufLen, Handle handle) diff --git a/sysmodules/rosalina/source/volume.c b/sysmodules/rosalina/source/volume.c index cbb67132..2a209da6 100644 --- a/sysmodules/rosalina/source/volume.c +++ b/sysmodules/rosalina/source/volume.c @@ -132,12 +132,13 @@ void AdjustVolume(void) do { Draw_Lock(); - Draw_DrawString(10, 10, COLOR_TITLE, "System configuration menu"); - u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Y: Toggle volume slider override.\nDPAD/CPAD: Adjust the volume level.\nA: Apply\nB: Go back\n\n"); - Draw_DrawString(10, posY, COLOR_WHITE, "Current status:"); - posY = Draw_DrawString(100, posY, (tempVolumeOverride == -1) ? COLOR_RED : COLOR_GREEN, (tempVolumeOverride == -1) ? " DISABLED" : " ENABLED "); + Draw_DrawString(10, 10, COLOR_TITLE, "Menu configurazione di sistema"); + u32 posY = Draw_DrawString(10, 30, COLOR_WHITE, "Y: Attiva/Disattiva l'override del cursore del volume.\nDPAD: Aggiusta il livello del volume.\nA: Applica\nB: Torna indietro\n\n"); + Draw_DrawString(10, posY, COLOR_WHITE, "Stato attuale:"); + posY = Draw_DrawString(100, posY, (tempVolumeOverride == -1) ? COLOR_RED : COLOR_GREEN, (tempVolumeOverride == -1) ? " DISABILITATO " : " ABILITATO "); + if (tempVolumeOverride != -1) { - posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "\nValue: [%d%%] ", tempVolumeOverride); + posY = Draw_DrawFormattedString(30, posY, COLOR_WHITE, "\nValore: [%d%%]", tempVolumeOverride); } else { posY = Draw_DrawString(30, posY, COLOR_WHITE, "\n "); } @@ -155,9 +156,9 @@ void AdjustVolume(void) Result res = ApplyVolumeOverride(); LumaConfig_SaveSettings(); if (R_SUCCEEDED(res)) - Draw_DrawString(10, posY, COLOR_GREEN, "\nSuccess!"); + Draw_DrawString(10, posY, COLOR_GREEN, "\nSuccesso!"); else - Draw_DrawFormattedString(10, posY, COLOR_RED, "\nFailed: 0x%08lX", res); + Draw_DrawFormattedString(10, posY, COLOR_RED, "\nFallito: 0x%08lX", res); } else if(pressed & KEY_B) return;