Conoscere Hyperspin: struttura di file, cartelle e menù

Copertina HS03

Premessa: Questo capitolo è prettamente teorico, lungo e può risultare noioso, ed è focalizzato sul conoscere Hyperspin, le sue funzioni principali e la struttura dei file.
Se vi sentite già preparati potete passare al capitolo successivo in cui imposteremo finalmente il nostro primo emulatore, viceversa se lo volete mettetevi comodi e leggete le seguenti pagine anche a più riprese.

Conoscere Hyperspin e la Struttura di File e Cartelle

E’ importante conoscere Hyperspin, sapere quali directory contengono elementi a noi importanti, quali cartelle non visiteremo praticamente mai e dove risiedono i file necessari al corretto funzionamento di Hyperspin.

img folder

Questa immagine dovrebbe rappresentare la situazione attuale della vostra cartella principale di Hyperspin.

Le cartelle Daemon e Data contengono file utilizzati da RocketLauncher e non le visiteremo praticamente mai;

La cartella Databases è molto importante per noi, ed è importante capirne bene l’utilizzo per conoscere Hyperspin al meglio.
Al suo interno opportunamente divise in cartelle col nome di ogni elemento presente sul nostro menù, troviamo dei file .xml, uno per ogni sistema presente.
Esso contiene la lista dei giochi che Hyperspin andrà poi a cercare e caricare per noi a video e genericamente sarà il primo file che andremo a preparare quando aggiungiamo una nuova console al nostro Frontend.

La cartella Databases e i file .XML

Prendiamo come esempio il file “Atari 5200.xml” presente nell’omonima cartella e apriamolo con il blocco note.

database XML

Le prime 8 righe del file (fino alla scritta </header>) sono solamente delle voci che servono al sistema per introdurre il file, sono il nome della lista, la data dell’ultimo aggiornamento, la versione della lista e il software usato per generarla, non ci serve a molto perdere troppo tempo su queste prime righe.
Noterete che dalla nona riga il file è composto da sempre gli stessi campi ripetuti all’infinito, ognuno di quei blocchi, ovvero tutto il testo contenuto tra <game name= e </game> rappresenta un gioco che apparirà nel menù della console specificata.

<game name=”Activision Decathlon, The (USA)” index=”true” image=”a”>

Questa riga è decisiva, come potete notare tra le prime virgolette c’è il nome del nostro gioco, ed è su questo nome che Hyperspin andrà poi a caricare le giuste immagini e video di anteprima e successivamente ad avviare la giusta rom, sbagliare questo nome equivale a ricevere un messaggio di errore ogni volta che tenteremo di avviare il titolo in questione.
Le altre due voci servono al programma per indicizzare alfabeticamente gli elementi del menù consentendo così di saltare da una lettera all’altra durante la scelta del titolo, cosa molto utile per scorrere velocemente menù molto numerosi.

<description>Activision Decathlon, The (USA)</description>

La voce description al contrario è solamente descrittiva e possiamo modificarla a piacere togliendo per esempio il tag (USA) o spostando l’articolo “The” all’inizio della frase, andrà poi a essere visualizzata in basso a sinistra dello schermo assieme agli altri dettagli sul gioco mentre Hyperspin è in esecuzione.

<cloneof> e <crc> sono voci decisamente tecniche e posso anche rimanere vuote, indicano al sistema si il gioco in questione è il clone di qualche altra rom (alcuni titoli sono semplicemente lo stesso gioco che degli sprite diversi), il crc è un codice generato per identificare i giochi uguali tra loro e non parlo solo di nomi ma anche a livello di bit, se la stessa rom dello stesso gioco ha una dimensione leggermente diversa il crc sarà diverso… non vi servirà a molto a meno che non siate dei perfezionisti.

Le voci successive si spiegano da sole e rappresentano produttore, anno di produzione, genere ed eventuali altri dettagli, posso anche restare vuoti se non conoscete tutti i dettagli.

L’ultima riga <enabled>Yes</enabled> è bene che resti così, anche se onestamente non ho capito a cosa serva dato che anche modificando il valore il gioco continuerà a funzionare correttamente.

Nella cartella Databases potete notare anche una directory “Main Menù” essa contiene un file XML che rappresenta la lista delle console presenti nel sistema, è questo file che Hyperspin andrà a leggere per capire che elementi inserire nel menù principale, contiene solamente una lista di voci “game name” dove ogni nome tra virgolette andrà a coincidere con la relativa cartella dentro la directory “Databases”.

Se vi ho un po’ confusi con quest’ultima informazione non preoccupatevi, visiteremo poco questo file, utilizzeremo un altro metodo per aggiungere nuove console al nostro sistema.

Altre cartelle

La Cartella Emulators non è propriamente una cartella essenziale per conoscere Hyperspin, dal nome potete facilmente capire che è stata pensata per contenere i nostri emulatori ma non è obbligatorio, potremo tranquillamente mettere i nostri emulatori su una cartella a piacere o utilizzare magari un altro Hard Disk sulla quale abbiamo già archiviato tutte le nostre rom, a patto di settare correttamente i percorsi al momento della configurazione ovviamente!

Hypertheme contiene i file necessari al funzionamento dell’omonimo software che ci consentirà di creare personalmente i nostri temi per Hyperspin, potrebbe venire riconosciuto come pericoloso dall’antivirus ma state tranquilli è l’ennesimo falso positivo.

E’ un programma abbastanza semplice da usare, dateci pure un occhiata, ma non sarà fondamentale per il nostro lavoro data la mole di media (immagini, video e temi) che troveremo online già pronto, ma di questo parleremo tra poco.

Lib contiene file relativi ad Hyperspin e non ci entreremo praticamente mai.

Modules contiene i moduli, ovvero dei file di codice che permettono ad Hyperspin di interfacciarsi con i vari emulatori, ogni emulatore quindi avrà il suo modulo, e all’interno di esso è specificato per quali sistemi quel modulo è disponibile, molti emulatori infatti emulano più console.

Module Extensions, Plugins, Profile, Settings contengono principalemente file di configurazioni e altri materiali che non visiteremo praticamente mai salvo problemi particolari.

La cartella Media

La cartella Media è un altro punto cruciale per conoscere Hyperspin, qui risiedono tutti i file immagini, video e i pacchetti zip dei temi, che il sistema andrà a caricare come anteprima ogni volta che nel menù principale col cursore andremo a passare sopra al nome di un gioco.
Possiamo notare una struttura simile alla cartella databases già vista poco fa, ogni directory fa riferimento ad una console che abbiamo aggiunto su Hyperspin (occhio al nome! un nome scritto male non permetterà al sistema di caricare correttamente i media!)

Per ogni console troviamo quattro cartelle

Video: dove andremo a copiare i file generalmente in formato .mp4 contenenti una anteprima del gameplay del titolo

Themes: contenente i temi in formato .zip dei giochi e un tema chiamato “default.zip” che verrà caricato automaticamente se Hyperspin non riuscirà a trovare un tema con lo stesso nome del titolo selezionato

Sound: dove se lo vorremmo, metteremo dei file audio personalizzati da utilizzare solamente per la console scelta, ad esempio troveremo online dei pacchetti di suoni ispirati al NES perfetti da inserire in questa cartella.

Images: contiene appunto tutte le immagini, i box delle custodie, i label dei dischi, le immagini delle cartucce, il logo del gioco e via discorrendo.

Ho tenuto per ultima questa cartella dato che come noterete ha una struttura leggermente più complessa delle precedenti: le cartelle Artwork1, Artwork2, Artwork3 e Artwork4 sono riservate a cover, box art, label dei dischi o cartucce, non esiste uno standard per cui dovrete scoprire da voi in che cartella posizionare le immagini in base al tema utilizzato per la piattaforma che state modificando.

Background, andrà a contenere (ma non è obbligatorio) degli sfondi personalizzati per ogni gioco che andranno quindi a sostituire quello del tema della console che viene caricato di default quando selezionerete del suddetto gioco

Letters, contiene contiene dei file immagine rappresentanti le lettere dell’alfabeto, i numeri da 0 a 9 e alcuni simboli utili, verranno poi mostrati a schermo quando premendo i tasti assegnati a Destra e Sinistra salteremo direttamente ai giochi che iniziano con la lettera selezionata.

Others, viene utilizzata principalmente per il file Pointer.png, altro non è che il cursore presente sulla parte destra dello schermo che funge da puntatore mostrabdo che gioco state selezionando.

Particle, permette di aggiungere delle “animazioni” che verranno sovrapposte all’immagine attualmente visualizzata, trovo che l’uso di questa funzione renda troppo confusionaria la già elaborata grafica di Hyperspin.

Special, contiene delle animazioni in formato .swf che vengono visualizzate nella parte bassa dello schermo quali la levetta che ci indica le direzioni e la scritta “free play” e “press start”

Wheel, contiene tutti i file immagine che verranno visualizzati al posto del nome del gioco mentre scorriamo la lista dei titoli o delle console disponibili, se il sistema non trova un file immagine compatibile con lo stesso nome del titolo scelto mostrerà semplicemente una normalissima scritta.

Come rimediare i file media?

Alcuni di voi si saranno già posti la domanda: “si ok tutto bellissimo, ma dove rimedio tutti questi file immagine e video?”
Per quel che riguarda i file immagine, cover, box art, label dei dischi, wheel art, etc. il sito ufficiale di Hyperspin https://hyperspin-fe.com nella sua sezione download contiene migliaia di elementi già pronti ad essere scaricati ed utilizzati, mentre troverete tonnellate di video sul sito https://emumovies.com.

Occore specificare fin da subito che entrambi i siti sono gratuiti ma pongono delle limitazioni, che col tempo risulteranno fastidiose, agli utenti che non hanno acquistato un account premium tramite la sezione “donate”.

Hyperspin.fe.com offre un upgrade a “Platinum Supporting Member” al costo di 50$ valido poi per sempre, mentre Emumovies propone ben tre sottoscrizioni Mensile, Annuale e Lifetime rispettivamente al costo di 20$, 30$ e 60$.
Questi account “premium” infatti rimuoveranno il limite di Download giornaliero, vi daranno accesso alle sezioni del sito riservate ai donatori, in cui troverete i file di qualità più elevata, e ai loro server FTP per scaricare tutti i file che volete in maniera semplice e veloce.
Inoltre sottoscrivendo a Hyperspin-fe.com otterrete un coupon per uno sconto del 25% sul prezzo dei prodotti su Emumovies.com.
Parliamo certamente di cifre importanti ma dato l’enorme risparmio di tempo che il materiale presente su questi siti vi farà risparmiare, è consigliatissimo effettuare entrambe le donazioni, vi accorgerete ben presto di quanto il prezzo valga l’acquisto, esperienza personale, ovviamente occhio a non perdere l’account!

Citazioni onorevoli:

Canale Youtube di Arcade Forever Qui
troverete centinaia di video di numerose console perfetti da essere usati su Hyperspin, basta utilizzare un sito di download (Personalmente utilizzo https://catchvideo.net/) e scaricare il file in formato mp4.
Arcade Punkshttps://www.arcadepunks.com/
Anche su questo sito potete trovare una buona fonte di materiale media per il vostro Hyperspin.
Google!
molte volte quando non riuscite a trovare i media giusti per completare un sistema la via migliore è cerca su google il nome del sistema aggiungendo “Hyperspin” e “media” alla fine e navigare tra i risultati, capita spesso di trovare link ad utenti che condividono in blocco i file necessari.

Conoscere Hyperspin: la struttura dei Menù

Passiamo ora a dare uno sguardo alle applicazioni principali presenti nella cartella di Hyperspin e a conoscere e capire il funzionamento dei suoi menù.

HyperHQ

In origine era l’applicazione principale di Hyperspin, da qui si configurava tutto il necessario al funzionamento del programma e dei vari emulatori, poi essendo subentrato RocketLauncherUI a cui è stato delegato il compito dell’esecuzione delle rom, a ottenuto un ruolo più marginale ma comunque importante dedicato alla configurazione dei comandi del menù e a varie impostazioni grafiche.
Visiteremo poco questo eseguibile e principalmente nelle prime ore di utilizzo di Hyperspin ma è opportuno conoscere cosa ha da offrire

Hyper HQ main

Descriverò brevemente le impostazioni principali qui di seguito, sono in ogni caso specificate anche nella parte bassa dello schermo all’interno dell’applicazione.

Main settings:
Qui troverete il necessario ad impostare la risoluzione adeguata, regolare il suono, lo screensaver che qui chiamiamo “attract mode” e altre impostazioni grafiche.

In General selezionate mode “multi”, in caso contrario Hyperspin mostrerà solamente una console.
Alla voce Screen spuntate “fullscreen” per avviare Hyperspin a schermo intero e impostate una risoluzione adeguata, per i moderni monitor FullHD 16:9 sarà 1920×1080, altrimenti basta controllare la risoluzione del vostro schermo.
La casella “scanlines” permette di ottenere un effetto disturbo simile ai vecchi televisori CRT a tubo catodico anche suo moderni monitor, basta spuntare la casella e cliccare poi sul simbolo della cartella nella riga sottostante scegliendo una delle immagini presenti.
Optimizer, permette di modificare le performance del programma cambiando ad esempio la qualità delle immagini e la priorità che avrà sulla nostra CPU, settate App Quality su “BEST” e CPU Priority su “HIGH” per ottenere le miglior resa grafica nei menù.
Attract, è il classico screensaver che troviamo anche su Windows, dopo tot tempo di inattività il sistema scorrerà automaticamente verso un’altra voce del menù a random e continuerà così fino a che non riprenderete il controllo dei comandi.
Sound, Dai seriamente non vi serve che ve lo spieghi vero?
Startup/Exit, tra le varie opzioni permette di abilitare o disabilitare il video iniziale o di renderlo skippabile, la voce “Exit Action” sulla destra della finestra permette di scegliere se spegnere direttamente il PC all’uscita dal programma o semplicemente tornare a Windows.
Tools, permette ad Hyperspin di interfacciarsi con un simpatico programmino esterno chiamato LEDBlinky che permette di gestire eventuali luci LED automaticamente in base alle vostre scelte su Hyperspin.

Wheel Settings:
Dal menù a tendina potete notare tutte le voci attualmente presenti nella vostra build, questa era la sezione dove un tempo si configuravano vita, morte e miracoli di ogni emulatore installato, ora come detto in precedenza ci si appoggia ad un programma esterno abbondantemente più produttivo per cui non è necessario toccare nulla in questa zona, assicuratevi solamente che nella scheda Emulator le prime due righe siano spuntate su “Hyperlaunch” e “Disabled” (cambiando l’impostazione cambierete solamente quella della voce scelta dal menù a tendina e non le altre).
Potrete trovare qualche opzione interessante alla scheda Wheel e Navigation/Themes.
Nella prima scheda cliccando su general, i tre menù a tendina chiamati Style, Speed e Position vi permetteranno di modificare rispettivamente lo stile della ruota che caratterizza ogni menù di Hyperspin rendendola verticale orizzontale oppure “pin” cioè una ruota a semicerchio classica ma orientata in orizzontale, di modificare la velocità di scorrimento e la posizione della ruota scegliendo tra Left, Right e Center.
In Navigation/Themes troveremo invece alcune opzioni utili per personalizzare l’area di schermo, “Remove Wheel Info” e su fratello gemello alla riga sottostante permettono di nascondere alla vista quelle fastidiose scritte (EUR) o (USA) spesso e volentieri presenti nel nome delle rom, “Return to last game” e “Start on random game” permettono rispettivamente di far partire il cursore dall’ultimo gioco selezionato o da uno random quando rientriamo in un menù (non ho idea del perché siano selezionabili entrambi contemporaneamente).
E’ importante inoltre mettere la spunta alla casella “Reload Backgrounds”, dovete farlo obbligatoriamente per ogni sistema che avete inserito nel vostro Hyperspin questo permetterà al sistema, quando dovrà mostrare a video il tema di un gioco specifico (esempio Metal Slug) di ricaricare il tema di default nel momento in cui passato a selezionare un gioco per cui non è presente nessun tema personalizzato. In caso contrario lo schermo rimarrà semivuoto e incapace di caricare correttamente l’anteprima video del titolo e altri vari elementi!

Main Menù Wizard: permette di aggiungere o rimuovere elementi dal nostro menù principale, non lo userete praticamente mai dato che RocketauncherUI vi permetterà di fare la stessa cosa (e molto altro).

Controls: in questa sezione imposterete i controlli che verranno utilizzati solamente all’interno del menù di Hyperspin, cambiare i tasti assegnati qui non influenzerà in alcun modo le vostre sessioni di gioco, in altre parole dovrete poi impostare manualmente i comandi in ogni emulatore che avete aggiunto al sistema.
Potete configurare i comandi alla voce Keyboard, nel caso vogliate usare una tastiera o un controller arcade tipo l’Ipac, oppure da Joystick nel caso in cui vogliate utilizzare una gamepad, basterà mettere il segno di spunta su Joystick 1 Enabled e settare i comandi a piacere.
E’ tuttavia sconsigliato utilizzare questa ultima funzione per utilizzare il vostro gamepad, funzionerà tutto all’inizio ma col tempo noterete un ritardo nei controlli, imprecisione e lentezza generale del sistema
Conviene usare un Keymapper come JoytoKey, una guida per il suo corretto utilizzo è in arrivo!

Conoscere Hyperspin: RocketLauncherUI

Questo programma situato all’interno della cartella RocketLauncherUI è il punto centrale delle nostre attività su Hyperspin, gestirà lui tutti gli emulatori del nostro sistema e contiene una infinità di impostazioni che richiederebbero pagine e pagine per essere spiegate, tenterò quindi di darvi una infarinatura generale di quello che il software ha da offrirvi per poi spiegare nel dettaglio e farvi conoscere le opzioni in futuro quando si renderà necessario.
Se avete seguito correttamente il capitolo precedente questa è la schermata che vi si porrà davanti quando aprirete il programma.

RUI Overview

Nella Colonna dei Sistemi appariranno tutti i sistemi che avete aggiunto (attualmente sono presenti quelli di default dato che non ne abbiamo ancora configurato nessuno), mentre i cinque tasti posti nella parte alta vi permetteranno rispettivamente di aggiungere o rimuovere voci dalla lista dei sistemi che andranno quindi a modificare le console presenti nel menù principale, di rinominare il sistema selezionato, di aggiornare la lista dei sistemi o di modificare manualmente la lista tramite un editor di testo (questa ultima opzione dovrebbe darvi errore se premuta dato che non la abbiamo ancora configurata).
E’ importante controllare quale sistema è selezionato in questa colonna dato che ogni voce avrà i suoi relativi menù, che appariranno nel resto della finestra del programma. Modificando ed esempio un opzione alla voce “MAME” , non verrà cambiato nulla alla voce “SNK Neo Geo” e vice versa.

La voce “GLOBAL” invece non fa riferimento a nessuna console in particolare, semplicemente funzionerà da punto di riferimento, ospitando tutti i valori di default utili per non andare a modificare manualmente ogni opzione tutte le volte che aggiungeremo un nuovo emulatore.
Potremmo per esempio impostare su “TRUE” l’opzione per nascondere il cursore del mouse e in ogni altro emulatore lasciare quella voce su “USE GLOBAL”, se sarà necessario disattivare quella impostazione in un particolare sistema, basterà settare su “FALSE” l’opzione solamente in quella console.

General Settings:

Questo menù è identico indifferentemente da cosa voi clicchiate sulla colonna di sinistra, contiene alcune impostazioni che abbiamo già visto nelle guide precedenti come il percorso per il nostro Frontend (Hyperspin), e il plugin utilizzato per interfacciarsi con esso.

Controls ospita qualche comando interessante, non sono comandi per giocare dato che come detto in precedenza quelli dovete impostarli singolarmente in ogni emulatore, ma comandi quali un tasto per chiudere automaticamente RocketLauncher.exe (e di conseguenza ogni altro emulatore attualmente aperto e ritornare ad Hyperspin), per nascondere il cursore del mouse e per il Multigame, sono in ogni caso comandi avanzati che non userete molto, specialmente nelle prime fasi di apprendimento.

Third Party si usa principalmente per settare i percorsi ai vari software esterni che useremo nel corso della nostra “avventura”, programmi quali Daemon Tools per creare periferiche virtuali (le vedremo in futuro) o 7zip per decomprimere i file archivio e molti altri, sentitevi liberi di cercare su Google i nomi che vedete in questa sezione del programma se lo volete, alcuni sono molto interessanti.

RUI Settings

Settings:

Qui iniziamo a trovare delle impostazioni di una certa importanza, in Main settings troviamo alcune opzioni tra cui per nascondere cursore del mouse, taskbar, desktop di windows e altri elementi dopo aver avviato un gioco, per configurare il tasto di uscita dall’emulatore (per praticità è consigliabile settarlo in “Global Settings” e lasciarlo invariato sulle altre console), per abilitare i Drive Virtuali (Daemon Tools) e altri.
In Mapping sono presenti opzioni per la mappatura dei tasti (possiamo infatti ingannare il sistema fingendo di premere per esempio il tasto “M” mentre in realtà stiamo premendo la “D”, funziona con tutti i tasti ovviamente e vi sarà più utile di quanto pensiate)

Le tre schede Fade – General, Fade – Info e Fade – Progress, gestiscono appunto il Fade, ovvero una schermata opzionale che parte nel momento in cui avviamo o chiudiamo un gioco in maniera simile ad una schermata di caricamento.
Multigame permette di abilitare l’omonima funzione che gestirà i giochi composti da più dischi in maniera diversa da quella standard, ovvero se normalmente troveremo nel menù le seguenti voci “Final Fantasy VIII – Disco 1” “ Final Fantasy VIII – Disco 2” Etc… con il multigame troveremo solamente la voce “Final Fantasy” a comparirà un menù una volta eseguito il gioco o premendo un dato tasto che ci permetterà di scegliere che disco avviare, si tratta comunque di una funzione opzionale e non è obbligatorio attivarla.

In Bezel potremmo gestire le bezel, delle immagini che fanno fa “cornice” principalmente ai vecchi giochi in 4:3 permettendo di riempire totalmente i moderni monitor widescreen.
Instruction Cards, in maniera simile alle bezel, visualizzerà ai lati dello schermo delle immagine contenenti le istruzioni per quel gioco, generalmente nei giochi di lotta apparirà la lista delle mosse del lottatore scelto, richiede dei comandi appositi per essere gestito dato che anche impostandole correttamente non partiranno in automatico e non visualizzeranno automaticamente il lottatore selezionato (nel caso dei giochi di lotta). Feature interessante ma anche questa come le bezel è opzionale.

Rom Mapping, anche questo opzionale permetterà all’avvio di una rom MAME di scegliere tramite un menù apposito quale versione avviare come ad esempio una regione differente o una rom clone.
Plugins, contiene solamente delle directory da impostare necessarie per attivare alcune opzioni come ad esempio le Instruction Cards viste precedentemente.

RUI Emulators

Emulators:
Qui imposteremo l’emulatore per la console al momento selezionata.

RUI Modules

Modules:
In questa finestra potremo conoscere la lista dei moduli Hyperspin compatibili con il sistema scelto presenti nella cartella “modules”, come detto in precedenza un modulo è lo strumento necessario ad Hyperspin per comunicare correttamente con l’emulatore. Selezionando quindi “Atari 5200” dal menù a sinistra troveremo tutti i moduli compatibili con l’Atari 5200, mentre in “GLOBAL” vedremo tutti i moduli presenti in Hyperspin.

RUI Games

Games:
Contiene la lista dei giochi attualmente presenti nel sistema selezionato caricate direttamente leggendo il file database (.xml) relativo, mentre alla voce “Full Audit” potremo fare una veloce scansione per conoscere quanti giochi sono presenti nel nostro sistema Hyperspin

RUI Hyperpause

Pause:
Permette di configurare Hyperpause, una interessante funzione che tramite un apposito tasto ci presenterà un menù con artwork, manuali di gioco, video e altro materiale riguardanti il gioco avviato o la sua console, richiede ovviamente una sua configurazione per funzionare ed è opzionale.

RUI Keymapper

Keymapper:
Come scritto in precedenza i keymapper sono software che permettono di simulare la pressione di un determinato tasto quando invece ne stiamo premendo un altro, qui troveremo una pagina dedicata ad ogni keymapper compatibile con Hyperspin.

Log e RocketLauncherUI:
Nelle ultime due schede troviamo la funzione log, utile per rintracciare il colpevole di eventuali errori o crash e una pagina dedicata a delle opzioni specifiche per RocketLauncherUI, non ho inserito gli screen in quanto non visiteremo molto queste ultime due pagine.

FINE!

Lo so questo capitolo probabilmente vi è sembrato lungo, noioso e ripetitivo ma era necessario darvi un infarinata basilare e farvi conoscere le opzioni presenti dentro Hyperspin, se invece le conoscevate già e avete letto tutta la guida solamente per spirito di informazione… beh complimenti!

Un pensiero riguardo “Conoscere Hyperspin: struttura di file, cartelle e menù

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *