Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Connexion avec identifiant, mot de passe et durée de la session

+-Merci d'utiliser le forum pour les demandes d'aides sur fusion.

24 juillet 2017 à 16:19:11 arthurh dit: Salut Cristal Noir, j'espère que tu vas bien. Ouep c'est ce qu'ils m'ont dit. le soucis est que je n'ai pas de trace ni dans les e-mails, ni dans le manager OVH. cet oubli est volontaire je pense car des .com gratuits, j'en ai un paquet. Sur les anciens plans, tu en avais 2 par année où tu restais chez eux. J'ai 2 plans et quasiment le maxi en nombre de .com gratuits. je pense qu'ils aimeraient bien qu'on se barre de chez eux, vu que je n'ai pas envie de passer à leurs autres plans, bien plus mauvais commercialement.
24 juillet 2017 à 10:02:26 Crystal Noir dit: Oui, sauf que les admins ont été prévenus au mois d'avril des arrêts des services Streaming et FTP anonyme. J'ai reçu un mail de leur part dans ce sens, la boîte dans laquelle je bosse ayant un hébergement là bas, donc c'est pas vraiment une surprise :) Ce qui est curieux c'est que dans le mail envoyé ils avaient dit que les données liées à ces services seraient supprimées à compter du 20 Avril. Remarque, ils ont peut être merdé dans les envois de mails pour prévenir ^^
13 juillet 2017 à 13:43:17 arthurh dit: sur les plans OVH tu as une partie ftp pour t'occuper de ton site, et une partie ftp2 qui est alloué pour faire du ftp anonyme pour le téléchargement de fichiers. Le téléchargement de gros fichiers est interdit via http chez OVH, il faillit obligatoirement utiliser ce ftp2. Et ils l'ont fermé... le pire c'est que tu payes l'année d'avance... bandes d'empaffés d'OVH
13 juillet 2017 à 12:14:37 Monos dit: Comment ça des services FTP ?
13 juillet 2017 à 10:38:17 arthurh dit: Hello, OVH vient de virer son service de FTP de ses offres. On vient juste de s'en rendre compte avec des internautes qui nous ont prévenus que nos liens ne fonctionnaient plus. Donc si vous avez des hébergements chez eux...
07 juillet 2017 à 18:25:01 Seyjin dit: Merci, c’est l’extension Color Dialog que je cherchait. Il me semblait avoir bien cherché "color" dans le gestionnaire pourtant.
07 juillet 2017 à 18:05:48 Emmanuel dit: regarde la http://comptoir-mmf.eu/Forum/index.php?topic=653.0
07 juillet 2017 à 17:58:38 Emmanuel dit: Seyjin il me semble qu il y a sur le forum un mfa
07 juillet 2017 à 16:49:56 Seyjin dit: Merci mais je cherche à faire ça dans Fusion.
07 juillet 2017 à 16:03:47 Pit73 dit: http://www.proftnj.com/RGB3.htm
07 juillet 2017 à 16:03:35 Pit73 dit: http://www.proftnj.com/RGB3.htm
07 juillet 2017 à 15:37:25 Seyjin dit: Dites, avant que je me plonge dans une méthode chiante pour convertir une couleur hexadécimale en valeur RGB, il y aurait pas une fonction cachée quelque part pour faire ça dans Fusion ?
04 juillet 2017 à 12:14:53 Monos dit: Merci du compliment. J'ai reçu l'everdrive megadrive hier midi. Testé hier soir et ce matin, ça fonctionne, c'est génial.  <3
04 juillet 2017 à 06:45:08 conceptgame dit: Monos, ce malade! :)
02 juillet 2017 à 07:35:43 Monos dit: Il y a 15 jours j'ai acheté une DC (et une megadrive ce week end, j'attend un everdrive pour cette dernière). Avec Bex, il est "facile" d'installer et de programmer cette dernière depuis le pc. C'est un langage basic qui créer directement la rom, et pas lourd surtout à installer. Tu télécharges le log, tu l'installe, tu programmes. Je vais y regarder un peu de plus prêt les semaines avenir.
01 juillet 2017 à 22:58:18 graboide dit: j'ai trois Dreamcast elles ont toutes lâché vraiment très très fragile comme console, mais aussi la meilleur de tout les temps ;)
01 juillet 2017 à 15:46:55 Monos dit: Je suis en train d'adapter Prisonnier, le jeu flash de Capitaine Caverne sur Dreamcast aprés en avoir fait une version Amiga.
Hi hi. J'ai achêté une DC il y a 15 jours, et j'ai les outils pour dev dessus. Bon j'ai pas encore fait de test DC, je suis en train de coder la version "pc" qui servira aussi pour la Dc(mais je ne fais pas de sortie pc). Cela se code en C.
01 juillet 2017 à 15:45:25 Monos dit: http://img110.xooimage.com/files/d/4/e/priso-dc-2-5294d63.png
25 juin 2017 à 12:17:22 Crystal Noir dit: Merci !
24 juin 2017 à 09:55:36 Cyberclic dit: Top ! Bon rétablissement :)
23 juin 2017 à 09:17:28 arthurh dit: C'est une bonne nouvelle !!! :)
22 juin 2017 à 19:58:47 Monos dit: yeah crystal
22 juin 2017 à 14:02:20 Pit73 dit: Coooool !!! Courage man !!
22 juin 2017 à 12:35:11 Crystal Noir dit: Hello, pour ceux qui ont suivi mes déboires : ma 4ème opération s'est pas trop mal passée, petite complication de dernière minute mais ca va, après un mois de convalescence je devrais reprendre le taf Lundi, malgré un transit capricieux...En résumé suis toujours vivant :D
20 juin 2017 à 22:04:23 Pit73 dit: c fée
Voir l'historique

UserBox

Welcome, Guest.
Please login or register.
 
 
 
Mot de passe oublié?

Bientôt

Surprise

Liens

Messages non lus

Télécharger

Divers

Twitter

Les extensions pour MMF2

FaceBook ClickTeam France

Derniers messages

Re : Programmer les consoles rétro. par Monos
Aujourd'hui à 04:37:04

Re : KWARN Armada Tactics (K.A.T) par Nuagedan100
27 juillet 2017 à 20:32:29

Re : Klik défi n°7 >> I.A Monsters Pacman. par Patrice
27 juillet 2017 à 20:20:26

Re : Matrix Rainning Screen Effect par Patrice
27 juillet 2017 à 20:13:10

Re : Matrix Rainning Screen Effect par Cyberclic
27 juillet 2017 à 20:09:58

Re : KWARN Armada Tactics (K.A.T) par arthurh
27 juillet 2017 à 19:30:00

Re : KWARN Armada Tactics (K.A.T) par arthurh
27 juillet 2017 à 19:27:13

Re : KWARN Armada Tactics (K.A.T) par Nuagedan100
27 juillet 2017 à 19:25:56

Re : Matrix Rainning Screen Effect par Nuagedan100
27 juillet 2017 à 19:24:39

Re : [Projet] Space Avenger - Empire of Nexx par Nuagedan100
27 juillet 2017 à 19:23:47

Re : [Projet] Space Avenger - Empire of Nexx par Eagle4
27 juillet 2017 à 15:58:48

Re : Klik défi n°7 >> I.A Monsters Pacman. par volgot
27 juillet 2017 à 12:05:07

Re : Devenir Graphiste en Amateur ! par ValLoche23
27 juillet 2017 à 10:42:23

Re : Re : Klik défi n°7 >> I.A Monsters Pacman. par Cyberclic
27 juillet 2017 à 08:47:38

Re : Programmer les consoles rétro. par Monos
27 juillet 2017 à 04:33:28

Re : Klik défi n°7 >> I.A Monsters Pacman. par arthurh
26 juillet 2017 à 19:20:48

Re : Matrix Rainning Screen Effect par arthurh
26 juillet 2017 à 19:17:45

Re : KWARN Armada Tactics (K.A.T) par arthurh
26 juillet 2017 à 19:16:29

Matrix Rainning Screen Effect par Patrice
26 juillet 2017 à 19:15:47

Re : Klik défi n°7 >> I.A Monsters Pacman. par Kloug
26 juillet 2017 à 19:10:18

Nouveau Clickeur

Jweffz
Mogem
Ai-Dail

Membre en ligne

7 Invités, 0 Utilisateurs

Auteur Sujet: Programmer les consoles rétro.  (Lu 410 fois)

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #15 le: 09 juillet 2017 à 07:41:24 »
Je bute sur les sprites, M. Louvet va me donner de la doc bientôt <3
Alors je sais faire quoi sur mégadrive ? Pas grand chose. Afficher des tiles, savoir les mémoriser en la mémoire Vidéo, savoir les poser sur un plan, gestion des pad (ça c'est simple) utiliser une palette de couleur mais c'est encore la cata pour avoir la bonne couleur que je veux vu l'encodage. Ah un truc , l'encodage c'est pas Rouge, Vert Bleu , mais l'inverse,  Bleu, Vert, Rouge !  0x0BVR



arthurh

  • Clickeur bien intégré
  • Messages: 744
    • Voir le profil
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #16 le: 09 juillet 2017 à 08:05:18 »
tu butes sur quoi sur les sprites ? Du temps où j'avais fait un peu de basic, on avait une bande de sprites et tu affiches une zone de ta bande, tu fais une translation en X, tu re-affiches etc... de tête tout était dans une boucle For avec une re-init à la valeur limite. reste juste à mettre en place un timer pour cadencer ton anim (le temps entre 2 images).

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #17 le: 09 juillet 2017 à 08:48:08 »
On va commencer à afficher un "sprite" ça sera déjà bien xd.

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #18 le: 09 juillet 2017 à 08:54:17 »
J'ai fais une erreur de calcule dans les posts précédent. Un tile de 8px prend bien 32 octets de place mémoire et non 64.

Un morceau de tiles est égale à 8px par 8px. Quand on mémorise dans un tableau un tiles :
....
0x11111111
0x13333333
0x13333333
0x13333333
0x13333333
0x13333333
0x13333333
0x13333333
....

Une entrée c'est une ligne de 8px codé sur 8 valeurs Hexadécimale qui représente un point sur l'écran et une couleur de la palette. Il faut "deux valeurs" hexadécimale pour faire un octet. (h00=>hFF => 0 à 256 soit 8 bits donc un octet, donc une case mémoire quoi !) donc 8/2 = 4 octets par ligne. Il y a 8 lignes donc 32 octets pour un tiles de 8 * 8. (128 octets pour un tile normale on va dire de 16 par 16.)

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #19 le: 16 juillet 2017 à 08:46:06 »
Second Baisc, un autre logiciel pour créer des jeux sur mégadrive.
Lien

Il a l’avantage d'être toujours en dev par apport à Bex. enfin sa dernier update date quand même d'un an. (Et il reprend bex en tous cas c'est un peu sa suite logique)

Ils fonctionne pas trop mal, facile à installer.  J'arrive à gérer un peu les tiles et sprites chose que j'ai pas réussis avec le SDK en C pour les sprites.

J'ai remarqué un truc rigolot, les 255em premier slot de la vidéo ram c'est de l'ascci ! si je remplace le bloc 65 par exemple par un autre graphismes et que je fais un print "A" ça affiche le nouveau "tiles".

Ce qui est finalement logique. Un tile c'est 8*8 points. Un lettre c'est 8*8. On peux placer un tile que sur les cellules, et pas au point prés. (les sprites oui)
Donc j'en déduit que print "..." c'est un DrawTile ASC("")x,y
x,y c'est le locate X,Y du print ah ah.

Bon ça ne sert à rien mais c'est rigolot de voir ça. Il y a peut être quand même une différence dans l’exécution.

Second Basic c'est fort sympa, j'ai un "débuger" avec la liste des variables, son type, et ou elle se trouve en mémoire.

SB à 4 types de variables.
- Les Unsigned Integer (16 bits soit  2 octets la variable)
- Les Unsigned Long (32 bits soit 4 octets la variable)
- String (rien à voir avec les sous vêtements)
- Arrays (Tableau)

Il n'y pas de variable signé donc il ne connais pas les valeurs négative.
Je viens de faire un test :
A=-50
Print A
et le résultat me donne 65486

Heum 65486+50 = 65536

Autre test avec un -1
65535

Allez fin du suspense, une valeur int permet de mémoriser un nombre entre 0 et 65535, donc si on ajoute 1, ça repart à 0 !
(2 octets donc 256*256 => 65536 donc 0 => 65535)

Un long codé sur 32 bits = 4 octets donc 256*256*256*256 : (4294967296)=> 0 à 4 294 967 295
C'est pour ça que les windows 32 bits ne peuvent pas adresser en mémoire plus de 4Go en même temps ! Car le "compteur de mémoire" c'est une variable de 32 bits pour mémoriser les adresses mémoire (je fais simple).

Cela d'un système 64 bits permet lui d'aller théoriquement jusque à 256 puissant 8 = 281 474 976 710 656 octets.
Les Consoles/micro ordi 8 bits avait 'souvent' un "bus" de mémoire de 16bits. Donc 65 535 octets adressable simultanément. Pour ça que nous avions souvent 64ko de mémoire maximum sur les vieux ordi, mais avec les échanges de partie de mémoire avec une autre, le CPC 6128 avait plus de mémoire indivisible mais pas en même temps... (Bank Memory)

Voilou pour le nouveau truc made in monos xd"









Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #20 le: 21 juillet 2017 à 07:23:53 »
Je vais écrire des articles pour oniro et pour mon site rétro. Cela fais une semaine sur je suis sur ça (les articles en préparation sont sur le fofo privé d'oniro)

Voici le premier chapitre (J'ai pas fini de corriger mes fôtes)
J'aimerais avoir un retour sur l'introduction.

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #21 le: 21 juillet 2017 à 07:24:00 »
[size=18]Introduction : Programmer la mégadrive Facilement, présentation de la bête[/size]

La mégadrive, première du nom, elle claque niveau disign non ?

Bienvenue dans cette nouvelle série de tuto qui à pour thème, programmation de la mégadrive et entrer dans le vrais monde du Homebrew !
Je vais tenter de vous apprendre les bases pour manipuler cette console.

Il existe sur le net plusieurs moyens de la programmer avec différent langage.
Vous pouvez partir sur le SGDK par exemple qui est une librairie pour le langage de programmation C par D.Stephane un bon frenchy. (cocorico) Ou alors se simplifier la vie avec  BasiEgaXorz. Qui est un ide simple d'utilisation et d'installation. Le langage utilisé et les Basic.
Mais je vous propose plutôt d'utiliser Second Basic qui est le petit frère de Bex. Notons aussi qu'il y a moment de la programmer directement en assembleur ce qui permet de gérer la machine à l'octet prés !


La mégadrive c'est quoi ?



La Mégadrive (Ou génésis) est une console réalisé par Sega sortie aprés la master system. Elle est sorti au pay du soleil levant le 29 octobre 1988. Le 14 Aout 89 au USA, Aout 90 en Corée sur sud, et le 30 novembre 1990 au pays du fromage qui pue !

Elle possède un système de cartouche pour lire les jeux, et deux port manette DB9 pour les contrôleurs. Elle est nativement rétro compatible avec la Master Système mais il faut un adaptateur de cartouche spécial pour utiliser les cartouches de sa grand soeur.

La mégadrive possède deux processeurs.
-Le Motorola 68000 qui est un processeur 16/32 bits cadencé à 7,6 Mhz.
(On retrouve ce processeur dans les premiers micro mac, l'atari St, la console jaguar, Amiga 1000,2000,500,500+,600), Sega Saturne enomade  mega Cd 32, et Neo Géo) (

-Le processeur secondaire est le fameux Zilog Z80 qui est un processeur 8 bits.
(Master system, Game Boy, Game Gear, Neo Géo (en coprocesseur), MSX, Amstrad CPC et CPC+, Zx Spectrum, VG500,ZX80,Zx81)
Ce processeur est la pour s'occuper du son de la machine et de la rétro compatibilité avec la master system. (Et oué la mégadrive c'est du son 8 bits !)

La mémoire dans la peau :

La Mégadrive à plusieurs types de mémoire qui peut être travaillé :

Elle possède 64ko de Ram pour l'usage principale. ($FF0000 à $FFFFFF))(65535 kio)
Elle possède aussi 64ko dédié à la Vidéo Ram. ($C00000 à $DFFFFF)(65535 kio)
Elle possède 8ko de Ram dédié au Z80 pour le son ($A00000 à $A01FFF) (8,191 kio)

La mégadrive peut bouffer des cartouches qui varient entre 256ko de mémoire à 4 Mo. (Voir plus avec système pour inter changer des morceaux de mémoire par une autre ! Le Bank Switching)
-Les adresses mémoires se trouvent au début de la memory card de la mégadruve, $000000 à $4000000
-Des cartouches peuvent être équipé de SRAM qui permet de garder informations une fois la machine éteinte.


Au niveau affichage graphique, elle peut afficher 320 x 224 points ou  320 x 448 points à l'écran.
La mégadrive peut avoir 4 palettes de 16 couleurs en même temps ceci dit la 1er couleurs de la palette est toujours transparente. (Elle a un spectre de 512 teintes), et 80 sprites machines (32x32 points maxi) peuvent êtres affichés à l'écran.
La megadrive permet de faire du scrolling hardware et possède 3 plans (calques) d'affichages.

Au niveau capacité sonore :

Elle possède deux circuit : le Yamaha (Vroume Vroume) YM26123 et le SN76486 pour être compatible MS. (Non pas maso sado mais Master Système oh lolo !)

La mégadrive permet d'avoir 10 canaux sonore avec deux configurations qui sont possibles.
1) -6 Canaux Fm + 3 canaux PSG + 1 de bruit
ou
2) -5 Canaux  FM + 1 canaux PCM + 3 canaux PSG + 1 de bruit.

D'autre look de la bête


Le Look de la génésis !


La mégadrive II qui se calque sur un disign plus soft


La version Génésis du modèle II



La Génésis III, une version bas de gamme de la console

Le Dico du Chapitre !

Adresse Mémoire : Un case mémoire peut mémoriser une valeur entre 0 et 255 compris (1 octets soit 8bits). Une adresse mémoire est tout simplement le numéros de la "case" pour son identification.  Exemple la case mémoire numéros 169. Pour la simplification de lecture elle est souvent exprimé en valeur Hexadécimale. h361 pour cette exemple.

Assembleur : Type de langage de programmation avec des mots clefs mémo-technique pour des actions.   Exemple : Move.B 5,DO => Place la valeur 5 dans la case mémoire du processeur qui porte le Nom de D0 (Un registre)

Basic : Langage de programmation conçu en 1964. Souvent utilisé pour initier à la programmation dans le passé. Les vieux micros ordinateur 8 bits (C64,Amstrad Cpc,MSX,MO5...) sont équipés du basic au démarrage.

Binaire : Système de comptage sur une base de 2 (0=>1)

C : Langage de programmation   conçu en 1970. Le C permet d'être proche du système et par apport au basic de mieux gérer la mémoire.

Hexadecimal : Système de comptage sur une base de 16 (0 => 15) avec l'utilisation des lettres A à F pour représenter les valeurs 10 à 15.

Homebrew : (Fait maison) Réalisation d'un programme sur une machine dont en théorie nous avons pas le droit.  Si nous nous tenons à ça, les jeux maisonréalisés sur les consoles  8 et 16 bits de Sega et de Nintendo sont des Homebrew car il faut officiellement une licence. Les jeux maison réalisé sur les micro ordinateur comme Amstrad,Amiga,Atari ne sont pas des HomeBreaw car il n'y avait pas besoin de licence.  Ni sur les plus vielles consoles comme l'atari 2600. Ceci dit le terme Homebrew est plus ou moins utilisé par la création amateur de jeu vidéo souvent lié au vielle machine.

Memory Card : Carte de la mémoire d'un système, C'est tout simplement l'organisation de sa mémoire pour savoir ou se trouve l'espace programmable par exemple, ou se trouve les données que le système va lire pour afficher les graphismes...

Sprite Machine : Morceau de Graphisme directement géré par un processeur graphique dédié. A contrario d'un Sprite Sofware ou c'est en programmation pure que le morceau de graphisme est géré.

Rom : Read Only Memory ou mémoire morte. C'est des données qui ne peuvent pas être effacés, ni remplacé (du moins comme ça). C'est "les bios" de vos machines, les cartouches (ou du moins une partie des cartouches) de vos jeux consoles...

Ram : Random Access Memory ou Mémoire Vive. C'est des données volatile. Elle s'efface à l’arrêt du système. Elle permet d'enregistrer les données du système comme le résultat d'une opération, la mémorisation des la position X / Y de votre perso...

Son FM : Le Son est géré avec de la modulation de fréquence.

Son PSG: Générateur de Son programmable.

Son OM : Non je déconne pour celui la.

Son PCM :  Pulse Code Modulation. Le Format des CD c'est du PCM

Sprite Machine : Morceau de Graphisme directement géré par un processeur graphique dédié. A contrario d'un Sprite Sofware ou c'est géré en programmation poru gérer les mouvements, la superposition...


Des jeux HomeBrew sur la Megadrive
Papi Commando
Réalisé par Veteaz. (Une nouvelle version est en court d'écriture)

C'est un commando Like.

Pier Solar

Un RPG à l'ancienne sur la machine de Sega.

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #22 le: 22 juillet 2017 à 08:53:57 »
[size=18]Chapitre I:Installation des outils[/size]

Pour programmer la bête de chez Séga, il nous faut des outiles ! Deux programmes à vrais dire. L'IDE (le logiciel de programmation pour faire simple) qui permet d'écrire son code et d'exporter le fichier lisible par la console. Et un émulateur mégadrive.

Second Basic
Vous allez chercher le logiciel à cette page :
Lien
Télécharger  le Windows Version et le Patch Update Only.
(ou la version mac si vous êtes sur mac mais je vais parler de la version Windows.)

Installé le Logiciel, c'est très simple. Vous acceptez la licence, vous installé ça à la "racine" de votre disque dure et pas dans les programmes files. (Recommandation de l'auteur du logiciel)...

Une fois l'installation terminée, allez dans le dossier ou se trouve le logiciel et remplacer l'exe par celui du patch !

Vous êtes prés à programmer maintenant !



Nous allons faire un petit tour du propriétaire et débuter avec les menus. (Qui sont à la carte ! )

File :
=>News : Création d'un nouveau fichier de programmation.
=>Open : Ouvrir un fichier de programmation.

=>Save : (Controle+S c'est pratique), permet de Sauvegarder votre fichier de programmation.

=>Save As : Permet de sauvegarder votre fichier de programmation sous un nom que vous allez choisir !
=> en dessous de Save As vous avez des liens de rappelle pour ouvrir rapidement des anciens fichier.
=>Exit : Quitter le programme comme si vous utilisez la croix !

 
Edit :
=>Undo : Revenir en arrière. Le Controle + Z quoi
=>redo : Annuler le retour en Arrière.

=>Cut :   Couper la sélection et la placer en mémoire
=>Copy : Copier en mémoire la sélection.
=>Paste:  Coller ce qui est en mémoire

=>Delette : Effacer la selection mais ne pas la placer en mémoire
=>Find : Rechercher une chaîne dans le document.
=> Replace : Changer une Chaîne dans le document par une autre.
=>Select All : Selectionner tout le document.
=>Goto Line : Aller à une ligne voulu. (Bug ? il faut utiliser le racourcie Contre + G)
=> Préférence : Ouvre la fenêtre des préférence du logiciel.

View :
=> Compiler Log : Affiche ou Cache la zone toute en bas qui permet d'avoir des informations sur le compiler.
=> Project Browser : Affiche ou Cache la zone toute à gauche qui permet de voir des options sur le projet en cours.
=> ASM Out : Affiche ou Cache la zone qui va se trouver toute à droite, C'est du code Assembleur. La translation du programme Basic => Assembleur et qui sera compilé en Langage Machine lissible par la mégadrive.

=>Cascade : Quand il y a plusieurs fichier ouvert, permet de les empiler lles un sur les autres pour les voires tous !
=>Tile Honrizontale : Pour les placers les uns  au dessus des autres.
=>Tile Vertical : Pour les placer les uns à coté des autres.

Run :
=> Compile : Permet de compiler votre programme basic
=> Clean Compile : Permet  aussi de compiler votre programme basic mais sans lancer les émulataur et Application Externe. (f9)

=> Compile ASM : Permet de compiler votre programme ASM
=> Clean Compile ASM : Permet  aussi de compiler votre programme ASM mais sans lancer les émulataur et Application Externe.

Tools :
=> ASCII Code : Permet d'afficher la table ASCII de la mégadrive.
=> Palette Editor : Permet d'afficher la palette de couleur de la mégadrive pour trouver le code couleur et son code couleur.
=> Wave Générator : Permet de sortir des valeurs pour créer des courbes sinus, cosinus, tangente...
=> VGM to XGM converteur
=> Wav to RAW converteur

Help :
=>Help Topic : Permet d'avoir l'aide du logiciel (en anglais), mais il y a toutes les fonctions dedans, a lire.
=>Index : C'est l'aide mais sur la page index.
=>Seconde Basic on the web : Les pages webs du site officiel du logiciel.
=>About Second Basic : Licence, numéros de version....

Nous allons maintenant faire un petit tour sur le Projet Brower il contient trois onglets.
-Properties
-Files
-Statistics

Nous allons nous intéresser au Properties. (Propriété)

Header
C'est l'en tête de la cartouche.
=>Console Name : Vous avez le choix entre la Sega GENESIS ou MEGADRIVE.
=>Copyright :  Vous avez le droit à 16  caractères pour inscrire votre nom/bote/date...
=>Domestic Name :
=>Overseas Name :
=>Game Version : Pour inscrire la version de votre jeu.

Sram Option
C'est les options de sauvegarde tous simplement.
=>Enable SRAM : Cochez cette case pour activer la sauvegarde.
=>Addressing Mode : Trois mode d'adressage, ODD, Even, Both (les deux)
=> Start Adresse : Adresse de départ de la partie Sauvegarde
=> SRAM SIZE : Taille dela sauvegarde. (64 ou 256)

Region Settings
Configuration de la cartouche pour le zonage.
USA/EUROPE/JAPAN

Pour les Files, il y a deux options en bas, ajouter ou retirer un fichier.

Et Statistics :
Ce qui est super important c'est la Variable List qui indique les nom et type de variable avec leurs adresse
Quand vous compilez vous avez aussi des informations important.
Memory Used : xx bytes qui représente le nombre octets utilisés.
Memory Available : Le nombre octet libre qui reste
Rom Size : La taille de la rom.

Les préférences
Un petit tour dans les préférences :


Style Editor
=>Dans le cadre Style Editor : Vous pouvez sélectionner un type d'écriture donc vous allez changer de couleur.
Comments : Pour les commentaires qui se trouve après '
Keywords :  Les mots clefs (Print, Locate,...)
Numbers : Les nombres
Operators : Les opérations comme + - = < > ...
Scrope :
Strings : Les chaînes de caractères.
System Variables : Les variables
Line Number : Les Numéros ligne
Line Number Bg : L'arrière plan des numéros ligne.

=> Color Style :  C'est ici que vous changez les couleurs selectionnés dans le Style Editor
=>Editor Color : Vous pouvez choisir la couleur d'écriture  avec Foreground Color et l'arrière plan de l'éditeur dans Background Color.
=> Font Style : Le choix de la police d'écriture. Le Font Size c'est la taille. Cochez Bold pour gras, Italic ou en italique, et Underligne pour souligner.
=>Normalise Keywords : Force la première lettre en majuscule et le reste en minuscule des mots clef.
=>Syntax Higlighting : Active ou désactive la couleur appliqué au mot clef
=> Themes => Choix d'un thème et vous pouvez le sauvegarder avec l'icone de la fenêtre.


Compiler
Voici les options qui sont liés au compilateur.
=> General Option
 Force OPTION EXPLICITE : Oblige le codeur à déclarer les variables.
 Clear \WORK \ folder on exit : Efface le contenu du dossier WORK quand on quitte l'ide
 Start SecondBasic With a Blank Document : Ajoute un fichier vierge au démarage du logiciel.
 Save all unsaved source code... Sauvegarde automatique du bouzin en cas de crash !

Save compiler log to \Log : Sauve des donnée de compilation dans Log

Defaut String Size : Permet de gérer le nombre d'octet dans une variable string. Attention à ne pas faire ça en cours de route car ça risque de merder si on dimunue la taille des variables ! (128 par défaut)

Most Recenly Used :

=> Post Compiling :
Copy ROM to project Folder : Le .bin du projet est dans le dossier de projet
Copy ASM source to Project : le ficheir source ASM se trouve lui aussi dans le dossier.
Run emulateur after compile : Lance l'émulateur mégadrive aprés la compilation
Run External APP after compile : Lance une application externe après compilation

Assembler OPtion
Use ASMX.EXE (defaimt) Lance l'assembleur ASMX
sinon il faut en linker un autre.





Application
Cette fenêtre permer de place des liens d'application.
=>Tool
-Graphic Editor : Editeur Graphique
-Music Tracker : Un traker
-Hex Editor : un éditeur Hexadécimal
-Misc Tool : Autre utilitaire.

=>Post Compile Application
Emulator: Le lien de l'émulateur
External App : Autre logiciel

Lunch EMulateur First : Lancer l'émulateur en premier après la compilation sinon c'est l'application externe.



Misc



Emulateur Megadrive
Sans émulateur vous n'allez pas loin.
Lien
Voici une page pour télécharger un émulateur.

Kega Fusion
Gens

Il y a aussis Kmod ! Lien
C'est  Gens avec des ajoutes pour le développement de jeu.

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #23 le: 22 juillet 2017 à 09:30:51 »
[size=18]Chapitre II :  Afficher du texte à l'écran[/size]

Nous allons nous faire plaisir avec du texte et comme souvent en programmation, nous allons nous servir du fameux Hello World qui sera afficher à l'écran de la Mégadrive avec Second Basic !

La commande pour afficher du texte est très très simple. C'est la fonction Print.

Print "Hello World !"
Vous pouvez compiler le programme et allez chercher la rom avec l'émulateur Mégadrive. Un beau Hello world ! S'affiche à l'écran. Bravos vous avez fait votre premier programme en Basic sur Megadrive.



Choisir la position du texte

Attention, ici il y a un piège à con vous allez voir.
La dimension d'une lettre affichée, fait 8 points sur 8.
Un truc marrant, l'écran est divisé en cellule invisible de 8 points sur 8.
 
Quand vous affichez une lettre à l'écran, vous ne l'affichez pas en position de pixel. (ou point je préfère parler de point que de pixel), mais en numéros de cellule.
Exemple : place le point à la 3em cellule horizontale et 2em cellule verticale.

2em truc important, la cellule en haut à gauche, (l'origine quoi) ) a pour coordonné X=0 (les Colonnes) Y=0 (les Lignes). Donc on passe à X=2 et Y=1.

Pour « choisir la cellule de départ » c'est la commande Locate. Mais la attention, un nouveau piège à con ! C'est Locate Ligne,Colonne. (On commence par les Ligne donc par Y puis X et non l'inverse).

Donc voici donc le code:

Locate 1,2
Print " Hello World  ! "


Gardez vraiment en mémoire cette histoire de Cellule, c'est vraiment important pour la Mégadrive.

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #24 le: 24 juillet 2017 à 04:54:03 »
Chapitre III, Il m'est arrivé une tuile.

Tilsets... Cela vous dit qu'elle que chose ?
Les morceaux de tiles dans le monde du jeu vidéo est un morceau de graphismes qui collé bout à bout est la pour représenter votre monde, votre niveau du jeu, votre carte du jeu dans un RPG...  Si vous regardez des vieux jeux, vous pouvez voir que beaucoup d'élément de décors se répète dans la map.  (Même Mur, Même nuage ...)
Les niveaux/map ne sont pas des grandes images, ça consommerais trop de Ram et de place, mais des morceaux de tuile re composé.

La mégadrive fonctionne bien sur sur ce même principe ! Voici un morceau code pour afficher un tuile !

DrawTile 1,0,0
Cela affiche le tile (1) à la cellule X=0,Y=0
(Cette fois si c'est bien X au début et Y à la fin !)



Maintenant affichez le Tile 65 !
Un A ?

Et oui, sur la mégadrive, les lettres de notre alphabet sont des Tuiles. Et la 65em tuile c'est le A majuscule. A vrais dire les 255 premier tiles sont enregistré en mémoire et calqué sur le code ASCII. (Du moins avec Second Basic).Ce qui nous apprend d'un tile à pour dimensions  8 points sur 8 points et qu'ils ne peuvent être affiché seulement dans les cellules. Les tiles ne s'affiche pas au point prés.

Dans Tools/ASCII table vous avez le numéro du tile sa représentation ceci dit, faire un jeu comme ça graphiquement c'est pas vraiment génial ! Il va falloir en créer d'autre ! Et placer en mémoire vos propres tiles ! Pour cela nous allons utiliser une nouvelle fonction qui sont les "DATA" qui représente les donnés brutes contenus dans votre Rom Megadrive. Ensuite nous allons voir comment mettre les données en Mémoire Vidéo dédié au Tiles ! Et les afficher. Pour cette dernière vous savez un peu maintenant afficher un tile sur mégadrive avec Second basic, mais la méthode présenté plus haut vous permet d'afficher seulement un tile de 8 points sur 8. Il est fréquent dans le monde du jeu vidéo d'afficher des tiles d'une dimension de 16 * 16pts.  Et le Second Basic à des commandes pour ça !

Le Basic, un monde de Data !

Nous allons mettre en forme un premier tiles de 8 * 8 pts mais avant passons un peu au point technique.
La mégadrive possède une Mémoire vidéo de 64ko.  (65536 Octets pour être précis ! 65,536 kio). C'est le VDP de la mégadrive..

Pour un tile, une ligne est codé sur 4 octets. Chaque demis octets représente un point à l'écran donc un octet sert à calculé deux points à l'écran. (Nous verrons pourquoi dans une prochaine leçon). Ce qui veut dire que pour un tiles de 8 * 8 points, il faut 8 lignes donc 8*4=32 octets en mémoire pour un tiles.  Donc on va coder un truc du genre :

Tile1:
OOOO
OOOO
OOOO
OOOO
OOOO
OOOO
OOOO
OOOO


4 octets sur 8 lignes.
Pour cette première approche, on va dire que le premier demis octet si il est à 0 alors le point est noir et si il est 1 alors il est blanc ceci dit ce n'est pas du binaire. Idem prochaine leçon pour le pourquoi réellement. Nous allons plutôt parler de valeur hexadécimal. C'est une valeur compris entre 0 et 15. En sachant après 9 on utilise la lettre A jusque F. (Rien de bien méchant)

Un truc rigolo c'est que deux valeurs hexadécimal = 1 octet et c'est super lisible. (hFF = 255 =%11111111 = 1 octet !)
le % représente souvent une écriture binaire. Le petit h (ou grand H) représente souvent une valeur Hexadécimal. Nous pouvons retrouver aussi le sigle du dollars : $ )
Maintenant nous allons dessiner un carré vide à l’intérieur en hexadécimale.

h11111111
h10000001
h10000001
h10000001
h10000001
h10000001
h10000001
h11111111

Chaque valeur = 1 point. 8 points par lignes (donc 4 octets ah ah) 8 lignes. Nous avons notre carré. Maintenant il faut l'intégrer dans la Rom, avec la commande Data. On va remplacer le h par le sigle $
et avant chaque ligne nous allons utiliser la commande Datalong. (On verra de nouveau plus tard ce que signifie réellement Long). Et on va placer une Étiquette à tout ça.

E_Tiles:
Datalong $11111111
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $11111111

Une étiquette se fini par :
Ce permet à certaine fonction de se brancher sur une autre partie du code.

Maintenant que nous avons dans notre programme, les tiles en mémoire Rom, il faut les charger en mémoire vidéo. C'est simple avec la commande :

LoadTiles Etiquette,Nombre de Tile à charger,Place du Tile dans la mémoire vidéo

OK nous avons qu'un seul tile à charger et nous allons placer ce tiles à la position 256.
Ce qui fait donc :
LoadTiles E_Tiles,1,256
Et enfin on affiche le tile avec DrawTile. Voici le petit programme :
LoadTiles E_Tiles,1,256
DrawTile 256,0,0

E_Tiles:
Datalong $11111111
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $10000001
Datalong $11111111



Alors tu me montees comment faire un tiles de 16 point ?
Non...
Aller si on place 4 tiles tous simplement.

DrawTile 256,0,0
DrawTile 256,1,0
DrawTile 256,0,1
DrawTile 256,1,1

Nous avons nos 4 tuiles dont une tuiles de 16 points sur 8... Bon pour "répéter" le même tiles de 8 points sur 8, c'est comme ça, mais nous allons faire mieux, placer en mémoire un tiles de 16 points sur 16. Pour cela il faut mémoriser 4 tiles. Allons y pour faire notre méga-tuile en carré !

E_Tiles:

Rem *  Tiles Haut Gauche *

Datalong $11111111
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000

Rem * Tiles Haut Droite *

Datalong $11111111
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001

Rem * Tiles Bas Gauche *

Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $10000000
Datalong $11111111

Rem * Tiles Bas Droite *

Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $00000001
Datalong $11111111

Maintenant avec la commande LoadTiles , nous n'allons pas entrer en mémoire une tuile mais bien 4
LoadTiles E_Tiles,4,256Attention : 256 c'est le numéris d'id de départ ou va se mémoriser les tiles.
La place 256,257,258 et 259 contient les nouveaux tiles dans cette exemple.

Et pour afficher les tiles ?

DrawTilesInc Numéros du tiles de départ,Position X,Pösition Y,Nombre de Tiles en Largeur,Nombre de Tiles en hauteur

]DrawTilesInc 256,0,0,2,2
Ce qui revient donc à faire

DrawTile 256,0,0
DrawTile 257,0,1
DrawTile 258,1,0
DrawTile 259,1,1

Magique non ?



Notons que la commande TilesInc2 permet d'afficher en premier les tiles en verticale.
Je vous encourage à tester donc tout ça, à modifier les 0 et 1 pour le moment et pourquoi pas faire une petite map en mode manuel !





Ah pour finir Rem cela permet d'afficher des commentaires dans votre programme...

Le prochain chapitre traitera des variables ! Un poil plus chientos car ce n'est pas graphique mais nous ne pouvons guerre couper à ça. !

Rem ***************************************
Rem * Affichage d'un Tiles pour mégadrive *
Rem ***************************************

Rem * Charge les données E_Tiles dans la mémoire vidéo *
LoadTiles E_Tiles,4,256

Rem ****************************************
Rem * Affichage des 4 tiles en position 0,0*
Rem ****************************************
DrawTilesInc 256,0,0,2,2

Rem *******************************
Rem * Les données du carré en Rom *
Rem *******************************

E_Tiles:
Rem Tile A
DataLong $11111111
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000

DataLong $11111111
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001

DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $11111111

DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $11111111


Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #25 le: 25 juillet 2017 à 05:26:48 »
Chapitre 4, les variables avec Second Basic
Cela va être lourd ! Je le sais, quand on débute, on aime pas les variables, et la cela ne va pas être ludique !

Bon Késako une variable ?  C'est une boite qui contient une valeur numérique ou une chaîne de caractère  (String, non bande de vicieux) et qui porte un nom.

Exemple la variable Vie contient la valeur 3 qui permet de mémoriser le nombre de vie du joueur. La variable  Nom contient la chaîne "Monos" qui contient le nom du joueur... Les variables peuvent être travaillé,, on ressort sa valeur, on la modifie, on en place une nouvelle, on en fait une addition avec une autre variable... Bref nous verrons des exemples.

Second Basic, possède trois type de variable.

-Les variables Integer. C'est les variables par défaut. C'est une variable qui prend 16 bits en mémoire soit 2 octets et permet donc de mémoriser une valeur entre 0 et 65 535

-Les Variables Long. C'est une variable qui prend 32 bits donc 4 octets et mémorise  une valeur comprise entre 0 et 4 294 967 295

C'est deux variables peuvent seulement prendre des valeurs numériques.

Et les strings qui permet de mémoriser des "lettres". Par défaut la place prise est de 128 octets (128 lettres)
(Il y a moyen de changer la taille des strings, mais nous verrons ça dans un autre chapitre quand nous allons étudier les tableaux)

En Basic pour mémoriser une valeur dans une variable c'est le signe égale.

Vie=3
On assigne la valeur numérique 3 à Vie.
Et si on fait Vie=Vie+Vie  ?
On assigne dans la variable Vie, deux fois sa valeur vie prend 6 si on garde l'exemple.

Nom$="Monos"
une variable de type Chaîne prend à la fin le sigle dollars et la chaîne doit être entre les guillemets.

Notons qu'une variable Long doit se finir par le sigle &
Vie&=4000000000000000

En Second basic, Vie et VIE c'est la même chose (Ce n'est pas sensible à la case comme on dit) mais attention vie$ est différent de vie& et de vie.

Déclaration de Variable
En basic, la déclaration des variables n'est pas obligatoire, mais reste conseillé quand même. Il existe une option dans le logiciel pour "forcer la déclaration des variables" mais semble occasionner des bugs quand on utilise des Fonctions et des Procédures.


Mais c'est partie voici comment réserver une variable integer (donc 2 octets)
Locale Nom_Variable AS IntegerCool non.
Pour un Long on remplace Integer par Long , et pour un string on remplace cela par String.


Afficher le contenu d'une variable à l'écran
Nous allons faire simple :
Print nom_variable
Et oui pour afficher le contenu de Vie un print vie et le tour est joué.
Si vous fait Print vie+vie ? Et ba vous allez avoir droit à une addition !

Une expérience !
On va faire une expérience pour vous expliquer un autre truc.

regarder ce petit programme !

Local Vie as integer
Vie=3
print vie
Vie=Vie-4
Print vie

La deuxième valeur affiche 65536 !
Heu normalement 3-4 devrait donner -1 non ?

Oui. Sauf que sur Second Basic, c'est des valeurs Non Signées, donc quand on passe en dessous de 0 , on repart à la fin. Et l’inverse est vrais. 65536+1 donnera 0.  (pour un integer). 

Culture Général
Les variables c'est le petit problème de beaucoup de basic.(pas tous) Souvent on passe à la simplicité des types de variables. Sur Second Basic ils sont donc tous non signées et peut être seulement des integer et des long pour les variables numérique. Elles consomment 2 et 4 octets. C'est la que certain langage sont plus précis comme le C / C++ il y a beaucoup plus de type de variable numérique et peuvent être signé. (c.a.d jouer vraiment avec les valeurs négatives). On peux avoir des variables binaire, (1 octet) par exemple. Signé ou pas. Ce qui permet d'économisé encore plus de place sur les petits systèmes.  Ceci dit beaucoup de basic permet quand même de travailler à l'octet prêt avec peek et poke ! Il y a des moyens d'économiser de la mémoire avec ce procédé. Mais ceci est une autre histoire...

Le prochain chapitre portera sur les boucles, ce qui va permettre d'afficher un début de map !

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #26 le: 26 juillet 2017 à 05:21:57 »
Chapire 5 : Boucle d'or ! Il faut le réveiller !
Une boucle en programmation permet de répéter  un "morceau" de code. Le basic propose plusieurs formule nous allons en voir deux, les deux les plus utiles.

La Boucle While
While permet d'entrer dans la boucle si la condition est vérifié.
Exemple tant que la variable X est inférieure à 10, va y tu peux entrer dans la boucle !

Une fois sortie de la boucle, on repart au début et on re teste la condition pour voir si y rendre de nouveau ce qui donne :

While X<10
Rem code
Wend

Si avant la boucle X n'est pas inférieure à 10, on saut la boucle.
Exemple  d'un petit code complet.

Local X as integer

While X<10 
Print X
X=X+1
Wend

For comme un Lion
La boucle For est une des boucles les plus utilisés en programmation.
Nous l’utilisions quand on connais le nombre de tour qu'il faut faire.

For condition to fin de condition
...
Next

Exemple :

Local X As Integer
For X=0 to 9
Print X
Next

X est initié 0, on afficher X, on repart au début et invisiblement X=X+1
et on repart, on affiche 2... quand X = 10, la "condition" n'est plus valable donc la boucle n'est pas joué.

Afficher une map de carré !

Voici le petit code pour afficher une petite map !
Rem ***************************************
Rem * Affichage d'un Tiles pour mégadrive *
Rem ***************************************

Rem * Déclaration des variables. *
Local X As Integer
Local Y As Integer


 
Rem * Charge les données E_Tiles dans la mémoire vidéo *
LoadTiles E_Tiles,4,256
 
Rem ****************************************
Rem * Affichage des 4 tiles en position 0,0*
Rem ****************************************

For Y=0 To 9
For X=0 To 9

DrawTilesInc 256,X*2,Y*2,2,2
Next
Next
 
Rem *******************************
Rem * Les données du carré en Rom *
Rem *******************************
 
E_Tiles:
Rem Tile A
DataLong $11111111
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
 
DataLong $11111111
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
 
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $11111111
 
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $11111111
 

Voici donc une carte de 10 cases sur 10 case.
For Y=0 To 9
For X=0 To 9

DrawTilesInc 256,X*2,Y*2,2,2
Next
Next

Voici les deux boucles for qui sont imbriqués.
Je débute toujours par Y, c'est plus pratique, mais ça on verra ça plus tard !
dans le DrawTiles, je multiplie X et Y par deux car dans cette exemple, avec une seule commande je pose deux tiles horizontalement et deux tiles verticalement !

Les boucles sont important en programmation. Peux importe le langage de programmation que vous utilisez et même en langage assembleur, les boucles existent.

Pour commencer, le déroulement principale de votre jeu est une boucle sinon une fois les commandes lu, la modification des données et l'affichage réalisé, le programme se termine ba il faut recommencer ce schémas...





Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #27 le: 27 juillet 2017 à 04:33:28 »
Chapitre 6 : A condition de bien coder !
Aller courrage, encore deux petits truc à voir avant de re faire joujoux véritablement avec la mégadrive.  Nous allons débuter avec les conditions. Et c'est un des plus gros points d'un programme car sans condition, tous le programme serait plus ou moins linéaire...

Une condition c'est un morceau de code qui sera effectué quand un élément est vrais. Exemple si la vie du personne est égale à 0 alors fin du jeun, retour à l'écran du jeu. Si la position X de votre héros est supérieur à 320, alors replace le héros à 320 pour éviter qu'il puisse sortir de l'écran...

Les conditions en basic, se fait avec If (Truc à tester) Then (Morceau de code) End IF.

Pour les trucs à tester, il existe plusieurs opérateurs. Voici une paire d'opérateur avec attention Piège à Con

> : Plus grand que
<: Plus petit que
=: Piège à Con si vous savez coder !!! C'est belle et bien égale à !

Oui en Basic on utilise seulement un seul = pour tester une égalité.

On peux aussi combiné le = avec le > ou <.
=> Egale ou plus grand
<= Egale ou plus petit
<> Différent.

Voici un exemple

Local Vie as integer

Vie=3
  If Vie > 0 Then
  Print "Le personnage est encore en vie"
End if

Maintenant si vous changez la valeur de Vie avec  0, le code entre le if ne fonctionne plus.

Regardez ce code :

Local Vie as integer

Vie=0
  If Vie > 0 Then
  Print "Le personnage est encore en vie"
else
  Print "Il est mort"
End if

Attention, j'ai bien placé Vie à 0.
Résultat ? Il est mort. Else, permet d’exécuter un code qui n'as pas été validé par les testes en amonts. Si X>0 Alors afficher du text pour dire  qu'il est en vie, sinon affiche le texte pour annoncer la mort !

C'est pas plus compliqué que ça.

Il existe aussi la commande ElseIf qui permet de tester différente valeur. Exemple :
Locale X as Integer
X=2

If X=1 then
  Print "1"
Elseif X=2 then
  Print "2"
Elseif x=3 then
  print "3"
end if


C'est cool non pour faire une suite de vérification vous ne trouvez pas ?  Aller un autre concepts utile dans les conditions, les multis conditions. AND et OR (Il en existe d'autre mais pour débuter c'est suffisant)

AND veux dire ET ! Dans une condition pour qu'elle soit Vrais, il faut que les deux expressions soit vrais, si une est fausse, le code ne peux pas fonctionner.

OR veux dire OU ! Il suffit dans le test qu'une seul condition soit VRAIS pour que le code fonctionne ! Jouez un peu avec ce code !


Locale X as Integer
Locale Y as integer

X=2
Y=1

If X=1 And Y=1 then
  Print "1"
Elseif X=2 And Y=1 then
  Print "2"
Elseif x=3 And y=1 then
  print "3"
end if


Vous pouvez aussi tester des variables contre variable.

If X=Y Then ... C'est autorisé les gens. ET ajouter des multiplicateurs, des soustractions....

If X+1=Y-1 then....

Faite un peu d'entrainement avec les conditions et les boucles ! C'est supras important pour un programme.

Mine de rien on avance bien, un petit point sur ce que vous savez ?

-Gérer un peu les conditions
-Gérer un peu les boucles
-Afficher du text
-Gérer les variables
-Mettre en mémoire des graphismes et les afficher sur l'écran.

Prochaine étape les Tableaux Numériques et après promis on retourne trifouiller la mégadrive avec des trucs cool !

Monos

  • Webmaster
  • Pilier légendaire incontournable
  • **
  • Messages: 2391
    • Voir le profil
    • Offgame
  • Google Play: Oui
  • Logiciel: Fusion 2.5Dev
  • Module APK: Oui
  • Module Flash: Oui
  • Module HTML5: Oui
  • Module iOS: Oui
  • Module XNA: Oui
Re : Programmer les consoles rétro.
« Réponse #28 le: Aujourd'hui à 04:37:04 »
Chapitre 7 : Au Tableau pour copier 10 fois, je n'oublie pas de déclarer mes variables !

Attention, jusque la ce que je raconte, c'est un jeu d'enfant, la je risque d'en perdre plusieurs. Ro non ne quitte pas la page, ce n'est pas non plus compliqué les tableaux ! Tu sais ce que c'est qu'une variable ? Imaginons une variable pour garder en mémoire le numéros du premier Tiles. Appelons ça  la variable Tile_1.
Maintenant passons à la deuxième cellule, Déclarons Tile_2, Nous allons continuer avec Tile_3, A ma carte à 100 tiles de coté. Je dois faire ça 100 fois ? Plus les verticales ? non non non non non !!!  C'est que des tiles aprés tous, on va réunir les variables l'un collé à l'autre avec de la super glue !  Et on va dire que toute ces variables porte le nom de Tile avec un indice.

Par exemple Tile 3 c'est la 3em variables collé (Attention mini piège à con)
Ba c'est ce que nous appelons ça dans le jargon informatique les Tableaux ou Array en langue anglaise.

Nous allons déclarer donc un tableau. Pour ça c'est simple !
Local Nom_Variable(nombre_de_case) As Integer (ou Long)
Et le tour est joué.
Ensuite pour placer une valeur dans un tableau c'est simple !

Nom_Variable(Numéros_de_la_case)=Valeur
Et pour afficher ?

Print Nom_Variable(Numéros_de_la_case)

Mouahaha

Local vie(10) As Integer
vie(4)=10
Print vie(4)

Bon j'avais dit qu'il y avait un piège à con ! un mini piège à con.
oui car quand j'ai dit que
quote]Par exemple Tile 3 c'est la 3em variables collé[/quote]
C'est faux !
Ce n'est pas la 3em variables (ou cas) mais la 4em car la case 0 existe !
On dit que c'est indexer sur 0 donc quand on déclare le tableau vie(10) en vérité on prépare 11 cases !

Tableau à deux dimensions
Et oué, jusque la on fait des lignes de case, mais on peux faire aussi des lignes en plus qui va avec le tableau. C'est la 2em dimension.
Pour aller chercher la valeur, il faut donc une coordonné X et Y dans le tableau !

Voyons voir ça ensemble en exemple plus parlant.

Local vie(10,5) As Integer
vie(0,2)=10
Print vie(0,2)

Bon on déclare un tableau en local qui à pour nom vie. Et la il y a deux valeurs dans cette exemple. 10 et 5. Ce qui fait donc 11 colonnes (Les coordonné X) et 6 lignes (Coordonné Y).

Vie(0,2)=10 veux dire mémorise la valeur 10 dans la colone 0 de la ligne 2.
et print vie(0,2)
veux dire ba affiche la valeur mémorisé en colone 0 de la  ligne 2.

Tout simplement


Ajouter  la valeur 1 à toutes les cases !
Bon voici un petit exemple dans un tableau à deux dimension pour initier le tableau à 1 !

Local vie(10,5) As Integer
Local X As Integer,Y As Integer

For Y=0 To 5
  For X=0 To 10
vie(X,Y)=1
  Next
Next


Print vie(0,2)

Et oui, une double boucle For imbriqué ! L'un pour les Y et l'autre pour les X.
Tien donc un truc que je n'avais pas dit dans les déclaration de variable !

Local X As Integer,Y As Integer
avec une virgule, nous pouvons déclarer les variables sur la même ligne. Attention à ne pas répéter le local bien sur !

Tableau à 3 dimension ou plus
Heum entre dans la 3em dimension.
Bon en déclarant une 3em valeur au tableau en entre dans la 3em dimension du tableau. (Le Z)
Pour identifier la case il faut donc 3 coordonnée.

Autre point,il est possible d'ajouter d'autre dimension avec ce logiciel... L'utilité est mince, mais c'est bon de le savoir. voici un exemple avec 5 dimenssions.
Local vie(10,5,5,6,10) As Integer
Local X As Integer,y As Integer

For Y=0 To 5
For X=0 To 10
vie(X,Y,0,5,3)=1

Next
Next


Print vie(0,2,0,5,3)

Voila on a fini une grosse partie du programme, maintenant avec tous ça on va jouer à un jeu , prochaine étape, afficher un Sprite Machine !

 


+-MiniChat

24 juillet 2017 à 16:19:11 arthurh dit: Salut Cristal Noir, j'espère que tu vas bien. Ouep c'est ce qu'ils m'ont dit. le soucis est que je n'ai pas de trace ni dans les e-mails, ni dans le manager OVH. cet oubli est volontaire je pense car des .com gratuits, j'en ai un paquet. Sur les anciens plans, tu en avais 2 par année où tu restais chez eux. J'ai 2 plans et quasiment le maxi en nombre de .com gratuits. je pense qu'ils aimeraient bien qu'on se barre de chez eux, vu que je n'ai pas envie de passer à leurs autres plans, bien plus mauvais commercialement.
24 juillet 2017 à 10:02:26 Crystal Noir dit: Oui, sauf que les admins ont été prévenus au mois d'avril des arrêts des services Streaming et FTP anonyme. J'ai reçu un mail de leur part dans ce sens, la boîte dans laquelle je bosse ayant un hébergement là bas, donc c'est pas vraiment une surprise :) Ce qui est curieux c'est que dans le mail envoyé ils avaient dit que les données liées à ces services seraient supprimées à compter du 20 Avril. Remarque, ils ont peut être merdé dans les envois de mails pour prévenir ^^
13 juillet 2017 à 13:43:17 arthurh dit: sur les plans OVH tu as une partie ftp pour t'occuper de ton site, et une partie ftp2 qui est alloué pour faire du ftp anonyme pour le téléchargement de fichiers. Le téléchargement de gros fichiers est interdit via http chez OVH, il faillit obligatoirement utiliser ce ftp2. Et ils l'ont fermé... le pire c'est que tu payes l'année d'avance... bandes d'empaffés d'OVH
13 juillet 2017 à 12:14:37 Monos dit: Comment ça des services FTP ?
13 juillet 2017 à 10:38:17 arthurh dit: Hello, OVH vient de virer son service de FTP de ses offres. On vient juste de s'en rendre compte avec des internautes qui nous ont prévenus que nos liens ne fonctionnaient plus. Donc si vous avez des hébergements chez eux...
07 juillet 2017 à 18:25:01 Seyjin dit: Merci, c’est l’extension Color Dialog que je cherchait. Il me semblait avoir bien cherché "color" dans le gestionnaire pourtant.
07 juillet 2017 à 18:05:48 Emmanuel dit: regarde la http://comptoir-mmf.eu/Forum/index.php?topic=653.0
07 juillet 2017 à 17:58:38 Emmanuel dit: Seyjin il me semble qu il y a sur le forum un mfa
07 juillet 2017 à 16:49:56 Seyjin dit: Merci mais je cherche à faire ça dans Fusion.
07 juillet 2017 à 16:03:47 Pit73 dit: http://www.proftnj.com/RGB3.htm
07 juillet 2017 à 16:03:35 Pit73 dit: http://www.proftnj.com/RGB3.htm
07 juillet 2017 à 15:37:25 Seyjin dit: Dites, avant que je me plonge dans une méthode chiante pour convertir une couleur hexadécimale en valeur RGB, il y aurait pas une fonction cachée quelque part pour faire ça dans Fusion ?
04 juillet 2017 à 12:14:53 Monos dit: Merci du compliment. J'ai reçu l'everdrive megadrive hier midi. Testé hier soir et ce matin, ça fonctionne, c'est génial.  <3
04 juillet 2017 à 06:45:08 conceptgame dit: Monos, ce malade! :)
02 juillet 2017 à 07:35:43 Monos dit: Il y a 15 jours j'ai acheté une DC (et une megadrive ce week end, j'attend un everdrive pour cette dernière). Avec Bex, il est "facile" d'installer et de programmer cette dernière depuis le pc. C'est un langage basic qui créer directement la rom, et pas lourd surtout à installer. Tu télécharges le log, tu l'installe, tu programmes. Je vais y regarder un peu de plus prêt les semaines avenir.
01 juillet 2017 à 22:58:18 graboide dit: j'ai trois Dreamcast elles ont toutes lâché vraiment très très fragile comme console, mais aussi la meilleur de tout les temps ;)
01 juillet 2017 à 15:46:55 Monos dit: Je suis en train d'adapter Prisonnier, le jeu flash de Capitaine Caverne sur Dreamcast aprés en avoir fait une version Amiga.
Hi hi. J'ai achêté une DC il y a 15 jours, et j'ai les outils pour dev dessus. Bon j'ai pas encore fait de test DC, je suis en train de coder la version "pc" qui servira aussi pour la Dc(mais je ne fais pas de sortie pc). Cela se code en C.
01 juillet 2017 à 15:45:25 Monos dit: http://img110.xooimage.com/files/d/4/e/priso-dc-2-5294d63.png
25 juin 2017 à 12:17:22 Crystal Noir dit: Merci !
24 juin 2017 à 09:55:36 Cyberclic dit: Top ! Bon rétablissement :)
23 juin 2017 à 09:17:28 arthurh dit: C'est une bonne nouvelle !!! :)
22 juin 2017 à 19:58:47 Monos dit: yeah crystal
22 juin 2017 à 14:02:20 Pit73 dit: Coooool !!! Courage man !!
22 juin 2017 à 12:35:11 Crystal Noir dit: Hello, pour ceux qui ont suivi mes déboires : ma 4ème opération s'est pas trop mal passée, petite complication de dernière minute mais ca va, après un mois de convalescence je devrais reprendre le taf Lundi, malgré un transit capricieux...En résumé suis toujours vivant :D
20 juin 2017 à 22:04:23 Pit73 dit: c fée
Voir l'historique
Powered by EzPortal