30

vince (./25) :
Les sources de lecture de sample :
tromb Fichier joint : SAMPLE.M65
Le tuto et le bat tout seul
tromb Fichier joint : tutowav.zip
tromb Fichier joint : wav2h.bat
des exemples de son djà hachifiés
tromb Fichier joint : blast.h
tromb Fichier joint : blast.lsf
tromb Fichier joint : blast.wav

tromb Fichier joint : blast1.h
tromb Fichier joint : blast1.lsf
tromb Fichier joint : blast1.wav

tromb Fichier joint : laser.h
tromb Fichier joint : laser.lsf
tromb Fichier joint : LASER.wav
Great ! Je regarde de suite!! Thanks !
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware

31

matmook (./24) :
cooper (./23) :
oups lu les posts précédents trop vite... tu as des infos plus précises sur l'utilisation du replay de chipper ? Abcmusic est assez laborieux à pratiquer sad
Je crois que c'est le même auteur, d'ailleurs la syntaxe ressemble fortement à ABC :
lynx_snd_init();
lynx_snd_pause();
lynx_snd_play(0, musicptr.music0);
lynx_snd_play(1, musicptr.music1);
lynx_snd_play(2, musicptr.music2);
lynx_snd_play(3, musicptr.music3);
lynx_snd_continue();

D'après ce que j'ai compris, à l'init, tu as une ISR qui est installée sur le timer7 pour ré-actualiser les canaux audio.
La zic en elle-même est obtenu sous forme de fichier asm depuis le logiciel Chipper (sorte de tracker).

Je suis en train de tester Chipper mais comme avec tous les tracker, je n'y comprends pas grand chose... (moultes options partout). smile

Ah oui en effet ça semble assez similaire à abc ! Tu as pris la lib sur lynxdev.atari.org ?
---------------------------------
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

32

cooper (./31) :
matmook (./24) :
cooper (./23) :
oups lu les posts précédents trop vite... tu as des infos plus précises sur l'utilisation du replay de chipper ? Abcmusic est assez laborieux à pratiquer sad
Je crois que c'est le même auteur, d'ailleurs la syntaxe ressemble fortement à ABC :
lynx_snd_init();
lynx_snd_pause();
lynx_snd_play(0, musicptr.music0);
lynx_snd_play(1, musicptr.music1);
lynx_snd_play(2, musicptr.music2);
lynx_snd_play(3, musicptr.music3);
lynx_snd_continue();

D'après ce que j'ai compris, à l'init, tu as une ISR qui est installée sur le timer7 pour ré-actualiser les canaux audio.
La zic en elle-même est obtenu sous forme de fichier asm depuis le logiciel Chipper (sorte de tracker).

Je suis en train de tester Chipper mais comme avec tous les tracker, je n'y comprends pas grand chose... (moultes options partout). smile
Ah oui en effet ça semble assez similaire à abc ! Tu as pris la lib sur lynxdev.atari.org ?
Oui c'est ça ! smile

Bon, pour sample.m65, ça va être chaud, toutes les directives ont changé (dc.b => .byte, global => .export, pas de :: pour les labels, les sections bss, text , ... deviennent des SEGMENT, ...), on va tenter le coup !! smile
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware

33

Arf vu la clarté des packages et ma très grande compétence en intégration de sources comme ceux là, je pense qu'ABCmusic fera l'affaire encore un peu cheeky

Et promis j'arrête de squatter ton post !

Les samples marchent ??? smile
---------------------------------
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

34

cooper (./33) :
Arf vu la clarté des packages et ma très grande compétence en intégration de sources comme ceux là, je pense qu'ABCmusic fera l'affaire encore un peu cheeky

Et promis j'arrête de squatter ton post !

Les samples marchent ??? smile
Sauf que le .o d'abcmusic n'est plus compatible avec le nouveau compilo. sad

Pour les samples, je suis dessus... smile
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware

35

Cool d'avoir également mis les sources!
Ton projet est bien développé sur cc65? Si c'est le cas je vais pouvoir jouer un peu... tongue
avatar

36

attention, il ne faut pas confondre cc65, NEWcc65 et cc65 (ouais ils ont repris le même nom). une partie des libs et sources de NEWcc65 restent compatibles avec (old)cc65 mais ne le sont plus avec cc65... et ça vaut aussi pour l'assembleur malheureusement (c'est pour ça que copier coller le source sample.m65 n'est pas suffisant pour que ça marche avec le nouveau cc65)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

37

Ok, je n'avais pas compris cette subtilité lorsque vous m'avez dis que vous bossiez sous des compilateurs différents, je vais me renseigner.
avatar

38

Génial !
C'était vraiment impressionnant l'effet que ton jeu rendait sur le hardware.
Félicitation pour ce podium.top
avatar
nope

39

#include <lynx.h> #include <tgi.h> #include <6502.h> #include <joystick.h> #include <stdlib.h> extern char lynxtgi[]; extern char lynxjoy[]; unsigned char paddle[] = { 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 0 }; unsigned char ball[] = { 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 0 }; unsigned char wall[] = { 2, 0x7E, 2, 0x7E, 2, 0x7E, 2, 0x7E, 0 }; typedef struct { char collindex; SCB_REHV sprite; PENPAL_1; signed char hvel; signed char vvel; } sprite_t; sprite_t LeftPaddle = { 0, { BPP_1 | TYPE_NORMAL, LITERAL | REHV, 1, 0, paddle, 10, 73, 256, 256 }, {COLOR_GREY}, 0, 0 }; sprite_t RightPaddle = { 0, { BPP_1 | TYPE_NORMAL, LITERAL | REHV, 2, 0, paddle, 159-10-6, 70, 256, 256 }, {COLOR_GREY}, 0, 0 }; sprite_t TopWall = { 0, { BPP_1 | TYPE_NORMAL, LITERAL | REHV, 3, 0, wall, -24, 1, 160 / 6 * 256, 256 }, {COLOR_GREEN}, 0, 0 }; sprite_t BottomWall = { 0, { BPP_1 | TYPE_NORMAL, LITERAL | REHV, 4, 0, wall, -24, 101-4, 160 / 6 * 256, 256 }, {COLOR_GREEN}, 0, 0 }; sprite_t Ball = { 0, { BPP_1 | TYPE_NORMAL, LITERAL | REHV, 5, 0, ball, 10, 10, 256, 256 }, {COLOR_GREY}, 2, 1 }; #define STEREO_REG (*(char *)0xfd50) #define VOLUME_REG(chan) (*(char *)(0xfd20 + 0 + (chan & 3) * 8)) #define FEED_REG(chan) (*(char *)(0xfd20 + 1 + (chan & 3) * 8)) #define OUT_REG(chan) (*(char *)(0xfd20 + 2 + (chan & 3) * 8)) #define SHIFT_REG(chan) (*(char *)(0xfd20 + 3 + (chan & 3) * 8)) #define BKUP_REG(chan) (*(char *)(0xfd20 + 4 + (chan & 3) * 8)) #define CTLA_REG(chan) (*(char *)(0xfd20 + 5 + (chan & 3) * 8)) #define CNT_REG(chan) (*(char *)(0xfd20 + 6 + (chan & 3) * 8)) #define CTLB_REG(chan) (*(char *)(0xfd20 + 7 + (chan & 3) * 8)) void startSound() { unsigned int taps = 0x0019; unsigned backup = 0x00B1; unsigned octave = 2; unsigned integrate = 1; unsigned char pitch = 66; unsigned char chan = 0; VOLUME_REG(chan) = 0; STEREO_REG = 0; // Disable count CTLA_REG(chan) = 0x10; // Setup new sound engine FEED_REG(chan) = (taps & 0x003f) + ((taps >> 4) & 0xc0); SHIFT_REG(chan) = backup & 0xff; CTLB_REG(chan) = (backup >> 4) & 0xf0; CTLA_REG(chan) = (taps & 0x0080) + 0x18 + octave + (integrate << 5); BKUP_REG(chan) = pitch; } void main() { unsigned char joy; char buffer[16]; signed RightScore = 0; signed LeftScore = 0; signed char vol = 120; unsigned char chan = 0; joy_install(&lynxjoy); tgi_install(&lynxtgi); tgi_init(); tgi_setframerate(60); tgi_setcollisiondetection(1); CLI(); startSound(); while (1) { while (tgi_busy()) ; /* Erase collision buffer */ tgi_clear(); LeftPaddle.penpal[0] = COLOR_GREY; RightPaddle.penpal[0] = COLOR_GREY; /* Move paddles */ joy = joy_read(JOY_1); if (JOY_BTN_UP(joy)) { LeftPaddle.sprite.vpos -= 1; } if (JOY_BTN_DOWN(joy)) { LeftPaddle.sprite.vpos += 1; } if (JOY_BTN_FIRE(joy)) { RightPaddle.sprite.vpos -= 1; } if (JOY_BTN_FIRE2(joy)) { RightPaddle.sprite.vpos += 1; } /* Stop sound */ VOLUME_REG(chan) = 0; Ball.sprite.hpos += Ball.hvel; if (Ball.sprite.hpos < 3) { /* Start sound */ VOLUME_REG(chan) = vol; RightScore++; Ball.sprite.hpos = RightPaddle.sprite.hpos; Ball.sprite.vpos = RightPaddle.sprite.vpos + 10; } if (Ball.sprite.hpos > 160 -3) { /* Start sound */ VOLUME_REG(chan) = vol; LeftScore++; Ball.sprite.hpos = LeftPaddle.sprite.hpos; Ball.sprite.vpos = LeftPaddle.sprite.vpos + 10; } Ball.sprite.vpos += Ball.vvel; /* Paint stationary sprites */ tgi_sprite(&TopWall.sprite); tgi_sprite(&BottomWall.sprite); tgi_sprite(&LeftPaddle.sprite); tgi_sprite(&RightPaddle.sprite); /* Draw last collidable sprite */ tgi_sprite(&Ball.sprite); /* Examine collisions */ switch (Ball.collindex) { case 0: break; case 1: Ball.hvel = 2; LeftPaddle.penpal[0] = COLOR_RED; tgi_sprite(&LeftPaddle.sprite); /* Start sound */ VOLUME_REG(chan) = vol; break; case 2: Ball.hvel = -2; RightPaddle.penpal[0] = COLOR_RED; tgi_sprite(&RightPaddle.sprite); /* Start sound */ VOLUME_REG(chan) = vol; break; case 3: case 4: Ball.vvel = -Ball.vvel; /* Start sound */ VOLUME_REG(chan) = vol; break; default: break; } tgi_setcolor(COLOR_WHITE); itoa(LeftScore, &buffer[0], 10); tgi_outtextxy(40, 10, buffer); itoa(RightScore, &buffer[0], 10); tgi_outtextxy(120, 10, buffer); tgi_updatedisplay(); } }
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

40

En direct de la RGC2016, j'ai enfin du son sur Lynx !!!!

Thanks Vince !!!

ac2016dvince.png

Mise à jour :
La rom : http://www.barreteau.org/atari/ac2016/ac2016.lnx
Les sources : http://www.barreteau.org/atari/ac2016/AC2016.7z

Joie !! \o/
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware

41

42

"- putain je comprends pas ça marche pas
- c'est quoi ta variable là ? sound_volume ? tu t'en fous, dégages ça !
- nan mais c'est plus propre comme ça
- vazy à la barbare, les valeurs en dur dans le code !
- ouais mais je pige pas pourquoi ça marche pas
- vazy teste !
<bip>
- oh putain super, mais pourquoi mon truc il marchait pas ?
- trop propre, c'est du son sur lynx
...
"

(et au final c'était pas si crade que ça, et l'appel avec x=120-x était quand même super optimisé pour économiser un if tritop
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

43

vince (./42) :
"- putain je comprends pas ça marche pas
- c'est quoi ta variable là ? sound_volume ? tu t'en fous, dégages ça !
- nan mais c'est plus propre comme ça
- vazy à la barbare, les valeurs en dur dans le code !
- ouais mais je pige pas pourquoi ça marche pas
- vazy teste !
<bip>
- oh putain super, mais pourquoi mon truc il marchait pas ?
- trop propre, c'est du son sur lynx
...
"

(et au final c'était pas si crade que ça, et l'appel avec x=120-x était quand même super optimisé pour économiser un if tritop
C'est clair et quel rendu !!!!!! grin
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware