Category: 2020

  • Fifteen Puzzles

    Avec RadarOric, Fifteen Puzzle est un des premiers jeux de l’année 2020. Rax et Iss nous ont concocté un magnifique jeu de réflexion. J’avoue n’avoir jamais été fan de ce type de jeu car ces puzzles type Rubik’s Puzzle et consorts ne m’ont jamais trop réussi. Cette sortie est donc l’occasion de découvrir le genre et surtout les méthodes qui me permettent enfin de finir ces casse-têtes.

    Petit historique pour commencer …

    Ces jeux de réflexion ou l’on pousse des pièces pour les remettre dans l’ordre est également appelé “taquin” (NDLR : Rax et Iss le sont ils ?).
    Ce solitaire se présente sous la forme d’un damier et a été créé vers 1870 aux États-Unis. Comme toujours dans les domaines du jeu, le concept est associé à une théorie mathématique qui a été publiée par l’American Journal of mathematics pure and applied en 1879 (franchement, je préfère être publié dans le CEO-MAG). En 1891, alors que le jeu passionne, son invention est revendiquée par Sam Loyd. En fait, le premier jeu de taquin connu date de 1880 et il est de Noyes Chapman. Sam Loyd l’a popularisé. Sans internet, le jeu a tout de même mis quelques mois à se répandre dans les chaumières.
    La version la plus classique est composée de 15 carreaux numérotés de 1 à 15 qui glissent dans un cadre prévu pour 16 (sur une matrice de 4×4). Il faut donc que le joueur remette dans l’ordre les 15 carreaux à partir d’une configuration initiale quelconque.

    Le principe a été étendu à toutes sortes d’autres jeux. La plupart sont à base de blocs rectangulaires plutôt que carrés, mais le but est toujours de disposer les blocs d’une façon déterminée par un nombre minimal de mouvements. Le Rubik’s Cube est aujourd’hui considéré comme l’un des «descendants» du taquin.

    Le Concept

    Le jeu qu’il proposait était le 14-15. Il s’agissait de remettre les pions mobiles dans l’ordre séquentiel correct. Loyd promettait un prix à celui qui y arriverait. Il était, en fait, infaisable … car les pavés 14 et 15 étaient inversés.

    L’insoluble taquin de Loyd

    Pour répondre au petit casse-tête de Sam Loyd, nous allons étudier comment les configurations du taquin changent par les mouvements autorisés. Il sera plus facile de travailler avec des nombres disposés à la queue-leu-leu plutôt que rangés dans un tableau. Voici comment nous rangeons les nombres : à une position du taquin, on associe la liste des numéros que l’on rencontre en parcourant les cases le long du chemin indiqué ci-dessous. On ne tient pas compte de la case vide. Le chemin vert ressemble à une file d’attente aux guichets d’une gare, entre des barrières qui zigzaguent, n’est-ce pas ?

    On obtient ainsi un rangement des nombres de 1 à 15. Par exemple, le rangement associé à la configuration de départ du taquin est “4 – 3 – 2 – 1 – 5 – 6 – 7 – 8 – 12 – 11 – 10 – 9 – 13 – 14 – 15”.
    Le rangement des nombres de 1 à 15 ne détermine pas complètement la configuration du taquin, car il ne donne pas d’information sur la position de la case vide. Mais comme on peut promener la case vide le long du chemin par les mouvements autorisés du taquin, peu importe : si l’on peut arriver à l’une des configurations donnant un certain rangement, on pourra aussi arriver à toutes les configurations donnant le même rangement.

    Le critère le plus important pour qualifier le taquin est le dérangement. Le « dérangement » est le nombre de paires inversées pour obtenir une séquence croissante de 1 à 15. Dans le cas simple ci-dessus du Taquin de Loyd, seule la paire 14-15 est inversée (le brigand). Le dérangement est donc de 1, donc impair. La plupart du temps, calculer le dérangement est fastidieux mais il permet de vérifier que le jeu est soluble. En effet, si le dérangement est impair, les pièces ne peuvent pas être repositionnées dans l’ordre désiré. D’un rangement R donné des nombres de 1 à 15 (ou de 1 à un entier quelconque) par rapport au rangement par ordre croissant. On dira qu’une paire de nombres présente une inversion dans le rangement R si le plus grand des deux nombres vient avant le plus petit dans R. Par exemple, dans le rangement suivant des nombres de 1 à 9

    On a prouvé par ordinateur que le jeu de taquin n’exige jamais plus de 80 mouvements.

    Fifteen Puzzle

    Le jeu proposé par ISS et Rax est magnifique. Moderne, en Hires et agrémenté au choix de bruitages et de musique, il met en oeuvre plusieurs designs ; des classiques dés numérotés de 1 à 15 à de beaux puzzles qui tirent parti des capacités graphiques de l’Oric (NDLR : Ils auraient quand meme se mettre à la page de l’égalité homme-femme).

    L’écran titre annonce la couleur et sert de mode d’emploi
    Oh mon bateau oh oh oh !
    Quel est donc ce virtuose du dessin sur Oric : Rax ou Iss ?
    Il n’y a pas à dire, ils nous régalent avec ce soft

    Pour finir en toute tranquillité ce puzzle, sans altérer l’oeuvre des auteurs.

    Ici, point de peek, de poke, de call … il y a une méthode infaillible que j’ai réussi à mettre en oeuvre sans mettre en oeuvre de compétences oriciennes.
    Partons du principe que la case vide est placée en bas à droite du puzzle.

    1. remettre le jeu dans l’ordre ligne par ligne en commençant par la ligne du haut. répéter la manip pour la seconde ligne.
    2. quand il ne reste plus que les deux lignes du bas mélangées, les réordonner colonne par colonne en commençant par celle de gauche.
    3. lorsque les 2 colonnes de gauche sont ordonnées, il ne nous reste plus qu’à conclure en mettant en ordre les 3 derniers carrés à leurs places respectives.
    Etes vous prêts à relever le défi ?

    Bien sur, les experts de ce type de jeu boucleront l’énigme rapidement est en un nombre minimal de coups mais cette méthode est simple à mémoriser et aboutit dans tous les cas (si la solution est possible)

    Les puzzles basés sur des images sont bien plus difficiles à résoudre…
  • Bonnes pratiques d’utilisation du site CEO

    Le site CEO est relativement complexe au premier abord. Voici quelques bonnes recettes pour s’y retrouver et participer activement.

    Naviguer dans le site

    La barre de menu supérieure est définie en fonction des droits de l’internaute
    La barre de menus du milieu donne l’accès aux articles dans les différentes catégories. Les articles vus dépendent du profil du lecteur (membre du CEO, …)

    Utiliser le forum

    En dehors de la zone réservée aux membres du CEO, le forum est accessible en lecture à tous, et en écriture aux internautes inscrits et validés (membres ou non du CEO)

    Rubriques du forum réservées aux membres du CEO

    Avec ses différentes rubriques, la partie forum (certes différente d’un forum de type PhPBB) doit permettre des échanges complets entre les Oriciens inscrits sur le site et susciter l’intérêt des visiteurs.

    A vous de jouer …

    Rédiger un article

    La rédaction d’article est possible pour les personnes ayant un profil de contributeur ou de rédacteur. Les articles rédigés pouvant être soumis à relecture ; et l’équipe de gestion du site se réserve le droit de modifier les catégories et mots-clés choisis, pour conserver une lisibilité d’ensemble des articles.

    Le lien “ajouter un article” permet de rédiger et proposer un article sur le site et pour l mag.

    Lors de la rédaction d’article, le système découpe l’écran en 2.
    A gauche, le contributeur rédige son article basé sur des blocs qui peuvent être des textes de différentes formes, des tableaux, des images téléchargées ou issues de la base
    A droite, l’utilisateur a tous les réglages disponibles pour le bloc (texte, image …) en cours de rédaction.

    Un clic sur “document” dans la colonne de droite (switch “document” / “bloc”) donne au rédacteur de l’article les différents réglages accessibles pour poster son article et éviter qu’il soit perdu parmi les dizaines d’articles qui inondent déjà notre jeune blog.

    Tout commence avec la date de publication et les mots clés
    puis l’étiquette, une image à choisir et si l’article est réservé aux membres du CEO.

    Les choix que l’auteur d’un article doit réaliser :

    • Définir le futur de son article :
      • L’article est réservé aux adhérents du CEO : Cocher la case “Adhérent CEO” en bas de la section “document”
      • L’article est destiné à être publié dans le CEO-MAG, l’auteur coche la catégorie CEO-MAG, et éventuellement l’année de publication. Si l’auteur souhaite un mois de publication précis, il peut sélectionner la date de publication de l’article en haut de section document et remplacer “immédiatement” par une date de début de mois qui correspond en théorie à un prochain mag (le numéro du mag de publication se retrouve dans les étiquettes de l’article – par exemple ceomag353).
    • Définir comment retrouver son article après sa publication :
      • Sélectionner les mots clés nécessaires qui permettent de retrouver l’article dans le menu
      • Tel des mots-clés, mettre les étiquettes permettant une sélection plus fine dans les recherches d’articles

    En fonction des droits du contributeur / rédacteur, la case bleue en haut de page est “publier” ou “envoyer à la relecture” pour finaliser l’étape de préparation de l’article.

    Quelques conseils pour les catégories :

    Des catégories sont réservées pour un usage précis :

    • Focus : Permet d’afficher à la une en grand l’entete de l’article
    • Urgent : Génère un bandeau déroulant avec le message flash du titre
    • Association : Mot clé réservé aux informations liées au fonctionnement de l’association.

    Les autres catégories sont à choisir soigneusement … Bon courage pour vos futures rédactions.

  • Fungaloids

    Informations générales

    Ceci est une nouvelle version de l’un des jeux préférés de Dan Cresp pour le ZX-81, adapté d’abord sur MSX et SHARP MZ-700,

    Fungaloids, sur Sharp MZ-700

    Dan a décidé de créer une version “Cellophane Edition” pour ORIC, pour laquelle il a travaillé davantage sur la partie graphique et adapté le jeu à 36 colonnes au lieu de la version originale ou de 40 sur le MZ-700.

    D’un côté, Dan aurait aimé avoir un jeu différent au niveau des couleurs, mais les limitations de l’ORIC ne l’ont pas permis. Il a donc décidé de le présenter tel quel, ce qui lui donne un aspect très rétro. Ce résultat est magnifique.

    Les performances de l’ORIC sont très bonnes pour certaines choses, tel que le traitement des polices de caractères, mais en retrait pour d’autres aspects, ce qui fait que le jeu n’est pas aligné avec la fluidité que souhaitée. Comme tous les ennemis sont représentés par un seul personnage, Dan a décidé de passer directement sur l’écran vidéo par des POKE, au lieu d’utiliser le PLOT. Cela a simplifié le code et amélioré les performances.

    La boucle principale se répète jusqu’à ce que nous perdions la seule vie que nous ayons. A chaque passage, nous ne déplaçons qu’un des ennemis, sélectionné aléatoirement avec un nombre compris entre 0 et 2 :

    • 0 : Nous levons ou baissons la barrière d’énergie au hasard.
    • 1 : Au hasard, nous élevons ou abaissons l’un des navires ennemis.
    • 2 : Pour les fongoïdes, nous calculons un grand nombre aléatoire. S’il est inférieur à 6, nous faisons croître le Fungaloid correspondant et sinon nous ne faisons rien. Cela les fait progresser plus lentement, mais au fur et à mesure que le jeu avance, le nombre que nous calculons diminue et, par conséquent, augmente sa vitesse et sa difficulté.

    Pour détecter les collisions, j’utilise certaines variables qui indiquent la position absolue dans la mémoire de l’écran sur laquelle se trouve l’aile gauche de notre navire, ou notre tir. En accédant à la mémoire vidéo avec un PEEK, nous pouvons voir que nous jouons. Cela nous évite de nombreux calculs et cela reste assez précis.

    Dans le jeu original, il faut survoler un Fungaloid et lui tirer dessus. Ici, pour gagner de la vitesse, j’ai choisi de lui faire tirer dessus en détruisant un fragment de Fungaloid. Donc, je prends le même code qui me dit que Fungaloid est parvenu à poser sa balle sur le sol correspondant.

    La vérité, c’est que Dan aurait aimé apporter quelques modifications, mais il a choisi de conserver l’esprit du jeu original. Bien que complètement programmé en BASIC, le jeu a atteint une vitesse très convenable et vous permet de jouer parfaitement. Bien sûr, comme pour les autres logiciels crées par Dan Cresp, le son reste le point faible.

    Je vous invite à l’essayer

    Quelques informations à propos du programme

    Dan a divisé le programme en 11 blocs:

    • Déclaration de la matrice et début du jeu.
    • Contrôle de notre vaisseau.
    • Déplace les ennemis.
    • Contrôle du tir.
    • Contrôle du projectile ennemi.
    • Fin du jeu.
    • Niveau de passage.
    • présentation
    • Afficher l’écran de jeu et initialiser les variables.
    • Plusieurs routines.
    • bloc de données.

    L’ensemble du programme occupe 82 lignes.

    Ci dessous, le principe des différentes parties du programme:

    • 10 – Nous définissons les matrices du jeu.
    • 100 – Nous lisons le clavier: si aucune touche n’est enfoncée, elle passe à 170, mais le navire est supprimé de l’écran.
    • 160 –Nous vérifions la position du navire. S’il y a autre chose que des espaces, passez à 600.
    • 200 – Code déterminant quel ennemi nous devons nous déplacer: 0- Barrière énergétique, 1- Navires ennemis et 2- Fungaloids.
    • 210 – Routine de mouvement de barrière d’énergie.
    • 240 – Programme de déplacement d’un des trois navires.
    • 270 – Programme de déplacement de l’un des six Fungaloids.
    • 300 – Contrôle de notre tir.
    • 400 – Commande de déclenchement fongoïde.
    • 450 – Nous regardons les 3 personnages qui sont dans la position de notre vaisseau. S’ils ne correspondent pas au navire, cela signifie que nous sommes entrés en collision avec quelque chose et que nous sautons à la fin de la partie, sinon le système revient au début de la boucle.
    • 600 – Fin de partie.
    • 700 – Niveau de réussite.
    • 800 – Divers programmes: charger des munitions (820), charger du carburant (850), montrer le score (880).
    • 900 – Routine pour imprimer notre vaisseau dans la position correspondante.
    • 2000 – Écran de présentation.
    • 2500 – Nous dessinons l’aire de jeu.
    • 2800 – Initialise les variables du jeu.
    • 3000 – Nous chargeons les graphiques et initialisons certaines variables.
    • 9000 – Données des positions verticales initiales des 6 fongoïdes.

    Le jeu

    Le jeu original a été publié en 1982 et fut programmé pour le ZX-81 étendu à 16K.

    Le but du jeu est de détruire les Fungaloids avant qu’ils n’atteignent le haut de l’écran. Ces plantes poussent et produisent des spores qui nous détruisent si elles nous parviennent. Nous devons éviter d’entrer en collision avec eux ou avec les différents ennemis de la région.

    Notre seul navire a une capacité limitée de carburant et de munitions et nous devons périodiquement faire le plein dans les zones correspondantes.

    En détruisant tous les segments des Fungaloids, nous recevons 100 points, nous passons le niveau et la difficulté augmente.

    Près de la base de certains Fungaloids, il y a des constructions. Si nous en détruisons un, nous perdons 20 points.

    Le jeu se termine si nous perdons notre seule vie ou si nous perdons tous les points.

    Contrôles : Q-A-O-P pour déplacer le navire et ESPACE pour tirer.

    D’autres versions …

    Fungaloids sur ZX-81, la version originale
    Fungaloids sur le MZ-700
    Et pour finir, sur le MSX
  • Récupérez les écrans des logiciels protégés : 2 – Application, Démo Talisman

    par André C.

    Je ne peux pas résister au plaisir de vous montrer les écrans que j’ai pu récupérer à partir du fichier TALISMAN_DEMO.WAV de Simon G. A ma connaissance il n’existe pas de fichier .TAP ou .DSK pour cette démo et je l’ai choisie pour illustrer la simplicité de la procédure de récupération des nombreux écrans Hires qu’elle contient. Cet article montre des recopies d’écran, mais vous trouverez tous ces écrans au format .tap dans le zip joint à cet article.

  • CEO-MAG 357

    Sommaire :

    Edito Janvier 2020.

    Au nom du Comité, des rédacteurs du CEO-MAG, je vous souhaite une bonne année 2020, pour vous et vos proches.

    La souscription au CEO lancée et suivie avec brio par René, notre trésorier adjoint est un franc succès. A ce jour, c’est 55 adhérents, Oriciens actifs qui ont renouvelé leur adhésion et marqué leur intèrêt dans les services proposés par l’association ; dont j’en rappelle quelques uns : visu ouverte à tous et l’occasion de faire réparer du matériel, le mythique magazine CEO-MAG, la distribution de logiciels estampillés CEO (même si avec internet, nous sommes tous facilement des auto-éditeurs), l’accès à des archives sur le site oric.org et dans sa section CEO-MAG qui dispose également d’un forum avec une partie privée et une partie publique. Les bases sont lancées.

    Parmi les 55 adhérents, il y a 4 nouveaux adhérents pour 2020 dont certains sont très actifs et tentent de nouvelles expériences sur notre machine favorite. Bienvenue à vous. Le dernier «trombinoscope» remontait à 2015. Une version à jour sera proposée dans un prochain mag, ainsi que quelques infos sur le contenu et le fonctionnement du site oric.bqtt.net/ monté par Jérome. J’espère que cela motivera les adhérents n’ayant pas encore créé leur profil sur le site à le faire, pour réagir en ligne aux articles proposés. Ce premier numéro est plein de découvertes proposées par nos rédacteurs les plus prolixes et Dominique nous a concocté un nouvel article pour les amoureux du fer à souder.

    Bonne lecture et rendez-vous le 1/2 à Paris.

    [wpdm_package id=’1919′]

    [wpdm_package id=’2586′]

  • Radar Oric

    Un nouveau jeu de réflexion d’ André C.

    Prévu à l’origine pour être un cadeau de Noël, ce programme a connu un peu de retard à force de le peaufiner.  Mais bon, il est maintenant disponible et vous le trouverez dans le zip accompagnant cet article, ainsi que sur mon site, à l’adresse http://andre.cheramy.net/telechargement/Programmes/choix.htm

    De quoi s’agit-il ?

    C’est une sorte de bataille navale, mais dans le jeu classique (en vigueur dans les cours de récréation et qui se joue sur une grille papier),  deux protagonistes s’échangent des missiles pour couler les bateaux de l’adversaire et (cf. “touché”, “en vue” et “dans l’eau”). Dans les équivalents numériques le jeu est souvent réduit à un seul joueur contre l’ordinateur.

    Dans Radar Oric, il n’y a aucun risque de recevoir des missiles sur vos bateaux, car vous n’avez pas de bateaux. C’est votre QG qui est attaqué par une flotte ennemie et pour vous défendre, vous disposez d’un tout nouveau radar couplé à un ordinateur dernier cri, l’ Oric. Votre tâche est de localiser exactement la position de tous les bateaux ennemis, puis de déclencher un feu apocalyptique qui les anéantira vite fait bien fait avant qu’ils aient eu de temps de dire ouf ! Oui, je sais les bateaux ne peuvent pas dire ouf, mais bon…

    Le jeu proprement dit

    Votre rade est représentée par une grille de 10×10 cases où les 10 bateaux de la flotte ennemie se sont faufilés, profitant d’un épais brouillard. Heureusement, il y a quelques trous dans ce brouillard, dans lesquels vous pouvez apercevoir des bouts de navires ou… de l’eau ! Mais c’est tout (voir la figure ci-dessous).

    Pas facile de savoir où sont les bateaux ennemis ! Heureusement encore, votre super Radar Oric est capable de scanner cette grille et de vous indiquer combien d’éléments de bateaux se trouvent dans chaque ligne et dans chaque colonne (voir les chiffres rouges à gauche et sous la grille). Heureusement encore, votre super Radar Oric est capable de scanner cette grille, ligne par ligne et colonne par colonne, et de vous indiquer combien d’éléments de bateaux s’y trouvent (voir les chiffres rouges à gauche et sous la grille).

    Un peu de réflexion vous permettra de déduire la localisation exacte des 10 bateaux ennemis. Dernier petit service offert par votre Radar Oric : il vous indiquera si vous vous êtes planté dans votre raisonnement ou si les bateaux sont bien là où vous pensez.

    Si c’est correct, il ne vous restera plus qu’à les anéantir et l’ennemi n’aura même pas le temps de comprendre ce qui lui arrive. Le résultat est garanti en un rien de temps !

    Hélas, l’ennemi a la peau dure et il ne va pas tarder à vous envoyer une nouvelle flotte. Sacrebleu, il va encore falloir se creuser les méninges !

    Mais tout est bien qui finit bien, il arrivera inexorablement un moment où l’ennemi sera à court de bateaux et où aurez définitivement  gagné.

    Chaque flotte ennemie est composée des 10 bateaux suivants

    • Un porte-avions (4 cases)
    • Deux croiseurs (3 cases)
    • Trois destroyers (2 cases)
    • Quatre Sous-marins (1 case)

    Cet effectif vous est rappelé au-dessus de la grille et vous sera utile pour vous aider à trouver où peuvent se tenir les bateaux.

    Les commandes disponibles

    • Les quatre flèches pour déplacer le curseur dans la grille.
    • Les chiffres de 1 à 8 pour marquer la case au curseur selon ce que vous pensez qu’elle contient.
    • La touche “R” pour recommencer la grille au début, si vous êtes trop embrouillé.
    • La touche “S” pour sauvegarder la partie en cours afin de la reprendre plus tard.

    Correspondance entre les touches 1 à 8 et le marquage des cases

    1. Case indéterminée
    2. De l’eau
    3. Corps de bateau
    4. Sous-marins
    5. Extrémité gauche d’un bateau
    6. Extrémité droite d’un bateau
    7. Extrémité basse d’un bateau
    8. Extrémité haute d’un bateau

    A tout moment, vous pourrez consulter le pense-bête, situé à droite de la grille (chiffres bleus suivis d’une icône).

    Enfin, le n° de la flotte qui vous attaque est visible  juste au-dessus de ces chiffres (par exemple le 4 sur la figure ci-dessus indique que vous vous défendez contre la 4e flotte ennemie).

    Toutes les grilles du jeu ont bien sûr une solution et une seule.

    A vous de jouer !

  • Modifications sur Oric

    RESTRUCTURATION D’UN ORIC

    Aie, ça va faire mal aux yeux à certains. Âmes sensibles, passez votre chemin…

    Dans le cadre de ce projet à long terme, le travail proposé va dans un premier temps alléger considérablement une carte mère d’Oric, puis y apporter plusieurs modifications et sa finalisation permettra une utilisation inhabituelle.
    Son appellation pourrait être : ORICMOD.

    Vous êtes prêts ? Alors, attaquons le premier temps.
    De la carte mère originale, il faut arriver à :

    et maintenant défigurée !
    Encore belle…

    Démontage de tous les circuits sur support. A placer piqués dans une mousse électrostatique, sinon dans une mousse enveloppée de papier aluminium.

    En utilisant tout moyen à votre disposition (fer à souder, pompe à dessouder, tresse à dessouder, pistolet à dessouder, pinces, tournevis plat,etc…), dessoudage patient de tous les composants qui sont utilisés pour :
    – l’alimentation négative,
    – la génération du signal vidéo UHF,
    – l’amplificateur LM386,
    – la gestion Entrée-Sortie des signaux TAPE avec le LM358,
    – le relais de commande du magnéto.
    Ainsi que le haut-parleur, le bouton RESET et les prises DIN (RGB et TAPE)…

    Voici donc la carte mère de l’ORICMOD :


    Notre ORIC est devenu sourd et aphone. Impossible pour lui d’afficher quoi que ce soit. Ah misère, quand tu nous tiens !
    Il ne lui reste plus que la peau et les os !

    Mais pourquoi tant de cruauté ? Une carte mère qui avait encore tant de belles années devant elle ! Qui plus, maintenant c’est malin ! Ça ne vaut plus rien, même sur le Bay (alors qu’on y voit des prix astronomiques pour une machine parfois non testée !).
    Oui, mais…
    Les modifications à venir vont lui conférer une souplesse appréciable pour son utilisation future. Ces modifications se dévoileront au fur et à mesure sur ces pages.

    MOD de départ, juste pour se faire la main : l’alimentation.
    L’ORICMOD va être alimenté en + 5 Volts directement. Il sera bon à cette occasion de remplacer la prise Jack trop souvent oxydée par une nouvelle.
    Puis, un pont fait avec une queue de résistance ou un bout de fil va relier deux trous laissées par le 7905 parti en voyage très longue durée…

    Reliez les deux trous “Masse”

    Pour gagner un peu de place, nous décalerons l’implantation des condensateurs. Parfait derrière la prise Jack :


    Poursuivons avec la deuxième MOD : la prise RGB.

    Notre ORICMOD va pouvoir de nouveau envoyer des signaux vidéo vers l’extérieur. Ayant déjà modifié un boîtier Convertisseur de signal HDMI-SCART vers HDMI en lui retirant sa prise Péritel, nous allons installer une petite plaque à bandes avec quelques connecteurs.
    Auparavant, il sera utile de repérer les sorties à utiliser :

    R, G, B et Synchro, sans oublier la Masse…

    Des queues de résistances ou des fils pour assurer la liaison avec les pastilles repérées, un connecteur à 5 broches mâles coudées à 90 degrés, quelques fils de liaison (ici, en couleurs correspondantes, sauf le jaune pour la Synchro), et voilà !

    C’est tout de même moins encombrant que la prise DIN, non ?

    Sans toucher à la coque, il y a pas mal de place gagnée !

    Un petit marquage des broches (comme un commentaire dans un programme) n’est jamais inutile…


    Le temps de remonter les circuits sur leurs supports, de relier la carte modifiée derrière le clavier, et nous pouvons tester sur écran si c’est bon.


    ATTENTION : c’est 5 Volts maintenant, vérifiez votre transformateur !

    Hello, World !
    Et c’est OK ! Ouf !




    _____________________________________________________________________________
    Débranchons le tout et retirons les circuits sur support.

    N’hésitez pas à partager vos commentaires et idées !

    Tout ça là-dedans ? Incroyable, non ?

    A suivre pour de nouvelles aventures ….

  • Space Invasion

    Avec Pipe-Mania déjà réalisé en ce début d’année 2015, Dancresp a fait un bon dans la réalisation de ses jeux. Cette fois, les couleurs sont démultipliées pour le plaisir de nos yeux

    Informations générales

    Ce jeu est une nouvelle version d’un jeu précédemment adapté pour ACORN ELECTRON, MSX et ATARI XL.

    Cette version pour Atari XL est la meilleure version, car une partie de la couleur a été ajustée plus le niveau de difficulté, faisant apparaître progressivement plus de variété d’ennemis. La vitesse est cyclique, de sorte que tous les 3 niveaux la vitesse est maxmale avant de redescendre dans le suivant. Dan a également changé l’ordre d’apparition des envahisseurs dans notre sélecteur, en les regroupant par type et par position et en les différenciant par des couleurs. S’il n’y avait pas le souci du temps de réponse du clavier, ce serait la version ultime.

    Comme ORIC fonctionne sur 40 colonnes, Dan a utilisé la disposition des éléments à l’écran des versions ACORN ELECTRON et ATARI XL, et verticalement, tout cela est un peu plus étiré du fait de l’utilisation des 25 lignes.

    Comme toujours, le fait de disposer de caractères de 8×6 pixels a contraint Dan à redéfinir certains graphismes, tels que le bunker ou le char, qui a réutilisé ceux de «nuclear invaders» pour les envahisseurs.

    Pour lire le clavier, Dan a choisi de le faire avec PEEK (520) ($208 en hexadecimal), ce qui permet de lire la dernière touche enfoncée, en évitant les problèmes de majuscules ou de minuscules. Malheureusement, le tampon clavier est limité à une touche ce qui signifie que la lecture n’est pas aussi fiable que souhaité et que la touche doit être enfoncée plus longtemps. Cependant, la difficulté a été adaptée à cette limitation pour que le jeu fonctionne correctement. Ce problème se produisait déjà dans la version ATARI mais cela a parfaitement fonctionné dans ELECTRON et MSX.

    Dan a supprimé tous les calculs et tous les ET / OU possibles. Pour utiliser un IF et s’il n’est pas satisfait, aucune autre valeur n’est à vérifier. Dan a également évité d’utiliser ELSE chaque fois que possible pour éviter les “erreurs” de l’interpréteur BASIC ORIC.

    Pour que la vitesse soit constante, en tenant compte du fait que parfois plus de lignes sont exécutées que d’autres, sur la ligne 100, j’initialise l’emplacement mémoire n ° 276 sur 0, car cette position et la suivante forment un registre de 16 bits qui est: diminue de 50 fois par seconde. Sur la ligne 220, je crée une boucle qui considère que la valeur de cette position (l’octet de poids faible) est inférieure ou égale à 230. Surtout lors de la mise à jour d’une colonne d’envahisseurs, le processus prend plus de temps que d’habitude et nous obtenons ainsi la vitesse de l’exécution soit constante. Dommage pour le thème de la lecture au clavier …

    Et comme toujours, en ce qui concerne le son, Dan a démontré une fois de plus ce point faible et s’est limité à utiliser les sons standards de l’Oric.

    PAPER et INK, les couleurs de l’Oric
    Faire un jeu coloré avec l’ORIC est toujours difficile. La gestion de la couleur par l’ORIC n’aide pas, mais ce jeu a pu être coloré avec une certaine facilité et bien que le résultat ne soit pas trop “rétro”, il est beaucoup plus attrayant et clair lorsque l’on joue.

    Pour ORIC, un attribut de couleur est un caractère que vous pouvez placer n’importe où sur l’écran. À partir de ce caractère, tout ce qui apparaît à sa droite aura cette couleur jusqu’à ce que vous trouviez un autre attribut de couleur, ce qui affectera à nouveau tout ce qui se trouve à votre droite. Cela induit, si vous faites une impression dans une position de l’écran où il y a un attribut de couleur, un emplacement de perdu, et ce qui est montré par l’IMPRESSION prend la couleur de l’attribut précédent, donnant un spectacle visuel chaotique, et compliquet beaucoup la programmation de jeux en couleurs.

    Pour éviter cette impression de désordre, il est nécessaire de laisser des espaces entre les différents éléments, où seront placés les attributs de couleur. Grâce à la disposition des éléments dans ce jeu, il a été facile de le colorier et lui donner cet aspect multicolore.

    Je vous invite à l’essayer.

    Quelques informations concernant le programme

    Dan a divisé le programme en 12 blocs:

    • Déclaration de matrice.
    • Contrôle de notre tank.
    • Contrôle de notre objectif.
    • Contrôle de notre tir.
    • Déplacer les envahisseurs.
    • Niveau de passage.
    • Perdre une vie.
    • Présentation
    • Afficher l’écran de jeu.
    • Plusieurs routines.
    • Charger UDG.
    • Définition des blocs graphiques.

    L’ensemble du programme occupe 73 lignes

    • 10 – Nous définissons les matrices du jeu.
    • 20 – Appel de routine pour lire les graphiques et afficher l’écran de présentation du jeu.
    • 100 – Début de la boucle principale.
    • 105 – Contrôle du clavier et vérifiez si notre réservoir doit être déplacé horizontalement.
    • 120 – Si vous appuyez sur “M” (Déplacer), l’envadeur de la position correspondante est modifié.
    • 150 – Si vous appuyez sur “L” (Shot), il est vérifié si l’envahisseur sélectionné se trouve dans cette colonne et le détruit.
    • 200 – Si le compteur de vitesse (W) n’atteint pas la valeur souhaitée, il est augmenté de un et passe à la ligne 220.
    • 205 – Une colonne est sélectionnée de manière aléatoire et s’il reste des envahisseurs, un est ajouté et, si aucun espace dans la colonne n’est ajouté.
    • 210 – Il est vérifié si la colonne a atteint le bunker. Si c’est le cas, il saute à la ligne de vie perdue (500).
    • 215 – Actualisez la colonne de l’envahisseur sélectionné.
    • 220 – Contrôle du temps pour que chaque passage dans la boucle principale prenne la même chose.
    • 225 – Fin de la boucle principale. Si «E = 0» revient à la répétition de la ligne 100. Si «E = 1» passe à 500 (perdre la vie).
    • 400 – Niveau de routine dépassé (E = .1). Le niveau est augmenté de 1, mais si nous passons du niveau 9, nous revenons à 7.
    • 500 – Routine qui s’exécute lorsqu’un envahisseur atteint le bunker. S’il nous reste de la vie, les marqueurs sont mis à jour, mais le message «GAME OVER» apparaît et, après une pause, nous revenons à l’écran de présentation.
    • 2000 – Écran de présentation du jeu.
    • 2050 – Attendez que nous appuyions sur une touche pour lancer le jeu.
    • 2100 – Affiche les marqueurs sur le côté droit de la zone de jeu.
    • 2500 – Le statut des cinq colonnes d’envahisseurs et de l’envahisseur “cible” est mis à jour.
    • 2505 – Affiche la partie gauche de l’aire de jeu. Où l’action a vraiment lieu.
    • 3000 – Paramètres de couleur de jeu et POKE pour masquer le curseur et les majuscules.
    • 3005 – Nous chargeons les couleurs dans C $ () et lisons les DONNEES avec l’UDG.
    • 3010 – On conserve dans la matrice G $ les graphiques qui forment chaque envahisseur et sa couleur.
    • 3015 – Lecture du nombre d’envahisseurs différents par niveau “D ()” et sa vitesse “G ()”.
    • 4000 – Routine pour imprimer les valeurs de “REST” et “AMMO”. La position verticale dans “Y” et la valeur dans “N” sont passées.
    • 4200 – Routine pour imprimer les valeurs de “SCORE” et “HI-SCORE”. La position verticale dans “Y” et la valeur dans “N” sont passées.
    • 4500 – Routine pour l’effacement partiel de l’écran.
    • 9000 – DATA avec les UDG du jeu.
    • 9500 – DATA avec les couleurs et les graphiques de chaque type d’envahisseur.
    • 9800 – DATA avec le nombre d’envahisseurs différents par niveau.
    • 9805 DATA avec la vitesse de chaque niveau.

    Le jeu

    C’est une nouvelle tentative des envahisseurs de l’espace pour prendre le contrôle de notre planète !

    Les envahisseurs descendent en colonnes et avec l’aide de notre char, nous devons sélectionner le type d’envahisseur et tirer. Si l’envahisseur est dans cette colonne, il sera détruit et le reste s’éloignera.
    Évitez de vous rendre dans la zone de bunker ou la victoire sera à vous.

    Chaque niveau est composé de 35 envahisseurs et nous avons 60 coups pour les tuer. Lorsque les niveaux sont dépassés, de nouveaux types d’envahisseurs apparaissent et descendent plus rapidement.

    Le jeu enregistre le score maximum atteint dans une partie.

    Quelques autres versions

    Space Invasion sur Acorn Electron
    La version MSX prend beaucoup de place à l’écran
    Les envahisseurs de l’espace attaquent l’Atari XL
  • Développement sur Orix

    introduction

    Le but de cet article est d’expliquer comment développer sur Orix des applications. Cet article ne va expliquer comment coder en C, mais plutôt comment utiliser les fonctions déjà codées dans cc65 pour faire des choses sur Oric. En effet, Orix s’appuie sur telemon. Pour rappel, telemon est une rom de 16Ko qui contient toutes les routines pour faire fonctionner le hard telestrat notamment, mais aussi l’affichage etc. Il n’y a pas d’interpreteur dans cette partie. Il faut imaginer telemon comme étant une grosse lib utilisable en assembleur. Les libs C de la target Telestrat sur cc65 ne font qu’appeler ces routines.

    Prérequis

    Il vous faudra l’archive contenant Oricutron avec l’émulation du CH376 : https://iss.sandacite.com/iss/oricutron/
    Puis cc65, http://cc65.github.io/cc65/
    Puis les roms : https://repo.orix.oric.org/dists/orix1/alpha/tgz/6502/roms.tgz

    Dans oricutron.cfg, mettre la rom kernel en banque7, la rom basic en banque6, la rom shell en banque 5, et dans les autres banques mettre emptyrom.

    Chaque lancement d’oricutron devra se faire avec l’option -t pour pouvoir démarrer les binaires

    Avoir un éditeur texte (notepad, visual code etc)

    CC65 utilise les prototypes de fonctions standardisées (POSIX), ainsi, il n’y a pas de hires par exemple.

    Premier exemple

    Nous allons effacer l’écran.

    Nom du fichier : clrscr.c

    #include <conio.h>
    
    int main (int argc,char *argv[]) {
      clrscr(); // Effacer l'écran (texte) avec conio car conio gère le mode texte.
    } 

    On compile (sous linux ou windows)

     # cl65 -ttelestrat clrscr.c -o clrscr

    Vous aurez un binaire clrscr

    Copiez ce fichier dans oricutron/usbdrive/ (oricutron qui est dans l’archive ci dessus)

    Démarrez Oricutron de cette archive.

    Dans Orix, on regarde les informations du binaire avec file :

    # file clrscr 

    File permet d’afficher les infos de fichiers (file affiche les infos d’un fichier filepack, binaire Orix, raw, script shell etc)

    Dans Orix, on execute le code :

     # ./clrscr 

    Nous avons l’écran qui s’est effacé

    Afficher hello world

    #include <stdio.h> 
    
    main() {     
      printf("Hello World\n");
    } 
    • Puis je compile :
    # cl65 -ttelestrat hello.c -o hello 
    • je déplace le binaire dans le répertoire usbdrive d’oricutron (dans bin) :

    cp hello $ORICUTRON/usbdrive/bin/

    • je lance oricutron, et je tape “hello”. Cela fonctionnera sans faire ./hello, puisque nous avons placé le binaire “hello” dans bin/ qui est dans le “PATH”.

    Lire le clavier

    Nous allons utiliser la lib conio de cc65 qui est une librairie de gestion du clavier et du mode texte. Notez que cela récupère aussi le code ascii du joystick. En effet, sur telestrat, quand on utilise telemon, quand on scrute le clavier, on récupère aussi le joystick !

    #include <conio.h>
    #include <stdio.h>
    
    int main (int argc,char *argv[]) {
       unsigned char key;   // Ici le programme ne sort jamais, dès qu'une touche est pressée, elle s'affiche à l'écran.
       while (1)   {     
         key=cgetc();     
         printf("%c",key);
       }
    } 

    Passer HIRES

    Nous allons utiliser la lib TGI de cc65 qui est une librairie graphique standard pour passer en hires.

    #include <tgi.h>
    #include <conio.h>
    #include <stdio.h>
     int main (int argc,char *argv[]) {
       tgi_install (tgi_static_stddrv);
       tgi_init ();
       tgi_clear ();
       printf("Appuyez sur une touche pour revenir en mode texte");
       cgetc();
       tgi_done();
     } 

    Passer HIRES et afficher une image

    il vous faut une images hrs que vous mettez à la racine de usbdrive dans l’émulateur. Cette image s’appelle img.hrs

    #include <tgi.h>
    #include <conio.h>
    #include <stdio.h>
    int main (int argc,char *argv[]) { 
       FILE *fp;
       char *myfile="img.hrs";
       fp=fopen(myfile,"r");
       if (fp!=NULL)   {
         tgi_install (tgi_static_stddrv);
         tgi_init ();
         tgi_clear ();
         fread(0xa000,8000,fp); // On lit 8000 octets qu'on écrit directement en hires.
         printf("Appuyez sur une touche pour revenir en mode texte"); 
        cgetc(); 
        tgi_done(); 
      } 
    } 
    • Puis je compile:
     cl65 -o picture -ttelestrat picture.c 

    Voilà, vous avez fait à peu près le binaire viewhrs qui permet de voir des images hrs sur oric.

    Quelques exemples sur orix : https://github.com/jedeoric/orix-samples que vous pouvez améliorer facilement. Contactez moi pour que je vous donne accès en écriture à ce repo !

    viewhrs a été recodé en assembleur depuis, et est dispo dans la ROM shell d’Orix. En voici le lien : https://github.com/orix-software/shell/blob/master/src/commands/viewhrs.asm

  • Récupérez les écrans des logiciels protégés : 1 – Méthode

    par André C.

    Exemple d’écran-titre d’un logiciel protégé par C-SAFE

    Constatation

    Les cassettes et les disquettes 3″ vieillissent mal, de même que leurs lecteurs respectifs. Le transfert des logiciels Oric sur des supports modernes est donc crucial. C’est grâce à ces transferts et à divers émulateurs que nous pouvons profiter, encore aujourd’hui, des programmes achetés dans les années 80. Simon G., Dominique P., Fabrice F. et bien d’autres ont réussi à transférer au format .tap la plupart des logiciels du commerce, notamment ceux qui comptent parmi les mieux protégés. La complexité des moyens de protection mis en œuvre est parfois surprenante au vu de leur valeur économique somme toute limitée.

    Un florilège de protections

    Les passionnés de casse-têtes pourront découvrir ou relire les nombreux articles passionnants parus dans le CEO-mag à ce sujet. Pas loin d’une centaine d’articles ont été publiés qui décortiquent les divers procédés de protection rencontrés. Parmi les plus spectaculaires, citons C-SAFE, utilisé pour Titan, Logor et Talisman de chez Infogrames et pour Vortex de chez Loriciels (voir articles “C-SAFE et .TAP” par Simon G. et Dominique P., CEO-mag n°261, pages 14 et 15, ainsi que “Cassettes, un florilège de formats exotiques (2) ” par Dominique P., CEO-mag 262, pages 18 et 19. Mais il existe tout une panoplie d’autres systèmes de protection et de formats exotiques…

    Bilan des transferts au format .tap ou .dsk

    Un très grand nombre de logiciels sont maintenant disponibles dans ces formats. Pour lever les protections, il a parfois été nécessaire de modifier un minimum d’octets, mais  toujours avec le souci de coller au plus près à l’original.

    Les procédures utilisées pour contourner certaines protections sont si complexes, qu’il est souvent beaucoup plus simple de lire les cassettes audio, d’enregistrer la “musique” au format classique .wav. Le fichier obtenu peut alors être placé sur une bande magnétique ou un CD et réinjecté dans un Oric réel ou être rechargé dans un émulateur. Mais bien sûr ce fichier .wav inclut toujours la protection. Le logiciel est utilisable, mais on ne peut pas “regarder dedans”. Au moins 25 fichiers au format .wav sont aujourd’hui disponibles sur oric.org et concernent évidemment les logiciels les plus réticents.

    Ecrans versus recopie d’écrans

    Certes, les émulateurs permettent d’effectuer des recopies d’écrans, mais les fichiers obtenus sont aux formats .BMP, .GIF, etc. Il serait intéressant de récupérer les écrans TEXT ou HIRES aux formats Oric .SCR et .HRS sur un support .tap ou .dsk. Dans le même genre d’idée, ce serait chouette de récupérer les caractères redéfinis, les musiques, etc. Or, comme écrit plus haut, on ne peut pas “regarder dedans”. Mais est-ce bien sûr?

    Exploration de la Ram

    Non seulement c’est tout à fait possible, mais en plus c’est très simple. En effet, les émulateurs permettent d’effectuer un dump de la mémoire. Ainsi avec Euphoric, un simple appui sur la touche F9 sauve un fichier DUMP de 64 Ko correspondant à l’intégralité de la mémoire de l’Oric émulé. Il ne reste plus qu’à explorer ce fichier DUMP à l’aide d’un éditeur hexadécimal et d’en extraire les parties intéressantes par exemple les écrans.

    Les divers types d’écrans

    Trois types d’écrans peuvent être récupérés :

    1. Ecrans basse résolution (TEXT, LORES0 et LORES1) situés de #BB80 à #BFDF en Ram (soit #0460 octets ou 1120 en décimal ce qui correspond bien à 28 lignes de 40 caractères).
    2. Ecrans haute résolution seuls (sans les 3 lignes de texte) situés de #A000 à #BF3F (soit #1F40 octets ou 8000 en décimal pour 200 lignes de 40 tirets de 6 pixels).
    3. Ecrans haute résolution avec les 3 lignes de texte en dessous, situés de #A000 à #BFDF (soit #1FE0 octets ou 8160 en décimal. On remarquera une petite curiosité : la Ram comporte 4 lignes de texte sous l’écran Hires (d’où les 160 octets supplémentaires) mais la première des quatre n’est pas affichée et les 40 octets correspondants restent donc inutilisés!

    Puisqu’on connait les adresses de début et de fin de ces écrans, rien ne sera plus facile que de les récupérer, puisqu’ils ont la même adresse en Ram et dans le fichier DUMP, et de les copier derrière un en-tête cassette. Les en-têtes cassettes ont été décrits dans le CEO-mag n°153 page 17. Mais il est plus simple (et plus sûr) de sauver un écran bidon et d’en récupérer l’en-tête, plutôt que de construire celui-ci octet par octet.

    Fabriquez les en-têtes appropriés

    Pour ces 3 types de d’écran, il vous faudra faire 3 modèles d’en-tête avec le petit programme SAUVENT.COM suivant (voir le fichier .zip joint à cet article) :

    100 HIRES

    110 CSAVE”MODLHRS1″,A#A000,E#BF3F

    120 CSAVE”MODLHRS2″,A#A000,E#BFDF

    130 TEXT

    140 CSAVE”MODLTEXT”,A#BB80,E#BFDF

    150 PING

    Pour avoir les 3 en-têtes, récupérez les octets du début du fichier .tap, allant du #16 initial au #00 (inclus) situé juste après le nom du fichier. Dans les conditions décrites, les 3 en-têtes auront au final une longueur de 23 octets (ou 22 si le début du fichier ne comporte que 3 fois l’octet #16 au lieu de 4, selon la version d’émulateur utilisé). A l’issue de ce petit travail, vous disposerez donc de 3 modèles d’en-tête que vous garderez précieusement [figures MODLHRS1, MODLHRS2 et MODLTEXT.GIF]. Les fichiers .tap correpondant à ces 3 en-têtes sont dans le zip joint à cet article.

    Récupérez les DUMPs

    La procédure de récupération des écrans est maintenant simple :

    1. Lancez Euphoric en mode Atmos, pressez F1, validez “Hardware tape” et indiquez le nom du fichier .wav à traiter, (par ex. LOGOR.WAV qui n’existe pas en version .tap). Pressez F1 pour revenir à l’Atmos.
    2. Tapez CLOAD”” et chargez le fichier .wav. Tiens cela n’a pas changé : C’est toujours très long ! Sauf que 2 appuis sur la touche F4 et ça charge 4 fois plus vite ! Retour à la vitesse normale par un appui sur la touche F5.
    3. Le programme se lance. Guettez le moment où s’affiche l’écran que vous désirez sauver et pressez la touche F9 (dump mémoire) puis sur F11 (débogueur). En mode débogueur l’exécution se fige, ce qui vous laisse le temps de renommer le fichier DUMP obtenu (par ex DUMP01 etc.), sinon il sera écrasé au prochain appui sur la touche F9. Nouvel appui sur la touche F11 pour sortir du débogueur. Guettez le prochain écran intéressant (s’il y en a), F9 puis F11, etc.
    4. Notez qu’il est possible de recharger un des états ainsi sauvé pour reprendre l’exécution du programme là où elle en était, en relançant Euphoric avec “Euphoric -a –r” (attention le nom du fichier utilisé par Euphoric sera DUMP tout court).

    Petite difficulté dans mon système : Euphoric sauvegarde le fichier DUMP dans le répertoire “Tapes”, mais si on relance avec “Euphoric -a –r”, Euphoric cherche DUMP dans le répertoire “Euphoric”. Mais c’est sans doute un problème de configuration.

    Et enfin, récupérez les écrans

    Vous vous trouvez maintenant en possession d’un ou plusieurs fichiers DUMPxx. Il faut en extraire la zone écran qui vous intéresse et lui coller un en-tête ad hoc par devant. Prenons par exemple le format Hires long (avec les 3 lignes de texte en dessous) situé en Ram de #A000 à #BFDF.

    Dans votre éditeur hexadécimal :

    1. Ouvrez le modèle d’en-tête correspondant, soit MODLHRS2. CTRL+A puis CTRL+C pour copier les 23 octets du fichier.
    2. Ouvrez un nouveau document. CTRL+V pour y coller l’en-tête. Editez les 8 caractères “MODLHRS2” pour renommer votre fichier .tap
    3. Ouvrez le fichier DUMPxx à traiter. Sélectionnez les #1FE0 octets correspondant à l’écran Hires. Par exemple Goto #A000 puis Select bloc #1FE0, puis CTRL+C.
    4. Allez dans le nouveau document, à la fin de l’en-tête, CTRL+V, pour y coller l’écran.
    5. Sauvegardez votre écran au format .tap par exemple sous le nom ECRANxx.tap. C’est fait.

    A suivre…