30

Fredifredo (./29) :
Des nouvelles de tout ça ?
je ne suis pas aller plus loin, car par la suite j'ai exploré d'autres contrées électroniques... et depuis peu je fais des travaux nettement plus manuels (rénovation de l'appart). wink

avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

31

Plus d'un an après, je m'y suis remis avec plaisir. Mais c'est quand même un travail terrible, conception graphique, programmation où il faut ménager le cpu... j'ai un peu perdu la main, j'avance moins vite aujourd'hui.
Ce que j'ai réalisé depuis environs deux semaines:
pastilles (pas toutes, seulement des deux côtés de l'écran).
bonus aux quatre coin de l'écran actif (transformation des ghosts).
fruits actifs.
Quatre labyrinthes, chacun ayant son fruit spécifique.
Pour zerosquare: mâchoire du glouton toujours en mouvement. smile

Le jeu s'ouvre sur une séquence cinématique, ou plutôt une scènette, seul moment où l'on voit les ghosts en action en fait, car ces derniers ne sont toujours pas réveillés dans le jeu. Puis je laisse le joueur choisir son labyrinthe.
@+

avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

32

On veut voir ! tongue
Mon site sur la LYNX :ZoneLynx

33

34

Sympa smile

35

Ah oui quand même ! Bon boulot !
Je trouvais cela un peu dommage de mettre de l'énergie et du temps pour refaire un jeu déjà existant sur Lynx mais ta version ce différencie vraiment du jeu Ms Pac Man et de ce fait justifie beaucoup mieux son intérêt.

C'est quoi le gros fantôme que l'on voit dans l'intro ? Tu comptes ajouter un "super gost" dans le jeu ?
Mon site sur la LYNX :ZoneLynx

36

RYGAR (./35) :
Ah oui quand même ! Bon boulot !
Je trouvais cela un peu dommage de mettre de l'énergie et du temps pour refaire un jeu déjà existant sur Lynx mais ta version ce différencie vraiment du jeu Ms Pac Man et de ce fait justifie beaucoup mieux son intérêt.

C'est quoi le gros fantôme que l'on voit dans l'intro ? Tu comptes ajouter un "super gost" dans le jeu ?
j'ai effectivement une petite idée derrière la tête. ^_^
Merci je trouve en effet la conversion du jeu avec des créatures par trop minuscule. Je propose donc un autre point de vue, comme plus proche de l'action.
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

37

Fadest (./7) :
Pas vraiment un exemple, ni un tutorial, mais avec ça, tu devrais pouvoir t'y retrouver :

Pour la partie inits, il te faut déclarer les éléments suivants et la fonction init_sprites()/// on a besoin de stdlib pour bcopy() de mémoire #include <stdlib.h> // SCB est un tableau de 26 sprites de 11 octets chacun extern char SCB[25][11] at (0xfff8-16320-25*11); // spr0 est le "modèle" de sprite de 11 octet pour initialiser une occurence de SCB2[] extern char spr0[11]; // init_scb est le premier sprite à afficher, en fait, il pointe sur un sprite vide // j'aurais aussi pu le faire pointer vers le background // l'important dans le _init_scb, c'est dc.w _SCB2 // qui fait pointer le sprite suivant vers le premier du tableau SCB extern char init_scb[23]; #asm ; init_scb est utilisé pour initialiser les registres du SpriteEngine ; avec les paramètres adéquats (palette...) ; Using this trick, the 8*11 spr[]-SCBs only need 11 Bytes each! _init_scb: dc.b $c1, $10, $20 dc.w _SCB ; PTR_NEXT pointe vers le 1° sprite visible (SCB[0]) dc.w dummy ; PTR_DATA pointe vers un sprite "inexistant" dc.w 200, 200 ; x,y -> on affiche en dehors de l'écran dc.w $100, $100 ; pas de zoom dc.b $01, $23, $45, $67, $89, $ab, $cd, $ef dummy: dc.b 0,0,0 ; le sprite "inexistant" ; spr0 sert de modèle au sprites du tableau SCB _spr0: dc.b $c4, $08, $02 ; CTL0, CTL1 = réutilise la palette, COLL dc.w 0, 0 dc.w 0, 0 #endasm void init_sprites() { char i1; for (i1 = 0; i1 < 25; i1++) { bcopy(&spr0[0], &SCB[i1][0], 11); SCBX(&SCB[i1][0]) = 0; SCBY(&SCB[i1][0]) = 0; SCBNEXT(&SCB[i1][0]) = &SCB[i1+1][0]; } SCBNEXT(&SCB[24][0]) = 0; }

Le gros avantage d'utiliser une structure de 11 octets pour les sprites chainés, c'est de gagner 12 octets par sprite (ça peut gratter 1 ou 2ko au final, ce n'est pas rien), et également, c'est un peu plus rapide car le système sait que chaque sprite a les mêmes paramètres (zoom, tilt...).
Inconvénient, tu ne peux pas en zoomé un individuellement. Avantage, si tu zoomes le premier, tous le seront (ça peut être utile dans certaines circonstances)

Pour la suite, c'est facile, à un moment, tu appelles init_sprites pour initialiser ton tableau, ensuite, pour accéder individuellement à un sprite dans ton tableau :
SCBX(&SCB[ij][0]) = x; SCBY(&SCB[ij][0]) = y; // [...]


Un petit truc en passant, si tu ne veux plus afficher un sprite, tu peux soit le déplacer en dehors de l'espace écran, ou jouer sur SCBCTL1(]) pour le déclarer affichable ou non (il est initialisé à 8, mais si tu le mets à 12, ton sprite n'est plus affiché, ça accélère un peu le process).

Pour répondre à Tempi, la Lynx est une telle bête en manipulation de sprites que c'est aussi simple de déclarer les gommes en sprites, plutôt que de jouer directement sur la mémoire vidéo, contrairement au ST par exemple. En tous cas, c'est ce que j'avais fait pour Ladybug (mais bon, 24h pour un clone de pac-man avec des portes qui tournent en plus, ça laisse peu de temps à la réflexion, hormis pour les portes qui tournent bien sur grin)
Merci Fadest, j'ai enfin compris comment faire une déclaration multiple de sprites. Je met ici les sources avec lesquels j'ai travaillé, 56 sprites d'une taille de 24x24 pixels pour afficher le décors + un long scrolling horizontal + zoom et dézoom d'un sprite lié mais n'impactant pas tout les autres.
mascot1.zip à dézipper dans votre dossier lynx (j'ai mis une version lnx)

nouvelle version corrigé (option2 = zoom tiles du décor)
http://www.mirari.fr/gBdW


avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

38

T'in j'ai failli crever d'une crise cardiaque ! J'étais tranquillement assis dans le canapé à attendre le chargement d'une vidéo (faut que je précise que j'écoute le son du PC via un casque qui ce coupe automatiquement quand plus aucun son n'est émit) j'essayais ta rom, je faisais défiler le scroling, j’appuie sur A et B pour zoomer le personnage puis j'ai eu le malheur d'appuyer sur Opt 2 ! Deux tympans flingués et une crise de tachycardie de 10 minutes ! Préviens quand tu fais ce genre de trucs tongue

Mon site sur la LYNX :ZoneLynx

39

ça t'apprendra à toucher à n'importe quoi embarrassed

40

grin
Mon site sur la LYNX :ZoneLynx

41

Je suis vraiment désolé, j'aurai pu effectivement supprimer ce bruitage. En fait, j'ai démarré ce projet sur un ancien, avec elvira, ceci expliquant cela. J'avais complètement occulté cette partie du code, mille excuses.
Je vais corriger dès que possible. pam
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

42

nouvelle version pour le programme de test multi sprites, voir plus heut.

ps: pour le personnage, je l'ai réalisé suite à un post sur atariage, d'un gars au doux pseudo de Blarginatorr, et qui propose une mascotte pour notre console: http://www.atariage.com/forums/topic/171650-lynx-mascot/

Bien à vous.
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

43

Vraiment sympa comme personnage j'adore. top
Mon site sur la LYNX :ZoneLynx

44

Réalisé avec tout mon heart
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

45

Je viens de découvrir la version neogeo Pocket du jeu, avec deux modes, c'est bien vu:
http://m.youtube.com/#/watch?desktop_uri=%2Fwatch%3Fv%3DwXDdzfG4OxY&v=wXDdzfG4OxY&gl=FR
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

46

J'ai appliqué la technique d'affichage multiple pour les pastilles, au nombre de 112 maximum. Et en plus, le. O pèse moins lourd, avant 36,4 aujourd'hui 32,5 Ko.
boing
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

47

Comme faire un flip de sprite on perd la couleur transparente, j'ai décidé de doubler le nombre d'image pour le glouton (dans les 4 directions). Une fois fait, j'étais satisfait, mais une ligne de 12 pixels de long est entre temps apparu, remplit de pixels aux couleurs changeantes: un bug ! Et je dirai même plus, un méchant bug. devil

Puis l'illumination, je me suis souvenu d'un second SetBuffers dans le code, indispensable lorsque l'on fait de la déclaration multiple de sprites.
SetBuffers(BUFFER1,0,0);

Je change la valeur, le bug se déplace à l'écran, chouette ! à 9300, il n'apparait plus, cool.
SetBuffers(0x9300,0,0);

Sur megadrive il y a l'émulateur regen avec lequel on peut voir la place de chaque image stockée dans la mémoire vive du copro VDP, mais avec la lynx j'avance dans l'obscurité...
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

48

tu devrais déclarer ton buffer avec une position, idéalement calculée avec memtop... (etpour éviter le glitch, un double buffer permet un meilleur rendu)
char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); SetBuffers(SCREEN, RENDER ,0);

et quand tu es prêt à permutter, tu appelles SwapBuffers();
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

49

beauregard (./47) :
Comme faire un flip de sprite on perd la couleur transparente, j'ai décidé de doubler le nombre d'image pour le glouton (dans les 4 directions). Une fois fait, j'étais satisfait, mais une ligne de 12 pixels de long est entre temps apparu, remplit de pixels aux couleurs changeantes: un bug ! Et je dirai même plus, un méchant bug. devil

Puis l'illumination, je me suis souvenu d'un second SetBuffers dans le code, indispensable lorsque l'on fait de la déclaration multiple de sprites.
SetBuffers(BUFFER1,0,0);

Je change la valeur, le bug se déplace à l'écran, chouette ! à 9300, il n'apparait plus, cool.
SetBuffers(0x9300,0,0);

Sur megadrive il y a l'émulateur regen avec lequel on peut voir la place de chaque image stockée dans la mémoire vive du copro VDP, mais avec la lynx j'avance dans l'obscurité...



Je dev sur Falcon CT60 en assembleur et sans debugger, c'est juste une question d'entrainement. J'ai dernièrement debugger une routine pour retrouver 2 bits qui déconnait parmi 32000 et cela a la main, mais je l'ai fais. smile

GT Sans lumière top
avatar
Accrochez vous ca va être Cerebral !!

50

ah oui, et pour la transparence, normalement elle fonctionne en mode vflip ou hflip...
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

51

Bizarre ton truc sur la transparence, je m'en suis déjà servi…

Pour le glitch, quand ça me faisait ça, de mémoire, c'était que mon.o était trop gros et le signe d'une corruption RAM.
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

52

merci pour vos réponses, faut que je teste vflip ou hflip, et chapeau bas GT Turbo, programmer en assembleur ça me fait peur. wink
Fadest (./51) :
Bizarre ton truc sur la transparence, je m'en suis déjà servi…

Pour le glitch, quand ça me faisait ça, de mémoire, c'était que mon.o était trop gros et le signe d'une corruption RAM.
33,4 Ko actuellement, je n'avais rien fait d'extraordinaire, hormis la déclaration multiple de sprites, et cette dernière nécessite un bon usage du setbuffers, cela a fait tilt.

D'ailleurs je ne suis pas sûr de bien maitriser la méthode, j'ai l'impression que j'ai crée beaucoup plus de sprites que le pense !

113 sprites:/// on a besoin de stdlib pour bcopy() de mémoire #include <stdlib.h> // SCB est un tableau de 113 sprites de 11 octets chacun extern char SCB[112][11] at (0xfff8-16320-112*11); // spr0 est le "modèle" de sprite de 11 octet pour initialiser une occurence de SCB2[] extern char spr0[11]; // init_scb est le premier sprite à afficher, en fait, il pointe sur un sprite vide // j'aurais aussi pu le faire pointer vers le background // l'important dans le _init_scb, c'est dc.w _SCB2 // qui fait pointer le sprite suivant vers le premier du tableau SCB extern char init_scb[23]; #asm ; init_scb est utilisé pour initialiser les registres du SpriteEngine ; avec les paramètres adéquats (palette...) ; Using this trick, the 8*11 spr[]-SCBs only need 11 Bytes each! _init_scb: dc.b $c1, $10, $20 dc.w _SCB ; PTR_NEXT pointe vers le 1° sprite visible (SCB[0]) dc.w dummy ; PTR_DATA pointe vers un sprite "inexistant" dc.w 200, 200 ; x,y -> on affiche en dehors de l'écran dc.w $100, $100 ; pas de zoom dc.b $01, $23, $45, $67, $89, $ab, $cd, $ef dummy: dc.b 0,0,0 ; le sprite "inexistant" ; spr0 sert de modèle au sprites du tableau SCB _spr0: dc.b $c4, $08, $02 ; CTL0, CTL1 = réutilise la palette, COLL dc.w 0, 0 dc.w 0, 0 #endasm
up: Voici une petite video, commenté, sur le jeu testé sur la console:
[flash]http://www.mirari.fr/module/file/player/player_flv_maxi.swf?showfullscreen=1&showloading=1&showstop=1&showtime=1&flv=http://www.mirari.fr/owmD?a=open[/flash]
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx