[PSP] [Vita] Le ONELua de nouveau mis à jour

Note : cet article est très long et il s’adresse aux développeurs à devenir ou bien ceux maîtrisant déjà le langage Lua souhaitant découvrir ce que la PSP a dans le ventre. La quantité de travail fourni dans cet article est considérable et j’espère que vous l’apprécierez car j’y ai consacré beaucoup de mon temps libre. Je tiens à remercier notamment gdljjrod ainsi que Davis Nuñez pour leur patience et leur aide à la rédaction de cet article.

Nous vous l’avions annoncé, gdljjrod et Rober Galarga ont mis à jour leur interpréteur Lua pour PSP dénommé ONELua. Après deux versions réussies, les deux développeurs reviennent aujourd’hui avec une nouvelle version contenant encore une flopée de nouveautés que nous allons découvrir et décortiquer ensemble pour vous permettre de comprendre leur utilisation via des explications, des exemples et des captures d’écran : bref un article signé Custom Protocol.

vignette-ONELua-v3

Le ONELua Version 3


Optimisations

Commençons tout d’abord par les nouveautés au niveau des optimisations. Le ONELua en version 3 supporte maintenant les PS Vita utilisant le VHBL, pratique pour lancer des homebrews si on possède le jeu (et sa démo) Toukiden: Kiwami (dispo uniquement sr le Store JP) possédant un exploit en 3.51, ou encore l’exploit World of Pool. Ainsi le Lua Player devient pleinement compatible pour tourner sur toutes les PSP mais également sur les PS Vita. Les développeurs ont également ajouté une nouvelle bibliothèque nommée BitOp qui ajoute des opérations binaires sur les nombres. Vous pouvez regarder les fonctions disponibles avec des exemples à cette adresse.

N'oubliez pas de consulter notre tutoriel pour garder votre PS Vita en firmware 3.36 et empêcher la mise à jour automatique

Le ONELua version 3 pleinement compatible avec la PS Vita

Cette bibliothèque n’a pas été implémentée au ONELua par hasard, en effet, vous trouverez dans l’archive contenant l’interpréteur un exemple vous démontrant comment utiliser une nouvelle fonction permettant de créer des maps avec un simple fichier texte. Il y a seulement deux fonctions mais aux fonctionnalités intéressantes.

On peut soit dans l’exemple fourni créer une map en vue de face mais également en vue de côté. Comme cité dans les fonctions, il vous faudra obligatoirement utiliser le logiciel GBA Graphics 1.09 disponible certes en anglais mais aussi en français !

Voici quelques exemples postés par plusieurs développeurs des possibilités de ces fonctions.

En exemple, pour utiliser cette fonction, vous pouvez vous référer au contenu de l’archive du ONELua où le code a été commenté par @applelo1 (moi même) en français.

Fonctions images

Passons ensuite aux fonctions images, où nous avons le droit à une ribambelle de nouveautés. Nous avons enfin la possibilité de charger les images dans la VRAM (mémoire vidéo) via la fonction image.loadv() pour un affichage plus rapide de celles-ci (pour des sprites par exemple) mais plus limité en mémoire que la RAM (mémoire vive). Il est aussi possible de “déplacer” une image de la VRAM à la RAM et inversement en utilisant la fonction image.move().

Désormais, via la fonction image.loadfromdata(), les images converties en données binaires peuvent être chargées, utile pour charger les images disponibles sur internet permettant un gain de rapidité. Un petit exemple s’impose pour vous montrer :

Et c’est pas fini, puisqu’on peut également modifier ses images via trois nouvelles fonctions ! La première, image.blitadd(), permet d’afficher l’image en y ajoutant un effet de couleur alors que la deuxième, image.blitsub(), au contraire, permet de supprimer la couleur. La dernière quant à elle, image.blittint(), permet d’afficher une image et de la teindre également d’une couleur.

Voici le récapitulatif de toute les nouvelles fonctions concernant les images retranscrit ici.

Le ONELua se montre aussi très performant comme gestionnaire des EBOOT.PBP, 3 nouvelles fonctions font ainsi leur entrée avec cette troisième version par ce que l’on appelle leurs callbacks. La fonction game.pack() permet de créer un EBOOT si vous disposez d’un dossier contenant toutes les ressources nécessaires (PARAM.SFO, ICON0.PNG…). Ensuite, game.add() permet d’ajouter ou remplacer un fichier alors que la fonction game.remove() permet finalement de supprimer un fichier contenu dans l’EBOOT.PBP.

Fonctions TV

Vous devriez savoir, puisque nous vous l’avions déjà annoncé, que le ONELua intègre désormais des fonctions liées à la télévision, la première étant de pouvoir retransmettre l’écran de la PSP vers l’écran d’une télé si vous disposez d’un adaptateur. Il est possible notamment de régler via cette fonction la qualité de la retransmission. Attention, il vous faudra impérativement le dvemgr.prx contenu dans l’archive pour pouvoir faire fonctionner la fonction. La deuxième, os.cabletv(), permet de reconnaître si votre PSP est branchée à un écran externe ainsi que le type de câble utilisé.

Fonction windows

En plus de cela, une nouvelle fonction vient de faire son apparition, et nommée os.messagebox(). Elle permet d’afficher une boîte de dialogue (ressemblant beaucoup à celle de Windows) avec des possibilités de personnalisation. On peut par exemple entrer le titre et le message de son choix, ainsi que choisir entre 1 à 4 boutons associés à des actions simples (Oui, Non, Quitter, Annuler, Ok) mais malheureusement qui ne sont pas paramétrables et en anglais. Voici l’exemple fourni par les auteurs avec les commentaires traduits en français :

ONELua_messagebox

La boîte de dialogue sympathique mais qui reste limitée…

De plus, impossible de personnaliser l’apparence des boutons et de la boîte de dialogue. Espérons une mise à jour pour pouvoir personnaliser d’avantage cette petite fonction bien sympathique.

Fonctions écran

Continuons sur une nouvelle fonction qui ravira toute personne qui ne souhaiterait pas utiliser le grand écran de la PSP : la fonction screen.clip(). Vous l’aurez deviné, elle permet de n’afficher qu’une partie de l’écran déterminable avec la fonction.

ONELua_screen.clip()

Le logo Custom Protocol un peu coupé :p

 

Fonctions texte

Le développeur a également ajouté une fonctionnalité déjà présente dans plusieurs Lua Players : la fonctionnalité permettant de faire défiler un texte. Disponible maintenant avec la fonction screen.print(), il est ainsi possible de réaliser “un scroll” du texte de gauche à droite, de droite à gauche, de droite à gauche puis de gauche à droite et…

ONELuav3_scroll

La fonction screen.print() fait maintenant défiler le texte.

Concernant toujours la fonction gérant l’affichage de texte, il est maintenant possible de pouvoir justifier le texte en plus d’aligner à droite, à gauche ou bien au centre.

Fonction contrôle

L’une des dernières principales nouveautés dont nous allons vous parler concerne les contrôles : qui n’a jamais trouvé cela fatigant dans un homebrew de devoir appuyer plusieurs fois sur “Haut” ou “Bas” pour naviguer dans un long menu ? Ce n’est clairement pas pratique, mais gdljjrod et Rober Galarga ont trouvé une solution : la fonction buttons.interval(). Elle permet tout simplement de simuler le fait de rappuyer sur une touche, tout cela étant paramétrable que ce soit le temps d’activation ou le temps entre chaque répétition. Cette fonction ne fonctionne évidemment pas si vous avez choisi que l’action effectuée doit être “maintenir appuyer le bouton”.

Autres fonctions

Dans les ajouts mineurs, on retrouve plusieurs petites nouveautés. Tout d’abord, la fonction amg.screenshot() a été ajoutée et permet, comme vous l’aurez sans doute deviné, de prendre une capture d’écran lorsque vous utilisez la librairie AMG spécialisée dans la 3D. Ensuite, les fonctions timers.new et timer.reset retournent la valeur initiale, et la fonction os.cfw() reconnait si l’utilisateur utilise le VHBL. Enfin, la fonction ini.read() peut maintenant lire jusqu’à 1024 caractères. Le développeur a amélioré par ailleurs les performances et corrigé des bugs notamment celui concernant la fonction screen.textheight().

Comme vous pouvez le constater, le ONELua version 3 est l’aboutissement d’un long travail de ces développeurs qui incluent des nouveautés de plus en plus ambitieuses. En espérant qu’ils ne s’arrêtent pas de si tôt !

Bouton télécharger

ONELua v3 pour PSP/PS Vita

Pour finir ce long article en beauté, on va conclure comme dans notre dernier article sur une superbe vidéo montrant les capacités de ce Lua Player. Mise en ligne par gljjrod, il s’agit d’une capture vidéo de la démo réalisée par Mills (développeur connu notamment pour son jeu Space Ball) baptisée Fruit Explosion, que nous vous conseillons de télécharger que vous soyez développeur ou pas pour admirer les capacités de notre bonne vielle PSP.

Bouton télécharger

Fruit Explosion pour PSP/PS Vita