30

Nope pas là
---------------------------------
Cooper / Paradize
STf/Mega ST/STe/F030/Lynx
---------------------------------
mes prods lynx : http://atarithemes.chez-alice.fr/lynx/index.php
mes prods ST/Falcon : http://paradize.atari.org

31

J'avance petit à petit dans la réalisation de mes jeux.

Pour le moment j'ai fait une intro qui me convient bien et que je garderais surement, pour les tableaux pas de problème le code de Cooper à fait presque tout le boulot. La fin en cas de victoire n'est pas la fin définitive mais comme je suis limité en taille mémoire je n’ai pas voulu faire quelque chose de plus lourd.

Du coté de ce qui manque je dirais la musique mais là c'est en bonne voie, j'ai mes fichiers musicaux tous près et il me reste juste à apprendre comment et ou les insérer dans mon code pour qu'ils soient joués en même temps que les parties.

Le plus gros problème reste la compilation de plusieurs tableaux via un menu de sélection. A ce propos j'ai demandé de l'aide à Karri qui m'à fournis une archive complète avec tout le menu qu'il avait réalisé pour le Megapak de Songbird. En deux heure il à réaliser un truc de dingue à partir des tableaux que je lui avais fourni avec musique, menu et tout et tout. L'inconvénient c'est que c'est d'une telle complexité que je m'y perds un peu. J'ai transmis tout cela à Fadest qui y jettera un œil quand il aura un moment (en tout cas il n’a pas pris peur en voyant l'archive c'est déjà bon signe).

Trêve de bavardage je vous laisse deux tableaux en exemple.

Attention c'est un jeu au contenu érotique ! Ce n’est pas pour les enfants !

tromb Fichier joint : test.o
tromb Fichier joint : test.o


Mon site sur la LYNX :ZoneLynx

32

C'est vraiment chouette de voir comme tous le monde s'entraide pour le développement Lynx smile

33

Vraiment sympa, par contre les deux fichiers sont les même ?

34

Message personnel à l'attention de GT : merci de passer au topic suivant gni
RYGAR (./31) :
Du coté de ce qui manque je dirais la musique mais là c'est en bonne voie, j'ai mes fichiers musicaux tous près et il me reste juste à apprendre comment et ou les insérer dans mon code pour qu'ils soient joués en même temps que les parties.


Bon, désolé pour le retard.
Comment inclure une musique ABC dans son programme ?

Tu as besoin de mettre plusieurs éléments dans ton source :
Au niveau des déclarations (par exemple, juste après #include <stdlib.h>), il te faut déclarer les fonctions du module abcmusic que tu vas utiliser :
/* Routines defined in abcmusic.obj */
extern void silence();
extern void abcmusic();
extern void update_music();


Ensuite, tu déclares tes chaines musicales. Karri dans ses exemples, déclare une chaine de caractères qu'il alimente en assembleur :
Tu as le droit à 4 voies, chaque chaine de caractères sera donc une voie.

extern char abcmusic0[];   // déclaration C voie 0
extern char abcmusic1[];   // déclaration C voie 1
extern char abcmusic2[];   // déclaration C voie 2
extern char abcmusic3[];   // déclaration C voie 3

#asm
          xref _abcmusic0
          xref _abcmusic1
          xref _abcmusic2
          xref _abcmusic3

_abcmusic0  ;Bass
            dc.b "O5X7I0V52T8R40H2K2"
            dc.b "  zzezzdzzezdeE4 zzezzdzzezdBG4 zzez zdzz ezde E4    zzez zdzz ~d2z~d2z~d2" 
            dc.b "|:zzezzdzzezdeE4 zzezzdzzezdBG4 zzez zdzz ezde E4    zzez zdzz ~d2z~d2z~d2"
            dc.b "   zzezzdzzezdeE4 zzezzdzzezdBG4 zzez zdzz ezde E4    zzez zdzz ~d2z~d2z~d2"
            dc.b "   zzdeEE3EzEE4z zzdeEE3G2zG2zA2 zzdeEE3EzEE4z zzdeEE3d2zd2z~d2"
            dc.b "   zzdeEE3EzEE4z zzdeEE3G2zG2zA2 zzdeEE3EzEE4z zzdeEE3d2zd2z~d2:"
	    dc.b 0
_abcmusic1  ;Drums
            ;***dc.b "O3X26I0V38T8R127H2K2" 
            dc.b "O3X54I0V32T8R127H4K4"
            dc.b "  zzO3ezee2 e O3E3E O3e4   zzO3E2 O3e O3E3 O3E3E O3e4  zzO3E2 O3e O3E3 O3E3E O3e4   zzO3E2 O3e O3E3 O3E2zE2z e2"
	        dc.b "|:zzO3ezee2 e O3E3E O3e4   zzO3E2 O3e O3E3 O3E3E O3e4  zzO3E2 O3e O3E3 O3E3E O3e4   zzO3E2 O3e O3E3 O3E2zE2z e2"
	        dc.b "  zzO3E2 O3e O3E3 O3E3E O3e4   zzO3E2 O3e O3E3 O3E3E O3e4  zzO3E2 O3e O3E3 O3E3E O3e4   zzO3E2 O3e O3E3 O3E2zE2z e2"
            dc.b "  zzO3E2 O3e O3E3 E4e4E4e4E4e4E4e4E4e4E4e4E4e4  E4e4E4e4E4e4E4e4E4e4E4e4E4e4E4e4:"
	        dc.b 0
_abcmusic2  ;verse Synth & Chorus Lead Synth
            dc.b "O2X10I0V10T8R60H6K1" 
            ;dc.b "   O1zzEz O2E O1E O1zzEz O2E O1Ezz O1zzEz O2E O1E O1zzEz O2E O1Ezz"
            dc.b "       O1zzBzzBzzBzzB4z zzBzzBzzBzzB4z zzBzzBzzBzzB4z O1zz=fzz=fzzezze4z"
            dc.b "|: V10 O1zzBzzBzzBzzB4z zzBzzBzzBzzB4z zzBzzBzzBzzB4z O1zz=fzz=fzzezze4z"
            dc.b "       O1zzBzzBzzBzzB4z zzBzzBzzBzzB4z zzBzzBzzBzzB4z O1zz=fzz=fzzezze4z"
            dc.b "   V18 O2V16A2B2B2A2B2B2A2B2A2B2B2A2B2B4zz A2B2B2A2B2B2A2B2 d3d3=c2A3B3zz"
            dc.b "       O2V16A2B2B2B2 A2B2BBz BA2B2B2A2B4z4  A2B2B2BBA2BB3 B2 d2d2=c2A2B3z4z:"
            dc.b 0
_abcmusic3  ;Guitar
            dc.b "O3X7I0V15T8R80H8K1" 
            dc.b "z4z4z4z4 z4z4z4z4 z4z4z4z4 z4z4z4z4"
            dc.b "|:K8O3 eeddeedd ezdzK1g4 K8 eeddeedd ezdzK1B4 K8 eeddeedd ezdzK1g4 K8 eeddeedd K1=c3=c3=c2"
            dc.b "  K8   eeddeedd ezdzK1g4 K8 eeddeedd ezdzK1B4 K8 eeddeedd ezdzK1g4 K8 eeddeedd K1=c3=c3=c2"
            dc.b "  K1O2 zz=G3=G3=G4z4z2 A3A3d3d3=c2  zz=G3=G3=G4z4z2 A3A3d3d3=c2"  
            dc.b "       zz=G3=G3=G4z4z2 A3A3d3d3=c2  zz=G3=G3=G4z4z2 A3A3d3d3=c2:"
            dc.b 0
#endasm

Là, par exemple, c'est une des musiques de Space Dance fait par Sampo

Voilà, ça, c'était pour la partie déclarative du programme, donc à insérer là ou tu déclares tes sprites, tes variables globales...

Ensuite, il faut initialiser le tout et lancer la musique. Si tu veux que ça démarre dès le début, pas de soucis, tu mets ce code dans ta procédure main() :
    InstallIRQ(2,VBL);     // va installer l'interruption 2 qui appelera la sous-routine VBL()
    EnableIRQ(2);  // déclare l'interruption 2 comme active
    silence();    // fait le silence pour s'assurer que le système sonore est nickel
    abcmusic(0,abcmusic0);   // joue la musique abcmusique0 sur la voie 0
    abcmusic(1,abcmusic1); 
    abcmusic(2,abcmusic2); 
    abcmusic(3,abcmusic3); 


Le principe de ABCMusic, c'est qu'il faut rafraichir le système soi-même (en gros, lire les notes les unes après les autres et les jouer), donc une fois ta musique démarrée, si tu ne fais un update_music() fréquemment, tu auras juste un son continu de la première note. C'est pourquoi on a installer l'interruption 2 qui débranche sur une sous-routine VBL.

Pour celà, tu auras bien pris soin de mettre quelque part dans ton source le petit bout de code suivant :
VBL() interrupt
{
    update_music();
}


Comme ça, à chaque interruption, ABC se réactualise et joue la musique...

Voilà, c'est tout.

En fait, le plus dur (*), c'est de composer sa musique, de la transcrire en notation anglaise, de trouver les paramètres d'instruments adéquats pour que ça sonne bien.

Pour le dernier point, je crois que Cooper et Damdam avaient fait un super boulot, pour le second, ce n'est pas forcément si complexe, pour le premier, ça demande un peu de talent grin

(*) en fait, le plus dur pour de vrai, c'est découter le tout sous Handy #beurk#

GT, tu peux relire gni
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

35

Mon site sur la LYNX :ZoneLynx

36

Fadest (./34) :
Message personnel à l'attention de GT : merci de passer au topic suivant gni

.................

GT, tu peux relire gni


GT Melomane note
avatar
Accrochez vous ca va être Cerebral !!