Fermer2
philip-lynxLe 22/11/2010 à 22:04
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]