Vous n'êtes pas identifié.
nan fais pas ça man ...
je serai pas d'accord !!
(n'empêche ça aide bien les commentaires arfff)
Hors ligne
KTRcheat je m' y attendait arff!
Sinon les 2 prog de johnny ( vous savez, le créateur de Mblast), BFEX et CEDIT permettront de facailiter tout ca !
allez voir sur le forum US !
Hors ligne
Ok ! Je le ferai juste pour moi alors !!
Hors ligne
KTRcheat je m' y attendait arff!
Sinon les 2 prog de johnny ( vous savez, le créateur de Mblast), BFEX et CEDIT permettront de facailiter tout ca !
allez voir sur le forum US !
Vous en fait pas la nouvelle version de TOUCHE permet déjà de créer, retailler, renommer et copier des fichiers basics ou n'importe quelle zone mémoire...
Hors ligne
ok t'as pensé a mettre les routines grafik de mon ktrh pour les tst grafik ?
Hors ligne
non, dit moi quelles sont celles que tu voudrais que je mette.
Hors ligne
ben cele ke tu ve :
[b] void BpixL(int px, int py) // Met un pixel noir à (px,py) { asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) db 0x0F,0x14,0x0C7 // set1 _BH,_CL Allume le _CLieme bit de _BH (qui était nul jusque la) or es:[si],bh // On place _BH en mémoire vidéo (couche 1 : 1A20) en prenant soin de ne pas effacer les autres |____> 2 Bits allumés -> Noir add si,0x0800 // On passe à la 2è couche or es:[si],bh // On place _BH en mémoire vidéo (couche 2 : 1AA0) en prenant soin de ne pas effacer les autres | > } } void GpixL(int px, int py) // Met un pixel gris à (px,py) (sauf si (px,py) est noir) { asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) db 0x0F,0x14,0x0C7 // set1 _BH,_CL Allume le _CLieme bit de _BH (qui était nul jusque la) or es:[si],bh // On place _BH en mémoire vidéo (couche 1 : 1A20) en prenant soin de ne pas effacer les autres |----> 1 Bits allumé -> Gris } } void WpixL(int px, int py) // Met un pixel blanc à (px,py) { asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) mov bh,0xFF // _BL = 0xFF; Allume tout les bits de _BL db 0x0F,0x12,0x0C7 // clr1 _BH,_CL éteint le _CLième bit de _BH. (qui était allumé jusque la) and es:[si],bh // On place _BH en mémoire vidéo (couche 1 : 1A20) en prenant soin de ne pas effacer les autres |____> 0 Bits allumés -> Blanc add si,0x0800 // On passe à la 2è couche and es:[si],bh // On place _BH en mémoire vidéo (couche 2 : 1AA0) en prenant soin de ne pas effacer les autres | > } } void GpixL2(int px, int py) // Met un pixel gris à (px,py) { asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) db 0x0F,0x14,0x0C7 // set1 _BH,_CL Allume le _CLieme bit de _BH (qui était nul jusque la) or es:[si],bh // On place _BH en mémoire vidéo (couche 1 : 1A20) en prenant soin de ne pas effacer les autres | > mov bh,0xFF // _BL = 0xFF; Allume tout les bits de _BL db 0x0F,0x12,0x0C7 // clr1 _BH,_CL éteint le _CLième bit de _BH. (qui était nul jusque la) |----> 1 Bits allumé -> Gris add si,0x0800 // On passe à la 2è couche and es:[si],bh // On place _BH en mémoire vidéo (couche 2 : 1AA0) en prenant soin de ne pas effacer les autres | > } } int TstpixL(int px, int py) { unsigned char coul = 0; asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) mov bh, es:[si] // _BH = 'octetsouhaité'; db 0x0F,0x010,0x0C7 // Test1 _BH,_CL Teste le _CLieme bit de _BH jz paplus // Si le _CLieme bit de _BH = 0 -> Z = 1 -> Sauter l'incrémentation inc coul // Si le _CLieme bit de _BH = 1 -> Z = 0 -> incrémentation de coul } paplus: asm{ add si,0x0800 // On passe à la 2è couche mov bh, es:[si] // _BH = 'pixelsouhaité'; db 0x0F,0x010,0x0C7 //Test1 _BH,_CL Teste le _CLieme bit de _BH jz nonplus // Si le _CLieme bit de _BH = 0 -> Z = 1 -> Sauter l'incrémentation inc coul // Si le _CLieme bit de _BH = 1 -> Z = 0 -> incrémentation de coul } nonplus: return coul; } void InvpixL(int px, int py) // 0 -> 2 | 1 -> 1 | 2 -> 0 { asm{ mov bx,px // _BX = px; On met l’abscisse px dans _BX mov si,py // _SI = py; On met l’ordonnée py dans _SI shl si,4 // _SI *= 16; Une ligne mesure 16 octet (128bit). _si pointe vers la bonne ligne mov cl,bl // _CL = _BL; _BX : [0;128[ On peut donc se contenter de _BL. shr bl,3 // _BL /= 8; Pour savoir quel Bit des 8 est allumé and cl,7 // _CL %= 8; On garde les 3 derniers bit de _CL, c’est le reste de la division 7 = b000 0111 add si,bx // _SI += _BX; _SI pointe vers le bon octet (16*y+x) mov bh, es:[si] // _BH = 'octetsouhaité'; db 0x0F,0x016,0x0C7 // not1 _BH,_CL Inverse le _CLieme bit de _BH mov es:[si], bh // On place _BH en mémoire vidéo (couche 1 : 1A20) add si,0x0800 // On passe à la 2è couche mov bh, es:[si] // _BH = 'octetsouhaité'; db 0x0F,0x016,0x0C7 // not1 _BH,_CL Inverse le _CLieme bit de _BH mov es:[si], bh // On place _BH en mémoire vidéo (couche 1 : 1A20) } } [/b] void CpixL(int px, int py, char couleur) //Pixel de couleur 0, 1, 2 (W, G, B) { switch (couleur) { case 0: WpixL(px, py); break; case 1: GpixL(px, py); break; case 2: BpixL(px, py); break; case 3: GpixL2(px, py); break; } }
Sinon g du dbl buf mai c pa tré interessant isn't it ...
Merci encore a whyp tan ke j sui..
Hors ligne
Il faut être dans quel mode pour qu'elles marchent ?
Hors ligne
Elles marchent en mode db...
Le seul probleme de ces fonctions, même si elle sont les plus rapides en matiere de code, c'est que les coordonnees (0;0) sont en bas a droite...
Ce qui est bien sur justifié par le peu de calcul...
L'autre défault je pense est pour les pixels gris... Ils ne s'affichent pas forcément...c embettant :?
Hors ligne
Alors le (0,0) en bas a droite ca pose aucun problem moi meme je m'y suis habitué ..
Pour les pixl gris tu a du remarké k'il y a deux fonctions gpixl et gpixl2...
La premiere ne s'affichant pa s'il y a deja un pixl noir mais la deuxieme SI !!
C effectivement du mode db
Hors ligne
il n' écrasent pas les pixels noir, je suppose !
Dans ce cas, il fo faire un OR pour mettre une couche a 1 et un AND pr mettre l' autre couche a 0 !
PS: a tout ceux qui font ses fonctions la : mettait 2 fonctions de gris dont l' autre est sur l' autre couche ! cad on a :
1ere fonction : couche1 '1' couche2 '0'
2eme fonction : couche1 '0' couche2 '1'
En effet, casiomax m' a fait remarqué que selon la couche activé, ca pouvait donner des effets intérréssants avec cette méthode !
Hors ligne
oui mais ca pose quand meme un probleme qu'il y ait deux fonctions...
( j'l'avais vu)
Car quand on ne sait pas si le pixel de la mémoire video est allumé ou éteinds, ca déclenche des bugs... Par exemple lorsque que tu vas coder un sprite avec du gris... il ne va pas toujours correctement...
Par contre c clair que c'est plus pratique de prendre les coordonnees de (0;0) en bas a droite car ca simplifie carrement les calculs, et ca permet d'utiliser directement les instructions spécifiques du nec sans aucuns bugs...
Hors ligne
voila une ptite niouse: pê un 4e nivo de difficulté que rajoute le temps pour ce week-end!
Hors ligne
Bon g vraiment la flemme de traduire: allez voir le forum us pour les infos (car g rajouté le time limit dans le jeu)
I've changed the timer technic, now it is fully software, and no longer hardware, as I did this morning ...
why? because if you shut down the calc, or just go on the pause menu, the time used to decrease, cause it was based on the rtc ...
So now it is ok
Other thing: the ennemies now are a little bit improved ... now they no longer go on fire generated by the explosion, so it is a bit more difficult to kill them, but just a little hehe ..
et une ptite opti en taille (-1Ko)
Hors ligne
bon allez je vous traduis:
1-mise en place du temps (réglage auto en fonction de la difficulté)
2-les ennemis sont un peu moins cons (ne se jettent pas dans les flammes)
3-y'a un effet de motion blur (fondu) après le game over
4-le moteur des ennemis a été complètement remanié! (c'est la 2e grosse opti ke je fais dessus): il est maintenant bcp plus optimisé en taille et en vitesse, avec pour avantages pas de bugs (ennemis ki bougent plus...)
Et je prépare encore mieux ... allez voir les idées des gars sur le forum US, topic SuperBomberman évidemment
Hors ligne
ah !!!
merci...
parce que j'avais déja baissé les bras !!!
ca s'annoce cool...
Hors ligne
y'a un effet de motion blur (fondu) après le game over
le motion c quand on voit les trainée, ce qui est automatiquement généré par un écran LCD :ptdr:
Hors ligne
et voila ce que sera pê le moteur de Super Bomberman II:
http://leneuronez.free.fr/MX2D.EXE
ça c juste une adaptation très à l'arrache de mx2d pour metal gear... en fait je suis en 5 couleurs et je dessine 2 fois de trop les sprites, donc en vrai ça va plus vite
Hors ligne
tenez g la flemme de traduire:
First of all, here is the Metal Gear Solid Graphic engine adapted very quickly to a super bomberman theme:
http://leneuronez.free.fr/MX2D.EXE
note that I am in 5 grays mode, and to keep the originality of the sprites I draw two sprites 'more'. But it isn't important.
The lastest demo of G-Explorer2:
http://leneuronez.free.fr/G-EXII.EXE
press optn to get in the explorer
(+ & - handle the contrast)
You can read txt files with the backspace handled, read csv, bmp and of course execute exe&com (you can also view hardware directories)
An out of date mx3d calc demo:
http://leneuronez.free.fr/MX3D100.EXE
and the PC version (the invisible lines are drawn in green):
http://leneuronez.free.fr/MX3D.EXE
don't forget the graphic driver needed:
http://leneuronez.free.fr/EGAVGA.BGI
(to put in the same directory than the *.exe file)
And of course for more infos about all my projects, visit:
http://fgpstudios.free.fr/
In the Wip's section!
'hope you'll like my work!
Hors ligne
bin... non, mais les moteurs graphiques ca me parle pas bcp...
et pis chuis pas tres bon en anglais
Hors ligne
Et si a titre comparatif vous voulez la démo de mon moteur TB2D rien que pour rivaliser avec casiomax lol bin demandez et je met le lien :mrgreen:
Hors ligne