La Place des Développeurs [EN COURS] Joe&mac Challenge. scrolling du jeu Joe And Ma.

Metalion :
Bizarre.
J'obtiens un "Disk I/O error" avec ton image disque sur BlueMSX
J'obtiens un "Disk I/O error" avec ton image disque sur BlueMSX

Bon, ce n'est pas ton image disque, parce que j'ai le même problème avec une autre disquette ... Etrange

Metalion :
Essaie de positionner les commandes VDP après la commande SCREEN5.
Je pense que le problème vient des commandes SET PAGE. Elles redéfinissent les zones SAT et SPT également.
Essaie donc de positionner les commandes VDP après les SET PAGE.
En fait, le plus près possible de ton moteur.
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)

Bien vu Métalion.
Il suffit de placer après SET PAGE pour déplacer les SPRITES.
Je vais donc éliminer toutes les commandes COPY ainsi que le Double Buffering.
Ca ira bien mieux comme ça
Par contre, un PUT SPRITE n'affiche plus aucun SPRITE
Edité par
igal
Le 12/02/2015 à 11h14
Il suffit de placer après SET PAGE pour déplacer les SPRITES.
Je vais donc éliminer toutes les commandes COPY ainsi que le Double Buffering.
Ca ira bien mieux comme ça

Par contre, un PUT SPRITE n'affiche plus aucun SPRITE


si tu fait un
set page 0,1
puis un put sprite
il n'y aura rien qui s'affiche.
Quand tu fais ton put sprite, ta page active doit être la 0
set page 0,1
puis un put sprite
il n'y aura rien qui s'affiche.
Quand tu fais ton put sprite, ta page active doit être la 0
igal :
Par contre, un PUT SPRITE n'affiche plus aucun SPRITE 

C'est normal.
Les commandes VDP ont redéfini les zones SAT et SPT, directement par accès au processeur vidéo. Le BASIC n'est pas au courant de ces modifications. Et donc, il utilise toujours les anciennes adresses (stockées dans la zone des variables système) pour gérer les sprites. Sauf que cela ne fonctionne plus, puisque nous les avons déplacées.
Pour pouvoir continuer à utiliser les sprites en BASIC, il faut mettre à jour ces adresses dans la zone des variables système. Et c'est là que ça se complique. Parce que ces adresses sont codées en 16 bits (2 octets), soit une adresse maxi en VRAM de $FFFF (65535), ce qui est bien en dessous de l'adresse que nous utilisons.
Le MSX BASIC a prévu le cas, en utilisant ces adresses non pas directement, mais de façon relative, à partir de l'adresse de la page active (c'est d'ailleurs ce qui m'a mis la puce à l'oreille sur le rôle de la commande SET PAGE). Mais cela ne nous arrange pas plus, car pour que les zones SAT et SPT puissent être localisés par le BASIC en page 3, il faudrait que la page active soit au minimum la page 2 (pour que le déplacement relatif des zones soit inférieur à 65536).
En résumé, nous nous heurtons ici à une limite du BASIC : il lui est impossible de déplacer la zone des sprites plus de 64Ko au delà de la page active, et de continuer à gérer les sprites par les commandes habituelles.
Pour être constructif, il est quand même possible de gérer des sprites après cette modification, mais tout doit se faire par la commande VPOKE (définition des patterns, des attributs ...).
PS : A noter que le BASIC aurait pu s'affranchir de ces problèmes si il avait autorisé la modification des adresses stratégiques par la commande BASE pour les modes graphiques au dessus de SCREEN 4. Pour une raison que j'ignore, on peut le faire jusqu'au SCREEN 4, mais pas au-delà. A partir de SCREEN 5, ces adresses sont en lecture seule uniquement. Edité par Metalion Le 13/02/2015 à 13h40
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)

Salut Metalion et merci pour ces explications 
Dans l'absolu, on pourrait mettre les "zones réservées" en page 1.
Cela rendrait alors impossible le projet de faire un scroll à la 3DS.
Avant cela, il me semble avoir appris je ne sais plus où dans le village que les adresses supérieurs à 65535 donc &HFFFF en hexadécimal sont accessibles grâce à une méthode toute simple prévue par Microsoft (il me semble)
Par exemple une adresse située à 65635 doit être écrite 65535 + 100
Ou encore &HFFFF + 100.
Il faut que le complément servant à l'adressage dépassant les 65535 soit en decimal obligatoirement.
Je me trompe peut être, mais il me semble bien que
Edité par
igal
Le 13/02/2015 à 14h19

Dans l'absolu, on pourrait mettre les "zones réservées" en page 1.
Cela rendrait alors impossible le projet de faire un scroll à la 3DS.
Avant cela, il me semble avoir appris je ne sais plus où dans le village que les adresses supérieurs à 65535 donc &HFFFF en hexadécimal sont accessibles grâce à une méthode toute simple prévue par Microsoft (il me semble)
Par exemple une adresse située à 65635 doit être écrite 65535 + 100
Ou encore &HFFFF + 100.
Il faut que le complément servant à l'adressage dépassant les 65535 soit en decimal obligatoirement.
Je me trompe peut être, mais il me semble bien que


On peut aussi atteindre la page 3 non pas en comptant 1+1+1+1+1 plus de 65535 fois...
Mais en comptant 1-1-1-1-1-1-1 quelques centaine de fois pour atteindre la même adresse non!?!?
Par rapport au point d'origine, la zone peut être déplacée de (moins 212 ligne)
Sachant que la zone couvre 44 ligne, il faudrait compter:
(-212) + (-44) ce qui donnerait... point de départ - 256 lignes pour que la zone se retrouve déplacée sur la page 3 de la ligne zéro à la ligne 43.
Bon... c'est juste une idée lol Edité par igal Le 13/02/2015 à 14h35
Mais en comptant 1-1-1-1-1-1-1 quelques centaine de fois pour atteindre la même adresse non!?!?
Par rapport au point d'origine, la zone peut être déplacée de (moins 212 ligne)
Sachant que la zone couvre 44 ligne, il faudrait compter:
(-212) + (-44) ce qui donnerait... point de départ - 256 lignes pour que la zone se retrouve déplacée sur la page 3 de la ligne zéro à la ligne 43.
Bon... c'est juste une idée lol Edité par igal Le 13/02/2015 à 14h35
igal :
Il faut que le complément servant à l'adressage dépassant les 65535 soit en decimal obligatoirement.
Non, ça n'a rien à voir avec cette méthode d'adressage (que je ne connaît pas d'ailleurs) et/ou de codage des nombres.
Ici le problème est que la variable réservée en zone de variables fait 2 octets de long.
Elle ne peut donc contenir qu'un nombre entre 0 et 65535.
Ni plus, ni moins.
Mais comme je l'ai dit, rien ne t'empêche de gérer les sprites en utilisant VPOKE. Edité par Metalion Le 13/02/2015 à 15h01
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)

Ok je comprends Métalion.
Le plus simple serait alors de déplacer en page 1.
De la sorte, je pourrais utiliser mes SPRITES sans ajouter de commandes particulières à celles prévues au départ
Dans la pratique, j'utiliserai:
SET PAGE 0 => Back ground Scrollé.
SET PAGE 1 => Sprites Héros + Balises Terre, Fer, Feu.
SET PAGE 2 => Faux Sprites Boss
SET PAGE 3 => Back Ground Supplémentaire pour un scrool court mais très rapide.
Merci de ton aide
Le plus simple serait alors de déplacer en page 1.
De la sorte, je pourrais utiliser mes SPRITES sans ajouter de commandes particulières à celles prévues au départ

Dans la pratique, j'utiliserai:
SET PAGE 0 => Back ground Scrollé.
SET PAGE 1 => Sprites Héros + Balises Terre, Fer, Feu.
SET PAGE 2 => Faux Sprites Boss
SET PAGE 3 => Back Ground Supplémentaire pour un scrool court mais très rapide.
Merci de ton aide

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie