Re: THOMSON MO6 SPRITE ASM

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 SPRITE ASM

Message par dinoprodest »

bonsoir tout le monde, j'ai fait une routine asm pour créer un sprite avec transparence. Pour ce faire, je tamponne la partie de l'écran avant de placer le sprite. Lorsque je déplace le sprite, je restaure la partie de l'écran. Tout fonctionne sauf lorsque plusieurs sprites se croisent. Qu'est-ce que je fais mal?
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: THOMSON MO6 SPRITE ASM

Message par hlide »

L'ordre des dessins j'imagine. Si tu fais dans cet ordre pour dessiner : sauver fond dans tampon #1 + dessiner lutin #1 + sauver tampon #2 + dessiner lutin #2, puis restaurer tampon #1 + restaurer tampon #2, tu cours le risque que tampon #2 enregistre la partie du lutin #1 en commun avec le lutin #2 et donc au moment de restaurer le fond, tu te retrouves à laisser une partie du lutin #1 en fond. Il faut généralement effacer dans l'ordre inverse. L'autre façon de faire est d'enregistrer tous les tampons avant de dessiner les lutins. Quand il faudra effacer les lutins, il faudra juste redessiner les tampons pour les effacer.
Dernière modification par hlide le 04 févr. 2020 10:07, modifié 1 fois.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 SPRITE ASM

Message par dinoprodest »

merci beaucoup, juste ce que j'essayais de comprendre :D
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: THOMSON MO6 SPRITE ASM

Message par Neotenien »

J'ai également créé un tel module Assembleur qui prend moins de 150 octets tout inclus, pour les BM16.
Ce module affiche un sprite en X-Y sur l'écran (X va de 0 à 79 (du fait de la gestion particulière du mode bm16 par paquets de 2 pxl) Y de 0 à 199) en RAM écran (A et B) et tient compte de la transparence (couleur 15 = transparence). Il tient compte aussi du fait qu'il s'agit d'un sprite ou d'un TILE (pour les éventuels jeux comme une adaptation de Super Mario en Teo et Méo). Ma routine est optimisée, notamment pour la gestion de la transparence, cela ne prend que 29 à 36 cycles d'horloge)

Pour le moment je m'en sers pour l'adaptation de Bubble Bobble. J'arrive à afficher 12 sprites de 8x16 en animation sur toute la largeur (78 déplacements de 12 sprites en 7 s en avec un timer en 1/10). Cette routine permettra dans le jeux aux sprites de se chevaucher sans aucun problème (contrairement aux version C64, ZX Spectrum, Master System, NES, Apple II etc) parce qu'utiliserait la commutation de banque 2 et 3 avec la RAM logique ($4000). La technique est que je travaille dans une des 2 banque quand elle n'est pas affichée, en supprimant d'abord tous les sprites puis les réaffichant à leurs nouvelle coordonnées, puis je bascule la RAM écran logique vers cette banque là. Aucun autre ordi 8 bits (sur Bubble Bobble) n'est capable d'avoir une telle transparence, notamment en traversant les sols, sur Bubble Bobble. MERCI au CF74001 de pouvoir faire ça. Mais bon ça resterai du 160x200 quand même (dommage comparé à 'lAtari ST qui est en 320x200 16c)
Répondre