Print this Pagina

LUA basic programming tutorial

LUA Introduction

Special thanks to Rinnegatamante

Informazioni

Il LUA è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico. E’ nato nel 1993 dalle menti di Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes ed è considerato il linguaggio di programmazione per PSP più semplice e quindi più abbordabile. L’esecuzione su PSP è data da un esecutore denominato “LUA Player”.Esiste anche una versione per Windows del suddetto programma. La nostra guida effettiva inizia ora. Requisiti

  • Unofficial Miro LUA V.2.6 Rev.B
  • Eboot.pbp del LUA Player HM 7
  • PSP montante CF 3.52 o superiore
  • PC montante Windows XP o superiore
  • Memory Stick da 32 mb minimo
  • Tanta buona volontà

Lezione 1: Hello World

L’Hello World cnsiste nel stampare sullo schermo della PSP una semplice scritta. Iniziamo installando ed aprendo l’Unofficial Miro LUA,una volta aperto premiamo su File e poi su Nuovo e creiamo una Nuova Pagina.Salvatela dove vorrete e chiamatela “SYSTEM.lua” Ora vi uscira scritto sullo schermo una riga di colore verde,cancellatela!Bene,lo spazio dove avete cancellato la scritta è il vostro foglio di lavoro dove scriverete tutti i codici e i programmi che creerete in futuro. Iniziamo col definire che colore utilizzare per la nostra scritta e scriviamo così:

nomedelcolore = Color.new(var1,var2,var3)

Sostituiamo nomedelcolore col il nome del colore che abbiamo scelto e sostituiamo var1,var2,var3 ai valori di Rosso,Verde e Blu che ha il colore che vogliamo fare.Per vedere tali colori apriamo il Paint di Windows,clicchiamo su Colori e poi su Modifica Colori(in alto)clicchiamo sul colore da usare,clicchaimo su Definisci colori personalizzati e vedrete tre parametri,corrisponderanno a quelli che dovrete inserire al posto dei tre var:

nel mio esempio scriverò:
verde = Color.new(0,255,0)

fatto questo andiamo accapo e scriviamo:

sfondo = Image.createEmpty(480,272)
Questo comando serve per creare un immagine vuota,i numeri 480 e 272 corrispondono alla grandezza in pixel che dovrà avere l’immagine e noi abbiamo messo questi numeri perchè sono rispettivamente larghezza ed altezza dello schermo della PSP.

Dopo di ciò andiamo accapo e scriviamo:

screen:blit(0,0,sfondo,0,0,sfondo:width(),sfondo:height(),false)

Analizziamo il codice:

screen definisce che si agirà sullo schermo e non su di una immagine blit comando per stampare sullo schermo delle immagini 0,0 rispettivamente la posizione X(larghezza) ed Y(altezza) dell’immagine o scritta o linea da stampare sfondo in questo caso il nome che abbiamo dato all’immagine creata sfondo:width() questo comando dice che la larghezza dell’immagine sarà uguale a 480 sfondo:height() questo comando dice che l’altezza dell’immagine saràuguale a 272 false dice che l’immagine da stampare non deve essere trasparente(se si mette true sara trasparente)

Dopo aver scritto questo andiamo accapo e scriviamo:

screen:print(0,0,"Hello World",nomedelcolore)

Analizziamo quest’altro codice:

screen gia abbiamo imparato a cosa serve print questo comando viene utilizzato per stampare a schermo una scritta 0,0 gia sappiamo a cosa serve “Hello World” questo è il testo che verrà stampato,si mette sempre fra le virgolette nomedelcolore qui dovrete mettere il nome del colore che avevate precedentemente scritto

Dopo di tutto ciò possiamo avviarci alla chiusura del file.Scriviamo:

screen:flip()
screen:waitVblankStart()

Questi comandi servono per definire la fine del codice e l’attesa dello schermo prima di essere pulito(con il comando waitVblankStart) non avendo messo nessun numero l’attesa sarà infinita.

Ricapitolando ecco il codice come si presenterà nel mio esempio:
verde = Color.new(0,255,0)
sfondo = Image.createEmpty(480,272)
screen:blit(0,0,sfondo,sfondo:width(),sfondo:height(),false)
screen:print(0,0,"Hello World",verde)
screen:flip()
screen:waitVblankStart()

Salviamo il codice.Colleghiamo la PSP al PC,posizioniamoci sulla cartella PSP/GAME ( dove vanno tutte le homebrew che scarichiamo e che creeremo),creiamo una cartella a piacere e inseriamoci dentro l’EBOOT del LUA Player HM 7,poi creiamo sempre in questa cartella un’altra cartella denominata SYSTEM ed inseriamoci dentro il file SYSTEM.LUA,scolelghiamo la psp e proviamo la nostra homebrew.

Lezione 2: Le Variabili

E’ ora di capire cosa sono le variabili e come si utilizzano. Le variabili possono far riferimento ad un numero,ad una stringa o ad una funzione e/o variabile.

Ecco un esempio di ognuno dei casi sopraddetti:
variabilenumero = 1
variabilestringa = "Ciao"
variabilefunzione = System.currentDirectory()
variabilevariabile = variabilenumero

Analizziamo i vari casi e vediamo il loro possibile uso:

Tutte le variabili come vedete hanno un nome e per definire da cosa sono formate si usa il simbolo =. La variabilenumero si puo usare per calcoli matematici o per definire il valore di una certa funzione.Ecco 2 esempi:

risultato = variabilenumero + 1
screen:print(variabilenumero,0,"Hello World",verde)

Il primo codice dice che la variabile denomianta risultato sarà il risultato del valore di varaibilenumero + 1 quindi risultato varrà 2. Per il secondo caso invece la variabile viene usata per selezionare la posizione della scritta.

Il risultato della variabilestringa deve essere immessa sempre fra virgolette e puo essere usata per essere considerato come un testo o la posizione di un file. Esempi:
screen:print(0,0,variabilestringa,verde)
dofile(variabilestringa)

Nel primo codice la variabile viene usata come se fosse il testo da stampare mentre nel secondo come se fosse un file(il comando dofile serve per aprire dei file LUA)

Arriviamo alla variabile funzione che viene usata per semplificarci le idee,è utile se si vogliono raggruppare tutti i comandi a inizio foglio oppure per non dover riscrivere il codice di una funzione ogni volta.Esempio:
screen:print(0,0,variabilefunzione,verde)
Con questo codice stamperemo a schermo la posizione in cui ci troveremo nelle directory(esempio la cartella della nostra hb)

Invece per le variabili che utilizzano altre variabili,sono le meno utilizzate perchè le meno utili.Possono servire per creare delle variabili da salvare prima che vengano modificate ma questo sistema lo vedremo più in la.

Lezione 3:

Dopo aver creato la nostra paginetta normale per fare in modo di passare ad una nuova pagina LUA tramite la pressione di un tasto bisogna fare cosi:

pad = Controls.read()

Dichiariamo che “pad” carica i “controlli” della psp

if pad:cross() then
Poniamo la condizione “Se Tasto X è premuto”
System.currentDirectory("ms0:/PSP/GAME/NOMENOSTRAHOMEBREW/SYSTEM")
dofile("NUOVAPAGINA.lua")
end

Diciamo al programma la directory dove è contenuta la nuova pagina da aprire e poi tramite il “dofile” gli diciamo come si chiama il file.

Lezione 4: Creare Funzioni Extra

Oggi impareremo i comandi base per creare funzioni extra o semplicemente per facilitarci il lavoro:

Per prima cosa creiamo un ciclo
while true do
Questo comando fa ripetere l’azione

Il comando base per inserire una nuova funzione è
function
ad esso va affiancato il nome della funzione(un nome che vogliamo noi e,tra parentesi le informazioni che bisognerà inserire per il normale funzionamento della funzione).

Oggi creeremo una funzione esempio per scegliere come avviare un file(quindi per facilitarci un compito e non per creare una funzione extra)

iniziamo dichiarando la funzione
function playpbp (dir,file)
Con questa parte ho detto che la funzione playpbp per funzionare avrà bisogno di un valore dir e di un altro d nome “file”

ora scriviamo la funzione
player = System.startOSK("KERNEL","Come aprire file?")
if player == "KERNEL" then
System.runeboot(dir.."/"..file)
end
if player == "PSX" then
System.startPSX(dir.."/"..file)
end
if player == "UPDATE" then
System.startUpdate(dir.."/"..file)
end
end

Analizziamo il tutto, il primo pezzo serve a far comparire la tastiera sony da dove decidere l’immissione della modalità di avvio del file e invece i restanti 3 if fan si che se verrà scritto KERNEL nella tastiera si avvierà il file normalmente,se si scriverà PSX allora si avvierà come gioco per la playstation 1 e se scritto UPDATE farà partire l’aggi0ornamento della psp.

Ricapitolando il codice sarà:
function playpbp (dir,file)
player = System.startOSK("KERNEL","Come aprire file?")
if player == "KERNEL" then
System.runeboot(dir.."/"..file)
end
if player == "PSX" then
System.startPSX(dir.."/"..file)
end
if player == "UPDATE" then
System.startUpdate(dir.."/"..file)
end
end

Ora basterà mettere la funzione in azione così(faccio un esempio):
playpbp("ms0:/PSP/GAME/HB","EBOOT.PBP")
cosi faremo si che il file “EBOOT.PBP” posizionato nella cartella HB nella cartella dei giochi possa esser far partito nei 3 modi possibili. ora non rimane che scrivere la fine della pagina:
screen:flip()
screen:waitVblankStart()
end

Avete creato la vostra prima funzione!

Ricapitolando ecco il codice finale come risulterà:
while true do
function playpbp (dir,file)
player = System.startOSK("KERNEL","Come aprire file?")
if player == "KERNEL" then
System.runeboot(dir.."/"..file)
end
if player == "PSX" then
System.startPSX(dir.."/"..file)
end
if player == "UPDATE" then
System.startUpdate(dir.."/"..file)
end
end
playpbp("ms0:/PSP/GAME/HB","EBOOT.PBP")
screen:flip()
screen:waitVblankStart()
end

Lezione 5: Le Array(Funzioni Base)

Di notevole funzionalità e versatilità sono le array(o tabelle). Tali costruttori possono essere utilizzati per la gestione di stringhe e quindi la notevole diminuzione di caricamenti nel caso di un Filebrowser,di una shell,di un PSP-Info e molto altro.

Un array si esprime con questo comando:
nomedellarray = {}
NOTA: Per scrivere delle parentesi graffe con la tastiera italiana bisogna premere “SHIFT+ALT GR+è” tutti insieme per ottenere “{” invece “SHIFT+ALT GR+il segno + affianco al segno è” per ottenere “}”. Con questo comando diciamo che l’array denominata “nomedellarray” è vuota. E come facciamo ad aggiungerci un elemento? La risposta è semplice:
nomedellarray[1] = System.cfwVersion()
In questo esempio abbiamo detto che l’elemento 1 dell’array “nomedellarray” sarà il firmware installato sulla nostra PSP!Semplice?

Vediamo qualche altro comando. Per stampare a schermo un elemento si usa questo meccanismo:
screen:print(0,0,nomedellarray[1],colore)
Non c’è bisogno di spiegazione.

Tramite le array potete ridurre i caricamenti degli stessi dati ad una volta sola ad esempio al posto di fare:
while true do
info = System.cfwVersion()
screen:print(0,0,info,colore)
end

Il quale vi implica il ricaricamento dell’informazione sul Firmware installato ogni volta. Potrete fare:
info = {}
info[1] = System.cfwVersion()
while true do
screen:print(0,0,info[1],colore)
end

Con questo semplice metodo il firmware rilevato verrà caricato una sola volta e quindi non porterà ad uno spreco inutile della RAM.

Personalize_EBOOT

Per creare un EBOOT personalizzato in un vostro homebrew LUA questi sono gli occorrenti: -EBOOT del Lua Player -Le vostre pagine LUA -PsPBrew (scaricabile qui: http://www.puffo83.altervista.org/download/PSPbrew_091.zip )

  • Create nella vostra MS ,in PSP/GAME, una cartella per il vostro homebrew e posizionatevi dentro l’EBOOT del LUA Player;
  • create all’interno di quest’ultima cartella una sottocartella “SYSTEM” dove mettere le vostre pagine LUA(la principale dovrà chiamarsi index.lua oppure script.lua);
  • Ora scaricate ed installate PspBrew poi avviatelo;
  • Cliccate su Carica PBP e caricate il PBP del LUA Player posizionato precedentemente nella cartella del vostro homebrew;
  • Ora potrete cambiare NOME,PIC1,ICON1,SND0,ICON0 E UNKNOWN.PNG del vostro EBOOT;
  • Una volta finito cliccate su Salva PBP e sostituite il vecchio EBOOT del Lua Player con quello nuovo modificato da voi,oppure sovreascivete direttamente;

;

Thanks for watching this guide.

_____________________________________________________________________________________________ Ti è piaciuto questo articolo ? Condividilo !

Permanent link to this article: http://taketheball.altervista.org/?page_id=20