Rinnegatamante et NaNnI mettent en ligne un LuaPlayer basé sur les travaux de Zack. Un beau petit lot de nouvelles fonctions est au rendez-vous...
Le LUA est un des langages les plus prisés des débutants en programmation PSP. Sa simplicité comparée à son concurrent plus bas-niveau, le C, a rapidement conquis les utilisateurs qui, avec un peu de persévérance, pouvaient réaliser toutes sortes d'applications et utilitaires pour leurs chères consoles.
Le LuaPlayer Euphoria s'est rapidement imposé sur l'arène des LuaPlayers, proposant une rapidité d’exécution, une gestion de la RAM et une palette de fonctionnalités défiant toute concurrence. Deux développeurs italiens, NaNnI et Rinnegatamante, ont cependant décidé d'aller encore plus loin. Voilà en effet qu'ils nous dévoilent leurs derniers travaux : un nouveau LuaPlayer baptisé tout simplement LuaPlayer Plus. Celui-ci promet un très beau lot de nouvelles fonctions (lecture vidéo, connexion AdHoc...), tout en conservant les performances de l'interpréteur de Zack mentionné plus haut, sur lequel il est basé. Ceci n'étant toutefois qu'une version Bêta, des problèmes de stabilité ou bugs peuvent être rencontrés, ce qui ne sera pas le cas bien évidemment dans les futures révisions.
Un LuaPlayer ? Késako ?
Un LuaPlayer est un interpréteur du langage LUA, faisant donc en quelques sortes le lien entre le système de la console et le script d'un programme, afin que ce dernier puisse être exécuté. Cet outil propose de multiples fonctions que les développeurs peuvent utiliser à souhait dans leurs travaux. Seule contrainte : il faut impérativement que les fichiers du player soient joints à ceux de l'homebrew, sans quoi celui-ci ne serait pas fonctionnel.
Des exemples d'applications sont disponibles dans l'archive que nous vous proposons. Du simple Hello World à l'ISO Loader en passant par un cube en 3D ou encore un décrypteur d'EBOOTs... il y en a pour tous les niveaux et tous les goûts.
Voici la liste des nouvelles fonctions apportées par ce LuaPlayer. Celles-ci sont également accessibles dans le dossier Function List de l'application, mais en anglais uniquement. Un véritable festin pour les fervents passionnées de LUA.
AdHoc
- Adhoc.init() : initialiser le système AdHoc ;
- Adhoc.shutdown() : arrêter le système AdHoc ;
- Adhoc.connect(nom_du_groupe) : se connecter en AdHoc à un groupe ;
- Adhoc.state() : renvoyer l'état de la connexion ;
- Adhoc.geterror() : afficher un message en cas d'erreur ;
- Adhoc.peerexists(adresse_mac) : vérifier si une adresse mac est en ligne ;
- AdhocMatching.init(nom_du_mode,type_de_mode) : initialiser le système d'appairage AdHoc ;
- AdhocMatching.start(message_de_bienvenue) : démarrer le système d'appairage AdHoc en affichant un message de bienvenue ;
- AdhocMatching.decline(adresse_mac) : décliner une connexion provenant de l'adresse mac sélectionnée ;
- AdhocMatching.shutdown() : arrêter le système d'appairage AdHoc ;
- AdhocMatching.events() : renvoyer les évènements survenus lors d'appairage AdHoc ;
- AdhocPtp.hoststart() : initialiser le système d'hôte Peer To Peer ;
- AdhocPtp.clientstart(adresse_mac) : initialiser le système de client PTP, l'hôte étant l'adresse mac sélectionnée ;
- AdhocPtp.receive(données,longueur) : recevoir les données sélectionnées de la longueur sélectionnée ;
- AdhocPtp.send(données,longueur) : envoyer les données sélectionnées de la longueur sélectionnée ;
- AdhocPtp.checkfordata() : vérifier la disponibilité des données sur l'hôte ;
- AdhocPtp.flush() : réinitialiser la connexion ;
- AdhocPtp.hostsshutdown() : arrêter le système d'hôte PTP ;
- AdhocPtp.clientshutdown() : arrêter le système de client PTP.
Batterie
- Battery.getRealCapacity() :renvoyer la capacité réelle de la batterie en mAh ;
- Battery.getTheoryCapacity() : renvoyer la capacité théorique de la batterie en mAh ;
- Battery.getSerial() : renvoyer le numéro de série de la batterie ;
- Battery.getChargeCount() : renvoyer le nombre total de charges ;
- Battery.writeSerial(valeur_de_base,valeur_de_fin) :écrire le numéro de série sélectionné dans l'EEPROM ;
- Batterie.normalize() :dépandoriser la batterie pour en faire un usage normal ;
- Batterie.pandorize() :pandoriser la batterie.
Contrôles
- Controls.read() :lire les touches pressées par l'utilisateur ;
- controls:select() : vérifier la pression de la touche ;
- controls:start() :vérifier la pression de la touche ;
- controls:up() :vérifier la pression de la touche ;
- controls:right() :vérifier la pression de la touche ;
- controls:down() :vérifier la pression de la touche ;
- controls:left() :vérifier la pression de la touche ;
- controls:l() :vérifier la pression de la touche ;
- controls:r() :vérifier la pression de la touche ;
- controls:triangle() :vérifier la pression de la touche ;
- controls:circle() :vérifier la pression de la touche ;
- controls:cross() :vérifier la pression de la touche ;
- controls:square() :vérifier la pression de la touche ;
- controls:home() :vérifier la pression de la touche ;
- controls.hold() :vérifier l'activation du bouton Hold ;
- controls:note() :vérifier la pression de la touche Note ;
- controls:analogX() :vérification du déplacement vertical du pad analogique ;
- controls:analogY() :vérification du déplacement horizontal du pad analogique ;
- controls:buttons : vérification de la pression d'un bouton (en général).
Graphismes
- Screen.waitVblankStart(temps_en_millisecondes) : temps d'attente avant le rafraîchissement vertical de l'écran
- Screen.flip() : échange du buffer d'affichage et du buffer de dessin ;
- Color.new(r,g,b,[a]) : créer une nouvelle couleur RGBA ;
- Color.colors(couleur) : renvoyer la valeur R, G, B, A de la couleur sélectionnée sous la forme d'un tableau multi-dimensions ;
- Image.createEmpty(largeur,hauteur) : créer une image vide ;
- Image.load(nom_de_limage) : charger l'image sélectionnée (seules les extensions .png et .jpg sont supportées) ;
- Image.bmpload(nom_de_limage) : charger l'image bmp sélectionnée ;
- Image.startBlit() : démarrer le système Fast Blit ;
- Image.endBlit() : arrêter le système Fast Blit ;
- Image:blit(x,y,image,[sx],[sy],[largeur],[hauteur],[alpha]) : afficher une image sur l'image/l'écran ;
- Image:clear([couleur]) : effacer l'image sélectionnée de l'écran ;
- Image:fillRect(x,y,largeur,hauteur,couleur) : afficher un rectangle sur l'image/l'écran ;
- Image:drawLine(x,y,sx,sy,couleur) : afficher une ligne sur l'image/l'écran ;
- Image:pixel(x,y,couleur) : afficher un pixel à sur l'image/l'écran ;
- Image:print(x,y,texte,couleur) : afficher du texte à sur l'image/l'écran en utilisant la police par défaut ;
- Image:fontPrint(font,x,y,text,color) : afficher du texte à sur l'image/l'écran en utilisant la police sélectionnée ;
- Image:width() : renvoyer la largeur de l'image ;
- Image:height() : renvoyer la hauteur de l'image ;
- Image:save(nom_du_fichier) : prendre une capture d'écran et la sauvegarder ;
- image:fastClear() : effacer rapidement les éléments affichés à l'écran ;
- Image:fastBlit(x,y,image) : afficher rapidement une image à l'écran/sur une autre image ;
- Font.createMonoSpaced() : charger la police veraMono (incluse dans le LuaPlayer) ;
- Font.createProportional() : charger la police vera (incluse dans le LuaPlayer) ;
- Font.load(police_ttf) : charger une police TrueType ;
- font:setCharSize(largeur,hauteur,x,y) : définir la taille des caractères ;
- font:getTextSize() : renvoyer la taille des caractères dans un tableau.
- ZIP.open(archive) : ouvrir l'archive indiquée ;
- ZIP.oclose(archive) : fermer l'archive indiquée ;
- ZIP.read(archive,nom_du_fichier,[mot_de_passe]) : lire le fichier indiqué dans une archive ;
- ZIP.extract(nom_du_fichier,dossier_de_destination,[mot_de_passe]) : extraire l'archive indiquée ;
- ZIP.readFile(fichier) : ajouter le fichier indiqué à une archive ZIP ;
- ZIP.sizeFile(fichier) : ajouter la taille du fichier indiqué à une archive ZIP ;
- Timer.new([temps_de_depart]) : définir un nouveau compteur ;
- timer:start() : déclencher le compteur indiqué ;
- timer:time() : renvoyer le temps écoulé ;
- timer:stop() : arrêter le compteur indiqué ;
- timer:reset() : réinitialiser le compteur indiqué.
Système
- System.getVersion() : renvoyer le firmware de la console ;
- System.getLanguage() : renvoyer la langue du système ;
- System.irdaWrite(text) : renvoyer le modèle de la console ;
- System.getPSID() : renvoyer le PSID de la console ;
- System.getMacAddress() : renvoyer l'adresse MAC de la console ;
- System.nickname() : renvoyer le pseudo de l'utilisateur ;
- System.getMotherboard() : renvoyer le modèle de la carte mère ;
- System.getTachyon() : renvoyer la version du Tachyon ;
- System.getBaryon() : renvoyer la version du Baryon ;
- System.getPommel() : renvoyer la version du Pommel ;
- System.shutdown() : éteindre la console ;
- System.suspend() : mettre la console en veille ;
- System.quit() : quitter l'application et revenir au XMB ;
- System.usbDiskModeActivate() : activer le mode USB ;
- System.usbDiskModeDeactivate() : désactiver le mode USB ;
- System.setLow() : régler la vitesse du CPU à une basse fréquence ;
- System.setReg() : régler la vitesse du CPU à une fréquence moyenne ;
- System.setHigh() : régler la vitesse du CPU à une haute fréquence ;
- System.getCpuSpeed() : renvoyer la vitesse du CPU ;
- System.getBusSpeed() : renvoyer la vitesse du BUS ;
- System.setCpuSpeed(vitesse) : définir la vitesse du CPU (100, 200, 266 ou 333) ;
- System.powerIsPowerOnline() : renvoyer l'état de la batterie ;
- System.powerIsBatteryExist() : vérifier la présence d'une batterie ;
- System.powerIsBatteryCharging() : vérifier si la batterie est en charge ;
- System.powerGetBatteryChargingStatus() : renvoyer l'état de la charge ;
- System.powerIsLowBattery() : vérifier si l'état de charge est bas ;
- System.powerGetBatteryLifePercent() : renvoyer la durée d'utilisation restante de la batterie ;
- System.powerGetBatteryLifeTime() : renvoyer la durée de vie de la batterie ;
- System.powerGetBatteryTemp() : renvoyer la température de la batterie ;
- System.powerGetBatteryVolt() : renvoyer le voltage de la batterie ;
- System.powerTick() : empêcher la mise en veille de la console ;
- System.loadRemoteJoy() : charger et lancer RemoteJoyLite 0.19 (inclus dans le LuaPlayer) ;
- System.wait(millisecondes) : stopper l’exécution du code pendant un temps donné ;
- System.loadPRX(nom_du_fichier) : charger un module PRX (un accès au kernel nécessaire) ;
- System.startPSX(nom_du_fichier) : lancer le jeu PSX indiqué ;
- System.startELF(nom_du_fichier) : lancer le fichier ELF indiqué ;
- System.startISO(nom_du_fichier,mode) : lancer un ISO en utilisant le mode indiqué (1 = M33 Driver, 2 = NP9660, 3 = Inferno). Note : Seuls les Customs Firmwares utilisant les modules de la Team PRO sont compatibles avec cette fonction.
Archives ZIP
Compteur
- System.startUMDUpdate() : lancer la mise à jour contenue sur l'UMD ;
- System.launchUMD() : lancer l'UMD ;
- System.startUpdate(nom_du_fichier) : lancer une mise à jour depuis le fichier indiqué ;
- System.startPBP(nom_du_fichier) : lancer l'EBOOT indiqué ;
- System.getEboot(nom_du_fichier,mode) : renvoyer le contenu d'une l'image de l'EBOOT indiqué (mode : 1 = Icon0, 2 = PIC0.PNG, 3 = PIC1.PNG) ;
- System.extractPBP(filename,dir) : extraire le contenu d'un EBOOT dans un dossier ;
- System.checkPBP(nom_de_leboot,fichier) : vérifier le contenu du nom de l'EBOOT à partir du fichier indiqué ;
- System.getEbootTitle(nom_du_fichier) : renvoyer le titre de l'EBOOT indiqué ;
- System.getParamTitle(nom_du_fichier) : renvoyer le titre du fichier SFO indiqué ;
- System.getSaveInfo(nom_du_fichier,informations) : renvoyer certaines informations contenues dans le fichier PARAM.SFO d'une sauvegarde (informations : (info: 1 = nom de la sauvegarde, 2 = ID du jeu, 3 = description de la sauvegarde, 4 =nom du jeu) ;
- System.playMP4(nom_du_fichier,[mod_debug]) : jouer le fichier MP4 indiqué (mode_debug : 0 = désactivé, 1 = activé). Note : Seuls les fichiers vidéo sont supportés, et ces derniers doivent utiliser le codec H.264/AVC.
- System.getFreeSize(périphérique) : renvoyer la quantité d'espace libre sur le périphérique indiqué ;
- System.getTotalSize(device) : renvoyer la quantité d'espace total disponible sur le périphérique indiqué ;
- System.getFreeMemory() : renvoyer la quantité de RAM disponible ;
- System.renameDir(dossier_a_deplacer,dossier_de_destination) : déplacer un dossier ;
- System.rename(fichier_a_deplacer,fichier_de_destination) : déplacer un fichier ;
- System.copyDir(dossier_a_copier,dossier_de_destination) : copier un dossier ;
- System.copyFile(fichier_a_copier,fichier_de_destination) : copier un fichier ;
- System.doesDirExist(nom_du_dossier) : vérifier l’existence d'un dossier ;
- System.doesFileExist(nom_du_fichier) : vérifier l'existence d'un fichier ;
- System.currentDirectory([nom du dossier]) : renvoyer/définir le dossier actuel ;
- System.listDirectory(nom du dossier) : renvoyer les fichiers contenus dans un dossier sous la forme d'un tableau multi-dimensions ;
- System.createDirectory(nom du dossier) : créer un dossier ;
- System.removeDirectory(dir) : supprimer le dossier indiqué ;
- System.removeFile(nom_du_fichier) : supprimer le fichier indiqué ;
- System.md5sum(nom_du_fichier) : renvoyer la valeur MD5 du fichier indiqué ;
- System.getFileSize(nom_du_fichier) : renvoyer la taille du fichier indiqué en octets ;
- System.sioInit() : initialiser le système SIO ;
- System.sioRead() : lire depuis le port SIO ;
- System.sioWrite(texte) : écrire le texte indiqué au port SIO ;
- System.irdaInit() : initialiser le système IRDA ;
- System.irdaRead() : lire depuis le port IRDA ;
- System.irdaWrite(texte) : écrire le texte indiqué au port IRDA ;
- System.unassign(dev1,dev2,dev3) : assigner le périphérique indiqué ;
- System.getFPS() : renvoyer le FPS (nombre de frames par seconde) ;
- System.msgDialog(texte,[boutons],[fonction]) : afficher le message d'alerte de Sony ;
- System.osk(description,texte_initial, [inputType], [drawFunc]) : utiliser l'OSK de Sony.
Fichiers audio
Les fonctions qui suivent sont disponibles pour les quatre classes suivantes (selon le format du fichier audio) : Mp3, At3, Wav, Ogg. Par exemple : Mp3.load(), At3.load(), WaV.load() et Ogg.load().
- .load(nom_du_fichier) : charger en mémoire le fichier indiqué ;
- .play() : jouer le dernier fichier chargé ;
- .stop() : interrompre la lecture ;
- .pause() : mettre la lecture en pause ;
- .unload() : décharger le dernier fichier chargé ;
- .volume(volume,canal) : régler le volume ;
- .speed(vitesse, canal) : définir la vitesse de la lecture ;
- .endOfStream() : renvoyer la fin du fichier audio.
Les fonctions ci-dessous en revanche ne sont disponibles que pour deux classes : Mp3me et Aa3me.
- .load(nom_du_fichier) : charger en mémoire le fichier indiqué ;
- .play() : jouer le dernier fichier chargé ;
- .stop() : interrompre la lecture ;
- .pause() : mettre la lecture en pause ;
- .gettime() : renvoyer le temps écoulé depuis le début de la lecture ;
- .percent() : renvoyer le pourcentage du fichier lu ;
- .eos() : renvoyer la fin du fichier audio.
Notons que les fonctions et classes concernant la 3D, l'I/O, les outils mathématiques, ainsi que quelques aspects de la connection AdHoc n'ont pas été citées ci-dessus puisqu'elles sont, soit tirées d'un LuaPlayer existant, ou soit déjà intégrées au langage. Nous vons invitons donc, pour plus de précisions à leur sujet, à consulter la documentation officielle du LUA.
Lua Player Plus Bêta
Utile aux développeurs uniquement
Téléchargement, instructions et mode d'emploi disponibles
dans la fiche de téléchargement ci-dessous.