MSX Village forum

La Place des Développeurs Question sur Zone des Sprites

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5491

Le 22/01/2016 à 18h19

Reprise du message précédent

Metalion :
Ce n'est qu'une routine qui écrit 4 octets en VRAM, ce n'est pas très compliqué ...





Oui bien sur... Mais disons que : parce-que tu programmes en ASM, tu as un autre point de vue sur les choses... Pour toi un sprite c'est 4 octets en VRAM. Pour moi c'est PUT SPRITE, je ne cherche pas à savoir ce qu'il y a derrière... Edité par ericb59 Le 22/01/2016 à 18h20


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5491

Le 27/01/2016 à 14h11
Hello Metalion,

j'ai essayé tes programme, et je n'arrive à aucun résultat...

Si je regarde en détail, je me pose des questions...

Tu utilises la Fonction 23, qui est DATA BLOCK TRANSFERT BETWEEN VRAM.
J'ai déjà utilisé cette focntion pour copier un morceau de Vram, ailleurs...
Ce que je ne comprend pas c'est que ton P(0)=S+6
Normalement dans la fonction 23, P(0) et p(2) doivent être égal à 0 (Premier bloc de 64K de la VRAM) ou 1 (Second block de 64K de la VRAM)


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1488

Le 27/01/2016 à 14h34
J'avoue que la documentation de NestorBasic est parfois peu claire.

Mais d'après ce que j'ai compris, NB fonctionne avec des "segments" logiques de RAM et de VRAM, chacun faisant 16K. Je me suis donc basé sur cette partie de la documentation :

Code :
0: NestorBASIC segment
1: Turbo-BASIC segment
2: BASIC main RAM, page 2 (&H8000-&HBFFF)
3: BASIC main RAM, page 3 (&HC000-&HFFFF)
4: Internal buffer segment
5 to S-1: Available RAM for the user (if S>5)
   If the music replayer is loaded,
   it is stored in segment 5. See section 8.
S:   VRAM, addresses &H1C000-&H1FFFF (64K VRAM: &HC000-&HFFFF)
S+1: VRAM, addresses &H18000-&H1BFFF (64K VRAM: &H8000-&HBFFF)
S+2: VRAM, addresses &H14000-&H17FFF (64K VRAM: &H4000-&H7FFF)
S+3: VRAM, addresses &H10000-&H13FFF (64K VRAM: &H0000-&H3FFF)
S+4: VRAM, addresses &H0C000-&H0FFFF (not available with 64K VRAM)
S+5: VRAM, addresses &H08000-&H0BFFF (not available with 64K VRAM)
S+6: VRAM, addresses &H04000-&H07FFF (not available with 64K VRAM)
S+7: VRAM, addresses &H00000-&H03FFF (not available with 64K VRAM)


Dès que j'ai un peu de temps, je ferai des tests complémentaires sur mon code.
Mais ce ne sera pas avant vendredi. Edité par Metalion Le 27/01/2016 à 14h46


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)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1488

Le 29/01/2016 à 16h48
Bon, j'ai fait quelques tests et j'ai déjà trouvé plusieurs erreurs dans les paramètres P(0) et P(1) de mes commandes NB de transfert de VRAM vers VRAM.
J'ai du aller un peu vite ... :oups

Cependant, même avec ces erreurs corrigées, mon programme test plante. Il y a donc d'autres erreurs. Et j'ai des problèmes avec NB. Car lorsque je veux obtenir le nombre de segments de mémoire disponibles - J=USR(1):PRINT P(0) -, parfois il me répond correctement (32), parfois j'ai n'importe quoi comme réponse.

Il faut que je prenne le temps de regarder plus en profondeur ...

Déplacement des zones constituantes des sprites
Code :
10 S=32
20 '
30 'Transfert de la table de couleur des sprites
40 'de $0F800 vers $10000, longueur 512 octets
50 '
60 P(0)=S+4
70 P(1)=&HF800-&HC000
80 P(2)=S+3
90 P(3)=0
100 P(4)=512
110 J=USR(23)
120 '
130 'Transfert de la table des attributs des sprites
140 'de $0FA00 vers $10200, longueur 128 octets
150 '
160 P(0)=S+4
170 P(1)=&HFA00-&HC000
180 P(2)=S+3
190 P(3)=&H200
200 P(4)=128
210 J=USR(23)
220 '
230 'Transfert de la table de génération des sprites
240 'de $0F000 vers $10800, longueur 2048 octets
250 '
260 P(0)=S+4
270 P(1)=&HF000-&HC000
280 P(2)=S+3
290 P(3)=&H800
300 P(4)=2048
310 J=USR(23)
320 '
330 'Adresse table attributs sprites = $10200 (66048)
340 '=> registre 5 = 0
350 '=> registre 11 = 2
360 '
362 P(0)=0
364 P(1)=&h47
366 P(3)=5
368 J=USR(58)
370 P(0)=0
380 P(1)=&H47
390 P(3)=2*256+11
400 J=USR(58)
410 '
420 'Adresse table génération sprites = $10800 (67584)
430 '=> registre 6 = 33
440 '
450 P(0)=0
460 P(1)=&H47
470 P(3)=33*256+6
480 J=USR(58)


EDIT : il y a définitivement un problème avec NB ... Même les fonctions basiques ne marchent pas. Je viens d'essayer de mettre 16 caractères espace au début de l'écran texte, et ça ne fonctionne pas :hum
Code :
10 P(0)=32+7:P(1)=0
20 P(2)=32:P(3)=16
30 J=USR(24)


Il doit y avoir quelque chose que je ne comprends pas ... :hum Edité par Metalion Le 29/01/2016 à 17h11


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)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5491

Le 29/01/2016 à 18h05
j'ai eu une fois un problème avec nestor basic de ce genre, et ça venais de l’émulation BlueMsx.
J'ai utilisé ou créé une autre machine et c'est rentré dans l'ordre.


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie