{"id":842,"date":"2019-09-01T14:11:28","date_gmt":"2019-09-01T12:11:28","guid":{"rendered":"https:\/\/ceobeta.oric.org\/?p=842"},"modified":"2019-09-01T14:11:28","modified_gmt":"2019-09-01T12:11:28","slug":"nuclear-invaders","status":"publish","type":"post","link":"https:\/\/oric.bqtt.net\/index.php\/2019\/09\/01\/nuclear-invaders\/","title":{"rendered":"Nuclear Invaders"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Un des premiers programmes con\u00e7u par Dan Cresp sur Oric, publi\u00e9 en F\u00e9vrier 2013 et bien sur disponible sur oric.org dans la rubrique software. Comme vous l&#8217;avez devin\u00e9, avec son amour de la programmation et sa collection de micros, Dan a adapt\u00e9 son jeu sur plusieurs syst\u00e8mes. Vous trouverez ci-dessous ses d\u00e9couvertes &#8230; <\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons tous un \u00e9quipement plus ou moins r\u00e9tro, et la conception de ces programmes sont une bonne excuse pour pouvoir les utiliser et apprendre quelque chose \u00e0 leur sujet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e8gle g\u00e9n\u00e9rale, j&#8217;invente un jeu, ou adapte quelque chose d&#8217;existant, et le transf\u00e8re sur 3 syst\u00e8mes diff\u00e9rents. Cela m&#8217;aide \u00e0 comparer les performances et certaines fonctionnalit\u00e9s. Pour Nuclear Invaders, il existe une version pour DRAGON 32 (l\u2019original, mais beaucoup plus simple) et pour MSX et ORIC. La meilleure des trois versions est sans aucun doute celle du MSX, mais la version ORIC a \u00e9t\u00e9 meilleure que pr\u00e9vu.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/1320609975_35_FT0_nuclear_invaders_dsk_.jpg\" alt=\"\" class=\"wp-image-854\"\/><figcaption>Un Dragon 32 en d\u00e9monstration avec Nuclear Invaders<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En ce qui concerne l&#8217;ORIC, voici une partie des choses que j&#8217;ai apprises :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>J&#8217;ai enfin appris \u00e0 utiliser l&#8217;\u00e9diteur sans probl\u00e8mes. Cela me rappelle beaucoup celui du ACORN BBC \/ ELECTRON.<\/li><li>Le programme a \u00e9t\u00e9 enti\u00e8rement d\u00e9velopp\u00e9 sur un v\u00e9ritable ORIC-1 ; avec toutes les difficult\u00e9s li\u00e9es aux cassettes. Ainsi, si je l\u2019enregistre en mode rapide avec l&#8217;ORIC-1, il ne se charge jamais bien. Si je le charge sur un ATMOS et l\u2019enregistre rapidement avec l\u2019ATMOS, l\u2019ORIC-1 le charge sans probl\u00e8me. Curieux<\/li><li>Le programme a parfaitement fonctionn\u00e9 sur l&#8217;ORIC-1. Une fois pass\u00e9 \u00e0 l&#8217;\u00e9mulateur, l&#8217;OVNI ne s&#8217;est pas d\u00e9plac\u00e9. Je l&#8217;ai essay\u00e9 sous EUPHORIC (MSDOS) et ORICUTRON (Windows), en \u00e9mulant ORIC-1 et ATMOS et cette partie ne fonctionnait pas bien. Je devais diviser la ligne 180 en deux (180 et 185) pour que cela fonctionne. Lorsque j&#8217;ai essay\u00e9 sur ATMOS, j&#8217;ai constat\u00e9 que cela ne fonctionnait pas non plus. Au final, le jeu garde la ligne divis\u00e9e pour que le jeu fonctionne dans toutes les configurations.<\/li><li>En ce qui concerne le son, j&#8217;ai choisi d&#8217;utiliser les param\u00e8tres pr\u00e9d\u00e9finis car leur modification p\u00e9nalisait la jouabilit\u00e9. Il y a de bonnes options sonores, mais en BASIC, il en co\u00fbte un max de les travailler.<\/li><li>Concernant la jouabilit\u00e9, j\u2019ai assez respect\u00e9 la vitesse du jeu SPACE INVADERS, et nous sommes en BASIC !!! <br>Le tir avance de 2 en 2 rang\u00e9es, soit &#8220;curieusement&#8221; la s\u00e9paration entre les envahisseurs. Cela permet de ne v\u00e9rifier qu&#8217;une fois par cycle si vous touchez quelque chose. En outre, si le tir \u00e9tait plus rapide, la vitesse des envahisseurs devrait augmenter car le jeu serait trop facile. Presque tout a une explication<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Personnellement, j&#8217;aime  davantage programmer en assembleur, mais il est clair que faire un jeu en BASIC est un d\u00e9fi particulier, car vous ne pouvez rien programmer. Vous devez tr\u00e8s bien savoir si le projet est r\u00e9alisable et  tr\u00e8s bien  savoir le d\u00e9boguer pour le lancer.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/NuclearInvaders_ORIC_3.jpg\" alt=\"\" class=\"wp-image-866\"\/><figcaption>Un Alien approche des r\u00e9acteurs &#8230; la fin est proche !<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Notes finales<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">La principale difficult\u00e9 du jeu a \u00e9t\u00e9 de parvenir \u00e0 une bonne vitesse d&#8217;ex\u00e9cution, en tenant compte du fait que le jeu d&#8217;origine n&#8217;est pas particuli\u00e8rement rapide. J&#8217;ai utilis\u00e9 diff\u00e9rentes techniques pour y parvenir. Parmi celles-ci, la sauvegarde des diff\u00e9rentes animations des envahisseurs en fonction de leur position.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les graphismes ORIC sont compos\u00e9s d\u2019une grille 6&#215;8, 6 large par 8 haut. Comme aucun envahisseur n&#8217;occupe plus de 12 pixels, ils sont parfaitement positionn\u00e9s. Pour le tank et l&#8217;OVNI je devais utiliser 3 caract\u00e8res. J&#8217;ai red\u00e9fini les minuscules pour pouvoir lister le programme sans probl\u00e8mes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;\u00e9cran de pr\u00e9sentation est un &#8220;duplicata&#8221; du jeu d&#8217;origine, \u00e0 l&#8217;exception du changement de nom du jeu. La forme de pr\u00e9sentation est diff\u00e9rente puisque tout est montr\u00e9 ici en une fois et non pas lettre par lettre.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/NuclearInvaders_ORIC_1.jpg\" alt=\"\" class=\"wp-image-865\"\/><figcaption>Ecran de pr\u00e9sentation de Nuclear Invaders<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La boucle principale du d\u00e9veloppement va des lignes 100 \u00e0 260, soit 19 lignes au total. Ici, vous contr\u00f4lez le char, le tir, l&#8217;OVNI et un envahisseur. Comme le processus est rapide, tout se passe bien. Cependant, l\u2019impossibilit\u00e9 d\u2019utiliser ELSE en toute qui\u00e9tude, ainsi que la limitation de la longueur des lignes ont rendu ce bloc plus compliqu\u00e9 que dans la version MSX.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour d\u00e9tecter si le tir touche un ennemi, avant de montrer le tir dans sa nouvelle position, je regarde quelque chose, et si oui, je saute \u00e0 la ligne 400. Ici, je v\u00e9rifie verticalement si c&#8217;est l&#8217;OVNI, et sinon, c&#8217;est un envahisseur qui en position verticale, je calcule la ligne et en position horizontale la colonne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cette version, je montre un pr\u00e9c\u00e9dent \u00e9cran d\u2019instructions o\u00f9 j\u2019indique les touches de contr\u00f4le. Pendant ce temps, les graphiques red\u00e9finissent et initialisent certaines matrices et variables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;\u00e9diteur de l&#8217;ORIC est tr\u00e8s similaire \u00e0 ACORN BBC \/ ELECTRON, mais au lieu de la touche &#8220;COPY []&#8221;, le &#8220;CTRL + A&#8221; est utilis\u00e9 ici. La diff\u00e9rence est que dans ACORN, vous voyez ce que vous copiez dans le tampon, mais pas dans l&#8217;ORIC. Il est donc conseill\u00e9 de v\u00e9rifier avec un LIST de la ligne pour s\u2019assurer que les modifications ont bien \u00e9t\u00e9 enregistr\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il y a un bogue important avec la commande ELSE du Basic de L&#8217;ORIC. Entre autres choses, il n&#8217;identifie pas bien \u00e0 quoi le SI est associ\u00e9 et emp\u00eache le programme de le traiter correctement. Cela signifie que certaines lignes doivent \u00eatre divis\u00e9es en deux ou trois pour \u00e9viter des erreurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En ce qui concerne l\u2019enregistrement sur bande, l\u2019ORIC-1 enregistre g\u00e9n\u00e9ralement mal en mode FAST (par d\u00e9faut) et vous devez utiliser le param\u00e8tre \u00ab, S\u00bb pour le faire en mode SLOW, qui est beaucoup plus lent mais plus s\u00fbr. L&#8217;enregistrement rapide n&#8217;\u00e9choue pas dans l&#8217;ORIC ATMOS et l&#8217;ORIC-1 lui-m\u00eame le charge sans probl\u00e8mes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour ce qui est du son, domaine pour lequel je suis assez ignare, apr\u00e8s plusieurs tests au cours desquels la performance d\u2019ORIC est tomb\u00e9e trop bas, j&#8217;ai choisi d\u2019utiliser les sons pr\u00e9d\u00e9finis dont elle dispose. Les performances sonores de l\u2019ORIC sont bonnes, mais leur utilisation est quelque peu fastidieuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avec la touche \u201cESC\u201d on quitte le programme et en utilisant POKE # 26A, 3 activer le curseur et le clic de la touche.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Quelques \u00e9l\u00e9ments concernant le programme<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">La routine du jeu est divis\u00e9e en 14 blocs<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>D\u00e9claration de la matrice<\/li><li>Contr\u00f4le de notre tank<\/li><li>Contr\u00f4le de notre tir<\/li><li>D\u00e9placement de OVNI<\/li><li>D\u00e9placement des envahisseurs<\/li><li>Destruction d&#8217;un ennemi ou de l&#8217;OVNI<\/li><li>Perte d&#8217;une vie<\/li><li>Niveau de passage.<\/li><li>Pr\u00e9sentation<\/li><li>Affichage de l&#8217;\u00e9cran de jeu.<\/li><li>Chargement des graphiques. SPRITES et UDG.<\/li><li>Initialisation des variables et matrices du jeu.<\/li><li>Routines<\/li><li>Blocs graphiques.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;ensemble du programme occupe 79 lignes dont voici les principales : <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>10 D\u00e9finition des matrices du jeu.<\/li><li>30 Routines d\u2019appel pour lire les graphiques (3000), Affichage de la pr\u00e9sentation (2000).<\/li><li>100 Nous v\u00e9rifions si notre char doit \u00eatre d\u00e9plac\u00e9, en le montrant dans la nouvelle position.<\/li><li>130 S&#8217;il y a un tir \u00e0 l&#8217;\u00e9cran, nous le d\u00e9placerons, et nous verrons si un nouveau tir est r\u00e9alis\u00e9 (RETURN).<\/li><li>170 S&#8217;il y a un OVNI sur l&#8217;\u00e9cran, nous le d\u00e9pla\u00e7ons, et diminuons le compteur (W).<\/li><li>200 Routine de d\u00e9placement des envahisseurs. Un envahisseur diff\u00e9rent se d\u00e9place \u00e0 chaque passage. D&#8217;abord, nous regardons s&#8217;il y a toujours des envahisseurs dans la position correspondante (3 par position), s&#8217;il y en a, nous avan\u00e7ons. Si la vitesse est assign\u00e9e, nous la d\u00e9pla\u00e7ons, et si nous n&#8217;utilisons pas un nombre al\u00e9atoire, nous d\u00e9cidons de commencer \u00e0 bouger. Pendant le mouvement, nous modifions son animation et voyons si il a atteint la centrale nucl\u00e9aire.<\/li><li>250 Compteur du prochain envahisseur \u00e0 d\u00e9placer (M).<\/li><li>260 Si tous les envahisseurs n\u2019ont pas \u00e9t\u00e9 d\u00e9truits (T), nous retournons \u00e0 REPEAT \u00e0 100, et s\u2019ils ne restent pas, nous continuons jusqu\u2019\u00e0 300<\/li><li>300 Code de niveau de passe. Le passe est donn\u00e9 lorsque nous d\u00e9truisons les 30 envahisseurs. Le contr\u00f4le de difficult\u00e9 (C) indique que la largeur de la centrale nucl\u00e9aire est augment\u00e9e.<\/li><li>400 Cette routine est ex\u00e9cut\u00e9e lorsque le tir d\u00e9tecte qu&#8217;il a touch\u00e9 quelque chose (sur 160). Ici, il est calcul\u00e9 si un envahisseur ou l&#8217;ovni a \u00e9t\u00e9 touch\u00e9 et agit en cons\u00e9quence. En 410, un envahisseur est d\u00e9truit et en 450, l&#8217;OVNI est d\u00e9truit.<\/li><li>500 Routine en cours lorsqu&#8217;un envahisseur arrive \u00e0 la centrale nucl\u00e9aire. Un son est jou\u00e9 et une vie est supprim\u00e9e. S&#8217;il reste des vies, nous recommen\u00e7ons le niveau et sinon, nous revenons \u00e0 l&#8217;\u00e9cran de pr\u00e9sentation apr\u00e8s une pause.<\/li><li>2000 \u00c9cran de pr\u00e9sentation du jeu<br>La commande de d\u00e9clenchement est enregistr\u00e9e dans la variable (G).<\/li><li>2100 Suppression de l&#8217;\u00e9cran de pr\u00e9sentation. <br>Message joueur 1 pour \u00eatre pr\u00eat et la centrale nucl\u00e9aire est dessin\u00e9e.<\/li><li>2800 Positionnez et montrez les envahisseurs et notre tank \u00e0 l&#8217;\u00e9cran. R\u00e9initialise la valeur de certaines variables.<\/li><li>3000 Nous chargeons les graphiques des lignes de donn\u00e9es dans la VRAM. D&#8217;abord, les SPRITES sont charg\u00e9s, puis l&#8217;UDG.<\/li><li>5000 Routine pour imprimer un num\u00e9ro sur un marqueur. <br>Passez la valeur dans (I) et la position dans (N).<\/li><li>5200 Programme de suppression d\u2019une partie de l\u2019\u00e9cran, en respectant les rep\u00e8res sup\u00e9rieur et inf\u00e9rieur.<\/li><li> 9000 Donn\u00e9es du graphique UDG du jeu.<\/li><li> 9500 Donn\u00e9es des envahisseurs selon la position et l&#8217;animation.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/NuclearInvaders_ORIC_2.jpg\" alt=\"\" class=\"wp-image-863\"\/><figcaption>Nuclear Invaders poss\u00e8de des sprites classiques et bien d\u00e9finis<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Le Jeu<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Les envahisseurs de l&#8217;espace sont de retour !!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En 1977, ils ont essay\u00e9 d&#8217;envahir les villes de la Terre et ont \u00e9chou\u00e9 !<br>Maintenant, ils sont de retour avec un plan diabolique : d\u00e9truire les centrales nucl\u00e9aires pour laisser la plan\u00e8te inhabitable.<br>Avec l&#8217;aide de notre tank, nous devons \u00e9viter qu&#8217;ils atteignent leur objectif.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque niveau est compos\u00e9 de 30 envahisseurs (NDLR : je ne suis pas encore arriv\u00e9 au bout des 30 premiers envahisseurs), apr\u00e8s chaque vague il appara\u00eetra un centre plus grand. De ce fait, les envahisseurs doivent parcourir moins de distance pour atteindre et d\u00e9truire notre plan\u00e8te.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bonus : D\u00e9truisez l&#8217;OVNI qui appara\u00eet en haut pour obtenir des points suppl\u00e9mentaires.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/NuclearInvaders_ORIC_4.jpg\" alt=\"\" class=\"wp-image-864\"\/><figcaption>L&#8217;\u00e9cran du 1er niveau.<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Quelques autres versions<\/h4>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/nuclear_msx.jpg\" alt=\"\" class=\"wp-image-857\" width=\"577\" height=\"362\"\/><figcaption>MSX, la plus belle version d&#8217;apr\u00e8s Dan Cresp<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/nuclear_zx.png\" alt=\"\" class=\"wp-image-859\" width=\"577\" height=\"433\"\/><figcaption>Nuclear Invaders sur ZX Spectrum<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/nuclear_cpc.jpg\" alt=\"\" class=\"wp-image-861\"\/><figcaption>Avec le CPC, le jeu en noir et blanc prend des couleurs !<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/nuclear-invaders-d32.jpg\" alt=\"\" class=\"wp-image-862\"\/><figcaption>La version originale de Nuclear Invaders, sur Dragon 32<br><\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Un des premiers programmes con\u00e7u par Dan Cresp sur Oric, publi\u00e9 en F\u00e9vrier 2013 et bien sur disponible sur oric.org dans la rubrique software. Comme vous l&#8217;avez devin\u00e9, avec son amour de la programmation et sa collection de micros, Dan a adapt\u00e9 son jeu sur plusieurs syst\u00e8mes. Vous trouverez ci-dessous ses d\u00e9couvertes &#8230; Nous avons [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":864,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[337,348,22,362],"tags":[662,765],"class_list":["post-842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-337","category-basic","category-ceomag","category-games","tag-ceomag353","tag-dancresp"],"_links":{"self":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/comments?post=842"}],"version-history":[{"count":0,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/842\/revisions"}],"wp:attachment":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/media?parent=842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/categories?post=842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/tags?post=842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}