1

Comme vous le savez peut être déjà, le jeu vidéo du flipper est issu d'un vrai flipper. J'ai trouvé cette image qui l'atteste, voyez :
[URL=http://img197.imageshack.us/i/flipelvira.jpg/][IMG]http://img197.imageshack.us/img197/5672/flipelvira.jpg[/IMG][/URL]

j'ai d'abord trouvé l'image d'intro assez hideuse. La LYNX est certes limité à 16 couleurs, mais ce n'est pas une raison. J'ai donc fait 2 versions à partir de l'original ci-dessus, une version horizontale et verticale, preuve qu'il est possible en peu de temps (mais avec beaucoup d'amour), de faire beaucoup mieux :
tromb Fichier joint : elvira1.o
(bouton A ou B pour changer de fond) /* Elvira 0.1 - LYNX - kit BLL (newcc65) Travail graphique 04/11/2010 LYNX-image */ #include <stdlib.h> #include <lynx.h> #include <lynxlib.h> /* LYNX-specific #defines: */ #define JOY_RIGHT 0x10 #define JOY_LEFT 0x20 #define JOY_DOWN 0x40 #define JOY_UP 0x80 #define BUTTON_OPTION1 0x08 #define BUTTON_OPTION2 0x04 #define BUTTON_LEFT 0x02 #define BUTTON_RIGHT 0x01 #define BUTTON_PAUSE 0x01 char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); char pala[]={ 0x00,0x03,0x00,0x03,0x04,0x05,0x00,0x0A,0x08,0x00,0x07,0x08,0x09,0x0A,0x0B,0x00, 0x00,0x03,0x50,0x06,0x45,0x76,0xA0,0x01,0x47,0x0C,0x88,0x08,0x6B,0x0C,0xCF,0x00}; char palb[]={ 0x0A,0x01,0x05,0x08,0x05,0x0E,0x07,0x02,0x07,0x09,0x07,0x01,0x01,0x02,0x0D,0x00, 0x3F,0x51,0x08,0x0F,0x78,0x4F,0x0C,0x45,0x6C,0x7F,0xF5,0x05,0x0B,0x1F,0xCF,0x00}; char palc[]={ 0x07,0x03,0x06,0x03,0x00,0x0F,0x02,0x02,0x05,0x0A,0x01,0x0E,0x09,0x0A,0x04,0x06, 0xF7,0xC3,0xBA,0x84,0x31,0xFF,0x46,0x2F,0x78,0xEE,0x0B,0xAF,0xAE,0x4F,0x2A,0x5E}; // ------------------------------------ extern char elvira[]; // image d'origine du jeu, baclé en beauté, d'une taille de 160*102; extern char elvirb[]; // image d'origine, plus respectueuse, d'une taille de 160*102; extern char elvirc[]; // image d'origine, plus respectueuse + console à la verticale, d'une taille de 160*102; char SCB[]; #asm _SCB dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ // carre rouge de 8*8 // couleur RGB: 255 0 0 // couleur hexadecimal: FF 00 00 extern char rr[]; char SCBr[]; #asm _SCBr dc.b $c7,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ int posx,posy; int i; char choix,tempa,tempb,tempc,tempd; // assembler vertical retrace syncronisation routine void Vsync() { #asm vretrace: lda $fd0a bne vretrace #endasm } /************************************************************************** ** ** ** ** **************************************************************************/ char main() { InitIRQ(); CLI; SetBuffers(SCREEN, RENDER ,0); /* set the palette */ SetRGB(pala); // Ceci sert à changer la palette de la Lynx. //DrawFBox(0,0,160,102,0); posx=76; posy=47; SCBX(SCBr) = posx; SCBY(SCBr) = posy; SCBDATA(SCBr) = rr; SCBX(SCB) = 0; SCBY(SCB) = 0; SCBDATA(SCB) = elvira; /************************************************************************** ** BOUCLE PRINCIPALE ** **************************************************************************/ for( ; ; ) { DrawFBox(0,0,160,102,0); // affichage d'une boite couleur 0 (noire) if (joystick & JOY_RIGHT) // direction Droite posx++; if (joystick & JOY_LEFT) // direction Gauche posx--; if (joystick & JOY_UP) // direction Haut posy--; if (joystick & JOY_DOWN) // direction Bas posy++; if (posx>152) posx=152; // limit va à gauche if (posx<0) posx=0; // limit va à gauche if (posy<0) posy=0; // limit haut if (posy>94) posy=94; // limit bas // position X et Y du sprite d'une taille de 8*8 : SCBX(SCBr) = posx; SCBY(SCBr) = posy; //DrawSprite(SCBr); /************************************************************************** **************************************************************************/ if (joystick & BUTTON_RIGHT) { if (tempa==0) { tempa=32; ++choix; // change image de fond if (choix==3) choix=0; } } if (joystick & BUTTON_LEFT) { if (tempa==0) { tempa=32; --choix; // change image de fond if (choix==-1) choix=2; } } if (tempa>0) --tempa; if (choix==0) {SetRGB(pala);SCBDATA(SCB) = elvira;} if (choix==1) {SetRGB(palb);SCBDATA(SCB) = elvirb;} if (choix==2) {SetRGB(palc);SCBDATA(SCB) = elvirc;} DrawSprite(SCB); Vsync(); SwapBuffers(); } /************************************************************************** ** FIN de la BOUCLE PRINCIPALE ** **************************************************************************/ }

Ensuite pour la table du flipper, là aussi je ne l'ai pas trouvé respectueuse du flipper. Par exemple, dans la version d'origine, le bas du flipper est rouge/vert/noir . J'ai fait une gif pour que vous puissiez voir la version issu de l'adaptation en jv, et celle modifié par mes soins:
[URL=http://img19.imageshack.us/i/flipelvira.gif/][IMG]http://img19.imageshack.us/img19/47/flipelvira.gif[/IMG][/URL]


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

2

Pourquoi ils ont nommé ce jeu Pinball JAM ? Mystère...

je me suis amusé à faire une jaquette :
[URL=http://img716.imageshack.us/i/jaquetteelvira.jpg/][IMG]http://img716.imageshack.us/img716/8201/jaquetteelvira.jpg[/IMG][/URL]


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

3

y'a deux flippers possibles
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

4

J'avais pas vu cette page tient (Comme le dit vince le Jam viens du fait qu'il y à deux tables de flipper dans la cartouche, Elvira et Police force.)


Pour changer les couleurs de la table tu as juste joué sur les valeurs de la palette ou tu as tout refais à la main ?

Et pour la petite histoire ce jeu a été entièrement programmé (hormis les musiques) par Joel Seider qui n'avait que 18 ans à l'époque. cf atari magazine N° 25

Mon site sur la LYNX :ZoneLynx

5

vince (./3) :
y'a deux flippers possibles
ah oui, arf, idiot je suis. banana
RYGAR (./4) :
Et pour la petite histoire ce jeu a été entièrement programmé (hormis les musiques) par Joel Seider qui n'avait que 18 ans à l'époque. cf atari magazine N° 25
à 18 ans, j'étais tout juste capable de tracer des cercles sur des MO5. yoyo
Chapeau l'artiste, Joel Seider superguerrier a d'autant de mérite qu'ils n'ont pas du lui laisser beaucoup de temps pour faire ces 2 flip (!). Et dire qu'en face, Nintendo avais des équipes mobilisées pendant 2 ans pour les mario...
RYGAR (./4) :
Pour changer les couleurs de la table tu as juste joué sur les valeurs de la palette ou tu as tout refais à la main ?

J'ai commencé par faire un négatif de l'image pour discerner les différents éléments, puis j'ai revus certains éléments à la main, pixel par pixel.
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

6

je sais maintenant comment faire un flip ou heu, retourner une image, ça me servira bien pour économiser de précieux octets.
Bouton A et B pour rotation, option1 reset et option2 pour bruitage voix
Il y aussi un bruitage .wav (voix féminine qui dit ola!), via émulateur "ça crache", je serais curieux d'entendre le résultat via la console... rygar, je compte sur toi. calin
tromb Fichier joint : elvirot.lnx

code source: /* Elvira 0.2 - LYNX - kit BLL (newcc65) Travail graphique : zoom et flip 02/12/2010 LYNX-image */ #include <stdlib.h> #include <lynx.h> #include <lynxlib.h> #include "ola.h" /* LYNX-specific #defines: */ #define JOY_RIGHT 0x10 #define JOY_LEFT 0x20 #define JOY_DOWN 0x40 #define JOY_UP 0x80 #define BUTTON_OPTION1 0x08 #define BUTTON_OPTION2 0x04 #define BUTTON_LEFT 0x02 #define BUTTON_RIGHT 0x01 #define BUTTON_PAUSE 0x01 #define BUFFER1 0x9000 char SCREEN[8160] at (MEMTOP-16320); char RENDER[8160] at (MEMTOP-8160); char pal[]={ 0x00,0x02,0x05,0x09,0x0C,0x0E,0x04,0x07,0x01,0x00,0x03,0x04,0x06,0x08,0x0A,0x0C, 0x00,0x22,0x66,0xAA,0xDD,0xEF,0x53,0x87,0x19,0x08,0x35,0x48,0x5B,0x7D,0x9F,0xBF}; // ------------------------------------ /***************************************************************************** ** Ci-dessous, le contenu du fichier batchfile pour l'image elvballp.bmp ** ** set image01=elvballp.bmp SPRPCK -t6 -S320204 -a188101 -p0 %image01% cmd ** Le point d'action de l'image elvballp est mis au centre de la ** ** bille (-a188101) ** *****************************************************************************/ extern uchar elvballp[]; // image elvballp char SCB[]; #asm _SCB dc.b $c0,$10,$20 dc.w 0,0 dc.w 0,0,$100,$100 dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef #endasm // ------------------------------------ int posx,posy,scaelv,etape; int i,ihrotation,ivrotation,relachleft,relachright; char choix,tempa,tempb,tempc,tempd; // assembler vertical retrace syncronisation routine void Vsync() { #asm vretrace: lda $fd0a bne vretrace #endasm } /************************************************************************** ** ** ** ** **************************************************************************/ char main() { InitIRQ(); CLI; SetBuffers(SCREEN, RENDER ,0); /* set the palette */ SetRGB(pal); // Ceci sert à changer la palette de la Lynx. //DrawFBox(0,0,160,102,0); posx=160/2; posy=102/2; SCBX(SCB) = 160/2; SCBY(SCB) = 102/2; SCBDATA(SCB) = elvballp; scaelv=1024; // echelle de l'image elvballp (taille originelle = 256) // bruitage SetBuffers(BUFFER1,0,0); SmpInit(0,1); EnableIRQ(1); /************************************************************************** ** BOUCLE PRINCIPALE ** **************************************************************************/ for( ; ; ) { //DrawFBox(0,0,160,102,0); // affichage d'une boite couleur 0 (noire) if (joystick & BUTTON_OPTION1) // reset { scaelv=1024; posx=160/2;posy=102/2; etape=0; } if (joystick & JOY_RIGHT) { posx++; // direction Droite if (posx>158) posx=158; } if (joystick & JOY_LEFT) { posx--; // direction Gauche if (posx<2) posx=2; } if (joystick & JOY_UP) { posy--; // direction Haut if (posy<-2) posy=-2; } if (joystick & JOY_DOWN) { posy++; // direction Bas if (posy>100) posy=100; } if (etape==0) { if (scaelv>64) { scaelv=scaelv-2; if (scaelv<65) {scaelv=64;etape=1;} } } if (etape==1) { if (scaelv<256) { scaelv=scaelv+2; if (scaelv>255) {scaelv=256;etape=0;} } } if (relachleft==1) { if (!(joystick & BUTTON_LEFT)) {relachleft=0;} } if (relachleft==0) { if (joystick & BUTTON_LEFT) { ++ihrotation;relachleft=1; if (ihrotation==3) ihrotation=1; if (ihrotation==1) { SCB[0] = 0xd0; // Determine quadrant --> horizontal à l'envers } if (ihrotation==2) { SCB[0] = 0xc0; // Determine quadrant --> horizontal à l'endroit } } } if (relachright==1) { if (!(joystick & BUTTON_RIGHT)) {relachright=0;} } if (relachright==0) { if (joystick & BUTTON_RIGHT) { ++ivrotation;relachright=1; if (ivrotation==3) ivrotation=1; if (ivrotation==1) { SCB[0] = 0xe0; // Determine quadrant --> vertical à l'envers } if (ivrotation==2) { SCB[0] = 0xf0; // Determine quadrant --> vertical à l'endroit } } } SCBX(SCB) = posx;SCBY(SCB) = posy; SCBHS(SCB) = scaelv;SCBVS(SCB) = scaelv; // taille image originelle = 256 DrawSprite(SCB); Vsync(); if (tempa>0) --tempa; if (tempa==0) { if(joystick & BUTTON_OPTION2) { tempa=100; SmpStart(ola, 0); } } SwapBuffers(); } /************************************************************************** ** FIN de la BOUCLE PRINCIPALE ** **************************************************************************/ }

ps: Je fais mumuse avec SoundEditor, puis je convertis en wav avec Audacity :
http://audacity.sourceforge.net/
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

7

Pour poster du code, utilise plutôt le lien upload.gif Joindre un fichier ou une image à droite de la zone de texte, c'est plus pratique et ça évite de faire des longs posts qui ralentissent la page... (faut t'inscrire sur mirari.fr si tu veux que tes fichiers soient conservés indéfiniment)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

8

Il faut en effet attendre quelques secondes, mais ce n'est rien par rapport à ce j'ai connu dans ma jeunesse (no web aveugle ). Vous avez réussi à vous inscrire sur mirari.fr ? parce que moi je vois pas comment, enfin bref. Le mieux serait de réunir tout ça sur un site web, peut être sur mon blog, ou mieux sur un site spécialisé LYNX.
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

9

beauregard (./8) :
Vous avez réussi à vous inscrire sur mirari.fr ? parce que moi je vois pas comment, enfin bref.
Ben y'a rien de très compliqué : http://www.mirari.fr/user/account, puis le lien "vous n'avez pas de compte ?".
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

10

c'est fait ! boing
elvira 0.2 zoom et flip :
http://www.mirari.fr/XQZV


u8ZL


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

11

partymonster flipper animé (mais non jouable) vertical, D-pad, boutons A et B et options 1 et 2:
http://www.mirari.fr/VP5O

Je voulais en avoir le coeur net: maintenant c'est sûr, flipper vertical c'est mieux. smile


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

12

T'in c'est tellement bien foutu que ça me rend fou de pas voir la balle partir lorsque j'appuie sur Option1 tongue

PS : Je vais passer une commande de cartouches à Bernd notamment pour Gloob Shot et Fission mais j'aimerais bien aussi réunir sur une autre cartouche tout les essais que tu as fait sur Elvira. Pourrais-tu me faire passer les .o de tes réalisations que je compil ça sur un seul et même fichier ?
Mon site sur la LYNX :ZoneLynx

13

RYGAR (./12) :
T'in c'est tellement bien foutu que ça me rend fou de pas voir la balle partir lorsque j'appuie sur Option1 tongue

PS : Je vais passer une commande de cartouches à Bernd notamment pour Gloob Shot et Fission mais j'aimerais bien aussi réunir sur une autre cartouche tout les essais que tu as fait sur Elvira. Pourrais-tu me faire passer les .o de tes réalisations que je compil ça sur un seul et même fichier ?

là, il faudrait trouver un programmeur assembleur LYNX (doué dans la prog de la physique de la bille) pour voir notre rêve se réaliser. smile


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