La Place des Développeurs [EN COURS] VDP(24) Le scrolling hardware vertical Comment créer un scroll vertical.

Reprise du message précédent
Pour créer tes propres décors il faut découper la mappe en blocs de 64 puis 192 alternativement en commençant du bas et en allant vers le haut.Avant cela, il faut retirer une première image de 212 pixels qui sera l'image de prė-scroll nommée alpha.
Il faut donc nommer les blocs de 64 en 0BAS et 0 pour le bloc de 192.
1BAS pour le bloc de 64 puis 1 pour le bloc de 192.
Chaque paire "0BAS+0", "1BAS+1", "2BAS+2" etc forment un ensemble d'un total de 256×256 au total.
Le générateur va créer les répertoire 0 à F et y injecter 4 bribes de 64.
Le répertoire 8 contiendra lez bribes 0,1, 2 et 3 extraites des images 8BAS pour le fichier 0, et les bribes 1, 2 et 3 sont extraites de l'image 8.
Le répertoire 9 contiendra les bribes 0,1,2 et 3 extraites des images 9BAS pour le fichier 0. 1,2 et 3 sont extraites du fichier 9.
Il faut juste mettre toutes tes images dans le répertoire STAGE1 et le générateur quant à lui doit se trouver hors de ce répertoire.
Etc etc... Edité par igal Le 10/01/2016 à 17h32

Finalement enregistrer les brides par bloc de 64 pixels de haut dans les secteurs ca ne marche pas...
Il faut que je ré encode les graphiques pour les enregistrer en ordre inverse, 2 lignes par 2 lignes !
C'est pas gave si tu ne me comprends pas... ! j'ai du mal à me comprendre moi même !
Il faut que je ré encode les graphiques pour les enregistrer en ordre inverse, 2 lignes par 2 lignes !
C'est pas gave si tu ne me comprends pas... ! j'ai du mal à me comprendre moi même !


Bon, j'ai remis de l'ordre et maintenant ça commence à fonctionner !
Par contre j'ai un problème et je ne sais pas comment le résoudre...
Je dois pouvoir envoyer mes données dans la mémoire video qui vas donc de la ligne 256 à 0
256 = &hFFFF
Le problème est que le Basic ne sait compter que de -32768 à +32768
IL ya donc des zone qui me sont inaccessible et me donnent un Overflow !
Comment faire ?
Par contre j'ai un problème et je ne sais pas comment le résoudre...
Je dois pouvoir envoyer mes données dans la mémoire video qui vas donc de la ligne 256 à 0
256 = &hFFFF
Le problème est que le Basic ne sait compter que de -32768 à +32768
IL ya donc des zone qui me sont inaccessible et me donnent un Overflow !
Comment faire ?


Pour atteindre certaines adresses j'ai du additionner du decimal à de l'héxadecimal. (Je me demande même si on peut faire decimal+hexa+binaire)
Attention: Lorsque j'ai travaillé sur caveman Ninja en double buffer, la page 0 étant la page de travaille/visible et la page 1 la page buffer:
Je n'arrivait désespérément pas à copier/coller correctement les pixels contenus entre 212 et 255 de la page 1 vers la page 0 lignes 212 à 255 de sorte à recouvrir les pixels résiduels du déplacement du hero.
J'ai laissé tomber le double buffer et faux sprites à cause de ce problème pour lequel personne n'a su m'aider
D'ici peu, j'aurai terminé mon moteur qui gère les scroll droite et gauche à volonté. Le résulta devrait être assez spectaculaire et motivant d'autant qu'une fois le moteur scroll gauche droite bien huilé, je voudrai lui mixer le scroll haut et bas
Attention: Lorsque j'ai travaillé sur caveman Ninja en double buffer, la page 0 étant la page de travaille/visible et la page 1 la page buffer:
Je n'arrivait désespérément pas à copier/coller correctement les pixels contenus entre 212 et 255 de la page 1 vers la page 0 lignes 212 à 255 de sorte à recouvrir les pixels résiduels du déplacement du hero.
J'ai laissé tomber le double buffer et faux sprites à cause de ce problème pour lequel personne n'a su m'aider

D'ici peu, j'aurai terminé mon moteur qui gère les scroll droite et gauche à volonté. Le résulta devrait être assez spectaculaire et motivant d'autant qu'une fois le moteur scroll gauche droite bien huilé, je voudrai lui mixer le scroll haut et bas

ericb59 :
Par contre j'ai un problème et je ne sais pas comment le résoudre...
Je dois pouvoir envoyer mes données dans la mémoire video qui vas donc de la ligne 256 à 0
256 = &hFFFF
Le problème est que le Basic ne sait compter que de -32768 à +32768
IL ya donc des zone qui me sont inaccessible et me donnent un Overflow !
Comment faire ?
Je dois pouvoir envoyer mes données dans la mémoire video qui vas donc de la ligne 256 à 0
256 = &hFFFF
Le problème est que le Basic ne sait compter que de -32768 à +32768
IL ya donc des zone qui me sont inaccessible et me donnent un Overflow !
Comment faire ?

De mémoire, il n'y a pas de solution à ce problème.
Le BASIC ne sait pas accéder à toute la VRAM, c'est comme ça.
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)

https://youtu.be/zf2X2YdEho0
Regarde cette vidéo de caveman Ninja.
Certaines adresses inaccessibles j'ai utilisé bload"" et j'ai additionné
Bload"xyz. Sca",S, 0+32768!
J'ai pu couvrir chaque pixels des 128 ko de vram en Basic en procédant de la sorte. Du moins, j'ai pu remplir les deux pages 0 e 1 du screen 10/11/12 sans quitter la page 0
Les adresse négatives devraient être la solution pour ne pas utiliser bload comme je le fais avec les 44 dernières lignes du buffer qui est en page 1
Listing voir de 562 à 614
Edité par
igal
Le 11/01/2016 à 13h35
Regarde cette vidéo de caveman Ninja.
Certaines adresses inaccessibles j'ai utilisé bload"" et j'ai additionné
Bload"xyz. Sca",S, 0+32768!
J'ai pu couvrir chaque pixels des 128 ko de vram en Basic en procédant de la sorte. Du moins, j'ai pu remplir les deux pages 0 e 1 du screen 10/11/12 sans quitter la page 0

Les adresse négatives devraient être la solution pour ne pas utiliser bload comme je le fais avec les 44 dernières lignes du buffer qui est en page 1
Listing voir de 562 à 614


Voilà, j'ai finalement trouvé une astuce pour arriver à mes fins !
Le résultat est impressionnant de fluidité et de vitesse !
Je vous laisse essayer par vous même...
télécharger ce fichier Disque Dur : scrollhdd.zip
Configurez Blue MSX
> Fichier > Port Cartouche 1 > INsérer Spécial > Ide > Surise
puis
> Fichier > Disque Dur > IDE0 > Insérer > Choisissez le fichier téléchargé
Bootez avec un MSX2
Allez sous basic
> BASIC
puis lancez RUN"SCROLL2B.BAS"
Au départ un écran noir, je n'ai pas mis d'image de départ...
Pressez la touche curseur HAUT pour faire défiler et voir apparaitre le décors...
Puis pressez la touche curseur BAS pour aller dans l'autre sens...
Pour sortir du programme, presez la touche curseur GAUCHE.
Comment ça fonctionne ...
J'ai écris des brides de 2 pixels de haut directement dans les secteurs du disque dur.
(Programme TOSECTOR.BAS, qui se trouve sur le disque) à partir des secteurs 20000
Le programme SCROLL2B.BAS; lis les secteurs et affiche directement le résultat dans la VRAM.
Le mode turbo de NestorBasic est activé.
Mais ça marche plutôt bien aussi sans le mode turbo.
Je pense qu'il reste sufisemment de ressources systeme pour déplacer quelques sprites en même temps !
Le scroll se fait par pas de 2 pixels.
C'est tout aussi rapide sur un Vrai MSX2 avec SD Drive.
Le listing est très petit pour faire un scroll Bi-directionel
jugez plutôt
et il n'est pas optimisé du tout !
Je pense qu'il y a là de quoi s'amuser, je suis bluffé !
Edité par
ericb59
Le 12/01/2016 à 10h04
Le résultat est impressionnant de fluidité et de vitesse !
Je vous laisse essayer par vous même...
télécharger ce fichier Disque Dur : scrollhdd.zip
Configurez Blue MSX
> Fichier > Port Cartouche 1 > INsérer Spécial > Ide > Surise
puis
> Fichier > Disque Dur > IDE0 > Insérer > Choisissez le fichier téléchargé
Bootez avec un MSX2
Allez sous basic
> BASIC
puis lancez RUN"SCROLL2B.BAS"
Au départ un écran noir, je n'ai pas mis d'image de départ...
Pressez la touche curseur HAUT pour faire défiler et voir apparaitre le décors...
Puis pressez la touche curseur BAS pour aller dans l'autre sens...
Pour sortir du programme, presez la touche curseur GAUCHE.
Comment ça fonctionne ...
J'ai écris des brides de 2 pixels de haut directement dans les secteurs du disque dur.
(Programme TOSECTOR.BAS, qui se trouve sur le disque) à partir des secteurs 20000
Le programme SCROLL2B.BAS; lis les secteurs et affiche directement le résultat dans la VRAM.
Le mode turbo de NestorBasic est activé.
Mais ça marche plutôt bien aussi sans le mode turbo.
Je pense qu'il reste sufisemment de ressources systeme pour déplacer quelques sprites en même temps !
Le scroll se fait par pas de 2 pixels.
C'est tout aussi rapide sur un Vrai MSX2 avec SD Drive.
Le listing est très petit pour faire un scroll Bi-directionel
jugez plutôt
Code TEXT :
10 BLOAD"nbasic.bin",R 20 SCREEN8:CLS 30 CALL TURBO ON(P()) 31 H=127:S=&H4E20-H:AD=32256 40 VDP(24)=VDP(24)-84AND255 50 P(0)=0:P(1)=S:P(2)=0:P(3)=AD:P(4)=1:E=USR(36) 60 K=STICK(0):ON K GOSUB 90,80,80,80,130,80,170 70 GOTO 60 80 RETURN 90 IF C<>1 THEN C=1:S=S+H:AD=AD+512 95 VDP(24)=VDP(24)-2AND255 100 S=S+1:AD=AD-512:IF AD<-32768! THEN AD=32256 110 P(0)=0:P(1)=S:P(2)=0:P(3)=AD:P(4)=1:E=USR(36) 120 RETURN 130 IF C<>5 THEN C=5:S=S-H:AD=AD-512 135 VDP(24)=VDP(24)+2AND255 140 S=S-1:AD=AD+512:IF AD>=32768! THEN AD=-32256 150 P(0)=0:P(1)=S:P(2)=0:P(3)=AD:P(4)=1:E=USR(36) 160 RETURN 170 END 180 CALL TURBO OFF
et il n'est pas optimisé du tout !
Je pense qu'il y a là de quoi s'amuser, je suis bluffé !


IF AD<-32768! THEN AD=32256 Bien joué l'ami 
Edit: ça motive pour bosser sur vdp 27. Demain j'essais de finir le moteur qui permettra les direction droite et gauche à volonté
Edité par
igal
Le 12/01/2016 à 06h06

Edit: ça motive pour bosser sur vdp 27. Demain j'essais de finir le moteur qui permettra les direction droite et gauche à volonté


@Eric: Je viens d'essayer en MSX2 et MSX2+, mais j'ai le même résulta.
Une quarantaine de lignes cohérentes au départ (avec une palettes de couleurs incohérente) puis une bouillie espacée de vides noir puis de la bouillie etc etc...
Un moment, il y a une sorte de damier avec une palette toujours ko puis de la bouillie.
Soit tu t'es trompé de version que t'as posté, soit tu t'es fait avoir avec une VRAM "Précédemment" remplie de page cohérentes
Je suis impatient de voir courir ton bébé
Edit: Par contre, en scrollant vers le bas, on voit des images en SCREEN12 que tu as stocké à un moment donné sur ton Disque dur.
(Pense à virer ta propagande djihadiste lol)
Y a quelques saisie d'écran et de la bouillie mélangée
Edité par
igal
Le 12/01/2016 à 09h17
Une quarantaine de lignes cohérentes au départ (avec une palettes de couleurs incohérente) puis une bouillie espacée de vides noir puis de la bouillie etc etc...

Un moment, il y a une sorte de damier avec une palette toujours ko puis de la bouillie.
Soit tu t'es trompé de version que t'as posté, soit tu t'es fait avoir avec une VRAM "Précédemment" remplie de page cohérentes

Je suis impatient de voir courir ton bébé

Edit: Par contre, en scrollant vers le bas, on voit des images en SCREEN12 que tu as stocké à un moment donné sur ton Disque dur.

(Pense à virer ta propagande djihadiste lol)
Y a quelques saisie d'écran et de la bouillie mélangée


C'est ok maintenant.
En fait, il fallait virer mon HD du port 1 et mettre à la place ton HD.
Auparavant, j'avais mis ton image HD sur le port 2!
Alors pour les sprites, malheureusement, personne n'a su donner une solution suffisamment explicite pour que je puisse commencer à travailler dessus
Toi qui parle en anglais, essaie de demander sur MSX.Org si quelqu'un expérimenté avec les Sprites peut te donner une solution "explicite" de sorte à pouvoir au moins travailler dessus et améliorer à mesure des progressions
En attendant tu peux désactiver l'affichage des sprites à l'écran avec VDP(9)=VDP(9)OR2
si tu veux visualiser les "Hors zone normales" pendant ton scroll tu peux faire VDP(9)=VDP(9)+127
En fait, il fallait virer mon HD du port 1 et mettre à la place ton HD.
Auparavant, j'avais mis ton image HD sur le port 2!
Alors pour les sprites, malheureusement, personne n'a su donner une solution suffisamment explicite pour que je puisse commencer à travailler dessus

Toi qui parle en anglais, essaie de demander sur MSX.Org si quelqu'un expérimenté avec les Sprites peut te donner une solution "explicite" de sorte à pouvoir au moins travailler dessus et améliorer à mesure des progressions

En attendant tu peux désactiver l'affichage des sprites à l'écran avec VDP(9)=VDP(9)OR2
si tu veux visualiser les "Hors zone normales" pendant ton scroll tu peux faire VDP(9)=VDP(9)+127

Alors, j'ai fait quelques tests depuis hier...
Comme tu peux le constater, la vitesse de chargement depuis les secteurs du disque est très rapide, et cela donne vraiment quelque chose de fluide.
J'ai mis un player musical par dessus, et à à cause es accès disques constant, même si ils sont plus rapide qu'avec des Bload ou des copy, cela hache considérablement la musique.
Alors j'ai eu une autre idée.
Utiliser le même principe, mais plutôt que de lire les brides depuis le disque, je les lis depuis la RAM.
j'ai préalablement rempli une RAM de 512K avec les graphismes (cela représente une surface de 8 écrans 256x256).
Avec, les instructions du NestorBasic on peut lire la RAM avec transfert direct sur la VRAM. Il y a peut de changements à faire au niveau du programme...
La vitesse est encore plus rapide, et c'est encore plus fluide.
On peut ajouter un player musicale par dessus, la musique n'est pas hachée... Et je suis certain que l'on pourrait y gérer des sprites en plus tout en gardant un rendu fluide...
Malheureusement j'ai bien peut que cela soit incompatible avec l'utilisation du scroll VDP(24).
Comme tu peux le constater, la vitesse de chargement depuis les secteurs du disque est très rapide, et cela donne vraiment quelque chose de fluide.
J'ai mis un player musical par dessus, et à à cause es accès disques constant, même si ils sont plus rapide qu'avec des Bload ou des copy, cela hache considérablement la musique.
Alors j'ai eu une autre idée.
Utiliser le même principe, mais plutôt que de lire les brides depuis le disque, je les lis depuis la RAM.
j'ai préalablement rempli une RAM de 512K avec les graphismes (cela représente une surface de 8 écrans 256x256).
Avec, les instructions du NestorBasic on peut lire la RAM avec transfert direct sur la VRAM. Il y a peut de changements à faire au niveau du programme...
La vitesse est encore plus rapide, et c'est encore plus fluide.
On peut ajouter un player musicale par dessus, la musique n'est pas hachée... Et je suis certain que l'on pourrait y gérer des sprites en plus tout en gardant un rendu fluide...
Malheureusement j'ai bien peut que cela soit incompatible avec l'utilisation du scroll VDP(24).

VDP(24) faisant défiler verticalement, faut impérativement trouver une solution pour utiliser les sprites sur la Page1.
Ne sachant pas faire ça, j'ai donc laisser de coté et travaillé sur VDP(27) qui ne pose pas de problème puisqu'il génère un scroll horizontal et n'affecte donc pas les zones réservées
Concernant la RAM, je me souviens pas si je t'ai prêté la Playsoniq
Il y a 16MO de RAM disponibles exploitables avec un petit programme que m'avait fait pour l'occasion Hit9918. Faut retrouver le sujet dans le village.
Pour ce qui est de la rapidité, effectivement, nous sommes en Basic mais lorsqu'on voit que le player Dragon's lair peut lire en streaming 12 images SC4 par seconde et du PCM à 15 Khz, je me dit qu'on peut au moins streamer un Sample en Basic.
J'ai pensé m'attaquer à l'audio après les Sprites
d'ici peu, je devrais avoir fini le moteur de bribes VDP(27) Tu pourras l'adapter à ta sauce et utiliser les Sprites sans aucun problème
bon apétit
Ne sachant pas faire ça, j'ai donc laisser de coté et travaillé sur VDP(27) qui ne pose pas de problème puisqu'il génère un scroll horizontal et n'affecte donc pas les zones réservées

Concernant la RAM, je me souviens pas si je t'ai prêté la Playsoniq

Il y a 16MO de RAM disponibles exploitables avec un petit programme que m'avait fait pour l'occasion Hit9918. Faut retrouver le sujet dans le village.
Pour ce qui est de la rapidité, effectivement, nous sommes en Basic mais lorsqu'on voit que le player Dragon's lair peut lire en streaming 12 images SC4 par seconde et du PCM à 15 Khz, je me dit qu'on peut au moins streamer un Sample en Basic.
J'ai pensé m'attaquer à l'audio après les Sprites

d'ici peu, je devrais avoir fini le moteur de bribes VDP(27) Tu pourras l'adapter à ta sauce et utiliser les Sprites sans aucun problème

bon apétit


Mais au fait, peux tu poster ton générateur et player que tu utilises pour jouer les samples entre chaque bribe en continu 
Je voudrais m'essayer à adapter battle squadron mais je trouve pas de map sur le net
Edité par
igal
Le 13/01/2016 à 08h11

Je voudrais m'essayer à adapter battle squadron mais je trouve pas de map sur le net

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