{"id":5423,"date":"2015-07-12T17:36:21","date_gmt":"2015-07-12T15:36:21","guid":{"rendered":"https:\/\/www.customprotocol.com\/?post_type=it_programmation&amp;p=5423"},"modified":"2015-07-12T17:36:21","modified_gmt":"2015-07-12T15:36:21","slug":"psp-vita-le-onelua-de-nouveau-mis-a-jour","status":"publish","type":"it_programmation","link":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/","title":{"rendered":"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour"},"content":{"rendered":"<p style=\"text-align: justify;\"><div align=\"center\" class=\"alert alert-info \"><b><u>Note<\/u><\/b>\u00a0: cet article est tr\u00e8s long et il s'adresse aux d\u00e9veloppeurs \u00e0 devenir ou bien ceux ma\u00eetrisant\u00a0d\u00e9j\u00e0 le langage <em>Lua<\/em> souhaitant d\u00e9couvrir ce que la PSP a dans le ventre. La quantit\u00e9 de travail fourni dans cet article est consid\u00e9rable et j'esp\u00e8re que vous l'appr\u00e9cierez car j'y ai consacr\u00e9 beaucoup de mon temps libre. Je tiens \u00e0 remercier notamment <em>gdljjrod<\/em> ainsi que<em>\u00a0Davis Nu\u00f1ez<\/em> pour leur patience et leur aide \u00e0 la r\u00e9daction de cet article.<\/div>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.customprotocol.com\/underground\/version-3-onelua-arrive-tres-bientot\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nous vous l'avions annonc\u00e9<\/a>, <em>gdljjrod<\/em> et <em>Rober Galarga<\/em> ont mis \u00e0 jour leur interpr\u00e9teur Lua pour PSP d\u00e9nomm\u00e9 <strong>ONELua<\/strong>. Apr\u00e8s deux versions r\u00e9ussies, les deux d\u00e9veloppeurs reviennent aujourd'hui avec une nouvelle version contenant encore une flop\u00e9e de nouveaut\u00e9s que nous allons <strong>d\u00e9couvrir et d\u00e9cortiquer ensemble<\/strong> pour vous permettre de comprendre leur utilisation via des explications, des exemples et des captures d'\u00e9cran&nbsp;: bref un article sign\u00e9 <strong>Custom Protocol<\/strong>.<\/p>\n<figure id=\"attachment_5173\" aria-describedby=\"caption-attachment-5173\" style=\"width: 480px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5173 size-full\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3.png\" alt=\"vignette-ONELua-v3\" width=\"480\" height=\"272\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"caption-attachment-5173\" class=\"wp-caption-text\">Le <b>ONELua<\/b> Version 3<\/figcaption><\/figure>\n<hr \/>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Optimisations<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Commen\u00e7ons tout d'abord par les nouveaut\u00e9s au niveau des optimisations. Le <strong>ONELua<\/strong> en version 3 supporte maintenant les PS Vita utilisant le <strong>VHBL<\/strong>, pratique pour lancer des <em>homebrews<\/em> si on poss\u00e8de le jeu (et sa d\u00e9mo) <a href=\"https:\/\/www.customprotocol.com\/underground\/vita-nouvel-exploit-disponible-demo\/\">Toukiden: Kiwami<\/a> (dispo uniquement sr le <em>Store<\/em> JP) poss\u00e9dant un exploit en 3.51, ou encore l'<a href=\"https:\/\/www.customprotocol.com\/underground\/tuto-utiliser-exploit-impatchable-qwikrazor87-firmware-3-36-3-50\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em>exploit World of Pool<\/em><\/a>. Ainsi le <em>Lua Player<\/em> devient pleinement compatible pour tourner sur toutes les PSP mais \u00e9galement sur les PS Vita. Les d\u00e9veloppeurs ont \u00e9galement ajout\u00e9 une nouvelle biblioth\u00e8que nomm\u00e9e <strong>BitOp<\/strong> qui ajoute des op\u00e9rations binaires sur les nombres. Vous pouvez regarder les fonctions disponibles avec des exemples \u00e0 <a href=\"http:\/\/bitop.luajit.org\/api.html\">cette adresse<\/a>.<\/p>\n<figure id=\"attachment_2311\" aria-describedby=\"caption-attachment-2311\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2311 size-medium\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-300x210.png\" alt=\"N'oubliez pas de consulter notre tutoriel pour garder votre PS Vita en firmware 3.36 et emp\u00eacher la mise \u00e0 jour automatique\" width=\"300\" height=\"210\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-300x210.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-370x259.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-270x189.png 270w, https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-570x399.png 570w, https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita.png 720w, https:\/\/www.customprotocol.com\/medias\/2015\/02\/health-psvita-300x210@2x.png 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2311\" class=\"wp-caption-text\">Le <b>ONELua<\/b> version 3 pleinement compatible avec la PS Vita<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">Cette biblioth\u00e8que n'a pas \u00e9t\u00e9 impl\u00e9ment\u00e9e au <strong>ONELua<\/strong> par hasard, en effet, vous trouverez dans l'archive contenant l'interpr\u00e9teur un exemple vous d\u00e9montrant comment utiliser une nouvelle fonction permettant de cr\u00e9er des maps avec un simple fichier texte. Il y a seulement deux fonctions mais aux fonctionnalit\u00e9s int\u00e9ressantes.<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonction Map\">map.new(IMAGE tileset, TABLE mapData, NUMBER TileX, NUMBER TileY)\n--IMAGE tileset&nbsp;: Image g\u00e9n\u00e9r\u00e9 via GBA Graphics contenant les textures pour la map\n--TABLE mapdata&nbsp;: Map cr\u00e9\u00e9 via GBA Graphics contenant les informations de la map\n--NUMBER TileX&nbsp;: Taille largeur en pixel des textures \u00e0 d\u00e9couper\n--NUMBER TileY&nbsp;: Taille longueur en pixel des textures \u00e0 d\u00e9couper\n--Retourne la map (\u00e0 stocker dans une variable)\n\nmap.blit(MAP map, NUMBER x, NUMBER y)\n--MAP map&nbsp;: Map \u00e0 afficher g\u00e9n\u00e9r\u00e9 via la fonction map.new\n--NUMBER x&nbsp;: Placement sur l'\u00e9cran en x\n--NUMBER y&nbsp;: Placement sur l'\u00e9cran en y\n--Ne retourne rien<\/pre>\n<p style=\"text-align: justify;\">On peut soit dans l'exemple fourni cr\u00e9er une map en vue de face mais \u00e9galement en vue de c\u00f4t\u00e9. Comme cit\u00e9 dans les fonctions, il vous faudra obligatoirement utiliser le logiciel <a href=\"http:\/\/www.mobile-dev.ch\/dl\/pc\/GBA%20Graphics%201.09.7z\">GBA Graphics 1.09<\/a> disponible certes en anglais mais aussi en fran\u00e7ais&#8239;!<\/p>\n<p style=\"text-align: justify;\">Voici quelques exemples post\u00e9s par plusieurs d\u00e9veloppeurs des possibilit\u00e9s de ces fonctions.<\/p>\n<div align=\"center\">\n<blockquote class=\"twitter-tweet\" lang=\"fr\">\n<p dir=\"ltr\" lang=\"en\" style=\"text-align: center;\">Peace in <a href=\"https:\/\/twitter.com\/hashtag\/An%C3%A9sidor?src=hash\">#An\u00e9sidor<\/a> but for how long&#8239;? Powered by <a href=\"https:\/\/twitter.com\/hashtag\/ONELuav3?src=hash\">#ONELuav3<\/a> developed by <a href=\"https:\/\/twitter.com\/gdljjrod\">@gdljjrod<\/a> and Rober Galarga. <a href=\"http:\/\/t.co\/J28FzCronr\">pic.twitter.com\/J28FzCronr<\/a><\/p>\n<p>\u2014 Applelo (@Applelo1) <a href=\"https:\/\/twitter.com\/Applelo1\/status\/614709397776900096\">27 Juin 2015<\/a><\/p>\n<\/blockquote>\n<blockquote class=\"twitter-tweet\" lang=\"fr\">\n<p dir=\"ltr\" lang=\"en\"><a href=\"https:\/\/twitter.com\/gdljjrod\">@gdljjrod<\/a><a href=\"https:\/\/twitter.com\/Applelo1\">@Applelo1<\/a><a href=\"https:\/\/twitter.com\/CustomProtocol\">@CustomProtocol<\/a> Trying to create my own Super Mario world test <a href=\"https:\/\/twitter.com\/hashtag\/Tilesets?src=hash\">#Tilesets<\/a><a href=\"https:\/\/twitter.com\/hashtag\/Onelua?src=hash\">#Onelua<\/a><a href=\"https:\/\/twitter.com\/hashtag\/2D?src=hash\">#2D<\/a><a href=\"http:\/\/t.co\/TpY61PCLGy\">pic.twitter.com\/TpY61PCLGy<\/a><\/p>\n<p>\u2014 Davis Nu\u00f1ez (@DevDavisNunez) <a href=\"https:\/\/twitter.com\/DevDavisNunez\/status\/611610696652959744\">18 Juin 2015<\/a><\/p>\n<\/blockquote>\n<\/div>\n<p style=\"text-align: justify;\">En exemple, pour utiliser cette fonction, vous pouvez vous r\u00e9f\u00e9rer au contenu de l'archive du <strong>ONELua <\/strong>o\u00f9 le code a \u00e9t\u00e9 comment\u00e9 par @applelo1 (moi m\u00eame) en fran\u00e7ais.<\/p>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonctions images<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Passons ensuite aux fonctions images, o\u00f9 nous avons le droit \u00e0 une ribambelle de nouveaut\u00e9s. Nous avons enfin la possibilit\u00e9 de charger les images dans la VRAM (m\u00e9moire vid\u00e9o) via la fonction <em>image.loadv()<\/em> pour un affichage plus rapide de celles-ci (pour des <em>sprites<\/em> par exemple) mais plus limit\u00e9 en m\u00e9moire que la RAM (m\u00e9moire vive). Il est aussi possible de \"d\u00e9placer\" une image de la VRAM \u00e0 la RAM et inversement en utilisant la fonction <em>image.move()<\/em>.<\/p>\n<p style=\"text-align: justify;\">D\u00e9sormais, via la fonction <em>image.loadfromdata()<\/em>, les images converties en donn\u00e9es binaires peuvent \u00eatre charg\u00e9es, utile pour charger les images disponibles sur internet permettant un gain de rapidit\u00e9. Un petit exemple s'impose pour vous montrer&nbsp;:<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Exemple image.loadfromdata\">local fp&nbsp;=&nbsp;io.open(\"monimg.png\",\"rb\")--J'ouvre l'image comme si s'\u00e9tait un fichier\nlocal databin&nbsp;=&nbsp;fp:read(\"*a\")--Je lis le contenu du fichier\nfp:close()--Je ferme la lecture du fichier\n\nmonimg&nbsp;=&nbsp;image.loadfromdata(databin,__PNG)--La fonction charge et transforme les donn\u00e9es binaires en fichiers\n\nwhile true do--J'ouvre ma boucle\nimage.blit(monimg,0,0) --J'affiche mon image\nscreen.flip()--Je rafraichie l'\u00e9cran\nend--Je ferme la boucle<\/pre>\n<p style=\"text-align: justify;\">Et c'est pas fini, puisqu'on peut \u00e9galement modifier ses images via trois nouvelles fonctions&#8239;! La premi\u00e8re,<em> image.blitadd()<\/em>, permet d'afficher l'image en y ajoutant un effet de couleur alors que la deuxi\u00e8me, <em>image.blitsub()<\/em>, au contraire, permet de supprimer la couleur. La derni\u00e8re quant \u00e0 elle, <em>image.blittint()<\/em>, permet d'afficher une image et de la teindre \u00e9galement d'une couleur.<\/p>\n<div id='gallery-1' class='gallery galleryid-5423 gallery-columns-2 gallery-size-gridlove-single'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a class=\"gridlove-popup\" href='https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua.png'><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"272\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua.png\" class=\"attachment-gridlove-single size-gridlove-single\" alt=\"\" aria-describedby=\"gallery-1-5336\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_red_onelua-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-1-5336'>\n\t\t\t\timage.blittint() permet par exemple de rendre Custom Protocol tr\u00e8s saignant\n\t\t\t\t<\/figcaption><\/figure><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a class=\"gridlove-popup\" href='https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua.png'><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"272\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua.png\" class=\"attachment-gridlove-single size-gridlove-single\" alt=\"\" aria-describedby=\"gallery-1-5335\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/custom_protocol_imageadd_onelua-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a>\n\t\t\t<\/div>\n\t\t\t\t<figcaption class='wp-caption-text gallery-caption' id='gallery-1-5335'>\n\t\t\t\timage.blitadd() adoucie l&#8217;image\n\t\t\t\t<\/figcaption><\/figure>\n\t\t<\/div>\n\n<p style=\"text-align: justify;\">Voici le r\u00e9capitulatif de toute les nouvelles fonctions concernant les images retranscrit ici.<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonctions Image\">image.loadv(STRING path)\nimage.loadv(STRING path, COLOR mask)\nimage.loadv(STRING path, NUMBER w, NUMBER h)\nimage.loadv(STRING path, NUMBER w, NUMBER h, COLOR mask)\n--STRING path&nbsp;: Chemin de l'image\n--COLOR mask&nbsp;: Masque de couleur \u00e0 appliquer \u00e0 l'image\n--NUMBER w&nbsp;: Largeur pour couper les sprites\n--NUMBER h&nbsp;: Hauteur pour couper les sprites\n--Retourne une image, pr\u00eate \u00e0 \u00eatre utiliser.\n\nimage.move(IMAGE img)\n--IMAGE img&nbsp;: Variable de l'image\n--Ne retourne rien\n\nimage.loadfromdata(STRING data, NUMBER type)\n--STRING data&nbsp;: Donn\u00e9e de l'image en fichier binaire\n--NUMBER type&nbsp;: \n---------------__PNG (0) pour image en .png\n---------------__JPG (1) pour image en .jpg\n---------------__GIF (2) pour image en .gif\n\n\nimage.blitadd(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)\n--IMAGE img&nbsp;: Variable de l'image\n--NUMBER x&nbsp;: Placement sur l'\u00e9cran en x\n--NUMBER Y&nbsp;: Placement sur l'\u00e9cran en y\t\n--NUMBER coef&nbsp;: Niveau d'ajout de couleur (entre 0 et 255)\n--Ne retourne rien\n\nimage.blitsub(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)\n--IMAGE img&nbsp;: Variable de l'image\n--NUMBER x&nbsp;: Placement sur l'\u00e9cran en x\n--NUMBER Y&nbsp;: Placement sur l'\u00e9cran en y\t\n--NUMBER coef&nbsp;: Niveau de suppression de couleur (entre 0 et 255)\n--Ne retourne rien\n\nimage.blittint(IMAGE img,NUMBER x,NUMBER y,COLOR color)\n--IMAGE img&nbsp;: Variable de l'image\n--NUMBER x&nbsp;: Placement sur l'\u00e9cran en x\n--NUMBER Y&nbsp;: Placement sur l'\u00e9cran en y\t\n--COLOR color&nbsp;: Couleur pour teindre l'image\n--Ne retourne rien<\/pre>\n<p style=\"text-align: justify;\">Le <strong>ONELua<\/strong> se montre aussi tr\u00e8s performant comme gestionnaire des <em>EBOOT.PBP<\/em>, 3 nouvelles fonctions font ainsi leur entr\u00e9e avec cette troisi\u00e8me version par ce que l'on appelle leurs <em>callbacks<\/em>. La fonction <em>game.pack()<\/em> permet de cr\u00e9er un <em>EBOOT<\/em> si vous disposez d'un dossier contenant toutes les ressources n\u00e9cessaires (PARAM.SFO, ICON0.PNG...). Ensuite, <em>game.add()<\/em> permet d'ajouter ou remplacer un fichier alors que la fonction <em>game.remove()<\/em> permet finalement de supprimer un fichier contenu dans l'<em>EBOOT.PBP<\/em>.<\/p>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonctions TV<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Vous devriez savoir, puisque nous vous l'avions d\u00e9j\u00e0 <a href=\"https:\/\/www.customprotocol.com\/underground\/version-3-onelua-arrive-tres-bientot\/\">annonc\u00e9<\/a>, que le <strong>ONELua<\/strong> int\u00e8gre d\u00e9sormais des fonctions li\u00e9es \u00e0 la t\u00e9l\u00e9vision, la premi\u00e8re \u00e9tant de pouvoir retransmettre l'\u00e9cran de la PSP vers l'\u00e9cran d'une t\u00e9l\u00e9 si vous disposez d'un adaptateur. Il est possible notamment de r\u00e9gler via cette fonction la qualit\u00e9 de la retransmission. Attention, il vous faudra imp\u00e9rativement le <em>dvemgr.prx <\/em><i>contenu dans l'archive pour pouvoir faire fonctionner la fonction. La deuxi\u00e8me, <\/i><em>os.cabletv()<\/em><i>, permet de <\/i>reconna\u00eetre si votre PSP est branch\u00e9e \u00e0 un \u00e9cran externe ainsi que le type de c\u00e2ble utilis\u00e9.<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonctions T\u00e9l\u00e9visions\">os.modetv(NUMBER quality)\t\n--Active la retransmission\n--NUMBER quality&nbsp;: La qualit\u00e9 de retransmission\n--------------------__8888 (32 bits RGBA)\n--------------------__4444 (16 bits R4G4B4A4)\n--------------------__5551 (16 bits R5G5B5A1)\n--------------------__5650 (16 bits R5G5B5, pas de cha\u00eene alpha)\n--Ne retourne rien\n\nos.modetv()\n--D\u00e9sactive la retransmission\n--Ne retourne rien\n\nos.cabletv()\t\n--Reconnait le cable utilis\u00e9\n--Retourne un nombre\n--0 si aucun cable n'est connect\u00e9\n--1 si c'est un cable S-Video\/AV (composite)\n--2 si c'est un cable D Terminal Cable\/Component Cable\n<\/pre>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonction windows<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">En plus de cela, une nouvelle fonction vient de faire son apparition, et nomm\u00e9e <em>os.messagebox()<\/em>. Elle permet d'afficher une bo\u00eete de dialogue (ressemblant beaucoup \u00e0 celle de <em>Windows<\/em>) avec des possibilit\u00e9s de personnalisation. On peut par exemple entrer le titre et le message de son choix, ainsi que choisir entre 1 \u00e0 4 boutons associ\u00e9s \u00e0 des actions simples (Oui, Non, Quitter, Annuler, Ok) mais malheureusement qui ne sont pas param\u00e9trables et en anglais. Voici l'exemple fourni par les auteurs avec les commentaires traduits en fran\u00e7ais&nbsp;:<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Exemple os.messagebox()\">option&nbsp;=&nbsp;{\"OK\",\"CANCEL\",\"YES\",\"NO\",\"\"}--Table des r\u00e9ponses\n\n--La variable ou est re\u00e7u les r\u00e9ponses de la fonction os.messagebox()\nlocal response&nbsp;=&nbsp;5\n\nlocal title&nbsp;=&nbsp;\"Test Of Box\" -- Titre\nlocal msg&nbsp;=&nbsp;\"Hello From Box...\\nOK&nbsp;=&nbsp;1\\nCANCEL&nbsp;=&nbsp;2\\nYES&nbsp;=&nbsp;3\\nNO&nbsp;=&nbsp;4\\nEXIT&nbsp;=&nbsp;5\" -- Message\n\nwhile true do\n    buttons.read() -- Lecture des touches press\u00e9s\n\n    if buttons.triangle then -- Pressez \/\\\n\t-- Montre deux boutons X:OK, O:CANCEL par d\u00e9faut\n\t\tresponse&nbsp;=&nbsp;os.messagebox(title,msg)\n\n    elseif buttons.circle then --Pressez O\n\t-- Montre le bouton 0:EXIT\n        response&nbsp;=&nbsp;os.messagebox(title,msg,__CIRCLE,__EXIT)\n\n    elseif buttons.cross then--Pressez X\n\t-- Montre deux boutons avec L: No, R: Yes\n\t\tresponse&nbsp;=&nbsp;os.messagebox(title,msg,__L,__NO,__R,__YES)\n\n    elseif buttons.square then -- Pressez []\n\t-- Montre trois boutons avec L: No, R: Yes X: YES, O: NO, \/\\: Exit\n\t\tresponse&nbsp;=&nbsp;os.messagebox(title,msg,__CROSS,__YES,__CIRCLE,__CANCEL,__TRIANGLE,__EXIT)\n    end\n\n    screen.print(10,5,\"Example Message Box\")\n\t\n\tscreen.print(10,17,\"Presez triangle pour un simple Message Box (X:OK, O:CANCEL)\",0.6)\n\tscreen.print(10,32,\"Pressez rond pour un Message Box (O:EXIT)\",0.6)\n\tscreen.print(10,47,\"Pressez croix pour un Message Box (L:NO, R:YES)\",0.6)\n\tscreen.print(10,62,\"Pressez carr\u00e9 pour un Message Box (X:YES, O:CANCEL, triangle:EXIT)\",0.6)\n\n    -- Nous affichons la valeur pour telle action&nbsp;:)\n\tscreen.print(10,200,\"R\u00e9sultat: \"..response..\" Selection: \"..option[response])\n\n    screen.flip() -- Rafra\u00eechissement de l'\u00e9cran\nend\n\t<\/pre>\n<figure id=\"attachment_5367\" aria-describedby=\"caption-attachment-5367\" style=\"width: 480px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5367 size-full\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox.png\" alt=\"ONELua_messagebox\" width=\"480\" height=\"272\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_messagebox-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"caption-attachment-5367\" class=\"wp-caption-text\">La bo\u00eete de dialogue sympathique mais qui reste limit\u00e9e...<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">De plus, impossible de personnaliser l'apparence des boutons et de la bo\u00eete de dialogue. Esp\u00e9rons une mise \u00e0 jour pour pouvoir personnaliser d'avantage cette petite fonction bien sympathique.<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonction os.messagebox()\">os.messagebox(STRING title,STRING mje)\n--STRING title&nbsp;: Le titre de la bo\u00eete de dialogue\n--STRING mje&nbsp;: Le message \u00e0 mettre dans la bo\u00eete de dialogue\n--Retourne 1 si la r\u00e9ponse est OK (quand vous pressez X) ou bien 2 quand vous choisissez CANCEL (quand vous pressez O)\n\nos.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1)\n--STRING title&nbsp;: Le titre de la bo\u00eete de dialogue\n--STRING mje&nbsp;: Le message \u00e0 mettre dans la bo\u00eete de dialogue\n--NUMBER button1&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned1&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT\n\nos.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2)\n--STRING title&nbsp;: Le titre de la bo\u00eete de dialogue\n--STRING mje&nbsp;: Le message \u00e0 mettre dans la bo\u00eete de dialogue\n--NUMBER button1&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned1&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--NUMBER button2&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned2&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT\n\nos.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2,NUMBER button3,NUMBER assigned3)\n--STRING title&nbsp;: Le titre de la bo\u00eete de dialogue\n--STRING mje&nbsp;: Le message \u00e0 mettre dans la bo\u00eete de dialogue\n--NUMBER button1&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned1&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--NUMBER button2&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned2&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--NUMBER button3&nbsp;: Le bouton \u00e0 inscrire (par exemple __CIRCLE, __UP, __L)\n--NUMBER assigned3&nbsp;: L'action \u00e0 assigner __OK, __CANCEL, __YES, __NO, __EXIT\n--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT\n<\/pre>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonctions \u00e9cran<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Continuons sur une nouvelle fonction qui ravira toute personne qui ne souhaiterait pas utiliser le <del>grand<\/del> \u00e9cran de la PSP&nbsp;: la fonction <em>screen.clip()<\/em>. Vous l'aurez devin\u00e9, elle permet de n'afficher qu'une partie de l'\u00e9cran d\u00e9terminable avec la fonction.<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonction screen.clip()\">screen.clip(NUMBER x,NUMBER y, NUMBER w, NUMBER h)\n--Active la d\u00e9limitation d'affichage \u00e0 l'\u00e9cran\n--NUMBER x&nbsp;: Position sur l'axe x \n--NUMBER y&nbsp;: Position sur l'axe y\n--NUMBER w&nbsp;: Largeur\n--NUMBER h&nbsp;: Hauteur\n--Ne retourne rien\n\nscreen.clip()\n--D\u00e9sactive la d\u00e9limitation d'affichage \u00e0 l'\u00e9cran\n--Ne retourne rien<\/pre>\n<figure id=\"attachment_5369\" aria-describedby=\"caption-attachment-5369\" style=\"width: 480px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5369 size-full\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_.png\" alt=\"ONELua_screen.clip()\" width=\"480\" height=\"272\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELua_screen.clip_-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"caption-attachment-5369\" class=\"wp-caption-text\">Le logo <strong>Custom Protocol<\/strong> un peu coup\u00e9&nbsp;:p<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonctions texte<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Le d\u00e9veloppeur a \u00e9galement ajout\u00e9 une fonctionnalit\u00e9 d\u00e9j\u00e0 pr\u00e9sente dans plusieurs <em>Lua Players<\/em>&nbsp;: la fonctionnalit\u00e9 permettant de faire d\u00e9filer un texte. Disponible maintenant avec la fonction screen.print(), il est ainsi possible de r\u00e9aliser \"un scroll\" du texte de gauche \u00e0 droite, de droite \u00e0 gauche, de droite \u00e0 gauche puis de gauche \u00e0 droite et...<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Example D\u00e9filement de Texte\">-- ## Example Scroll Print ##\n\n-- Nous assignors des variables pour les valeurs X permettrons le daplacement du texte\nscrollx1&nbsp;=&nbsp;10 -- axe pour d\u00e9placement vers la gauche (droite vers gauche)\nscrollx2&nbsp;=&nbsp;450 -- axe pour d\u00e9placement vers la droite (gauche vers droite)\nscrollx3&nbsp;=&nbsp;240 -- axe pout d\u00e9placement de la droite vers la gauche (droite vers la gauche sans disparition)\nscrollx4&nbsp;=&nbsp;240 -- gauche droite puis droite gauche (centr\u00e9)\n\n\n--Charge la palette de couleur\ncolor.loadpalette()\n\nwhile true do--On ouvre la boucle\n\tdraw.line(240,0,240,272,color.red) --Nous tra\u00e7ons une ligne vertical rouge au milieu de l'\u00e9cran\n\t--[[La variable pr\u00e9c\u00e9dente assign\u00e9 \u00e0 l'axe x est pass\u00e9 comme un argument et ergot le r\u00e9sultat de la fonction et s'ajoute \u00e0 cela l'argument \"w\" pour r\u00e9gler l'affichage de la zone de texte.]]\n\n\n\t--__SLEFT est comme un alignement vers la gauche affich\u00e9 \u00e0 partir de l'axe x vers la droite avec un espace d'affichage de 90.\n\tscrollx1&nbsp;=&nbsp;screen.print(scrollx1,10,\"test scroll gauche\",0.7,color.white,color.black,__SLEFT,90)\n\n\t--__SRIGHT est comme un alignement vers la droite affich\u00e9 \u00e0 partir de l'axe x vers la gauche avec un espace d'affichage de 100.\n\tscrollx2&nbsp;=&nbsp;screen.print(scrollx2,25,\"test scroll right\",0.7,color.white,color.black,__SRIGHT,100)\n\n\t-- __STHROUGH est comme un alignement vers la gauche qui est affich\u00e9 \u00e0 partir de l'axe x vers la droite avec un espace d'affichage de 100. \n\tscrollx3&nbsp;=&nbsp;screen.print(scrollx3,50,\"test scroll throuh\",0.7,color.white,color.black,__STHROUGH,100)\n\n\t--[[__SSEESAW est un alignement au centre affich\u00e9 sur l'axe x - moiti\u00e9 de l'espace pour l'afficher,\ndu droite centrer \u00e0 gauche centr\u00e9 avec un espace d'affichage de 100\n\tNote: Si ce mode n'a pas d'effet, c'est pour les raison pr\u00e9cedemment cit\u00e9, alors il effete normalement un texte align\u00e9 \u00e0 gauche.]]\n\n\tscrollx4&nbsp;=&nbsp;screen.print(scrollx4,70,\"test scroll seesaw\",0.7,color.white,color.black,__SSEESAW,100)\n\n\tscreen.flip() --Rafraichissement de l'\u00e9cran\nend--Fin de la boucle\n\t<\/pre>\n<figure id=\"attachment_5420\" aria-describedby=\"caption-attachment-5420\" style=\"width: 480px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5420 size-full\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll.png\" alt=\"ONELuav3_scroll\" width=\"480\" height=\"272\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll.png 480w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll-300x170.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll-370x210.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/07\/ONELuav3_scroll-270x153.png 270w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"caption-attachment-5420\" class=\"wp-caption-text\">La fonction <i>screen.print()<\/i> fait maintenant d\u00e9filer le texte.<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">Concernant toujours la fonction g\u00e9rant l'affichage de texte, il est maintenant possible de pouvoir justifier le texte en plus d'aligner \u00e0 droite, \u00e0 gauche ou bien au centre.<\/p>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Fonction contr\u00f4le<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">L'une des derni\u00e8res principales nouveaut\u00e9s dont nous allons vous parler concerne les contr\u00f4les&nbsp;: qui n'a jamais trouv\u00e9 cela fatigant dans un <em>homebrew<\/em> de devoir appuyer plusieurs fois sur \"Haut\" ou \"Bas\" pour naviguer dans un long menu&#8239;? Ce n'est clairement pas pratique, mais <em>gdljjrod<\/em> et <em>Rober Galarga <\/em>ont trouv\u00e9 une solution&nbsp;: la fonction <em>buttons.interval(). <\/em>Elle permet tout simplement de simuler le fait de rappuyer sur une touche, tout cela \u00e9tant param\u00e9trable que ce soit le temps d'activation ou le temps entre chaque r\u00e9p\u00e9tition. Cette fonction ne fonctionne \u00e9videmment pas si vous avez choisi que l'action effectu\u00e9e doit \u00eatre \"maintenir appuyer le bouton\".<\/p>\n<pre class=\"lang:lua decode:true\" title=\"Fonction buttons.interval()\">buttons.interval(NUMBER delay,NUMBER interval)\n--Active la fonction\n--NUMBER delay&nbsp;: Le d\u00e9lai en cycle avant l'activation (valeur conseill\u00e9 40)\n--NUMBER interval&nbsp;: L'interval de r\u00e9p\u00e9tition en cycle (valeur conseill\u00e9 10)\n--Ne retourne rien\n\nbuttons.interval()\n--D\u00e9sactive la fonction\n--Ne retourne rien<\/pre>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Autres fonctions<\/strong><\/span><\/h4>\n<p style=\"text-align: justify;\">Dans les ajouts mineurs, on retrouve plusieurs petites nouveaut\u00e9s. Tout d'abord, la fonction<em> amg.screenshot()<\/em> a \u00e9t\u00e9 ajout\u00e9e et permet, comme vous l'aurez sans doute devin\u00e9, de prendre une capture d'\u00e9cran lorsque vous utilisez la librairie AMG sp\u00e9cialis\u00e9e dans la 3D. Ensuite, les fonctions <em>timers.new<\/em> et <em>timer.reset<\/em> retournent la valeur initiale, et la fonction <em>os.cfw() <\/em>reconnait si l'utilisateur utilise le <strong>VHBL<\/strong>. Enfin, la fonction <em>ini.read()<\/em> peut maintenant lire jusqu'\u00e0 1024 caract\u00e8res. Le d\u00e9veloppeur a am\u00e9lior\u00e9 par ailleurs les performances et corrig\u00e9 des <em>bugs<\/em> notamment celui concernant la fonction <em>screen.textheight()<\/em>.<\/p>\n<p style=\"text-align: justify;\">Comme vous pouvez le constater, le <strong>ONELua<\/strong> version 3 est l'aboutissement d'un long travail de ces d\u00e9veloppeurs qui incluent des nouveaut\u00e9s de plus en plus ambitieuses. En esp\u00e9rant qu'ils ne s'arr\u00eatent pas de si t\u00f4t&#8239;!<\/p>\n<figure id=\"attachment_5235\" aria-describedby=\"caption-attachment-5235\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/ONEluav3.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5235 size-medium\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-300x91.png\" alt=\"Bouton t\u00e9l\u00e9charger\" width=\"300\" height=\"91\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-300x91.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-370x112.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-270x82.png 270w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2.png 528w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-5235\" class=\"wp-caption-text\"><b>ONELua v3<\/b> pour PSP\/PS Vita<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">Pour finir ce long article en beaut\u00e9, on va conclure comme dans notre dernier article sur une superbe vid\u00e9o montrant les capacit\u00e9s de ce <em>Lua Player<\/em>. Mise en ligne par <em>gljjrod<\/em>, il s'agit d'une capture vid\u00e9o de la d\u00e9mo r\u00e9alis\u00e9e par <em>Mills<\/em> (d\u00e9veloppeur connu notamment pour son jeu <strong><a href=\"https:\/\/www.customprotocol.com\/underground\/space-ball-un-jeu-de-golf-en-3d-utilisant-le-onelua\/\">Space Ball<\/a><\/strong>) baptis\u00e9e <strong>Fruit Explosion<\/strong>, que nous vous conseillons de t\u00e9l\u00e9charger que vous soyez d\u00e9veloppeur ou pas pour admirer les capacit\u00e9s de notre bonne vielle PSP.<\/p>\n<figure id=\"attachment_5235\" aria-describedby=\"caption-attachment-5235\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/48796093\/Onelua\/Demo3D\/ONEDEMO_(F_EXPLOSION).rar\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5235 size-medium\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-300x91.png\" alt=\"Bouton t\u00e9l\u00e9charger\" width=\"300\" height=\"91\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-300x91.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-370x112.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2-270x82.png 270w, https:\/\/www.customprotocol.com\/medias\/2015\/06\/bouton-telecharger-v2.png 528w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-5235\" class=\"wp-caption-text\"><b>Fruit Explosion<\/b> pour PSP\/PS Vita<\/figcaption><\/figure>\n<div class=\"inserervideo\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/Mcl6zDHoeLc\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua&#8239;!<\/p>\n","protected":false},"author":22,"featured_media":5173,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"footnotes":""},"categories":[454,12,22,581],"tags":[627],"programmation-categorie":[626,621,580],"class_list":["post-5423","it_programmation","type-it_programmation","status-publish","format-standard","has-post-thumbnail","hentry","category-programmation","category-top","category-tutos","category-tutos-programmation","tag-onelua","programmation_categorie-documentation","programmation_categorie-explications","programmation_categorie-tutos"],"yoast_head":"\n<title>[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/\" \/>\n<meta property=\"og:site_name\" content=\"Custom Protocol\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"480\" \/>\n\t<meta property=\"og:image:height\" content=\"272\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/\",\"url\":\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/\",\"name\":\"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol\",\"isPartOf\":{\"@id\":\"https:\/\/www.customprotocol.com\/#website\"},\"datePublished\":\"2015-07-12T15:36:21+00:00\",\"dateModified\":\"2015-07-12T15:36:21+00:00\",\"description\":\"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !\",\"breadcrumb\":{\"@id\":\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.customprotocol.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmation\",\"item\":\"https:\/\/www.customprotocol.com\/programmation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.customprotocol.com\/#website\",\"url\":\"https:\/\/www.customprotocol.com\/\",\"name\":\"Custom Protocol\",\"description\":\"Site d&#039;hack-tualit\u00e9 et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, \u00e9mulation...)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.customprotocol.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-CA\"}]}<\/script>\n","yoast_head_json":{"title":"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol","description":"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/","og_locale":"fr_CA","og_type":"article","og_title":"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol","og_description":"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !","og_url":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/","og_site_name":"Custom Protocol","og_image":[{"width":480,"height":272,"url":"https:\/\/www.customprotocol.com\/medias\/2015\/06\/vignette-ONELua-v3.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimation du temps de lecture":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/","url":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/","name":"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour - Custom Protocol","isPartOf":{"@id":"https:\/\/www.customprotocol.com\/#website"},"datePublished":"2015-07-12T15:36:21+00:00","dateModified":"2015-07-12T15:36:21+00:00","description":"D\u00e9couvrons ensemble les nouveaut\u00e9s de cette nouvelle version du ONELua !","breadcrumb":{"@id":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.customprotocol.com\/programmation\/psp-vita-le-onelua-de-nouveau-mis-a-jour\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.customprotocol.com\/"},{"@type":"ListItem","position":2,"name":"Programmation","item":"https:\/\/www.customprotocol.com\/programmation\/"},{"@type":"ListItem","position":3,"name":"[PSP] [Vita] Le ONELua de nouveau mis \u00e0 jour"}]},{"@type":"WebSite","@id":"https:\/\/www.customprotocol.com\/#website","url":"https:\/\/www.customprotocol.com\/","name":"Custom Protocol","description":"Site d&#039;hack-tualit\u00e9 et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, \u00e9mulation...)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.customprotocol.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-CA"}]}},"_links":{"self":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/programmation\/5423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/programmation"}],"about":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/types\/it_programmation"}],"author":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/comments?post=5423"}],"version-history":[{"count":0,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/programmation\/5423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media\/5173"}],"wp:attachment":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media?parent=5423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/categories?post=5423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/tags?post=5423"},{"taxonomy":"programmation_categorie","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/programmation-categorie?post=5423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}