<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Archives des Tutoriels - Custom Protocol</title>
	<atom:link href="https://www.customprotocol.com/programmation-categorie/tutos/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.customprotocol.com/programmation-categorie/tutos/</link>
	<description>Site d&#039;hack-tualité et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, émulation...)</description>
	<lastBuildDate>Wed, 28 Feb 2018 14:00:15 +0000</lastBuildDate>
	<language>fr-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>[PS4] [PC] TUTO&#160;-&#160;Installer et utiliser le SDK PS4 officiel</title>
		<link>https://www.customprotocol.com/programmation/ps4-pc-tuto-installer-utiliser-sdk-ps4-officiel/</link>
					<comments>https://www.customprotocol.com/programmation/ps4-pc-tuto-installer-utiliser-sdk-ps4-officiel/#comments</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Wed, 28 Feb 2018 14:00:15 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Top Articles]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Underground]]></category>
		<category><![CDATA[Underground]]></category>
		<category><![CDATA[3.50 PS4 SDK]]></category>
		<category><![CDATA[4.50 PS4 SDK]]></category>
		<category><![CDATA[Fake PKG Generator]]></category>
		<category><![CDATA[homebrew]]></category>
		<category><![CDATA[PS4 SDK]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=15222</guid>
					<description><![CDATA[<p>Voici un tutoriel complet pour vous apprendre comment réaliser votre propre homebrew avec le SDK PS4 officiel sur une PS4 en 4.05&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/ps4-pc-tuto-installer-utiliser-sdk-ps4-officiel/">[PS4] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le SDK PS4 officiel</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Vous avez toujours rêvé de développer de superbes applications pour PS4&#8239;? Si oui, vous êtes sur la bonne page&#8239;! À la fin de ce tuto, vous saurez comment créer votre premier <strong>homebrew</strong> pour <strong>PS4</strong> (hackée, bien sûr) en 4.05 en utilisant le SDK (<em>Software Development Kit</em>) officiel de Sony.</p>
<figure id="attachment_15244" aria-describedby="caption-attachment-15244" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/ps4sdk.png"><img fetchpriority="high" decoding="async" class="wp-image-15244 size-medium" src="https://www.customprotocol.com/medias/2018/02/ps4sdk-500x333.png" alt="" width="500" height="333" /></a><figcaption id="caption-attachment-15244" class="wp-caption-text">PS4 SDK, nous voilà!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>0) Pré-requis</strong></span></h4>
<ul style="text-align: justify;">
<li>Une PS4 en 4.05&#8239;;</li>
<li>Un PC (<i>nous utiliserons Windows dans ce tuto. Vous pourrez aussi réaliser ce tuto sur Linux ou Mac, avec Wine pour installer les fichiers du SDK. Les commandes tapées dans le CMD seront identiques à celles que vous pourrez taper dans votre Terminal</i>)&#8239;;</li>
<li>Une gestionnaire d’archives (comme <a href="http://www.spiroo.be/7zip/"><em>7zip)</em></a> ;</li>
<li><a href="https://www.python.org/downloads/release/python-2714/">Python 2.7.14</a>&#8239;;</li>
<li>Visual Studio 2013 (2015 marche sans doute, mais nous ne l'avons pas testé)&#8239;;</li>
<li>Le PS4 SDK 4.50 patché avec les fichiers du PS4 SDK 3.50&#8239;;</li>
<li>Des compétences de base en informatique, ça va de soit.</li>
</ul>
<p style="text-align: justify;"><strong>Les fichiers du SDK PS4 ne seront pas partagés dans cet article</strong> pour des raisons de légalité. Vous pouvez les trouver en demandant aux bonnes personnes&#8239;! Vous trouverez plus d'informations en bas de cette page.</p>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Attention&nbsp;: le téléchargement de jeux ou logiciels par le biais de sites de warez est parfaitement illégal, Custom Protocol ne pourra pas être tenu responsable si votre compte se fait bannir et/ou que vous avez affaire à la justice, la peine endurée pouvant s’élever jusqu’à 300 000&nbsp;€ d’amende (500 000&nbsp;€ si vous êtes en bande) et 3 ans d’emprisonnement (5 ans si vous êtes en bande).</div>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Installation des fichiers nécessaires</strong></span></h4>
<p style="text-align: justify;">Une fois les fichiers (trouvés par vos soins) téléchargés, vous pouvez extraire les fichiers du SDK. Exécutez <em>SDK_Manager.exe</em> en tant qu'administrateur.</p>
<figure id="attachment_15226" aria-describedby="caption-attachment-15226" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/3-50sdk-1.png"><img decoding="async" class="wp-image-15226 size-medium" src="https://www.customprotocol.com/medias/2018/02/3-50sdk-1-500x270.png" alt="" width="500" height="270" /></a><figcaption id="caption-attachment-15226" class="wp-caption-text">La fenêtre du <em>SDK Manager</em></figcaption></figure>
<p style="text-align: justify;">Vous pouvez installer le tout si vous le souhaitez (y compris les <em>samples</em>). Vous pouvez aussi vous contenter du <em>SDK</em>, mais nous nous servirons de certains samples dans ce tutoriel. Par contre, ce qui est vraiment important, c'est de désactiver <strong>toutes</strong> les mises à jour et d'activer seulement le <em>SDK Patch - 4.508.101</em> (contenu dans le dossier <em>Update (2017-05-31)</em>). Cette mise à jour truquée contient en fait les fichiers du <em>SDK</em> 3.50.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>2) Utilisation du PS4 SDK</strong></span></h4>
<p style="text-align: justify;">Une fois installé, vous pouvez lancer <em>Visual Studio 2013 </em>(en tant qu'administrateur, c'est important). Créez un nouveau projet pour <em>PS4</em>.</p>
<figure id="attachment_15227" aria-describedby="caption-attachment-15227" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/visualstudiops4sdk.png"><img decoding="async" class="wp-image-15227 size-medium" src="https://www.customprotocol.com/medias/2018/02/visualstudiops4sdk-500x310.png" alt="" width="500" height="310" /></a><figcaption id="caption-attachment-15227" class="wp-caption-text">Création de projet pour PS4 depuis Visual Studio.</figcaption></figure>
<p style="text-align: justify;">Vous pouvez également utiliser les <em>samples</em> déjà pré-installés si vous les aviez sélectionnés pendant l'installation. Rendez-vous dans <em>C:\Program Files (x86)\SCE\ORBIS SDKs\4.500\target\samples\sample_code </em>pour trouver ces samples. Quelques uns ne sont pas compatibles pour diverses raisons (certains nécessitent une PS4 <em>devkit</em> par exemple).</p>
<p style="text-align: justify;">Pour ce tutoriel, nous allons prendre le projet situé dans "<em>sample_code\graphics\api_font</em>".</p>
<p style="text-align: justify;">Cliquez sur <em>Fichier &gt; Ouvrir &gt; Projet / Solution</em> et sélectionnez votre <em>sample</em> (ici, donc, <em>api_font.sln)</em>. Une fois lancé, vous verrez le code du projet. Je ne vais pas vous expliquer le fonctionnement du code de <em>api_font</em> car il est un peu complexe, mais si vous voulez vous amuser, vous pouvez modifier le texte contenu dans cette variable à la ligne 620.</p>
<figure id="attachment_15228" aria-describedby="caption-attachment-15228" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/samplecode.png"><img decoding="async" class="wp-image-15228 size-medium" src="https://www.customprotocol.com/medias/2018/02/samplecode-500x144.png" alt="" width="500" height="144" /></a><figcaption id="caption-attachment-15228" class="wp-caption-text">Ça fait beaucoup de code pour un<em> hello world</em>&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p style="text-align: justify;">Une fois votre code prêt, cliquez sur Build &gt; Build Solution&nbsp;:</p>
<figure id="attachment_15229" aria-describedby="caption-attachment-15229" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/visualstudiosdk.png"><img decoding="async" class="wp-image-15229 size-medium" src="https://www.customprotocol.com/medias/2018/02/visualstudiosdk-500x266.png" alt="" width="500" height="266" /></a><figcaption id="caption-attachment-15229" class="wp-caption-text">C'est parti&#8239;!</figcaption></figure>
<p style="text-align: justify;">Une fois la construction terminée, rendez-vous dans le dossier <em>\api_font\ORBIS_Debug\.</em> Vous y trouverez le fichier <em>simple_step.elf.</em> Renommez-le en <em>eboot.bin</em>.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Signer les fichiers</strong></span></h4>
<p style="text-align: justify;">Créez un dossier, où vous le souhaitez, qui va contenir votre <em>homebrew</em>. Placez-y le fichier <em>eboot.bin</em>, ainsi que le dossier <em>sce_sys</em> contenu dans <a href="https://mega.nz/#!sI5wCCAQ!paNaJxNu1FuNnaXWJ44NM5o-v0ER69VVKxZu5J25Xfg">cette archive</a>. Si vous le souhaitez, vous pouvez changer l'icône.<br />Créez ensuite le dossier <em>sce_module.</em></p>
<p style="text-align: justify;">Dans le dossier <em>\api_font\simple_step\sce_module\</em> ont été générés deux fichiers&nbsp;: <em>libc.prx</em> et <em>libSceFios2.prx</em>. Copiez ces fichiers dans <em>sce_module</em>. Votre dossier devrait ressembler à ça&nbsp;:</p>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2018/02/compiledfiles.png"><img decoding="async" class="aligncenter size-full wp-image-15230" src="https://www.customprotocol.com/medias/2018/02/compiledfiles.png" alt="" width="482" height="64" srcset="https://www.customprotocol.com/medias/2018/02/compiledfiles.png 482w, https://www.customprotocol.com/medias/2018/02/compiledfiles-300x40.png 300w, https://www.customprotocol.com/medias/2018/02/compiledfiles-370x49.png 370w, https://www.customprotocol.com/medias/2018/02/compiledfiles-270x36.png 270w" sizes="(max-width: 482px) 100vw, 482px" /></a></p>
<p style="text-align: justify;">Maintenant, nous allons devoir <span style="text-decoration: underline;">signer l'eboot et les modules</span>. Téléchargez le fichier <em>make_fself.py</em> à <a href="https://mega.nz/#!sA5ERSAY!vlkwA3RcgGKYWJ6v_CLEqS0QZTdzTF_VQXAJiTbIeYs">cette adresse</a>, et glissez-le dans le dossier de votre homebrew, ainsi que dans le dossier <em>sce_modules</em>. Lancez ensuite l'Invité de commande et rentrez les commandes suivantes&nbsp;:</p>
<pre class="lang:default decode:true">cd "chemin-vers-le-dossier-de-l'homebrew"
make_fself.py eboot.bin eboot.bin
cd sce_module
make_fself.py libc.prx libc.prx
make_fself.py libSceFios2.prx libSceFios2.prx</pre>
<figure id="attachment_15231" aria-describedby="caption-attachment-15231" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/cmd.png"><img decoding="async" class="wp-image-15231 size-medium" src="https://www.customprotocol.com/medias/2018/02/cmd-500x331.png" alt="" width="500" height="331" /></a><figcaption id="caption-attachment-15231" class="wp-caption-text">Patchage de l'eboot et des modules...</figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Une fois les fichiers signés, retirez make_fself.py du dossier. Nous allons maintenant construire le fichier <em>.PKG</em> installable sur votre PS4.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>4) Construction du package</strong></span></h4>
<p style="text-align: justify;">Commencez par télécharger <a href="https://mega.nz/#!cFIRFLSQ!SQkmyzl4CTShg4HDNL1jAXp-iRQKWhwZtcoA6iRBbk4">cette archive</a>, qui contient les outils nécessaires à la création de .<em>PKG</em>. Exécutez <em>orbis-pub-sfo.exe</em>, cliquez sur <em>File &gt; Open</em> et sélectionnez le fichier <em>param.sfo</em> (présent dans le dossier <em>sce_sys)</em><a href="https://www.customprotocol.com/medias/2018/02/paramfileeditorps4sdk.png"><img decoding="async" class="wp-image-15232 size-medium aligncenter" src="https://www.customprotocol.com/medias/2018/02/paramfileeditorps4sdk-500x270.png" alt="" width="500" height="270" /></a></p>
<p>Éditons le param.sfo&#8239;!</p>
<p style="text-align: justify;">Ici, vous pourrez changer l'<em>ID</em> de votre application ainsi que son nom (<em>Title Text</em>). Sélectionnez le contenu de la case <em>Content ID</em> et copiez-le quelque part où vous pourrez le retrouver facilement plus tard (ici UP9000-NPXX12346_00-TESTAPP200000000).</p>
<p style="text-align: justify;">Une fois vos modifications effectuées, sauvegardez en cliquant sur <em>File &gt; Save</em>.</p>
<p style="text-align: justify;">Fermez cette fenêtre, et exécutez le fichier <em>orbis-pub-gen.exe</em>. Vous allez vous retrouver face à cette fenêtre&nbsp;:</p>
<p><a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator1.png"><img decoding="async" class="wp-image-15233 size-medium" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator1-500x322.png" alt="" width="500" height="322" /></a></p>
<p style="text-align: justify;">Double cliquez sur <em>Image0</em>. Une nouvelle fenêtre va s'ouvrir. Glissez-déposez-y (ça m'a fait aussi mal de l'écrire que vous de le lire) le contenu entier du dossier de votre homebrew. Votre fenêtre devrait alors ressembler à ça&nbsp;:<a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator2.png"><img decoding="async" class="aligncenter size-medium wp-image-15234" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator2-500x322.png" alt="" width="500" height="322" /></a></p>
<p style="text-align: justify;">Rendez vous dans l'onglet <em>Chunk</em>, faites un clic droit sur <em>Image0 Root</em>, glissez votre souris sur <em>Switch Chunk Assignment of the File(s)</em> et sélectionnez <em>#0&nbsp;: Chunk #0.</em></p>
<figure id="attachment_15235" aria-describedby="caption-attachment-15235" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator3.png"><img decoding="async" class="wp-image-15235 size-medium" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator3-500x322.png" alt="" width="500" height="322" /></a><figcaption id="caption-attachment-15235" class="wp-caption-text">Cette étape est importante, faites-la correctement.</figcaption></figure>
<p style="text-align: justify;">Vous pouvez maintenant fermer cette fenêtre. De retour sur la fenêtre précédente, cliquez sur <em>Command &gt; Project Settings</em>. Allez maintenant dans l'onglet <em>Package</em> et collez le <em>Content ID</em> que vous avez récupéré plus tôt et sélectionnez "<em>Freemium App".</em></p>
<p style="text-align: justify;">Dans la case <em>Passcode</em>, mettez uniquement des "0". Ainsi, ils pourront être décryptés et modifiés par d'autres utilisateurs&#8239;;)<br />Toutefois, si vous êtes un égoïste, vous pouvez mettre autre chose (mais sachez que l'Univers ne vous apprécie pas beaucoup).</p>
<p><a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator4.png"><img decoding="async" class="wp-image-15236 size-medium" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator4-500x401.png" alt="" width="500" height="401" /></a></p>
<p style="text-align: justify;">Une fois tout ceci configuré, cliquez sur "OK", puis sur "<em>Build</em>" lorsque vous en aurez l'occasion. Une autre fenêtre va alors s'ouvrir&nbsp;: sélectionnez l'endroit où votre fichier .<em>PKG </em>sera enregistré dans <em>Output Path.</em> Cliquez sur "<em>Build</em>".</p>
<figure id="attachment_15237" aria-describedby="caption-attachment-15237" style="width: 381px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator5.png"><img decoding="async" class="wp-image-15237 size-medium" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator5-381x500.png" alt="" width="381" height="500" /></a><figcaption id="caption-attachment-15237" class="wp-caption-text">Ici, ne touchez à rien.</figcaption></figure>
<p style="text-align: justify;">La création du package va commencer&#8239;! Une fois terminée, vous aurez ce message:</p>
<figure id="attachment_15238" aria-describedby="caption-attachment-15238" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/fakepkggenerator6.png"><img decoding="async" class="wp-image-15238 size-medium" src="https://www.customprotocol.com/medias/2018/02/fakepkggenerator6-500x359.png" alt="" width="500" height="359" /></a><figcaption id="caption-attachment-15238" class="wp-caption-text">WOW&#8239;! Aucune erreur&#8239;!</figcaption></figure>
<p style="text-align: justify;">Si tout s'est bien passé, vous devez trouver votre fichier .<em>PKG</em> à l'adresse de destination entrée précédemment.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>5) Installation du package sur la PS4</strong></span></h4>
<p style="text-align: justify;">Pour installer l'homebrew sur votre PS4, mettez votre fichier <em>.PKG</em> fraîchement généré sur une clé USB ou un disque dur formaté en FAT32 ou ExFAT (la console ne le reconnaîtra pas sinon). Lancez le hack (<a href="https://www.customprotocol.com/underground/ps4-tuto-jailbreak-hack-ps4-en-firware-4-05/">retrouvez notre tuto à cette adresse</a>, si vous ne savez pas faire)<em>.</em> Une fois terminé, transférez le <em>payload</em> <a href="https://mega.nz/#!RQw0XL7R!GcFKPDjCrHcbS6M0dF2IsspIZlKJ91HpBq-jRIGBTeg">PS4HEN</a> sur votre console.</p>
<p style="text-align: justify;">Si tout s'est bien déroulé, vous voir une option supplémentaire à la fin de vos paramètres&nbsp;: <em>Debug Settings</em> (avec la petite étoile devant).</p>
<figure id="attachment_14775" aria-describedby="caption-attachment-14775" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/12/debugsettings-1.jpg"><img decoding="async" class="size-medium wp-image-14775" src="https://www.customprotocol.com/medias/2017/12/debugsettings-500x281.jpg" alt="" width="500" height="281" /></a><figcaption id="caption-attachment-14775" class="wp-caption-text">Les <em>Debug Settings</em> (les paramètres de debuggage, quoi)</figcaption></figure>
<p style="text-align: justify;">Branchez votre clé USB à votre console et naviguez dans <em>Game &gt; Package Installer</em>&nbsp;: vous verrez votre fichier .PKG&#8239;! Sélectionnez-le et installez-le. Allez ensuite dans le menu de votre <i>PS4&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></i></p>
<figure id="attachment_15240" aria-describedby="caption-attachment-15240" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/app.jpg"><img decoding="async" class="size-medium wp-image-15240" src="https://www.customprotocol.com/medias/2018/02/app-500x281.jpg" alt="" width="500" height="281" /></a><figcaption id="caption-attachment-15240" class="wp-caption-text">Tadah&#8239;! Voici votre application!</figcaption></figure>
<p style="text-align: justify;">Vous pouvez évidemment lancer votre bel homebrew (sinon, quel est l'intérêt&#8239;?)&nbsp;:</p>
<figure id="attachment_15241" aria-describedby="caption-attachment-15241" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2018/02/ps4-homebrew.jpg"><img decoding="async" class="size-medium wp-image-15241" src="https://www.customprotocol.com/medias/2018/02/ps4-homebrew-500x281.jpg" alt="" width="500" height="281" /></a><figcaption id="caption-attachment-15241" class="wp-caption-text">Et voici un petit screenshot du sample executé&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p style="text-align: justify;"> </p>
<hr />
<figure id="attachment_11300" aria-describedby="caption-attachment-11300" style="width: 500px" class="wp-caption aligncenter"><a href="https://mega.nz/#!pNoimagK!0_gdqDDedR1LDXqgQm0-ki1hgPZU2ZE0DGvMlY9tsb8"><img decoding="async" class="wp-image-11300 size-medium" src="https://www.customprotocol.com/medias/2016/08/bouton-telecharger-v22-500x152.png" alt="" width="500" height="152" /></a><figcaption id="caption-attachment-11300" class="wp-caption-text">Si vous voulez tester cet homebrew, voici le lien!</figcaption></figure>
<p style="text-align: justify;">Voilà voilà, vous savez maintenant comment construire des homebrews pour PS4&#8239;! Plus d'excuses, développeurs et apprentis développeurs, développez vos meilleurs <em>homebrews</em> et jeux&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>5) Post Scriptum</strong></span></h4>
<p style="text-align: justify;">Nous allons ici revenir sur quelques points sur lesquels nous sommes passés trop rapidement dans ce tutoriel. </p>
<p style="text-align: justify;">Tout d'abord, nous ne partagerons pas dans cet article les fichiers du SDK PS4 officiel. Il s'agit en effet d'une suite de logiciels sous licence, et nous ne tenons pas à avoir de problèmes avec Sony (et accessoirement, la justice). On ne vous remet pas le petit panneau, mais on vous rappelle juste que la peine endurée peut s'élever jusqu'à 300 000€ et 3 ans d'emprisonnement. Sachez aussi que tout lien vers le SDK dans les commentaires de cet article (et n'importe où sur ce site/forum) sera systématiquement supprimé et le posteur pourra être banni.</p>
<p style="text-align: justify;">Pour la petite histoire, il y eu d'abord un <em>leak</em> du SDK PS4 4.50, mais malheureusement il ne fonctionnait que pour les PS4 en <em>firmware </em>4.70 minimum (étrange, n'est-ce pas&#8239;?)<em>. </em>Donc, j'étais un peu bloqué quand un ami (<em>Darbness</em>, merci à lui) m'a contacté et donné les fichiers du SDK 3.50, qui lui est compatible avec le <em>firmware</em> 4.05. Nous avons donc fusionné les fichiers du 3.50 avec ceux du 4.50 pour obtenir un SDK fonctionnel.</p>
<p style="text-align: justify;">Concernant le code du sample utilisé dans ce tutoriel, il est effectivement un peu compliqué car, vous vous en doutez sans doute, c'est un peu plus qu'un simple "<em>Hello World</em>". C'est en fait un exemple qui illustre le processus de rendu des caractères en utilisant des librairies de polices. Plus techniquement&nbsp;: ce programme montre en fait la méthode d'assignation de la mémoire à la librairie de polices, et le processus dans lequel les caractères sont rendus par la librairie de polices.<br />Après le chargement des modules de la librairie, ce programme effectue le rendu des caractères et décharge ensuite les modules de la bibliothèque.<br />Enfin, il copie les résultats qui ont effectué le rendu dans la mémoire de la même taille qu'un <em>buffer</em> <em>frame </em>dans les<em> buffers frame</em>. Après ceci, le programme l'affiche pendant 10 secondes, sans changer le contenu des <em>buffers frame</em>. Les résultats rendus sont alors affichés sur l'écran. Voilà, c'est pour cela que ce petit "<em>Hello World</em>" fait en fait 770 lignes&#8239;!</p>
<p style="text-align: justify;">Si vous êtes encore là, merci de nous avoir lu et à très bientôt!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><u>Crédits et remerciements :</u></span></h4>
<ul style="text-align: justify;">
<li><a href="https://twitter.com/flat_z">Flatz</a> pour le fichier <em>make_fself.py&#8239;;</em></li>
<li><a href="https://twitter.com/Darbnes">Darbness</a> pour m'avoir donné les fichiers du SDK 3.50&#8239;;</li>
<li><a href="https://twitter.com/cfwprophet">cfwprophet</a> pour son <em>Fake PKG Generator&#8239;;</em></li>
<li><a href="https://github.com/VV1LD">VV1LD</a> pour PS4HEN.</li>
</ul>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/ps4-pc-tuto-installer-utiliser-sdk-ps4-officiel/">[PS4] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le SDK PS4 officiel</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/ps4-pc-tuto-installer-utiliser-sdk-ps4-officiel/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/#respond</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Thu, 18 May 2017 08:47:11 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<category><![CDATA[FileSystem]]></category>
		<category><![CDATA[OSDev]]></category>
		<category><![CDATA[système de fichiers]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12963</guid>
					<description><![CDATA[<p>Suite du premier tutoriel sur Cosmos, le système d'exploitation écrit en C#. Vous allez ici apprendre à utiliser un système de fichiers&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Voici une suite au <a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">premier tutoriel</a> (mis à jour à la suite de cette deuxième partie, n'hésitez pas à y faire un tour au cas où&nbsp;:P) sur comment créer et lancer sur une machine virtuelle son premier système d'exploitation. Sous forme de console pour l'instant, le système n'est pas pourvu d'un système de fichiers (créer des dossiers/fichiers, se déplacer dans les dossiers, etc.). Nous allons donc ici voir comment faire cela. Faites place au tutoriel&#8239;!</p>
<figure id="attachment_12292" aria-describedby="caption-attachment-12292" style="width: 700px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img decoding="async" class="wp-image-12292 size-full" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a><figcaption id="caption-attachment-12292" class="wp-caption-text">Logo de <strong>Cosmos</strong></figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Utilisation du système de fichiers</strong></span></h4>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">A. Présentation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Comme défini plus haut, un système de fichiers va vous permettre de créer des fichiers et dossiers depuis votre système d'exploitation et vous déplacer, ouvrir, supprimer ces fichiers, dossiers, etc. Comme pour l'instant l'utilisation de <strong>Cosmos</strong> ne se fait essentiellement que sur machine virtuelle et non sur un support physique, nous allons utiliser ce qu'on appelle un système de fichiers virtuel (VFS) ou comme Wikipédia le définit&nbsp;: "Une couche d'abstraction au-dessus d'un système de fichiers plus concret".</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">B. Utilisation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, créez un projet ou ouvrez votre projet <em>Cosmos C#</em>. Rendez-vous maintenant dans le fichier <em>Kernel.cs</em>.</p>
<h6 style="text-align: justify;">Initialisation<strong><br /></strong></h6>
<p style="text-align: justify;">Avant d'utiliser le système de fichiers virtuel, il va falloir l'initialiser depuis la boucle <em>BeforeRun()</em> de votre projet (<a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">voir le premier tutoriel</a> à la partie 2B pour plus d'informations). Voici le code à utiliser&nbsp;:</p>
<pre class="lang:c# decode:true">FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);</pre>
<p style="text-align: justify;">Il est bon de savoir que le système de fichiers utilisé par <strong>Cosmos</strong> ressemble à celui de <em>Windows</em>, chaque lecteur a sa propre lettre et le répertoire par défaut est "0:\" comme "C:\" sur <em>Windows</em>.</p>
<p style="text-align: justify;">La variable <em>dossier_actuel</em> sera par défaut définie par&nbsp;:</p>
<pre class="lang:c# decode:true">string dossier_actuel&nbsp;=&nbsp;"0:\\";</pre>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Il faut impérativement utiliser une double barre oblique ("\\") inversée pour écrire une simple "\".</div>
<h6 style="text-align: justify;"><strong>Commande pour créer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">var f&nbsp;=&nbsp;File.Create(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //Créer un fichier pour chemin dossier_actuel\fichier.txt
f.Close();</pre>
<h6 style="text-align: justify;"><strong>Commande pour lire un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">string texte&nbsp;=&nbsp;File.ReadAllText(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //La variable 'texte' contiendra le texte contenu dans le fichier</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true ">File.Delete(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt");</pre>
<h6 style="text-align: justify;"><strong>Commande pour créer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;"\\nomdudossier");</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">Directory.Delete(dossier_actuel&nbsp;+&nbsp;"\\dossier", true); // 'true' signifie que le contenu du dossier va être également supprimé</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">if (input.StartsWith("cd ")) //L'utilisateur entre 'cd nomdudossier'
            {
                var newdir&nbsp;=&nbsp;input.Remove(0, 3); //On extrait le nom du dossier
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;newdir))
                //On vérifie si le dossier existe.
                {
                    Directory.SetCurrentDirectory(dossier_actuel);
                    dossier_actuel&nbsp;=&nbsp;dossier_actuel&nbsp;+&nbsp;newdir&nbsp;+&nbsp;"\\";
                }
                else
                {
                    Console.WriteLine("Ce dossier n'existe pas&#8239;!");
                }
            }</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier parent (retour)<br /></strong></h6>
<pre class="lang:default decode:true">var dir&nbsp;=&nbsp;FS.GetDirectory(dossier_actuel);
dossier_actuel&nbsp;=&nbsp;dir.mParent.mFullPath;</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les dossiers et fichiers du dossier ouvert<br /></strong></h6>
<pre class="lang:c# decode:true">Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel))
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir);
                }
                foreach (var file in Directory.GetFiles(dossier_actuel))
                {
                    Console.WriteLine("&lt;Fichier&gt;\t"&nbsp;+&nbsp;file);
                }</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les lecteurs disponibles<br /></strong></h6>
<pre class="lang:c# decode:true ">var vols&nbsp;=&nbsp;FS.GetVolumes();
                Console.WriteLine("Nom\tTaille\tParent");
                foreach (var vol in vols)
                {
                    Console.WriteLine(vol.mName&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mSize&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mParent);
                }</pre>
<p style="text-align: justify;">Voilà voilà, vous avez pu voir une liste de différentes commandes utiles à la création d'un système d'exploitation, si vous voulez voir l'application réelle de ces commandes, vous pouvez aller voir la méthode <a href="https://github.com/valentinbreiz/Ode-OS/blob/master/Ode%20OS/Kernel.cs#L505">I<em>nterpredCMD</em></a> d'un petit système d'exploitation réalisé par mes soins, où ces commandes y sont inscrites (Ctrl&nbsp;+&nbsp;F pour rechercher dans la page&#8239;;) ).</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">C. Exemple d'implémentation du système de fichiers</span><br /></strong></h5>
<p style="text-align: justify;">Maintenant, depuis votre console, vous pouvez implémenter différentes commandes. Voici un algorithme basique qui va pouvoir interpréter les commandes transmises depuis l'utilisateur (comme depuis le CMD sur <em>Windows</em>) et permettre la création et suppression d'un dossier. Ensuite, à vous d'implémenter vos propres commandes&#8239;!</p>
<pre class="lang:c# decode:true">using System;
using Sys&nbsp;=&nbsp;Cosmos.System;
using System.IO;
using Cosmos.System.FileSystem;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        string dossier_actuel&nbsp;=&nbsp;"0:\\";
        public CosmosVFS FS { get; private set; }
        protected override void BeforeRun()
        //Ceci est le code exécuté avant l'exécution du programme.
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage.
            //On met le clavier en français
            Sys.KeyboardManager.SetKeyLayout(new Sys.ScanMaps.FR_Standard());
            //Initialisation du système de fichier.
            FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
            Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);
            //Fin de l'initialisation
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a demarre avec succes.");
            //Ceci permet d'écrire une ligne.
        }
        protected override void Run()
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("commande&gt; ");
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var input&nbsp;=&nbsp;Console.ReadLine();
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur.
            InterpretCMD(input);
            //Ceci permet de lancer la méthode qui va interpréter la commande (input)
        }
        private void InterpretCMD(string input)
        //Ceci est la méthode qui interprète la commande envoyée (d'où le "string input") 
        {
            if (input.StartsWith("dir -c ")) //Si la commande commence par dir -c
            {
                string dir&nbsp;=&nbsp;input.Remove(0, 7); //On extrait la commande
                if (!Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Si le dossier n'existe pas (! symbole de négation)
                {
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir); //On créer le dossier
                    Console.WriteLine("Dossier cree&#8239;!");
                }
                else if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Sinon si le dossier existe alors
                {
                    Console.WriteLine("Le dossier existe deja&#8239;!");
                    Console.WriteLine("Dossier cree&#8239;!");
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir&nbsp;+&nbsp;"-1"); //On créer tout de même un dossier avec comme nom 'nomdudossier-1'
                }
            }
            else if (input.StartsWith("dir -r ")) //Si la commande commence par dir -r alors
            {
                string dirr&nbsp;=&nbsp;input.Remove(0, 7); //On extrait le nom du dossier de la commande
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dirr)) //Si le dossier existe alors
                {
                    Directory.Delete(dossier_actuel&nbsp;+&nbsp;dirr, true); //On le supprime
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' a ete supprime&#8239;!");
                }
                else //Si il n'existe pas
                {
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' n'existe pas&#8239;!");
                }
            }
            else if (input == "dir -l") //Si la commande est égale à dir -l
            {
                Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel)) //On récupere tous les dossiers
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir); //On affiche tous les dossiers
                }
            }
            else if (input == "hello")
            { //Si la commande est égale à hello alors
                Console.WriteLine("Bonjour!"); //Afficher "Bonjour!".
            }
            else if (input == "bye")
            { //Sinon si la commande est égale à bye
                Sys.Power.Shutdown(); //Éteindre le système.
            }
            else
            { //Sinon (si la commande n'est ni hello ni bye)
                Console.WriteLine("Erreur&nbsp;: Commande inconnue"); //Afficher la commande est inconnue.
            }
        }
    }
}</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Conclusion</strong></span></h4>
<p style="text-align: justify;">À travers ce tutoriel, vous avez pu voir comment utiliser un système de fichiers dans votre projet <strong>Cosmos</strong>. Amusez-vous, développez et partagez votre projet&#8239;! Si vous manquez d'inspiration, voici même une page comprenant plusieurs projets sous <strong>Cosmos</strong>&nbsp;: <em><a href="https://github.com/CosmosOS/Cosmos/wiki/Cosmos-Projects">Cosmos Projects</a></em>.</p>
<p style="text-align: justify;">D'autres tutoriels à propos de <strong>Cosmos</strong> arriveront sur <strong>Custom Protocol</strong> bientôt, si vous avez besoin de quoi que ce soit vous pouvez poser une question en commentaire ou sur la <a href="https://gitter.im/CosmosOS/Cosmos">conversation Gitter</a> du projet <strong>Cosmos</strong>&#8239;!&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/#comments</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Sun, 08 Jan 2017 14:01:46 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12233</guid>
					<description><![CDATA[<p>Dans ce premier tutoriel vous allez apprendre à créer votre premier système d'exploitation avec le projet Cosmos&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><div align="center" class="alert alert-success ">Ce tutoriel fut mise à jour le 18/05/2017, avec une autre méthode d'installation <em>dev-kit</em> bien plus pratique et efficace&#8239;! N'hésitez pas à re-suivre cette procédure au cas où&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>À travers ce tutoriel et une future suite de tutoriels, nous allons apprendre à créer notre propre <em>OS</em>, ou plutôt <strong>le vôtre</strong> ! Nous n'allons évidemment pas surpasser<em> Windows</em> ou <em>Ubuntu</em>, ce sera un petit OS fait maison <strong>pour les passionnés et débutants en programmation</strong>&#8239;! Nous n'allons pas utiliser de langage assembleur, ne créerons un noyau, nous le programmerons simplement en <em>C#</em> avec l'aide du projet <strong>Cosmos</strong>, magnifique non&#8239;?</p>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img decoding="async" class="aligncenter size-full wp-image-12292" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" alt="cosmos" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<hr />
<p style="text-align: justify;">Une petite présentation de notre support s'impose, comme ce tutoriel est ciblé aux débutants et que je ne suis pas expert en programmation, je vais m'appuyer sur le super, que dis-je, le magnifique <a href="https://github.com/CosmosOS/Cosmos">projet <strong>Cosmos</strong></a>.</p>
<p style="text-align: justify;"><strong>Cosmos</strong> est un système d'exploitation, ou plutôt un "kit de construction", basé sur <em>SysLinux</em> autour du compilateur <em>IL2CPU</em> (créé par les mêmes développeurs que <strong>CosmosOS</strong>). <em>COSMOS</em> signifie d'ailleurs <em>C# Open Source Managed Operating System</em>.</p>
<p style="text-align: justify;">Bref,<strong> Cosmos</strong> n'est donc pas un système d'exploitation à proprement parler, mais plutôt un «&nbsp;kit de création de système d'exploitation&nbsp;». <strong>Cosmos</strong> va vous permettre de créer des systèmes d'exploitation sur <em>Visual Studio</em> et en <em>C#</em> (ou <em>Visual Basic</em>). Le véritable point fort de <em>Cosmos</em> réside dans le fait qu'il est intégré à <em>Visual Studio</em>, ce qui va permettre un développement sous <em>Windows</em> accompagné d'éléments essentiels. En effet, <em>Visual Studio</em> (avec <strong>Cosmos</strong>) va débugger et générer votre <em>OS</em> avant de l'envoyer à une machine virtuelle.</p>
<figure id="attachment_12273" aria-describedby="caption-attachment-12273" style="width: 488px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png"><img decoding="async" class="wp-image-12273 size-full" title="cosmos" src="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png" alt="Logo CosmosOS" width="488" height="100" srcset="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png 488w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-300x61.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-370x76.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-270x55.png 270w" sizes="(max-width: 488px) 100vw, 488px" /></a><figcaption id="caption-attachment-12273" class="wp-caption-text">Logo officiel de <b>Cosmos</b></figcaption></figure>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Installation de Cosmos (dev-kit)<br /></strong></span></h4>
<p>La dernière version officielle du projet <strong>Cosmos</strong> étant parue il y a déjà plusieurs années, il va falloir mettre à jour celle que vous avez déjà installée et si ce n'est pas déjà fait, l'installer. Car depuis, il y a eu plusieurs corrections de <em>bugs</em>, d'ajouts, qui améliorent fortement l'expérience utilisateur.</p>
<p>Il existe deux kits pour <strong>Cosmos</strong>, l'<em>user-kit</em> et le <em>dev-kit</em>. C'est ce dernier que nous allons compiler pour pouvoir profiter des mises à jour (dont beaucoup sur le système de fichiers que nous verrons un peu plus tard&nbsp;:P).</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Pré-requis</strong></span></h5>
<ul>
<li style="text-align: justify;">Un minimum de connaissances en algorithmique (C# ou VB par exemple)&#8239;;</li>
<li style="text-align: justify;">Être sous <em>Windows 7</em> au minimum&#8239;;</li>
<li style="text-align: justify;"><em>Visual Studio Community 2015</em> (à <a href="http://www.01net.com/telecharger/windows/Programmation/creation/fiches/134695.html">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;">.<em>NET Framework 4.5</em> (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=30653">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>VMWare Player</em> (version gratuite) (à <a href="https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>.NET Framework 3.5 SP1</em>, quelques composants requérant cette version (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=22">télécharger ici</a>).<strong><br /></strong></li>
</ul>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Installation de Cosmos</strong></span></h5>
<p style="text-align: justify;">Premièrement, commencez par télécharger <a href="https://github.com/CTPBenchmark/Cosmos">ce répertoire</a> (cliquez sur le bouton vert '<em>Clone or Download</em>' puis '<em>Download ZIP</em>') que je vous ai moi-même concocté, comprenant de nombreux correctifs et quelques ajouts. Décompressez ensuite l'archive ZIP sur votre bureau par exemple ou dans un dossier dédié (parce que c'est plus propre).</p>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Assurez-vous que ni <em>Visual Studio 2015</em> ni <em>VMWare</em> ne sont en cours d’utilisation&#8239;!</p>
<p style="text-align: justify;">Et assurez-vous que vous n’êtes pas en train de faire des mises à jour <em>Windows</em>, ce qui pourrait éteindre votre ordinateur, ou quelque chose d’autre de stupide.&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
<p style="text-align: justify;">Lancez maintenant le fichier "<span class="css-truncate css-truncate-target">install-VS2015.bat</span>".</p>
<p style="text-align: justify;"><div align="center" class="alert alert-info ">Si <strong>Cosmos</strong> est déjà installé sur votre machine, il n'y a rien à faire&#8239;! La compilation du <em>dev-kit</em> va automatiquement supprimer les anciennes versions.</div>
<figure id="attachment_13117" aria-describedby="caption-attachment-13117" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/installation-cosmos.png"><img decoding="async" class="wp-image-13117 size-medium" src="https://www.customprotocol.com/medias/2017/05/installation-cosmos-500x261.png" width="500" height="261" /></a><figcaption id="caption-attachment-13117" class="wp-caption-text">Console d'installation de <strong>Cosmos</strong> made in <strong>CTP</strong>&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p>Une fois le programme d'installation lancé, il va tout effectuer tout seul et vous pourrez voir les résultats dans cette fenêtre&nbsp;:</p>
<figure id="attachment_13084" aria-describedby="caption-attachment-13084" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer.png"><img decoding="async" class="wp-image-13084 size-medium" src="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer-500x353.png" width="500" height="353" /></a><figcaption id="caption-attachment-13084" class="wp-caption-text">La compilation de <strong>Cosmos</strong> a réussie, on passe à l'installation (<em>Running Setup</em>)&#8239;!</figcaption></figure>
<p style="text-align: justify;">L'installation n'a normalement pas dû prendre de temps et si tout s'est bien passé, <em>Visual Studio</em> s'est lancé en ouvrant la solution "Cosmos" (où vous pouvez éditer ou voir le code source si vous êtes curieux) et le programme d'installation affiche alors en vert&nbsp;: <em>Build Complete!</em></p>
<p>&nbsp;</p>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;">2) Créer son premier OS</span></h4>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Création du projet</strong></span></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, appuyez sur "Nouveau projet...", cette fenêtre se lance alors&nbsp;:</p>
<figure id="attachment_12253" aria-describedby="caption-attachment-12253" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmosprojet.png"><img decoding="async" class="wp-image-12253 size-medium" src="https://www.customprotocol.com/medias/2017/01/cosmosprojet-500x310.png" alt="Fenêtre créer un nouveau projet" width="500" height="310" /></a><figcaption id="caption-attachment-12253" class="wp-caption-text">Fenêtre "créer un nouveau projet"</figcaption></figure>
<p style="text-align: justify;">Créez un nouveau projet comme n'importe quel projet <em>C#</em>, mais sélectionnez <strong>Cosmos</strong> comme type de projet. Vous pouvez ensuite choisir de programmer votre <em>OS</em> en<em> C#</em> ou en <em>Visual Basic</em> (je conseille le <em>C#</em> mais <em>Visual Basic</em> est tout aussi bien).</p>
<p style="text-align: justify;">Renseignez ensuite le nom de votre projet, ici "Custom Protocol". Appuyez ensuite sur "OK".</p>
<p style="text-align: justify;">Oh, diable, du code&#8239;! Ne vous inquiétez&nbsp;: tout va être expliqué.</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Le code</strong></span></h5>
<p style="text-align: justify;">Tout d'abord, on peut remarquer que votre nouveau projet ressemble beaucoup à une application console <em>C #</em> standard.</p>
<p><a href="https://www.customprotocol.com/medias/2017/01/explorateur.png"><img decoding="async" class="alignleft wp-image-12256 size-full" src="https://www.customprotocol.com/medias/2017/01/explorateur.png" alt="explorateur" width="240" height="136" /></a></p>
<p style="text-align: justify;">Pour l'instant, il faudra rester dans <em>"C# Custom Protocol"</em> et non dans "Custom ProtocolBoot".</p>
<p style="text-align: justify;">Le fichier <em>Kernel.cs</em> contient le code d'amorçage et d'exécution de votre OS.</p>
<p style="text-align: justify;">Quant au fichier <em>AssemblyInfos.cs</em>, il contient des informations relatives à votre programme.</p>
<p style="text-align: justify;"> </p>
<hr />
<p style="text-align: justify;">Voici le<em> code source</em> de votre OS, j'ai traduit le texte pour plus de compréhension (vous pouvez copier coller celui-là)&nbsp;:</p>
<pre class="lang:c# decode:true">using System;
using System.Collections.Generic;
using System.Text;
using Sys&nbsp;=&nbsp;Cosmos.System;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        protected override void BeforeRun() 
        //Ceci est le code exécuté avant l'exécution du programme
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a démarré avec succès. Tapez une ligne de texte pour la faire revenir."); 
            //Ceci permet d'écrire une ligne
        }
        protected override void Run() 
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("Votre texte: "); 
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var texteutilisateur&nbsp;=&nbsp;Console.ReadLine(); 
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur
            Console.Write("Texte ecrit: ");
            //Ceci écrit une ligne
            Console.WriteLine(texteutilisateur); 
            //Ceci écrit le texte que l'utilisateur a écrit.
        }
    }
}
</pre>
<figure id="attachment_12261" aria-describedby="caption-attachment-12261" style="width: 279px" class="wp-caption alignright"><img decoding="async" class="wp-image-12261 size-full" src="https://www.customprotocol.com/medias/2017/01/demarrer.png" alt="demarrer" width="279" height="32" srcset="https://www.customprotocol.com/medias/2017/01/demarrer.png 279w, https://www.customprotocol.com/medias/2017/01/demarrer-270x31.png 270w" sizes="(max-width: 279px) 100vw, 279px" /><figcaption id="caption-attachment-12261" class="wp-caption-text">Lets' go&#8239;!</figcaption></figure>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>C. Votre premier boot&#8239;!</strong></span></h5>
<p style="text-align: justify;">Vous pouvez maintenant appuyer sur le petit bouton vert "Démarrer", il se situe sur la barre du haut de <em>Visual Studio</em>.</p>
<p style="text-align: justify;">Si votre code n'a pas d'erreurs, et si <em>VMWare</em> est bien installé, la génération va commencer. Voici une <a href="https://www.youtube.com/watch?v=zfY5ZYq6haw">petite vidéo</a> d'exemple de génération. </p>
<p style="text-align: justify;">Après que <em>VMWare</em> se soit lancé, vous devriez normalement voir du texte défiler (il correspond à <em>l'initialisation</em> de l'<em>ISO</em> dans <em>VMWare</em>). Et après tout ceci, si vous avez correctement copié-collé le code plus haut, vous devriez obtenir ceci&nbsp;:</p>
<figure id="attachment_12270" aria-describedby="caption-attachment-12270" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/ctpos.png"><img decoding="async" class="wp-image-12270 size-medium" src="https://www.customprotocol.com/medias/2017/01/ctpos-500x323.png" alt="Voici le CTPOS&#8239;! XD" width="500" height="323" /></a><figcaption id="caption-attachment-12270" class="wp-caption-text">Voici le <em>CustomProtcolOS</em>&#8239;! XD</figcaption></figure>
<p style="text-align: justify;">Voilà, vous venez de créer la première version de votre premier <em>OS </em>en<em> 32 bit</em>s, bravo&#8239;! Vous pouvez évidemment continuer à le développer, avec l'aide de plusieurs tutoriels qui vont arriver très bientôt ou de la <a href="https://github.com/CosmosOS/Cosmos/wiki">documentation officielle</a> du projet <strong>Cosmos</strong>.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>[PSV] [PSTV] [PC] TUTO&#160;-&#160;Installer et utiliser le VitaSDK</title>
		<link>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/</link>
					<comments>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/#comments</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Wed, 21 Sep 2016 10:40:13 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Tutoriels Underground]]></category>
		<category><![CDATA[Underground]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[VitaSDK]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=11595</guid>
					<description><![CDATA[<p>Après avoir lu ce tutoriel, vous pourrez compiler facilement toutes vos belles créations (et VitaRW)&#8239;!&#160;:D</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/">[PSV] [PSTV] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le VitaSDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Vous avez envie de compiler votre propre application ou simplement un programme déjà existant pour votre PS Vita&#8239;? Alors vous êtes au bon endroit pour apprendre à le faire&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Le <strong>VitaSDK</strong> est le "successeur" du <em><a href="https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/">PSP2SDK</a></em>, apportant beaucoup plus de stabilité par rapport à son prédécesseur. Mais son principal avantage est sans conteste sa compatibilité avec <strong>HENKaku</strong>. Il est également régulièrement mis à jour, entre autres, par les membres de la <em>Team Molecule</em>. Ainsi, il dispose de toute les dernières nouveautés incorporés par l'équipe de <em>hackers</em>.</p>
<figure id="attachment_5052" aria-describedby="caption-attachment-5052" style="width: 764px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png"><img decoding="async" class="wp-image-5052 size-large" src="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png" alt="Le PSP2SDK est un kit de développement crée par 173210 et sa bande" width="764" height="364" srcset="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png 1024w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143.png 300w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-768x366.png 768w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-370x176.png 370w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-270x129.png 270w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-570x272.png 570w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-740x353.png 740w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png 1280w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143@2x.png 600w" sizes="(max-width: 764px) 100vw, 764px" /></a><figcaption id="caption-attachment-5052" class="wp-caption-text">Développer des applications pour PS Vita, c'est cool&#8239;!</figcaption></figure>
<hr />
<h4><span style="text-decoration: underline;"><strong>0) Pré-requis</strong></span></h4>
<ul>
<li>Une PS Vita en 3.60 <a href="https://www.customprotocol.com/underground/vita-tuto-installer-henkaku/">avec <em>HENkaku</em> installé</a>&#8239;;</li>
<li>Un PC (<em>Windows</em> de préférence, c’est l’OS que nous utiliserons pour ce tutoriel)&#8239;;</li>
<li>Le gestionnaire d’archives <em><a href="http://www.spiroo.be/7zip/" target="_blank" rel="noopener noreferrer">7zip</a></em> ou <em>WinRar</em>&#8239;;</li>
<li>Le fichier d'installation de <a href="https://sourceforge.net/projects/devkitpro/"><em>devkitPro</em></a>&#8239;;</li>
<li>La dernière version du <a href="https://bintray.com/package/files/vitasdk/vitasdk/toolchain?order=desc&amp;sort=fileLastModified&amp;basePath=&amp;tab=files"><em>VitaSDK</em></a> selon votre OS&#8239;;</li>
<li>L'archive de <em><a href="https://github.com/xerpi/vitahelloworld/archive/master.zip">vitahelloworld</a></em>&#8239;;</li>
<li>Des compétences en C (pour programmer votre <em>homebrew</em>, c’est pas nécessaire pour simplement compiler).</li>
</ul>
<p style="text-align: justify;">Ce tutoriel sera mis à jour si des personnes souhaitent savoir comment l'installer sur Mac OS ou Linux.</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>Partie I&nbsp;-&nbsp;Installation des fichiers nécessaires</strong></span></h3>
<p style="text-align: justify;">Commencez par télécharger les fichiers nécessaires. Pour les fichiers du <strong>VitaSDK</strong>, prenez la version la plus récente correspondant à votre système d'exploitation.</p>
<figure id="attachment_11445" aria-describedby="caption-attachment-11445" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/vitasdk-version-la-plus-recente.png"><img decoding="async" class="wp-image-11445 size-medium" src="https://www.customprotocol.com/medias/2016/09/vitasdk-version-la-plus-recente-500x126.png" alt="VitaSDK version la plus récente" width="500" height="126" /></a><figcaption id="caption-attachment-11445" class="wp-caption-text">À la date où ce tutoriel a été rédigé, c'est la derniè<i>re version disponible</i></figcaption></figure>
<p>N'oubliez pas de télécharger le fichier d'installation de <em>devkitPro</em>.</p>
<h4><strong><span style="text-decoration: underline;">1) Installation de devkitPro</span></strong></h4>
<p>Commencer par lancer <em>devkitProUpdater-1.6.0.exe</em> et suivez les étapes d'installations.</p>
<figure id="attachment_11450" aria-describedby="caption-attachment-11450" style="width: 499px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png"><img decoding="async" class="wp-image-11450 size-full" src="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png" alt="devkitPro 1" width="499" height="388" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a><figcaption id="caption-attachment-11450" class="wp-caption-text">C'est partie pour l'installation du <em>devkitPro</em>&#8239;!</figcaption></figure>
<p style="text-align: justify;">Laissez cochées toutes les cases à la première étape, mais pour la deuxième étape, cochez l'option pour supprimer les fichiers téléchargés.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/devkitpro-2.png'><img decoding="async" width="499" height="388" src="https://www.customprotocol.com/medias/2016/09/devkitpro-2.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-2.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/devkitpro-3.png'><img decoding="async" width="499" height="388" src="https://www.customprotocol.com/medias/2016/09/devkitpro-3.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-3.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a>
<p style="text-align: justify;">Il nous faudra seulement le <em>Minimal System</em> et le <em>devkitARM</em> pour faire fonctionner le <strong>VitaSDK</strong>.</p>
<figure id="attachment_11453" aria-describedby="caption-attachment-11453" style="width: 499px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png"><img decoding="async" class="wp-image-11453 size-full" src="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png" alt="devkitPro 4" width="499" height="388" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a><figcaption id="caption-attachment-11453" class="wp-caption-text">On prend le minimum syndical</figcaption></figure>
<p style="text-align: justify;">Laissez le chemin d'installation par défaut et cliquez sur "Install"<em>.</em></p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png'><img decoding="async" width="740" height="395" src="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png 740w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160.png 300w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-768x410.png 768w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-370x198.png 370w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-270x144.png 270w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-570x304.png 570w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png 824w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png'><img decoding="async" width="740" height="387" src="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png 740w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157.png 300w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-768x402.png 768w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-370x194.png 370w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-270x141.png 270w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-570x298.png 570w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png 979w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<p style="text-align: justify;">Patientez pendant que le logiciel télécharge et installe les fichiers pour vous. Dès que l’installation est terminée, cliquez sur «&nbsp;Next&nbsp;» puis «&nbsp;Finish&nbsp;». Si l'installation s'est bien effectuée, vous devriez avoir à la racine de votre disque dur un dossier «&nbsp;devkitPro&nbsp;».</p>
<h4><strong><span style="text-decoration: underline;">2) Installation du VitaSDK</span></strong></h4>
<p style="text-align: justify;">Maintenant que cela est fait, décompressez l'archive du <strong>VitaSDK</strong>. À l'intérieur, vous devriez retrouver ces 4 dossiers (voir image ci-dessous).</p>
<figure id="attachment_11456" aria-describedby="caption-attachment-11456" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/contenu-vitasdk.png"><img decoding="async" class="wp-image-11456 size-medium" src="https://www.customprotocol.com/medias/2016/09/contenu-vitasdk-500x340.png" alt="contenu vitasdk" width="500" height="340" /></a><figcaption id="caption-attachment-11456" class="wp-caption-text">Le contenu de l'archive du VitaSDK</figcaption></figure>
<p style="text-align: justify;">Déplacez les 4 dossiers dans "C:\devkitPro\devkitARM" et acceptez de «&nbsp;Remplacer les fichiers dans la destination&nbsp;».</p>
<p><a href="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png"><img decoding="async" class="aligncenter wp-image-11457 size-full" src="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png" alt="vitasdk remplacement fichier" width="449" height="306" srcset="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png 449w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-300x204.png 300w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-370x252.png 370w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-270x184.png 270w" sizes="(max-width: 449px) 100vw, 449px" /></a></p>
<p style="text-align: justify;">Maintenant que cela est fait, ne pensez pas que c'est déjà fini. Il nous reste un dernier petit quelque chose.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Configuration du système</strong></span></h4>
<p style="text-align: justify;">Cliquez droit sur «&nbsp;Ordinateur&nbsp;» et sélectionnez l’option «&nbsp;Propriétés&nbsp;». Si vous ne le trouvez vraiment pas, allez dans «&nbsp;Panneau de configuration -&gt; Système et sécurité -&gt; Système&nbsp;».</p>
<div id="attachment_6112" class="wp-caption aligncenter"><figure id="attachment_6112" aria-describedby="caption-attachment-6112" style="width: 310px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png"><img decoding="async" class="wp-image-6112 size-full" src="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png" sizes="(max-width: 310px) 100vw, 310px" srcset="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png 310w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-186x135.png 186w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-180x131.png 180w" alt="Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l'explorateur de fichiers Windows" width="310" height="225" /></a><figcaption id="caption-attachment-6112" class="wp-caption-text">Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l’explorateur de fichiers <em>Windows</em></figcaption></figure>
<p>Sur la nouvelle fenêtre qui s’ouvre, choisissez à gauche l’option «&nbsp;Paramètres système avancés&nbsp;».</p>
</div>
<div id="attachment_6113" class="wp-caption aligncenter"><figure id="attachment_6113" aria-describedby="caption-attachment-6113" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows.png"><img decoding="async" class="wp-image-6113 size-medium" src="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-500x356.png" sizes="(max-width: 500px) 100vw, 500px" srcset="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-500x356.png 500w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-190x135.png 190w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-764x543.png 764w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-600x427.png 600w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-180x128.png 180w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-360x256.png 360w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows.png 786w" alt="Attention, on va paramétrer&#8239;!" width="500" height="356" /></a><figcaption id="caption-attachment-6113" class="wp-caption-text">Attention, on va paramétrer&#8239;!</figcaption></figure></div>
<p>Sur la nouvelle fenêtre (encore) qui s’ouvre, cliquez sur le bouton tout en bas «&nbsp;Variables d’environnement&nbsp;».</p>
<div id="attachment_6114" class="wp-caption aligncenter"><figure id="attachment_6114" aria-describedby="caption-attachment-6114" style="width: 416px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png"><img decoding="async" class="wp-image-6114 size-full" src="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png" sizes="(max-width: 416px) 100vw, 416px" srcset="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png 416w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-117x135.png 117w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-180x207.png 180w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-360x415.png 360w" alt="Vous voyez le bouton j'espère&#8239;?&nbsp;:p" width="416" height="479" /></a><figcaption id="caption-attachment-6114" class="wp-caption-text">Vous voyez le bouton j’espère&#8239;?&nbsp;:p</figcaption></figure></div>
<p style="text-align: justify;">Une troisième fenêtre (eh beh purée, qu’est-ce qu’il fait chier lui) va être ouverte. Sur celle-ci, 2 listes s’afficheront à vous&nbsp;: «&nbsp;Variables utilisateur pour X&nbsp;» et «&nbsp;Variables système&nbsp;». Dans cette liste-ci, trouvez la variable «&nbsp;Path&nbsp;» (et non «&nbsp;PATHTEXT&nbsp;»&#8239;! D’ailleurs c’est rigolo, quand on le prononce, ça sonne presque «&nbsp;pastèque&nbsp;». Lol, qu’est-ce qu’on s’marre ici).</p>
<div id="attachment_6116" class="wp-caption aligncenter"><figure id="attachment_6116" aria-describedby="caption-attachment-6116" style="width: 384px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-system-path.png"><img decoding="async" class="wp-image-6116 size-full" src="https://www.customprotocol.com/medias/2015/08/variables-system-path.png" sizes="(max-width: 384px) 100vw, 384px" srcset="https://www.customprotocol.com/medias/2015/08/variables-system-path.png 384w, https://www.customprotocol.com/medias/2015/08/variables-system-path-123x135.png 123w, https://www.customprotocol.com/medias/2015/08/variables-system-path-180x198.png 180w, https://www.customprotocol.com/medias/2015/08/variables-system-path-360x397.png 360w" alt="Hop, il est juste là le coquin&#8239;!" width="384" height="423" /></a><figcaption id="caption-attachment-6116" class="wp-caption-text">Hop, il est juste là le coquin&#8239;!</figcaption></figure></div>
<p style="text-align: justify;">Cliquez une fois dessus pour le sélectionner (il sera mis en surbrillance/surligné). Cliquez ensuite sur le bouton «&nbsp;Modifier&nbsp;» juste en bas. Une quatrième fenêtre va être appelée (y en a encore 5 autres, accrochez-vous&#8239;! Non j’déconne, c’est la dernière, promis).</p>
<div id="attachment_6117" class="wp-caption aligncenter"><figure id="attachment_6117" aria-describedby="caption-attachment-6117" style="width: 387px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png"><img decoding="async" class="wp-image-6117 size-full" src="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png" sizes="(max-width: 387px) 100vw, 387px" srcset="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png 387w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-235x85.png 235w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-180x65.png 180w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-360x130.png 360w" alt="modification variable systeme path" width="387" height="140" /></a><figcaption id="caption-attachment-6117" class="wp-caption-text">Bon, no comment…</figcaption></figure></div>
<p>Copiez, après le dernier «&nbsp;bin;&nbsp;», ceci (n’oubliez pas le point-virgule à la fin&#8239;!)&nbsp;:</p>
<div class="crayon-plain-wrap">
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\bin;C:\devkitPro\arm-vita-eabi\bin;
</pre>
</div>
<p style="text-align: justify;">N’oubliez surtout pas d’enregistrer en cliquant sur «&nbsp;OK&nbsp;», puis fermez toutes les fenêtres des propriétés <em>Windows</em> (ouf, enfin). Voilà, le <strong>VitaSDK</strong> est enfin installé&#8239;! Bon maintenant faut tester&#8239;!</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>Partie II&nbsp;-&nbsp;Utiliser le VitaSDK</strong></span></h3>
<h4><span style="text-decoration: underline;">1) Compilation d'un homebrew</span></h4>
<p style="text-align: justify;">Cette partie va vous surprendre par sa durée. Téléchargez le <em>vitahelloworld</em> (voir dans les Pré-requis) de <em>xerpi</em> et décompressez l'archive. Ouvrez le dossier <strong>vitahelloworld-master</strong> et cliquez sur "Fichier" puis "Ouvrir l'invite de commandes". Tapez simplement «&nbsp;make&nbsp;» et ça compilera tout seul&#8239;!</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png'><img decoding="async" width="740" height="395" src="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png 740w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160.png 300w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-768x410.png 768w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-370x198.png 370w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-270x144.png 270w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-570x304.png 570w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png 824w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png'><img decoding="async" width="740" height="387" src="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png 740w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157.png 300w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-768x402.png 768w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-370x194.png 370w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-270x141.png 270w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-570x298.png 570w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png 979w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<p style="text-align: justify;">Vous pouvez installer le ".VPK" créé et lancer le <em>homebrew</em> que vous avez compilé sur votre console&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<figure style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot-500x283.png"><img decoding="async" src="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot-500x283.png" width="500" height="283" /></a><figcaption class="wp-caption-text">Que c'est joli&#8239;!</figcaption></figure>
<p style="text-align: justify;">Vous pourriez vous arrêtez là mais si vous souhaitez créer vos propres applications, il vous faudra installer des librairies supplémentaires.</p>
<h4><strong><span style="text-decoration: underline;">2) Installation de bibliothèques supplémentaires</span></strong></h4>
<p style="text-align: justify;">Il est parfois intéressant d'ajouter de nouvelles bibliothèques pour avoir de nouvelles fonctions à utiliser. Pour cela, il faut télécharger la librairie en question et la compiler. Cependant, il faudra parfois suivre les instructions données avec la librairie pour réussir la compilation.</p>
<p style="text-align: justify;">Pour vous donner un exemple, nous allons compiler et installer la <em><a href="https://github.com/xerpi/libftpvita/archive/1.1.zip">libftpvita</a></em> de <em>xerpi</em>. Commencez par téléchargez et extraire les fichiers. Ouvrez le dossier "libftpvita", et cliquez droit tout en maintenant la touche <em>Shift</em> pour sélectionner "Ouvrir l'invite de commandes" (il se peut que cette option n'apparaisse pas, dans ce cas déplacez le dossier "libftpvita" sur votre Bureau). Comme pour compiler un <em>homebrew</em>, écrivez simplement «&nbsp;make&nbsp;». La librairie est compilée, maintenant, il faut l'installer&#8239;!</p>
<figure id="attachment_11553" aria-describedby="caption-attachment-11553" style="width: 207px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/libftpvita-compile.png"><img decoding="async" class="wp-image-11553 size-full" src="https://www.customprotocol.com/medias/2016/09/libftpvita-compile.png" alt="libftpvita-compile" width="207" height="125" /></a><figcaption id="caption-attachment-11553" class="wp-caption-text">La librairie est compilée avec l'apparition du fichier <em>libftpvita.a</em></figcaption></figure>
<p style="text-align: justify;">Dans le dossier "libftpvita", un fichier<em> libftpvita.a</em> a été créé. Déplacez-le dans le dossier "C:\devkitPro\arm-vita-eabi\lib". Retournez dans le dossier où la bibliothèque a été compilée et copiez le fichier "ftpvita.h" dans le dossier "C:\devkitPro\arm-vita-eabi\include". Voilà, la librairie est installée&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p style="text-align: justify;">Si vous voulez faire des tests, sachez que les librairies sont souvent accompagnées d'exemples qu'il vous suffit de compiler.</p>
<figure id="attachment_5487" aria-describedby="caption-attachment-5487" style="width: 501px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg"><img decoding="async" class="wp-image-5487" src="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg" alt="FTPVita en attente de connection" width="501" height="284" srcset="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg 960w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-300x170.jpg 300w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-768x435.jpg 768w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-370x210.jpg 370w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-270x153.jpg 270w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-570x323.jpg 570w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-740x419.jpg 740w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-300x170@2x.jpg 600w" sizes="(max-width: 501px) 100vw, 501px" /></a><figcaption id="caption-attachment-5487" class="wp-caption-text">L'exemple fourni ici est l'homebrew <strong>FTPVita</strong>.</figcaption></figure>
<hr />
<p style="text-align: justify;">Si vous avez le moindre problème, n'hésitez pas à poser votre question dans la <a href="https://www.customprotocol.com/forum/programmation/" target="_blank" rel="noopener noreferrer">section programmation</a> de notre forum. Si vous voulez lâcher un commentaire de remerciement, c'est aussi possible à la suite de ce tutoriel&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Merci pour votre lecture passionnée&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/">[PSV] [PSTV] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le VitaSDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>[PSV] [PSTV] [PC] TUTO &#8211; Installer et utiliser le PSP2SDK</title>
		<link>https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/</link>
					<comments>https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/#comments</comments>
		
		<dc:creator><![CDATA[Wirus]]></dc:creator>
		<pubDate>Wed, 19 Aug 2015 14:16:44 +0000</pubDate>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Top Articles]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Underground]]></category>
		<category><![CDATA[Underground]]></category>
		<category><![CDATA[PSP2SDK]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=6102</guid>
					<description><![CDATA[<p>Vous souhaitez coder un petit homebrew natif pour la PS Vita mais ne savez pas comment installer le PSP2SDK&#8239;? Nous sommes là&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/">[PSV] [PSTV] [PC] TUTO &#8211; Installer et utiliser le PSP2SDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Depuis un peu plus d'un mois, les <a href="https://www.customprotocol.com/underground-genre/homebrews-natifs-ps-vita/" target="_blank" rel="noopener noreferrer"><em>homebrews</em> natifs</a> utilisant <a href="https://www.customprotocol.com/underground/tuto-executer-lancer-rejuvenate-homebrew-natif-via-exploit-psm/" target="_blank" rel="noopener noreferrer">l'<em>exploit PSM</em></a> fleurissent sur PS Vita&nbsp;: émulateurs, utilitaires, etc. Un concours <em><a href="https://www.customprotocol.com/underground/vita-revitalize-homebrew-competition-ouvert/" target="_blank" rel="noopener noreferrer">Revitalize Homebrew Competition</a></em> a par ailleurs été ouvert par <em>Wololo</em>, et tous les utilisateurs de PS Vita ou PS TV au <em>firmwar</em><em>e</em> inférieur à 3.52 peuvent désormais profiter des joies de ce premier <strong>vrai hack natif</strong> via le <em><a href="https://www.customprotocol.com/underground/vita-tuto-installer-des-pkg-en-firmware-3-20-et-superieur/" target="_blank" rel="noopener noreferrer">PSM Dev Unity</a></em>. Si vous êtes ici, c'est que vous souhaitez tenter l'aventure, alors venez donc avec nous découvrir comment installer le <strong>PSP2SDK</strong> et émerveillez-nous avec de supers <em>homebrews</em>&#8239;!&#8239;;)</p>
<figure id="attachment_5052" aria-describedby="caption-attachment-5052" style="width: 764px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png"><img decoding="async" class="size-large wp-image-5052" src="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png" alt="Le PSP2SDK est un kit de développement crée par 173210 et sa bande" width="764" height="364" srcset="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png 1024w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143.png 300w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-768x366.png 768w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-370x176.png 370w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-270x129.png 270w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-570x272.png 570w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-740x353.png 740w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png 1280w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143@2x.png 600w" sizes="(max-width: 764px) 100vw, 764px" /></a><figcaption id="caption-attachment-5052" class="wp-caption-text">Le <strong>PSP2SDK</strong> est un kit de développement créé par 173210 et sa bande</figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>0) Pré-requis</strong></span></h4>
<ul style="text-align: justify;">
<li style="text-align: justify;">Une PS Vita ou PS TV compatible avec le <b>hack PSM</b>, c'est-à-dire :
<ul>
<li style="text-align: justify;"><em>Firmware</em> inférieur (strictement) à 3.52&#8239;;</li>
<li style="text-align: justify;"><em>PSM Dev Assistant</em> installé (voir <a href="https://www.customprotocol.com/underground/vita-tuto-installer-des-pkg-en-firmware-3-20-et-superieur/" target="_blank" rel="noopener noreferrer">ici pour installer celui d'<em>Unity</em> via <em>PKG</em></a>)&#8239;;</li>
<li style="text-align: justify;">Une <a href="https://www.customprotocol.com/underground/tuto-re-faire-fonctionner-reutiliser-psm-dev-playstation-mobile-sans-licence/" target="_blank" rel="noopener noreferrer">licence PSM+</a> que vous penserez à <a href="https://www.customprotocol.com/underground/tuto-re-faire-fonctionner-reutiliser-psm-dev-playstation-mobile-sans-licence/" target="_blank" rel="noopener noreferrer">renouveler chaque jour</a> (voir étape 2 du tuto) que vous souhaitez utiliser le <strong>hack PSM</strong>).</li>
</ul>
</li>
<li style="text-align: justify;">Un PC (<em>Windows</em> de préférence, c'est l'OS que nous utiliserons pour ce tutoriel)&#8239;;</li>
<li style="text-align: justify;">Le gestionnaire d'archives <em><a href="http://www.spiroo.be/7zip/" target="_blank" rel="noopener noreferrer">7zip</a></em> ou <em>WinRar</em>&#8239;;</li>
<li style="text-align: justify;"><a href="https://mega.nz/#!OdcDyTTC!ZObT0GyCEuY0fziPpxtyZV_fqDOFt4CUYVKzuFZu2XE" target="_blank" rel="noopener noreferrer">Cette archive</a>&#8239;;</li>
<li style="text-align: justify;">Des compétences en C (pour programmer votre <em>homebrew</em>, c'est pas nécessaire pour simplement compiler) ;</li>
<li style="text-align: justify;">De la patience&#8239;;</li>
<li style="text-align: justify;">Ce tutoriel (lol).</li>
</ul>
<p style="text-align: justify;">Ce didacticiel sera peut-être mis à jour pour les ordinateurs <em>Mac</em> et <em>GNU-Linux</em> avec l'aide de mon cher @Tuxbot123.</p>
<h3 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Partie I - Installer les fichiers du PSP2SDK</strong></span></h3>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Téléchargement/préparation des fichiers</strong></span></h4>
<p style="text-align: justify;">Si vous avez bien lu tous les pré-requis, vous avez dû télécharger une archive, non&#8239;? Bien, extrayez son contenu dans un répertoire sur votre Bureau (de préférence, vous comprendrez pourquoi). Dans notre exemple, nous appellerons ce répertoire "PSP2SDK Installer".</p>
<figure id="attachment_6103" aria-describedby="caption-attachment-6103" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2sdk-debut.png"><img decoding="async" class="wp-image-6103 size-medium" src="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2sdk-debut-500x268.png" alt="Voilà à quoi devrait ressembler votre dossier" width="500" height="268" /></a><figcaption id="caption-attachment-6103" class="wp-caption-text">Voilà à quoi devrait ressembler votre dossier</figcaption></figure>
<p style="text-align: justify;">Ensuite, extrayez le contenu de l'archive "devkitARM_r44-win32.exe" dans votre fameux dossier spécial "installation du <strong>PSP2SDK</strong>" (chez nous appelé <em>PSP2SDK Installer</em>).</p>
<figure id="attachment_6108" aria-describedby="caption-attachment-6108" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/extraction-fichiers-devkit-ARM.png"><img decoding="async" class="wp-image-6108 size-medium" src="https://www.customprotocol.com/medias/2015/08/extraction-fichiers-devkit-ARM-500x284.png" alt="extraction fichiers devkit ARM" width="500" height="284" /></a><figcaption id="caption-attachment-6108" class="wp-caption-text">Voilà la démarche à suivre si vous utilisez <em>7zip</em></figcaption></figure>
<p style="text-align: justify;">Pendant l'extraction un peu longue, profitez-en pour récupérer tous les fichiers nécessaires au fonctionnement du <b>PSP2SDK</b>. Rendez-vous sur <a href="http://wololo.net/psp2sdk/?C=M;O=D" target="_blank" rel="noopener noreferrer">cette page</a>, et téléchargez les dernières archives portant ces noms (un petit ctrl+f peut vous aider si vous n'arrivez pas à vous y retrouver)&nbsp;:</p>
<ul style="text-align: justify;">
<li style="text-align: justify;">psp2-libs-dirty</li>
<li style="text-align: justify;">psp2-tools</li>
<li style="text-align: justify;">psp2-multilib-dirty</li>
<li style="text-align: justify;">psp2-libgcc</li>
</ul>
<p style="text-align: justify;">Si vous êtes utilisateur d'un système <em>Windows</em>, veillez à bien choisir les archives portant la mention "mingw32" (pour les "psp2-tools" notamment).</p>
<figure id="attachment_6107" aria-describedby="caption-attachment-6107" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2sdk-apres.png"><img decoding="async" class="wp-image-6107 size-medium" src="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2sdk-apres-500x284.png" alt="contenu répertoire psp2sdk après" width="500" height="284" /></a><figcaption id="caption-attachment-6107" class="wp-caption-text">Les id/versions peuvent être différentes des vôtres car le <strong>PSP2SDK</strong> est régulièrement mis à jour</figcaption></figure>
<p style="text-align: justify;">Créez sur votre disque local "C:/" le répertoire "devkitPro", comme ci-dessous, ce sera fait aussi.</p>
<figure id="attachment_6109" aria-describedby="caption-attachment-6109" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/emplacement-repertoire-devkitPro-psp2sdk.png"><img decoding="async" class="wp-image-6109 size-medium" src="https://www.customprotocol.com/medias/2015/08/emplacement-repertoire-devkitPro-psp2sdk-500x279.png" alt="emplacement repertoire devkitPro psp2sdk" width="500" height="279" /></a><figcaption id="caption-attachment-6109" class="wp-caption-text">C'est tout simple n'est-ce pas&#8239;?</figcaption></figure>
<p style="text-align: justify;">L'extraction est enfin terminée&#8239;? Bien, déplacez le dossier "dekitARM" qui vient d'apparaître dans votre répertoire "devkitPro".</p>
<figure id="attachment_6110" aria-describedby="caption-attachment-6110" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/deplacement-dossier-devkitARM-vers-devkitPRO.png"><img decoding="async" class="size-medium wp-image-6110" src="https://www.customprotocol.com/medias/2015/08/deplacement-dossier-devkitARM-vers-devkitPRO-500x279.png" alt="On déplace le dossier &quot;devkitARM&quot; dans &quot;C:/devkitPro&quot;" width="500" height="279" /></a><figcaption id="caption-attachment-6110" class="wp-caption-text">On déplace le dossier "devkitARM" dans "C:/devkitPro"</figcaption></figure>
<p style="text-align: justify;">Créez pour finir un répertoire que vous nommerez "psp2" (en minuscules).</p>
<figure id="attachment_6119" aria-describedby="caption-attachment-6119" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/creation-dossier-psp2-devkitARM.png"><img decoding="async" class="wp-image-6119 size-medium" src="https://www.customprotocol.com/medias/2015/08/creation-dossier-psp2-devkitARM-500x317.png" alt="Je crois que vous savez comment on crée un dossier sur Windows,mais je préfère mettre un screenshot au cas où x)" width="500" height="317" /></a><figcaption id="caption-attachment-6119" class="wp-caption-text">Je crois que vous savez comment on crée un dossier sur <em>Windows</em>, mais je préfère mettre un <em>screenshot</em> au cas où x)</figcaption></figure>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>2) Extraction des archives contenant les fichiers</strong></span></h4>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">À partir de maintenant, il va falloir lire <strong>très attentivement</strong> ce qui va suivre. Rappelez-vous qu'à la moindre fausse manipulation, rien ne marchera et qu'il faudra se retaper le tutoriel en entier (ce serait ballot)&#8239;!</div>
<p style="text-align: justify;">Rendez-vous maintenant sur le dossier "PSP2SDK Installer", où se trouvent toutes nos archives pour rappel. Ouvrez l'archive "psp2-libs-dirty-xxxxxxx.zip" pour trouver l'option "Extraire les fichiers". Choisissez comme dossier de destination&nbsp;:</p>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\psp2</pre>
<figure id="attachment_6121" aria-describedby="caption-attachment-6121" style="width: 485px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-6121 size-full" src="https://www.customprotocol.com/medias/2015/08/extractio-7zip-fichiers-psp2-libs-dirty.png" alt="extraction 7zip fichiers psp2 libs dirty" width="485" height="538" srcset="https://www.customprotocol.com/medias/2015/08/extractio-7zip-fichiers-psp2-libs-dirty.png 485w, https://www.customprotocol.com/medias/2015/08/extractio-7zip-fichiers-psp2-libs-dirty-270x300.png 270w, https://www.customprotocol.com/medias/2015/08/extractio-7zip-fichiers-psp2-libs-dirty-370x410.png 370w" sizes="(max-width: 485px) 100vw, 485px" /><figcaption id="caption-attachment-6121" class="wp-caption-text">Voilà un p'tit <em>screenshot</em> pour les utilisateurs de <em>7zip</em>, mais je pense que vous aurez compris</figcaption></figure>
<p style="text-align: justify;">Laissez l'extraction s'effectuer, puis vérifiez votre répertoire "psp2". Il doit ressembler à cela&nbsp;:</p>
<figure id="attachment_6122" aria-describedby="caption-attachment-6122" style="width: 487px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1.png"><img decoding="async" class="size-full wp-image-6122" src="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1.png" alt="Voili" width="487" height="351" srcset="https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1.png 487w, https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1-300x216.png 300w, https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1-370x267.png 370w, https://www.customprotocol.com/medias/2015/08/contenu-repertoire-psp2-1-270x195.png 270w" sizes="(max-width: 487px) 100vw, 487px" /></a><figcaption id="caption-attachment-6122" class="wp-caption-text">Voili</figcaption></figure>
<p style="text-align: justify;">Bien, on va extraire toutes nos autres archives du coup. Voici une liste présentant dans l'ordre quelle archive ouvrir, puis l'emplacement où extraire son contenu.</p>
<ul style="text-align: justify;">
<li style="text-align: justify;"><em>psp2-tools-xxxxxxx-x86_64-w64-mingw32.zip</em></li>
</ul>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM</pre>
<ul style="text-align: justify;">
<li style="text-align: justify;"><em>psp2-multilib-dirty-xxxxxxx.zip</em></li>
</ul>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\arm-none-eabi\lib</pre>
<ul style="text-align: justify;">
<li style="text-align: justify;"><em>psp2-libgcc-x_x_x.zip</em></li>
</ul>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\arm-none-eabi\lib</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Le fichier psp2.specs</strong></span></h4>
<p style="text-align: justify;">Téléchargez le fichier <em>psp2.specs</em> <a href="https://www.customprotocol.com/medias/psp2sdk/psp2.specs" target="_blank" rel="noopener noreferrer">ici</a>. Si votre navigateur ne vous le propose pas en téléchargement, cliquez-droit et choisissez "Enregistrez sous" (CTRL+S). Votre ordinateur tentera peut-être de le convertir au format <em>txt</em>, empêchez-le en virant le ".txt" qui dépasse pour n'avoir que <em>psp2.specs</em> et enregistrez (ignorez l'alerte qui vous dira que le fichier risque d'être inutilisable blablabla). Enfin, déplacez ce fichier là-bas&nbsp;:</p>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\arm-none-eabi\lib</pre>
<figure id="attachment_6123" aria-describedby="caption-attachment-6123" style="width: 487px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement.png"><img decoding="async" class="size-full wp-image-6123" src="https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement.png" alt="Voilà sa place" width="487" height="351" srcset="https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement.png 487w, https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement-300x216.png 300w, https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement-370x267.png 370w, https://www.customprotocol.com/medias/2015/08/psp2-specs-emplacement-270x195.png 270w" sizes="(max-width: 487px) 100vw, 487px" /></a><figcaption id="caption-attachment-6123" class="wp-caption-text">Voilà sa place</figcaption></figure>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>4) Configuration du système</strong></span></h4>
<p style="text-align: justify;">Cliquez droit sur "Ordinateur" et sélectionnez l'option "Propriétés". Si vous ne le trouvez vraiment pas, allez dans "Panneau de configuration -&gt; Système et sécurité -&gt; Système".</p>
<figure id="attachment_6112" aria-describedby="caption-attachment-6112" style="width: 310px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png"><img decoding="async" class="size-full wp-image-6112" src="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png" alt="Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l'explorateur de fichiers Windows" width="310" height="225" srcset="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png 310w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-300x218.png 300w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-270x196.png 270w" sizes="(max-width: 310px) 100vw, 310px" /></a><figcaption id="caption-attachment-6112" class="wp-caption-text">Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l'explorateur de fichiers <em>Windows</em></figcaption></figure>
<p style="text-align: justify;">Sur la nouvelle fenêtre qui s'ouvre, choisissez à gauche l'option "Paramètres système avancés".</p>
<figure id="attachment_6113" aria-describedby="caption-attachment-6113" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows.png"><img decoding="async" class="wp-image-6113 size-medium" src="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-500x356.png" alt="Attention, on va paramétrer&#8239;!" width="500" height="356" /></a><figcaption id="caption-attachment-6113" class="wp-caption-text">Attention, on va paramétrer&#8239;!</figcaption></figure>
<p style="text-align: justify;">Sur la nouvelle fenêtre (encore) qui s'ouvre, cliquez sur le bouton tout en bas "Variables d'environnement".</p>
<figure id="attachment_6114" aria-describedby="caption-attachment-6114" style="width: 416px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png"><img decoding="async" class="size-full wp-image-6114" src="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png" alt="Vous voyez le bouton j'espère&#8239;?&nbsp;:p" width="416" height="479" srcset="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png 416w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-261x300.png 261w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-370x426.png 370w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-270x311.png 270w" sizes="(max-width: 416px) 100vw, 416px" /></a><figcaption id="caption-attachment-6114" class="wp-caption-text">Vous voyez le bouton j'espère&#8239;?&nbsp;:p</figcaption></figure>
<p style="text-align: justify;">Une troisième fenêtre (eh beh purée, qu'est-ce qu'il fait chier lui) va être ouverte. Sur celle-ci, 2 listes s'afficheront à vous&nbsp;: "Variables utilisateur pour X" et "Variables système". Dans cette liste-ci, trouvez la variable "Path" (et non "PATHTEXT"&#8239;! D'ailleurs c'est rigolo, quand on le prononce, ça sonne presque "pastèque". Lol, qu'est-ce qu'on s'marre ici).</p>
<figure id="attachment_6116" aria-describedby="caption-attachment-6116" style="width: 384px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-system-path.png"><img decoding="async" class="size-full wp-image-6116" src="https://www.customprotocol.com/medias/2015/08/variables-system-path.png" alt="Hop, il est juste là le coquin&#8239;!" width="384" height="423" srcset="https://www.customprotocol.com/medias/2015/08/variables-system-path.png 384w, https://www.customprotocol.com/medias/2015/08/variables-system-path-272x300.png 272w, https://www.customprotocol.com/medias/2015/08/variables-system-path-370x408.png 370w, https://www.customprotocol.com/medias/2015/08/variables-system-path-270x297.png 270w" sizes="(max-width: 384px) 100vw, 384px" /></a><figcaption id="caption-attachment-6116" class="wp-caption-text">Hop, il est juste là le coquin&#8239;!</figcaption></figure>
<p style="text-align: justify;">Cliquez une fois dessus pour le sélectionner (il sera mis en surbrillance/surligné). Cliquez ensuite sur le bouton "Modifier" juste en bas. Une quatrième fenêtre va être appelée (y en a encore 5 autres, accrochez-vous&#8239;! Non j'déconne, c'est la dernière, promis).</p>
<figure id="attachment_6117" aria-describedby="caption-attachment-6117" style="width: 387px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png"><img decoding="async" class="wp-image-6117 size-full" src="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png" alt="modification variable systeme path" width="387" height="140" srcset="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png 387w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-300x109.png 300w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-370x134.png 370w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-385x140.png 385w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-270x98.png 270w" sizes="(max-width: 387px) 100vw, 387px" /></a><figcaption id="caption-attachment-6117" class="wp-caption-text">Bon, no comment...</figcaption></figure>
<p style="text-align: justify;">Copiez après le dernier "bin;" ceci (n'oubliez pas le point-virgule à la fin&#8239;!)&nbsp;:</p>
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\bin;C:\devkitPro\devkitARM\psp2\bin;</pre>
<p style="text-align: justify;">N'oubliez surtout pas d'enregistrer en cliquant sur "OK", puis fermez toutes les fenêtres des propriétés <em>Windows</em> (ouf, enfin). Et voilà, le <strong>PSP2SDK</strong> est installé, ouf&#8239;! Le plus gros est fait&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Partie II - Compilation d'un homebrew via le PSP2SDK</strong></span></h3>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Extraction des archives</strong></span></h4>
<p style="text-align: justify;">Retournons donc faire un petit tour sur notre répertoire spécial "PSP2SDK Installer".</p>
<p style="text-align: justify;"><div align="center" class="alert alert-info ">Vous pouvez supprimer par ailleurs les archives "devkitPro", "psp2-libs-dirty", "psp2-tools", "psp2-multilib-dirty" et "psp2-libgcc", elles ne nous serviront plus, et même renommer "PSP2SDK Installer" en "PSP2SDK Compiler".</div>
<p style="text-align: justify;">Extrayez les fichiers de l'archive "vitahelloworld-master.zip". </p>
<figure id="attachment_6124" aria-describedby="caption-attachment-6124" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/vita-hello-world-master-extraire.png"><img decoding="async" class="size-medium wp-image-6124" src="https://www.customprotocol.com/medias/2015/08/vita-hello-world-master-extraire-500x352.png" alt="On extrait ici les fichiers du Hello World de xerpi" width="500" height="352" /></a><figcaption id="caption-attachment-6124" class="wp-caption-text">On extrait ici les fichiers du <em>Hello World</em> de <em>xerpi</em></figcaption></figure>
<p style="text-align: justify;">Extrayez aussi les fichiers de l'archive "MAKE.zip", mais cette fois-ci dans "C:\devkitPro\devkitARM\bin".</p>
<figure id="attachment_6125" aria-describedby="caption-attachment-6125" style="width: 490px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make.png"><img decoding="async" class="size-full wp-image-6125" src="https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make.png" alt="Les 5 fichiers ont bien été copiés" width="490" height="351" srcset="https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make.png 490w, https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make-300x215.png 300w, https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make-370x265.png 370w, https://www.customprotocol.com/medias/2015/08/devkitARM-bin-copier-fichiers-make-270x193.png 270w" sizes="(max-width: 490px) 100vw, 490px" /></a><figcaption id="caption-attachment-6125" class="wp-caption-text">Les 5 fichiers ont bien été copiés</figcaption></figure>
<p style="text-align: justify;">On retourne un p'tit coup sur le dossier "vitahelloworld-master", maintenant. Cliquez droit quelque part sur la fenêtre en maintenant "Shift" (mais pas devant l'un des 7 fichiers), et cliquez sur "Ouvrir une fenêtre de commandes ici". </p>
<figure id="attachment_6128" aria-describedby="caption-attachment-6128" style="width: 490px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici.png"><img decoding="async" class="size-full wp-image-6128" src="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici.png" alt="Vous la voyez cette option, j'espère&#8239;?" width="490" height="402" srcset="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici.png 490w, https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici-300x246.png 300w, https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici-370x304.png 370w, https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-ouvrir-fenetre-commandes-ici-270x222.png 270w" sizes="(max-width: 490px) 100vw, 490px" /></a><figcaption id="caption-attachment-6128" class="wp-caption-text">Vous la voyez cette option, j'espère&#8239;?</figcaption></figure>
<p style="text-align: justify;"><div align="justify" class="signoff"><i class="fa fa-fw fa-username"></i>Mais mais mais... Je la vois pas cette option moi&#8239;!</div>
<p style="text-align: justify;">Vous avez certainement dû créer votre dossier autre part que sur le Bureau. Dans ce cas, pas de problème, vous pouvez tout de même ouvrir l'invite de commandes en faisant "Exécuter" puis en tapant "cmd", ou bien en cherchant "Invite de commande" dans la barre de recherche de votre <em>Windows</em>. Lorsque la fenêtre noire sera apparue, retournez sur votre dossier spécial installation du <strong>PSP2SDK</strong>, puis copiez (CTRL+C) le chemin qui mène vers lui et enfin tapez dans l'invite de commandes "cd" suivi d'un espace et de votre fameux chemin (CTRL+V). Voilà une petite capture d'écran pour vous expliquer&nbsp;:</p>
<figure id="attachment_6129" aria-describedby="caption-attachment-6129" style="width: 764px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/explications-invite-de-commandes-psp2sdk.png"><img decoding="async" class="size-large wp-image-6129" src="https://www.customprotocol.com/medias/2015/08/explications-invite-de-commandes-psp2sdk-764x428.png" alt="Bon, c'est pas ultra-design mais c'est efficace, j'espère que vous comprendrez&nbsp;:)" width="764" height="428" /></a><figcaption id="caption-attachment-6129" class="wp-caption-text">Bon, c'est pas ultra-design mais c'est efficace, j'espère que vous comprendrez&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p style="text-align: justify;">Plus qu'à taper "make". C'est tout. Le <em>homebrew</em> sera compilé et prêt à être lancé sur l'un de vos <em>PSM Dev Assistant</em>. Quoi, vous vous attendiez à plus compliqué&#8239;? Désolé de vous décevoir&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<figure id="attachment_6131" aria-describedby="caption-attachment-6131" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/make-homebrew-compilation-psp2sdk.png"><img decoding="async" class="size-medium wp-image-6131" src="https://www.customprotocol.com/medias/2015/08/make-homebrew-compilation-psp2sdk-500x248.png" alt="Compilation terminée avec succès" width="500" height="248" /></a><figcaption id="caption-attachment-6131" class="wp-caption-text">Compilation terminée avec succès</figcaption></figure>
<p style="text-align: justify;">On vérifie notre dossier "vitahelloworld-master"&nbsp;: de nouveaux fichiers ont normalement fait leur apparition, à savoir des fichiers en ".o" ainsi qu'un "xxx.elf" et un autre "xxx-fixup.elf". C'est ce dernier qu'il faudra glisser-déposer sur le <em>homebrew-run.bat</em> de votre dossier "hack PSM" ou "Rejuvenate".</p>
<figure id="attachment_6132" aria-describedby="caption-attachment-6132" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/nouveaux-fichiers-apres-compilation-psp2sdk-elf.png"><img decoding="async" class="wp-image-6132 size-medium" src="https://www.customprotocol.com/medias/2015/08/nouveaux-fichiers-apres-compilation-psp2sdk-elf-500x352.png" alt="Attention, c'est le &quot;xxx-fixup.elf&quot; qu'il faut garder&#8239;!" width="500" height="352" /></a><figcaption id="caption-attachment-6132" class="wp-caption-text">Attention, c'est le "xxx-fixup.elf" qu'il faut garder&#8239;!</figcaption></figure>
<p style="text-align: justify;">Vous pouvez d'ailleurs tester le <em>Hello World</em> que l'on vous a livré pour l'exemple, il devrait normalement fonctionner à merveille (testé sur le <em>PSM Dev Assistant for Unity</em>).</p>
<figure id="attachment_6133" aria-describedby="caption-attachment-6133" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot.png"><img decoding="async" class="wp-image-6133 size-medium" src="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot-500x283.png" alt="Cha fonctionne&#8239;! *o*" width="500" height="283" /></a><figcaption id="caption-attachment-6133" class="wp-caption-text">Cha fonctionne&#8239;! *o*</figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Mini FAQ</strong></span></h4>
<p style="text-align: justify;"><div align="justify" class="signoff"><i class="fa fa-fw fa-question-circle"></i>J'ai réessayé plusieurs fois mais je n'arrive définitivement pas à compiler un <em>homebrew</em>... Que faire&#8239;? Voici mon erreur&nbsp;:</p>
<pre class="lang:default decode:true">'make' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
arm-none-eabi-gcc.exe: error: psp2.specs: No such file or directory
make: *** [main.o] Error 1</pre>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-1.png"><img decoding="async" class="aligncenter wp-image-6158 size-medium" src="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-1-500x253.png" alt="psp2sdk compilation make erreur cmd 1" width="500" height="253" /></a></p>
<p style="text-align: justify;"></div>
<p style="text-align: justify;">Vérifiez que vous avez bien copié votre fichier <em>psp2.specs</em> dans "C:\devkitPro\devkitARM\arm-none-eabi\lib" et que les fichiers exécutable du "make" se trouvent bien dans "C:\devkitPro\devkitARM\bin". Essayez aussi de copier le fichier <em>psp2.specs</em> dans le dossier de votre <em>homebrew</em>.</p>
<p style="text-align: justify;"><div align="justify" class="signoff"><i class="fa fa-fw fa-question-circle"></i>Moi aussi j'ai réessayé plusieurs fois mais je n'y arrive définitivement pas... Que faire&#8239;? Voici mon erreur&nbsp;:</p>
<pre class="lang:default decode:true">collect2.exe: error: Id returned 1 exit status
make: *** [vitahelloworld.ef] Error 1</pre>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-2.png"><img decoding="async" class="aligncenter wp-image-6159 size-medium" src="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-2-500x252.png" alt="psp2sdk compilation make erreur cmd 2" width="500" height="252" /></a></p>
<p style="text-align: justify;"></div>
<p style="text-align: justify;">Essayez de remplacer les anti-slashs "\" du <em>psp2.specs</em> par des slashs normaux "/".</p>
<p style="text-align: justify;"><div align="justify" class="signoff"><i class="fa fa-fw fa-question-circle"></i>Vous allez pas me croire mais... J'ai réessayé plusieurs fois et je n'y arrive définitivement pas&#8239;! Que faire&#8239;?</p>
<pre class="lang:default decode:true">make: psp2-fixup: Command not found
make: *** [vitahelloworld_fixup.elf] Error 127</pre>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-3.png"><img decoding="async" class="aligncenter size-medium wp-image-6160" src="https://www.customprotocol.com/medias/2015/08/psp2sdk-compilation-make-erreur-cmd-3-500x248.png" alt="psp2sdk compilation make erreur cmd 3" width="500" height="248" /></a></p>
<p style="text-align: justify;"></div>
<p style="text-align: justify;">Vous avez mal extrait votre archive <em>psp2-tools</em>&#8239;!</p>
<p style="text-align: justify;">Si vraiment vous n'y arrivez pas, je vous fournis <a href="https://mega.nz/#!3QE12JRK!tKesw6_F2GvjTm_5yxdo0bm9ASlL-KuG5RPKiMuFyU4" target="_blank" rel="noopener noreferrer">mon dossier "devkitPro"</a> à coller dans votre disque local "C:/". Attention néanmoins, le <strong>PSP2SDK</strong> étant régulièrement mis à jour, si vous consultez ce tutoriel à une date éloignée de celle à laquelle ce tutoriel aura été publié (18 août 2015), il se peut que vous ne puissiez pas jouir des dernières fonctionnalités proposées par la dernière version.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/">[PSV] [PSTV] [PC] TUTO &#8211; Installer et utiliser le PSP2SDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>[PSP] [Vita] Le ONELua de nouveau mis à jour</title>
		<link>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/</link>
					<comments>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 12 Jul 2015 15:36:21 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Top Articles]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[OneLua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=5423</guid>
					<description><![CDATA[<p>Découvrons ensemble les nouveautés de cette nouvelle version du ONELua&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/">[PSP] [Vita] Le ONELua de nouveau mis à jour</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><div align="center" class="alert alert-info "><b><u>Note</u></b> : cet article est très long et il s'adresse aux développeurs à devenir ou bien ceux maîtrisant déjà le langage <em>Lua</em> 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 <em>gdljjrod</em> ainsi que<em> Davis Nuñez</em> pour leur patience et leur aide à la rédaction de cet article.</div>
<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é</a>, <em>gdljjrod</em> et <em>Rober Galarga</em> ont mis à jour leur interpréteur Lua pour PSP dénommé <strong>ONELua</strong>. 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 <strong>découvrir et décortiquer ensemble</strong> pour vous permettre de comprendre leur utilisation via des explications, des exemples et des captures d'écran&nbsp;: bref un article signé <strong>Custom Protocol</strong>.</p>
<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 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="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5173" class="wp-caption-text">Le <b>ONELua</b> Version 3</figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Optimisations</strong></span></h4>
<p style="text-align: justify;">Commençons tout d'abord par les nouveautés 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ède le jeu (et sa démo) <a href="https://www.customprotocol.com/underground/vita-nouvel-exploit-disponible-demo/">Toukiden: Kiwami</a> (dispo uniquement sr le <em>Store</em> JP) possédant 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 également sur les PS Vita. Les développeurs ont également ajouté une nouvelle bibliothèque nommée <strong>BitOp</strong> qui ajoute des opérations binaires sur les nombres. Vous pouvez regarder les fonctions disponibles avec des exemples à <a href="http://bitop.luajit.org/api.html">cette adresse</a>.</p>
<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 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êcher la mise à 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="(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>
<p style="text-align: justify;">Cette bibliothèque n'a pas été implémentée au <strong>ONELua</strong> 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.</p>
<pre class="lang:lua decode:true" title="Fonction Map">map.new(IMAGE tileset, TABLE mapData, NUMBER TileX, NUMBER TileY)
--IMAGE tileset&nbsp;: Image généré via GBA Graphics contenant les textures pour la map
--TABLE mapdata&nbsp;: Map créé via GBA Graphics contenant les informations de la map
--NUMBER TileX&nbsp;: Taille largeur en pixel des textures à découper
--NUMBER TileY&nbsp;: Taille longueur en pixel des textures à découper
--Retourne la map (à stocker dans une variable)
map.blit(MAP map, NUMBER x, NUMBER y)
--MAP map&nbsp;: Map à afficher généré via la fonction map.new
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER y&nbsp;: Placement sur l'écran en y
--Ne retourne rien</pre>
<p style="text-align: justify;">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 <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çais&#8239;!</p>
<p style="text-align: justify;">Voici quelques exemples postés par plusieurs développeurs des possibilités de ces fonctions.</p>
<div align="center">
<blockquote class="twitter-tweet" lang="fr">
<p dir="ltr" lang="en" style="text-align: center;">Peace in <a href="https://twitter.com/hashtag/An%C3%A9sidor?src=hash">#Anésidor</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>
<p>— Applelo (@Applelo1) <a href="https://twitter.com/Applelo1/status/614709397776900096">27 Juin 2015</a></p>
</blockquote>
<blockquote class="twitter-tweet" lang="fr">
<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>
<p>— Davis Nuñez (@DevDavisNunez) <a href="https://twitter.com/DevDavisNunez/status/611610696652959744">18 Juin 2015</a></p>
</blockquote>
</div>
<p style="text-align: justify;">En exemple, pour utiliser cette fonction, vous pouvez vous référer au contenu de l'archive du <strong>ONELua </strong>où le code a été commenté par @applelo1 (moi même) en français.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions images</strong></span></h4>
<p style="text-align: justify;">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 <em>image.loadv()</em> pour un affichage plus rapide de celles-ci (pour des <em>sprites</em> 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 <em>image.move()</em>.</p>
<p style="text-align: justify;">Désormais, via la fonction <em>image.loadfromdata()</em>, 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&nbsp;:</p>
<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'était un fichier
local databin&nbsp;=&nbsp;fp:read("*a")--Je lis le contenu du fichier
fp:close()--Je ferme la lecture du fichier
monimg&nbsp;=&nbsp;image.loadfromdata(databin,__PNG)--La fonction charge et transforme les données binaires en fichiers
while true do--J'ouvre ma boucle
image.blit(monimg,0,0) --J'affiche mon image
screen.flip()--Je rafraichie l'écran
end--Je ferme la boucle</pre>
<p style="text-align: justify;">Et c'est pas fini, puisqu'on peut également modifier ses images via trois nouvelles fonctions&#8239;! La première,<em> image.blitadd()</em>, permet d'afficher l'image en y ajoutant un effet de couleur alors que la deuxième, <em>image.blitsub()</em>, au contraire, permet de supprimer la couleur. La dernière quant à elle, <em>image.blittint()</em>, permet d'afficher une image et de la teindre également d'une couleur.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua.png'><img 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="" 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="(max-width: 480px) 100vw, 480px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua.png'><img 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="" 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="(max-width: 480px) 100vw, 480px" /></a>
<p style="text-align: justify;">Voici le récapitulatif de toute les nouvelles fonctions concernant les images retranscrit ici.</p>
<pre class="lang:lua decode:true" title="Fonctions Image">image.loadv(STRING path)
image.loadv(STRING path, COLOR mask)
image.loadv(STRING path, NUMBER w, NUMBER h)
image.loadv(STRING path, NUMBER w, NUMBER h, COLOR mask)
--STRING path&nbsp;: Chemin de l'image
--COLOR mask&nbsp;: Masque de couleur à appliquer à l'image
--NUMBER w&nbsp;: Largeur pour couper les sprites
--NUMBER h&nbsp;: Hauteur pour couper les sprites
--Retourne une image, prête à être utiliser.
image.move(IMAGE img)
--IMAGE img&nbsp;: Variable de l'image
--Ne retourne rien
image.loadfromdata(STRING data, NUMBER type)
--STRING data&nbsp;: Donnée de l'image en fichier binaire
--NUMBER type&nbsp;: 
---------------__PNG (0) pour image en .png
---------------__JPG (1) pour image en .jpg
---------------__GIF (2) pour image en .gif
image.blitadd(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--NUMBER coef&nbsp;: Niveau d'ajout de couleur (entre 0 et 255)
--Ne retourne rien
image.blitsub(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--NUMBER coef&nbsp;: Niveau de suppression de couleur (entre 0 et 255)
--Ne retourne rien
image.blittint(IMAGE img,NUMBER x,NUMBER y,COLOR color)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--COLOR color&nbsp;: Couleur pour teindre l'image
--Ne retourne rien</pre>
<p style="text-align: justify;">Le <strong>ONELua</strong> se montre aussi très performant comme gestionnaire des <em>EBOOT.PBP</em>, 3 nouvelles fonctions font ainsi leur entrée avec cette troisième version par ce que l'on appelle leurs <em>callbacks</em>. La fonction <em>game.pack()</em> permet de créer un <em>EBOOT</em> si vous disposez d'un dossier contenant toutes les ressources nécessaires (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>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions TV</strong></span></h4>
<p style="text-align: justify;">Vous devriez savoir, puisque nous vous l'avions déjà <a href="https://www.customprotocol.com/underground/version-3-onelua-arrive-tres-bientot/">annoncé</a>, que le <strong>ONELua</strong> 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 <em>dvemgr.prx </em><i>contenu dans l'archive pour pouvoir faire fonctionner la fonction. La deuxième, </i><em>os.cabletv()</em><i>, permet de </i>reconnaître si votre PSP est branchée à un écran externe ainsi que le type de câble utilisé.</p>
<pre class="lang:lua decode:true" title="Fonctions Télévisions">os.modetv(NUMBER quality)	
--Active la retransmission
--NUMBER quality&nbsp;: La qualité de retransmission
--------------------__8888 (32 bits RGBA)
--------------------__4444 (16 bits R4G4B4A4)
--------------------__5551 (16 bits R5G5B5A1)
--------------------__5650 (16 bits R5G5B5, pas de chaîne alpha)
--Ne retourne rien
os.modetv()
--Désactive la retransmission
--Ne retourne rien
os.cabletv()	
--Reconnait le cable utilisé
--Retourne un nombre
--0 si aucun cable n'est connecté
--1 si c'est un cable S-Video/AV (composite)
--2 si c'est un cable D Terminal Cable/Component Cable
</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonction windows</strong></span></h4>
<p style="text-align: justify;">En plus de cela, une nouvelle fonction vient de faire son apparition, et nommée <em>os.messagebox()</em>. Elle permet d'afficher une boîte de dialogue (ressemblant beaucoup à celle de <em>Windows</em>) 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&nbsp;:</p>
<pre class="lang:lua decode:true" title="Exemple os.messagebox()">option&nbsp;=&nbsp;{"OK","CANCEL","YES","NO",""}--Table des réponses
--La variable ou est reçu les réponses de la fonction os.messagebox()
local response&nbsp;=&nbsp;5
local title&nbsp;=&nbsp;"Test Of Box" -- Titre
local 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
while true do
    buttons.read() -- Lecture des touches pressés
    if buttons.triangle then -- Pressez /\
	-- Montre deux boutons X:OK, O:CANCEL par défaut
		response&nbsp;=&nbsp;os.messagebox(title,msg)
    elseif buttons.circle then --Pressez O
	-- Montre le bouton 0:EXIT
        response&nbsp;=&nbsp;os.messagebox(title,msg,__CIRCLE,__EXIT)
    elseif buttons.cross then--Pressez X
	-- Montre deux boutons avec L: No, R: Yes
		response&nbsp;=&nbsp;os.messagebox(title,msg,__L,__NO,__R,__YES)
    elseif buttons.square then -- Pressez []
	-- Montre trois boutons avec L: No, R: Yes X: YES, O: NO, /\: Exit
		response&nbsp;=&nbsp;os.messagebox(title,msg,__CROSS,__YES,__CIRCLE,__CANCEL,__TRIANGLE,__EXIT)
    end
    screen.print(10,5,"Example Message Box")
	
	screen.print(10,17,"Presez triangle pour un simple Message Box (X:OK, O:CANCEL)",0.6)
	screen.print(10,32,"Pressez rond pour un Message Box (O:EXIT)",0.6)
	screen.print(10,47,"Pressez croix pour un Message Box (L:NO, R:YES)",0.6)
	screen.print(10,62,"Pressez carré pour un Message Box (X:YES, O:CANCEL, triangle:EXIT)",0.6)
    -- Nous affichons la valeur pour telle action&nbsp;:)
	screen.print(10,200,"Résultat: "..response.." Selection: "..option[response])
    screen.flip() -- Rafraîchissement de l'écran
end
	</pre>
<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 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="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5367" class="wp-caption-text">La boîte de dialogue sympathique mais qui reste limitée...</figcaption></figure>
<p style="text-align: justify;">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.</p>
<pre class="lang:lua decode:true" title="Fonction os.messagebox()">os.messagebox(STRING title,STRING mje)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--Retourne 1 si la réponse est OK (quand vous pressez X) ou bien 2 quand vous choisissez CANCEL (quand vous pressez O)
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button2&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned2&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2,NUMBER button3,NUMBER assigned3)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button2&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned2&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button3&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned3&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions écran</strong></span></h4>
<p style="text-align: justify;">Continuons sur une nouvelle fonction qui ravira toute personne qui ne souhaiterait pas utiliser le <del>grand</del> écran de la PSP&nbsp;: la fonction <em>screen.clip()</em>. Vous l'aurez deviné, elle permet de n'afficher qu'une partie de l'écran déterminable avec la fonction.</p>
<pre class="lang:lua decode:true" title="Fonction screen.clip()">screen.clip(NUMBER x,NUMBER y, NUMBER w, NUMBER h)
--Active la délimitation d'affichage à l'écran
--NUMBER x&nbsp;: Position sur l'axe x 
--NUMBER y&nbsp;: Position sur l'axe y
--NUMBER w&nbsp;: Largeur
--NUMBER h&nbsp;: Hauteur
--Ne retourne rien
screen.clip()
--Désactive la délimitation d'affichage à l'écran
--Ne retourne rien</pre>
<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 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="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5369" class="wp-caption-text">Le logo <strong>Custom Protocol</strong> un peu coupé&nbsp;:p</figcaption></figure>
<p>&nbsp;</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions texte</strong></span></h4>
<p style="text-align: justify;">Le développeur a également ajouté une fonctionnalité déjà présente dans plusieurs <em>Lua Players</em>&nbsp;: 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...</p>
<pre class="lang:lua decode:true" title="Example Défilement de Texte">-- ## Example Scroll Print ##
-- Nous assignors des variables pour les valeurs X permettrons le daplacement du texte
scrollx1&nbsp;=&nbsp;10 -- axe pour déplacement vers la gauche (droite vers gauche)
scrollx2&nbsp;=&nbsp;450 -- axe pour déplacement vers la droite (gauche vers droite)
scrollx3&nbsp;=&nbsp;240 -- axe pout déplacement de la droite vers la gauche (droite vers la gauche sans disparition)
scrollx4&nbsp;=&nbsp;240 -- gauche droite puis droite gauche (centré)
--Charge la palette de couleur
color.loadpalette()
while true do--On ouvre la boucle
	draw.line(240,0,240,272,color.red) --Nous traçons une ligne vertical rouge au milieu de l'écran
	--[[La variable précédente assigné à l'axe x est passé comme un argument et ergot le résultat de la fonction et s'ajoute à cela l'argument "w" pour régler l'affichage de la zone de texte.]]
	--__SLEFT est comme un alignement vers la gauche affiché à partir de l'axe x vers la droite avec un espace d'affichage de 90.
	scrollx1&nbsp;=&nbsp;screen.print(scrollx1,10,"test scroll gauche",0.7,color.white,color.black,__SLEFT,90)
	--__SRIGHT est comme un alignement vers la droite affiché à partir de l'axe x vers la gauche avec un espace d'affichage de 100.
	scrollx2&nbsp;=&nbsp;screen.print(scrollx2,25,"test scroll right",0.7,color.white,color.black,__SRIGHT,100)
	-- __STHROUGH est comme un alignement vers la gauche qui est affiché à partir de l'axe x vers la droite avec un espace d'affichage de 100. 
	scrollx3&nbsp;=&nbsp;screen.print(scrollx3,50,"test scroll throuh",0.7,color.white,color.black,__STHROUGH,100)
	--[[__SSEESAW est un alignement au centre affiché sur l'axe x - moitié de l'espace pour l'afficher,
du droite centrer à gauche centré avec un espace d'affichage de 100
	Note: Si ce mode n'a pas d'effet, c'est pour les raison précedemment cité, alors il effete normalement un texte aligné à gauche.]]
	scrollx4&nbsp;=&nbsp;screen.print(scrollx4,70,"test scroll seesaw",0.7,color.white,color.black,__SSEESAW,100)
	screen.flip() --Rafraichissement de l'écran
end--Fin de la boucle
	</pre>
<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 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="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5420" class="wp-caption-text">La fonction <i>screen.print()</i> fait maintenant défiler le texte.</figcaption></figure>
<p style="text-align: justify;">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.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonction contrôle</strong></span></h4>
<p style="text-align: justify;">L'une des dernières principales nouveautés dont nous allons vous parler concerne les contrôles&nbsp;: qui n'a jamais trouvé 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é une solution&nbsp;: la fonction <em>buttons.interval(). </em>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".</p>
<pre class="lang:lua decode:true" title="Fonction buttons.interval()">buttons.interval(NUMBER delay,NUMBER interval)
--Active la fonction
--NUMBER delay&nbsp;: Le délai en cycle avant l'activation (valeur conseillé 40)
--NUMBER interval&nbsp;: L'interval de répétition en cycle (valeur conseillé 10)
--Ne retourne rien
buttons.interval()
--Désactive la fonction
--Ne retourne rien</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Autres fonctions</strong></span></h4>
<p style="text-align: justify;">Dans les ajouts mineurs, on retrouve plusieurs petites nouveautés. Tout d'abord, la fonction<em> amg.screenshot()</em> 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 <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'à 1024 caractères. Le développeur a amélioré par ailleurs les performances et corrigé des <em>bugs</em> notamment celui concernant la fonction <em>screen.textheight()</em>.</p>
<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é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&#8239;!</p>
<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 decoding="async" class="wp-image-5235 size-medium" src="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png" alt="Bouton télécharger" 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="(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>
<p style="text-align: justify;">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 <em>Lua Player</em>. Mise en ligne par <em>gljjrod</em>, il s'agit d'une capture vidéo de la démo réalisée par <em>Mills</em> (développeur 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ée <strong>Fruit Explosion</strong>, 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.</p>
<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 decoding="async" class="wp-image-5235 size-medium" src="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png" alt="Bouton télécharger" 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="(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>
<div class="inserervideo"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Mcl6zDHoeLc" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/">[PSP] [Vita] Le ONELua de nouveau mis à jour</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua&#160;-&#160;Débutant&#160;-&#160;Cours n°5&#160;: Les touches de la PSP</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/#comments</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 18:30:03 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[contrôles des touches]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=890</guid>
					<description><![CDATA[<p>Un cours pour apprendre à contrôler les touches en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/">Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°5&nbsp;: Les touches de la PSP</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Nous allons apprendre dans ce cours à maitriser les touches de la PSP, ce qui va nous permettre de créer vos propres programmes de manière guidé (bientôt dans un Travail Pratique). Nous n'en sommes pas encore là, mais si vous persévérez, je suis sur que vous allez y arriver sans problème, en suivant bien le cours que nous allons aborder&#8239;;)</p>
<p>Tout d'abord, il va falloir stocker du texte, on pourrait créer des variables mais nous allons réutiliser le cours d'avant pour pouvoir réaliser notre programme. Nous allons donc utiliser des tables qui contiendront des informations par rapport à la touche pour ensuite les afficher sur l'écran de la PSP. Par exemple, je reste appuyé sur la touche croix, donc ma PSP affichera que j'appuie sur la touche croix.</p>
<p>Donc on crée une table contenant toutes les informations nécessaires...</p>
<pre class="lang:lua decode:true" title="Etape 1">table&nbsp;=&nbsp;{}--Création d'une table regroupant toutes les infos suivantes
table[1]&nbsp;=&nbsp;"Appuie sur la touche Croix"
table[2]&nbsp;=&nbsp;"Appuie sur la touche Triangle"
table[3]&nbsp;=&nbsp;"Appuie sur la touche Carré"
table[4]&nbsp;=&nbsp;"Appuie sur la touche Rond"
table[5]&nbsp;=&nbsp;"Appuie sur la touche Haut"
table[6]&nbsp;=&nbsp;"Appuie sur la touche Droite"
table[7]&nbsp;=&nbsp;"Appuie sur la touche Gauche"
table[8]&nbsp;=&nbsp;"Appuie sur la touche Bas"
table[9]&nbsp;=&nbsp;"Appuie sur la touche R"
table[10]&nbsp;=&nbsp;"Appuie sur la touche L"
table[11]&nbsp;=&nbsp;"Appuie sur la touche START"
table[12]&nbsp;=&nbsp;"Appuie sur la touche SELECT"</pre>
<p> Nous n'aborderons pas le stick analogique qui sera abordé dans un cours pour réaliser un menu avec curseur.</p>
<p>Très bien maintenant nous pouvons mettre notre <strong>boucle while true do.</strong></p>
<pre class="lang:lua decode:true " title="Etape 2">while true do</pre>
<p> Et nous allons rajouter ensuite la fonction suivante qui va permettre de lire les boutons qui sont actionnés dans le programme à chaque début de la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 3">buttons.read()--Lecture des touches actionnées
</pre>
<p>Maintenant nous allons utiliser pour la première fois <strong>une condition</strong>. Nous voulons afficher tel texte pour tel touche de la PSP, donc si je reste appuyer sur la touche croix alors j'affiche le texte "Appuie sur la touche Croix".</p>
<p>Ce qui donnera en Lua&nbsp;:</p>
<pre class="lang:lua decode:true " title="Etape 4">if buttons.held.cross then--Si je reste appuyé sur la touche croix alors
 screen.print(5,10,table[1])--J'affiche le texte adéquat
end--Fin de la condition</pre>
<p>Puis on fait la même chose pour toute les touches de la PSP.</p>
<pre class="lang:lua decode:true" title="Etape 5">if buttons.held.triangle then--Si je reste appuyé sur la touche triangle alors
  screen.print(5,20,table[2])--J'affiche le texte
end--Fin de la condition
if buttons.held.square then--Si je reste appuyé sur la touche carré alors
  screen.print(5,30,table[3])--J'affiche le texte
end--Fin de la condition
if buttons.held.circle then--Si je reste appuyé sur la touche rond alors
  screen.print(5,40,table[4])--J'affiche le texte
end--Fin de la condition
if buttons.held.up then--Si je reste appuyé sur la touche haut alors
  screen.print(5,50,table[5])--J'affiche le texte
end--Fin de la condition
if buttons.held.right then--Si je reste appuyé sur la touche droite alors
  screen.print(5,60,table[6])--J'affiche le texte
end--Fin de la condition
if buttons.held.left then--Si je reste appuyé sur la touche gauche alors
  screen.print(5,70,table[7])--J'affiche le texte
end--Fin de la condition
if buttons.held.down then--Si je reste appuyé sur la touche bas alors
  screen.print(5,80,table[8])--J'affiche le texte
end--Fin de la condition
if buttons.held.r then--Si je reste appuyé sur la touche R alors
  screen.print(5,90,table[9])--J'affiche le texte
end--Fin de la condition
if buttons.held.l then--Si je reste appuyé sur la touche L alors
  screen.print(5,100,table[10])--J'affiche le texte
end--Fin de la condition
if buttons.held.start then--Si je reste appuyé sur la touche Start alors
  screen.print(5,110,table[11])--J'affiche le texte
end--Fin de la condition
if buttons.held.select then--Si je reste appuyé sur la touche Sélect alors
  screen.print(5,120,table[12])--J'affiche le texte
end--Fin de la condition</pre>
<p>Voilà maintenant il ne reste plus qu'à <strong>rafraichir l'écran</strong> à chaque fin de tour de notre boucle et fermer la <strong>boucle while true do.</strong></p>
<pre class="lang:lua decode:true" title="Etape 6">screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p> Voilà normalement vous devez obtenir ceci&nbsp;:</p>
<p style="text-align: center;"> <a href="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant.png"><img decoding="async" class="alignnone size-medium wp-image-1008" src="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-300x170.png" alt="screen-cours-5-débutant" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-300x170.png 300w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-370x210.png 370w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-270x153.png 270w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Voilà le code en entier:</p>
<pre class="lang:lua decode:true" title="Récapitulons">table&nbsp;=&nbsp;{}--Création d'une table regroupant toutes les infos suivantes
table[1]&nbsp;=&nbsp;"Appuie sur la touche Croix"
table[2]&nbsp;=&nbsp;"Appuie sur la touche Triangle"
table[3]&nbsp;=&nbsp;"Appuie sur la touche Carré"
table[4]&nbsp;=&nbsp;"Appuie sur la touche Rond"
table[5]&nbsp;=&nbsp;"Appuie sur la touche Haut"
table[6]&nbsp;=&nbsp;"Appuie sur la touche Droite"
table[7]&nbsp;=&nbsp;"Appuie sur la touche Gauche"
table[8]&nbsp;=&nbsp;"Appuie sur la touche Bas"
table[9]&nbsp;=&nbsp;"Appuie sur la touche R"
table[10]&nbsp;=&nbsp;"Appuie sur la touche L"
table[11]&nbsp;=&nbsp;"Appuie sur la touche START"
table[12]&nbsp;=&nbsp;"Appuie sur la touche SELECT"
while true do--Début de la boucle
	
	buttons.read()--Lecture des touches actionnées
	
	if buttons.held.cross then--Si je reste appuyé sur la touche croix alors
		screen.print(5,10,table[1])--J'affiche le texte adéquat
	end--Fin de la condition
	
	if buttons.held.triangle then--Si je reste appuyé sur la touche triangle alors
	  screen.print(5,20,table[2])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.square then--Si je reste appuyé sur la touche carré alors
	  screen.print(5,30,table[3])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.circle then--Si je reste appuyé sur la touche rond alors
	  screen.print(5,40,table[4])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.up then--Si je reste appuyé sur la touche haut alors
	  screen.print(5,50,table[5])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.right then--Si je reste appuyé sur la touche droite alors
	  screen.print(5,60,table[6])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.left then--Si je reste appuyé sur la touche gauche alors
	  screen.print(5,70,table[7])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.down then--Si je reste appuyé sur la touche bas alors
	  screen.print(5,80,table[8])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.r then--Si je reste appuyé sur la touche R alors
	  screen.print(5,90,table[9])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.l then--Si je reste appuyé sur la touche L alors
	  screen.print(5,100,table[10])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.start then--Si je reste appuyé sur la touche Start alors
	  screen.print(5,110,table[11])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.select then--Si je reste appuyé sur la touche Sélect alors
	  screen.print(5,120,table[12])--J'affiche le texte
	end--Fin de la condition
	
	screen.flip()--Rafraichie l'écran
	
end--Fin de la boucle while
		</pre>
<p>Maintenant que vous savez utiliser les touches de votre PSP, vous allez pouvoir commencer sérieusement à penser à des projets mais pour cela, il faudra encore apprendre de nouvelle chose&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/">Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°5&nbsp;: Les touches de la PSP</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°4&#160;: Abordons les tables</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:04:52 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[tables]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=785</guid>
					<description><![CDATA[<p>Un cours pour apprendre à utiliser les tables en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/">Programmer en Lua &#8211; Débutant &#8211; Cours n°4&nbsp;: Abordons les tables</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p> <em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Nous allons rentrer dans un cours plus théorique que ceux abordé avant, soyez attentif car cela vous servira pour tous les cours et projets en Lua.</p>
<p>Une table, c'est comme un peu près un tableau de valeur sur excel. Vous pouvez ranger dans une table plusieurs valeurs de type <em>string</em> ou des nombres ou bien des fonctions.</p>
<p>Commençons par l'utilisation de base d'une table, imaginons que j'ai trois images de 10*10 pixels, que j'ai envie d'afficher sur mon écran de PSP de façon simple et intelligente, je devrais utiliser des tables. Tout d'abord soit j'ajoute directement mes données dans une table, soit je crée et j'ajoute une part une mes données.</p>
<pre class="lang:lua decode:true" title="Etape 1 - Directement mes données dans la table">table&nbsp;=&nbsp;{
image.load("1.png"),--je charge ma première image dans la case 1, 
image.load("2.png"),--puis la deuxième dans la case 2 
image.load("3.png")--et pour finir la troisième image dans la case 3.
}</pre>
<p>&nbsp;</p>
<pre class="lang:lua decode:true" title="Etape 1 - Une table et j'ajoute mes valeurs">table&nbsp;=&nbsp;{}--Je crée ma table
table[1]&nbsp;=&nbsp;image.load("1.png")--je charge ma première image dans la case 1
table[2]&nbsp;=&nbsp;image.load("2.png")--je charge ma deuxième image dans la case 2
table[3]&nbsp;=&nbsp;image.load("3.png")--ke charge ma troisième image dans la case 3</pre>
<p> Puis on utilise <strong>une boucle while true do</strong> </p>
<pre class="lang:default decode:true" title="Etape 2">while true do--Début de la boucle</pre>
<p> Maintenant, nous allons utiliser <strong>une boucle for </strong>de ce type&nbsp;:</p>
<pre class="lang:lua decode:true" title="Etape 3">for i=1,3 do--Début de la boucle for</pre>
<p> Cette boucle ce répète trois fois, la valeur <strong>i </strong>prend ainsi la valeur 1, 2 et 3. Nous pouvons donc "jouer" avec cette boucle qui est très pratique pour naviguer dans une table, on peut l'utiliser aussi par exemple pour faire des menus optimisés(voir dans un autre cours) ou dans bien d'autre cas adéquat à son utilisation.</p>
<p>Nous allons donc afficher les trois images sur l'écran de notre PSP avec la fonction vu dans <a title="Programmer en Lua&nbsp;-&nbsp;Cours n°3&nbsp;: Afficher une image" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n3-afficher-une-image/">le cours numéro 3</a>.</p>
<pre class="lang:lua decode:true" title="Etape 4">image.blit(table[i],(i*20),10)--Affichages des images
</pre>
<p> Ainsi on affiche l'image 1, 2 et 3 situé leur case respective et on multiplie par 20 la position X(horizontal) de l'image pour ne pas superposer les 3 images et vu que nos images font 10*10 pixels, ce qui laisse un espace de 10 pixels entre chaque image.</p>
<p>Nous pouvons donc fermer notre <strong>boucle for</strong> ainsi que finir par rafraichir l'écran et fermer notre <strong>boucle while.</strong></p>
<pre class="lang:lua decode:true" title="Etape 5">end--Fin de la boucle for
screen.flip()--Rafraichie l'écran
end--Fin de la boucle while</pre>
<p>Voilà c'est terminé, comme je suis gentil, j'ai préparé trois images de tailles 10*10 pixels.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/1.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/1.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/2.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/2.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/3.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/3.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<pre class="lang:lua decode:true" title="Récapitulons">table&nbsp;=&nbsp;{}--Je crée ma table
table[1]&nbsp;=&nbsp;image.load("1.png")--je charge ma première image dans la case 1
table[2]&nbsp;=&nbsp;image.load("i2.png")--je charge ma deuxième image dans la case 2
table[3]&nbsp;=&nbsp;image.load("3.png")--je charge ma troisième image dans la case 3
while true do--Début de la boucle
	
	for i=1,3 do--Début de la boucle for
		
		image.blit(table[i],(i*20),10)--Affichages des images
		
	end--Fin de la boucle for
	screen.flip()--Rafraichie l'écran
end--Fin de la boucle while</pre>
<p> Voici le résultat que vous devez normalement obtenir sur votre PSP&nbsp;:</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/12/screen-cours4.png"><img decoding="async" class="alignnone size-medium wp-image-826" src="https://www.customprotocol.com/medias/2014/12/screen-cours4-300x170.png" alt="screen-cours4" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/12/screen-cours4-300x170.png 300w, https://www.customprotocol.com/medias/2014/12/screen-cours4-370x210.png 370w, https://www.customprotocol.com/medias/2014/12/screen-cours4-270x153.png 270w, https://www.customprotocol.com/medias/2014/12/screen-cours4.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;">Vous savez maintenant les bases à propos des tables, si vous voulez allez toujours plus loin par rapport au table rendez vous dans un autre cours dans une section plus exigeante.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/">Programmer en Lua &#8211; Débutant &#8211; Cours n°4&nbsp;: Abordons les tables</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°3&#160;: Afficher une image</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:03:09 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=737</guid>
					<description><![CDATA[<p>Un cours pour apprendre à afficher une image en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/">Programmer en Lua &#8211; Débutant &#8211; Cours n°3&nbsp;: Afficher une image</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Vous savez maintenant afficher du texte sur votre <strong>PSP</strong>, maintenant il va falloir afficher une image. Certains passages que nous avons vu dans le dernier cours ne serons donc pas repris.</p>
<p>Tout d'abord, nous allons ajouter une variable. Une variable permet d'enregistrer des nombres, des strings(<a title="Programmer en Lua&nbsp;-&nbsp;Cours n°2&nbsp;: Afficher du texte(Hello World&#8239;!)" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n2-afficher-du-textehello-world/">voir le deuxième cours</a>) mais aussi enregistrer des valeurs retournés par certaines fonctions. Ici, nous allons utiliser la fonction suivante&nbsp;:</p>
<pre class="lang:lua decode:true" title="Fonction">image.load()</pre>
<p>Cette fonction ci-dessus permet de charger une image au format <strong>.png</strong>, <strong>.jpg</strong> ou bien <strong>.gif</strong>. Attention, on ne peut pas charger des images supérieur à 512*512 pixels et les animations des images au format <strong>.gif</strong> ne sont pas supportés.</p>
<p>Pour notre cours nous allons utiliser l'image ci-dessous: faites clique droit, enregistrez sous..., et placez la dans le dossier ou se trouve le <strong>script.lua</strong> et l'<strong>EBOOT.PBP</strong>. Nous utilisons une image blanche car il faut savoir que le reste de l'écran sera noir...</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/10/logo.png"><img decoding="async" class="alignnone size-full wp-image-774" src="https://www.customprotocol.com/medias/2014/10/logo.png" alt="logo-psp-cours3" width="280" height="79" srcset="https://www.customprotocol.com/medias/2014/10/logo.png 280w, https://www.customprotocol.com/medias/2014/10/logo-270x76.png 270w" sizes="(max-width: 280px) 100vw, 280px" /></a> </p>
<p>Vous devriez normalement avoir tous ces fichiers présents dans votre dossier.</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3.png"><img decoding="async" class="alignnone size-medium wp-image-776" src="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-300x81.png" alt="lesfichiersluacours3" width="300" height="81" srcset="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-300x81.png 300w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-335x92.png 335w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-270x73.png 270w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3.png 339w" sizes="(max-width: 300px) 100vw, 300px" /></a> </p>
<p>Très bien, passons au chose sérieuse, ouvrez donc votre fichier <strong>script.lua</strong> si cela n'est pas déjà fait et commencez par charger l'image dans la mémoire <strong>RAM</strong>(mémoire temporaire) de votre <strong>PSP</strong>.</p>
<pre class="lang:lua decode:true" title="Etape 1">notreimage&nbsp;=&nbsp;image.load("logo.png")--Chargement de l'image
</pre>
<p>Maintenant la variable <em>notreimage</em> contient l'image "logo.png".</p>
<p>Ensuite nous faisons comme dans <a title="Programmer en Lua&nbsp;-&nbsp;Cours n°2&nbsp;: Afficher du texte(Hello World&#8239;!)" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n2-afficher-du-textehello-world/">le deuxième cours</a>, on crée <strong>une boucle while true do</strong>.</p>
<pre class="lang:lua decode:true" title="Etape 2">while true do--Début de notre boucle</pre>
<p>Puis on affiche  l'image sur l'écran de votre PSP avec la fonction suivante&nbsp;:</p>
<pre class="lang:lua decode:true" title="Fonction">image.blit(image,x,y)</pre>
<p>Comme avec la fonction d'affichage de texte, nous allons mettre notre variable, puis la position X et Y où nous voulons placer notre image sur l'écran de la PSP. Ce qui donnera&nbsp;:</p>
<pre class="lang:lua decode:true" title="Etape 3">image.blit(notreimage,100,100)--Affiche l'image</pre>
<p>Puis on rafraîchie l'écran et on ferme la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 4">screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p>Enregistrez votre fichier <strong>script.lua</strong> et lancer votre programme depuis votre <strong>PSP</strong>, vous devrez normalement obtenir ceci&nbsp;:</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/screen-cours3.png"><img decoding="async" class="alignnone size-medium wp-image-777" src="https://www.customprotocol.com/medias/2014/11/screen-cours3-300x170.png" alt="screen-cours3" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/11/screen-cours3-300x170.png 300w, https://www.customprotocol.com/medias/2014/11/screen-cours3-370x210.png 370w, https://www.customprotocol.com/medias/2014/11/screen-cours3-270x153.png 270w, https://www.customprotocol.com/medias/2014/11/screen-cours3.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"><span style="text-decoration: underline;">Code en entier:</span></p>
<pre class="lang:lua decode:true" title="Récapitulons">notreimage&nbsp;=&nbsp;image.load("logo.png")--Chargement de l'image
while true do--Début de la boucle
image.blit(notreimage,100,100)--Affichage de l'image
screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p>&nbsp;</p>
<p>Vous pourrez retrouvez dans d'autre section, des usages plus complexes des fonctions liés aux images, n'hésitez pas à y jeter un coup d'oeil si vous avez le niveau adéquate&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/">Programmer en Lua &#8211; Débutant &#8211; Cours n°3&nbsp;: Afficher une image</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°2&#160;: Afficher du texte (Hello World&#8239;!)</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:02:24 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=723</guid>
					<description><![CDATA[<p>Un cours pour apprendre à afficher du texte en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/">Programmer en Lua &#8211; Débutant &#8211; Cours n°2&nbsp;: Afficher du texte (Hello World&#8239;!)</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Vous êtes enfin prêt à coder en Lua, restez attentif tout au long du cours car certaine fonction de base que nous allons voir vous resservirons dans les autres tutoriels.</p>
<p style="text-align: left;">Avant de commencer sachez que vous pouvez mettre du commentaire, c'est à dire que les passages ne seront pas pris en compte lors de la lecture par l'interpréteur. Très pratique pour commenter son code comme je vais le faire dans mes cours&#8239;;)</p>
<pre class="lang:lua decode:true" title="Comment commenter son code">--Juste avec ces deux tirets je commente mon code
--Tout simplement&#8239;;)
</pre>
<p>Ouvrez donc tout d'abord votre fichier <strong>script.lua</strong> (qui est dans le pack du dernier cours) avec le logiciel <strong>Atom </strong>ou un autre éditeur syntaxique de votre choix.</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld.png"><img decoding="async" class="alignnone size-medium wp-image-725" src="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172.png" alt="" width="300" height="172" srcset="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172.png 300w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-370x212.png 370w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-270x155.png 270w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-570x327.png 570w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-740x425.png 740w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld.png 767w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"><em>On y va&#8239;?</em></p>
<p style="text-align: left;">Tout d'abord on va créer une<strong> boucle while true do</strong>, c'est à dire qu'on va répéter tous le temps l'action d'afficher le texte à l'écran ici.</p>
<pre class="lang:lua decode:true" title="Etape 1">while true do--Début de ma boucle</pre>
<p style="text-align: left;">Puis nous allons utiliser la fonction</p>
<pre class="lang:lua decode:true" title="Etape 2">screen.print(x,y,"Votre texte")--Affichage du texte</pre>
<p style="text-align: left;">X et Y(comme en cours de math) est la position de votre texte sur votre écran. Il faut savoir que la PSP a un écran de 480*272 donc il ne faut pas dépasser ces valeurs si vous voulez voir votre texte sur l'écran de votre PSP.</p>
<p style="text-align: left;"><a href="https://www.customprotocol.com/medias/2014/11/xypsp.png"><img decoding="async" class="size-medium wp-image-727 aligncenter" src="https://www.customprotocol.com/medias/2014/11/xypsp-300x210.png" alt="xypsp" width="300" height="210" srcset="https://www.customprotocol.com/medias/2014/11/xypsp-300x210.png 300w, https://www.customprotocol.com/medias/2014/11/xypsp-370x259.png 370w, https://www.customprotocol.com/medias/2014/11/xypsp-270x189.png 270w, https://www.customprotocol.com/medias/2014/11/xypsp-570x399.png 570w, https://www.customprotocol.com/medias/2014/11/xypsp.png 720w, https://www.customprotocol.com/medias/2014/11/xypsp-300x210@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Il vous suffit ensuite rentrer votre texte, ici "Hello World!" entre guillemet, on dira plutôt <em>string</em> en langage informatique.</p>
<p style="text-align: left;">Nous allons ensuite rafraichir l'écran avec la simple fonction qui ce met à la fin de votre boucle.</p>
<pre class="lang:lua decode:true " title="Etape 3">screen.flip()--Rafraichissement de l'écran</pre>
<p style="text-align: left;">Puis on ferme la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 4">end--Fin de ma boucle</pre>
<p style="text-align: left;">Il ne vous reste plus qu'à enregistrer, <a title="[Tutoriel] Comment installer/lancer un homebrew sur PSP" href="https://www.customprotocol.com/underground/tutoriel-comment-installer-lancer-homebrew-psp/">transférer le dossier sur votre PSP</a> puis à lancer votre premier programme pour voir apparaitre ceci&nbsp;: </p>
<p style="text-align: center;"> <a href="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen.png"><img decoding="async" class="alignnone size-medium wp-image-762" src="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-300x170.png" alt="cours-helloworld-screen" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-300x170.png 300w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-370x210.png 370w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-270x153.png 270w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"><span style="text-decoration: underline;">Code en entier:</span></p>
<pre class="lang:lua decode:true" title="Récapitulons">while true do--Début de ma boucle
screen.print(100,100,"Hello World!")--Affichage du texte
screen.flip()--Rafraichissement de l'écran
end--Fin de ma boucle</pre>
<p style="text-align: left;">Si vous voulez approfondir l'affichage de texte sur PSP, avec de la couleur, des effets... rendez vous dans la section Apprenti&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/">Programmer en Lua &#8211; Débutant &#8211; Cours n°2&nbsp;: Afficher du texte (Hello World&#8239;!)</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

