MSX Village forum

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

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 10/01/2016 à 17h29

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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 10/01/2016 à 17h57
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 ! :lol


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 10/01/2016 à 19h46
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 ? :hum


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 10/01/2016 à 20h29
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 ^^


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 10/01/2016 à 21h03
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 ? :hum


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 10/01/2016 à 21h24
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 11/01/2016 à 19h16
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
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é ! :) Edité par ericb59 Le 12/01/2016 à 10h04


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 11/01/2016 à 20h42
IF AD<-32768! THEN AD=32256 Bien joué l'ami :top

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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/01/2016 à 08h57
@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 :fou

Je suis impatient de voir courir ton bébé :D

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. :D
(Pense à virer ta propagande djihadiste lol)

Y a quelques saisie d'écran et de la bouillie mélangée :fou Edité par igal Le 12/01/2016 à 09h17


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 12/01/2016 à 09h46
Igal, je viens de télécharger le HDD que j'ai posté hier, et ça fonctionne bien pour moi...

Essaie en dézippant le ZIP ?


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/01/2016 à 09h51
T'as du virer le lien de téléchargement sans faire exprès, l'est plus là :'(


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 12/01/2016 à 10h04
oups ! Remis en place ! Edité par ericb59 Le 12/01/2016 à 10h16


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/01/2016 à 10h54
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


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 12/01/2016 à 11h29
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).


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/01/2016 à 12h19
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 :top

Concernant la RAM, je me souviens pas si je t'ai prêté la Playsoniq :fou
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 :D

bon apétit :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 13/01/2016 à 08h10
Mais au fait, peux tu poster ton générateur et player que tu utilises pour jouer les samples entre chaque bribe en continu :noel

Je voudrais m'essayer à adapter battle squadron mais je trouve pas de map sur le net :( Edité par igal Le 13/01/2016 à 08h11


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie