MSX Village forum

La Place des Développeurs De l'utilisation de Vpoke en Screen 5 Tentative de création de sprites en page inactive.

MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 781

Le 27/01/2011 à 22h20
Je reprends un précédent post pour éviter le hors sujet.
Dans mon programme de test de collision j'envoie des données en F800H correspondant à 7800H (TAS) + 8000H (taille d'une page pour tenter d'agir sur les sprite sur la page suivante de la page active... En résumé:
Les valeurs &h7XXX sont pour les sprites en page0, Les valeurs en &hFXXX pour les sprite en page1 ( &h7XXX+&h8XXX=&HFxxx).Mais cela ne fonctionne qu'avec la table des patrons... l'accès aux autres semble limité par le basic.

Par contre je ne comprends pas pourquoi la gestion de la couleur n'a pas marché, peut être une erreur dans l'ordre d'entre des données??? Si le projet mérite d'être approfondi je lancerai un nouveau topic.

Voici le code :
Code BASIC :
10 SCREEN 5,1:SETPAGE0,0:CLS:'OPEN"grp:"FOROUTPUTAS#1
12 DEFINT A-Z
15 ONSPRITE GOSUB600
20 FORI=&H7800TO&H7807:VPOKEI,255:NEXT
30 FORI=&HF800TO&HF807:VPOKEI,255:NEXT
40 FORI=&H7600TO&H7607:READL:VPOKEI,L:NEXT
50 FORI=&HF600TO&HF607:READL:VPOKEI,L:NEXT
56 'SETPAGE1,1
57 FORI=&H7800TO&H7807:VPOKEI,255:NEXT
60 FORI=0TO240
70 VPOKE&H7601,I:VPOKE&H7605,240-I
80 VPOKE&HF601,I:VPOKE&HF605,240-I
90 SPRITE ON
100 NEXT
200 GOTO 200
500 DATA 50,0,0,8,80,240,0,10
510 DATA 50,0,0,8,50,240,0,10
600 SPRITEOFF:BEEP:RETURN


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 27/01/2011 à 22h34
Il n'y a pas une TAS par page, mais bien une seule TAS pour toute la VRAM.
L'adresse de départ de la TAS est paramétré par les registres R#5 et R#11.

Pour les sprites mode 2, l'ordre des données dans la TAS est :
Coordonnée Y
Coordonnée X
Numéro de sprite
(octet vide)

Ensuite les couleurs sont déterminées dans une table séparée (TCS), dont l'adresse de départ est de 512 octets avant la TAS.
Là, les couleurs sont stockées dans l'ordre des lignes des sprites (16x32=512).
Idem, il n'y a qu'une seule TCS pour toute la VRAM.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 781

Le 27/01/2011 à 22h55
Metalion :
Il n'y a pas une TAS par page, mais bien une seule TAS pour toute la VRAM.

L'adresse de départ de la TAS est paramétré par les registres R#5 et R#11.



Pour les sprites mode 2, l'ordre des données dans la TAS est :

Coordonnée Y

Coordonnée X

Numéro de sprite

(octet vide)



Ensuite les couleurs sont déterminées dans une table séparée (TCS), dont l'adresse de départ est de 512 octets avant la TAS.

Là, les couleurs sont stockées dans l'ordre des lignes des sprites (16x32=512).

Idem, il n'y a qu'une seule TCS pour toute la VRAM.




Le mode2, d'où mon erreur le quatrième octet est alloué à la couleur uniquement en mode 1 :| (euh c'est bien ça? :moue )



Je pensais qu'il y avait une TAS par page, car en basic on est obligé de créer les sprites sur toutes les pages pour qu'ils s'affichent sur chacune d'elle. (enfin si mes souvenirs sont bon :oups )

Mais alors à quoi servent tous ces octets inutilisés dans ces pages (1,2,3)?

Faut pas gacher! (aurait dit un grand philosophe auxerrois!


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 28/01/2011 à 09h45
MSXosaure :
Le mode2, d'où mon erreur le quatrième octet est alloué à la couleur uniquement en mode 1 :| (euh c'est bien ça? :moue )


Oui, c'est ça.



MSXosaure :
Je pensais qu'il y avait une TAS par page, car en basic on est obligé de créer les sprites sur toutes les pages pour qu'ils s'affichent sur chacune d'elle. (enfin si mes souvenirs sont bon :oups )


Tu as partiellement raison, dans le sens ou lorsqu'on spécifie un changement de page en BASIC, le changement de page affichée (premier paramètre de SETPAGE) déplace les tables des sprites. Ce n'est pas le cas si on change uniquement la page active (deuxième paramètre). Mais cela est uniquement valable en BASIC. En assembleur, les tables sont localisées à travers les registres du VDP, et le changement de page affichée ne modifie rien du tout.



MSXosaure :
Mais alors à quoi servent tous ces octets inutilisés dans ces pages (1,2,3) ?

Faut pas gacher! (aurait dit un grand philosophe auxerrois!


On en fait ce qu'on veut !!!

Le stockage de données graphiques semble évidemment la meilleure solution.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie