MSX Village forum

La Place des Développeurs [RESOLU] VDP(27) le Scrolling hardware Horizontal Comment alimenter de nouveaux décors VDP (27)?

Maggoo Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 25/06/2013 à 17h49

Messages: 192

Le 10/02/2014 à 20h25

Reprise du message précédent

ericb59 :
Maggoo :
ericb59 :
non, tu te trompes.

Set scroll NE PEUX PAS être utilisé avec xbasic.







Au fait, Set scroll fonctionne avec le XBasic. Il faut juste utiliser la version Kun Basic Plus (specifique au 2+)




j'ai pas cette version... tu peux me la filer ?



j'ai essayé avec NestorBasic qui inclu un xbasic. sans doute pas la derniere version vu que ça me fait un syntax errot :'(




Et hop

http://www.romnation.net/srv/roms/26885/msx2/MSX-Basic-Kun-Plus-1988-Ascii-J.html
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 10/02/2014 à 20h43
Merci !

J'ai testé, effectivement la commande set scroll ne produit plus de syntax error.
Par contre elle n'est pas plus rapide avec le XBASIC que sans...
Sans doute les limites du VDP ?

Toute fois pouvoir intégrer set scroll dans une procédure en TURBO peut se révéler utile....


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 30/08/2014 à 23h27
z80 :
igal :
@Z80: Un moteur (malléable) de jeu qui soit en Basic ou pas serait top :top



MsxOsaure à fait un super moteur qui ne scroll pas les décors, mais qui convient parfaitement à un jeu d'aventure.



La petite vidéo que t'as posté donne vraiment envie :kiss




Tu dois commencer par définir le mode d'écran (screen 4, screen 5, ...)

La taille des blocs (8*8, 16*16), la taille des map en blocs. Exemple une map d'un écran de haut et 4 écrans de large en blocs de 16*16 en screen 5:

(4*256)/16=64 blocs

(1*212)/16=13,25 -> 14 blocs

Il te faudra une table de 896 octets pour stocker toute ta map en blocs de 16*16.

Sur une page de screen 5 tu dessines tes blocs de base (ta bibliothèque de blocs de décor pour construire ton décor. En screen 5 tu peux stocker 208 blocs sur une page.

Donc par exemple tu charges tes blocs de base en page 1 et tu fera ton scrolling en page 0.

Pour initialiser ton écran en page 0. Tu fait deux boucle for/next imbriquées la première va de 0 à 13 (14 -1) et à l'intérieur de cette première boucle tu en fait une autre qui compte de 0 à 15 (16-1)

Soit un écran de 14 lignes de 16 blocs 16x16.

Boucle "L" de 0à 14

Boucle "C" de 0 à 15

Tu lis dans ta table le code du bloc b=table(l*16+c)

X1=(b and 15)*16:Y1=b and &hF0: copy (X1,Y1)-(X1+15,Y1+15),1to(c*16,l*16),0



Voilà un bon début.

La suite quand tu auras codé cette petite ébauche ;)




J'ai pensé à une autre approche.



0 screen 12

10 set page ,0

20 bload"image.scc",s (Les 16 premières lignes seulement)

30 vdp (24)=vdp(24)-1 and 256.

40 goto 20



Comment limiter le bload dîné image.scc aux 16 premières lignes seulement?



Merci de votre aide.



Demain j'essaie de poster un vidéo entre deux kg de tomates lol Edité par igal Le 30/08/2014 à 23h30


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

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 31/08/2014 à 08h37
Tout simplement en faisant un bsave que des 16 premières lignes !
Bsave"xxxx.yyy",A,B
A=adresse de début si mes souvenirs sont bons
B=longueur à enregistré

Longueur c'est le nombre d'octets par ligne multiplié par le nombre de lignes
En screen 12: 256*16


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 31/08/2014 à 19h31
BSAVE j'y ai pensé aussi mais je me demande si l'on peut obtenir une "fraction d'image" identique mais en traitant des centaines d'images par paquet avec bmp2msx.

Autrement il faut que j'automatise l'opération sous basic.

Avant cela, je dois procéder à quelques testés afin de voir si la bride d'image.scc faisant 16 lignes seulement ne va pas malgré tout écraser l'image déjà construite à l'écran sur les lignes 17 à 212!
Si c'est le cas (j'espère pas) alors c'est foutu!

Le but de la manoeuvre est de charger flux de bribes d'images épaisse de 16 pixels seulement.
Le nombre restreint de pixels contenus dans les 16 lignes de la bride d'image à charger devrait laisser suffise ment de bande passante sur le bus msx pour envisager jouer une musique et même des copies d'écran de la page 1 à la page 0 pour créer des faut spirites.

Si ça tient la route alors on pourra faire défiler des scrool magnifiques en screen 12 :)

Ce matin j'ai créé les 13 segments d'images converties avec bmp2msx . Il me reste à BSAVE chaque image.ssc en bribes et voir si ça tient la route.


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 31/08/2014 à 20h09
j'ai pas tout compris à ce que tu veux faire... Mais bonne chance ^^ :D


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 31/08/2014 à 20h48
Je veux charger un flux d'image en screen 12 mais dont la taille fait 16 pixels de haut et 256 pixels de longs.

Le problème c'est que pour faire un BLOAD ultra rapide, il faut charger un tout petit fichier. Ici le fichier est une fraction d'image en screen12 a savoir 16 x 256.
Pour creer une fraction dimage il faut faire un BSAVE"image.scc", (debut de la zone vram a sauver), nombre d'octets à sauver.
Une fois les segments d'images créés il suffit de les bload en les empilant les un au es sus des autres et de scrooler le tout avec vdp (24)=vdp (24)-1 AND 255.

J'essaie de faire une vidéo pour la fin de la semaine :) Edité par igal Le 31/08/2014 à 20h51


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 31/08/2014 à 21h09
si je comprend bien tu veux faire une page écran avec des bandes de 16x256 pixel les uns en dessous des autres ?
BANDE 1
------------
BANDE 2
-------------
BDAN 3
--------------
etc ...........
----------------

pourquoi tu ne fais pas ça avec des COPY ?


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 31/08/2014 à 21h34
Un copy signifie que tu as prechargé une page entière (donc long).

Copy occupe le vdp de la zone de départ + coordonnées vers zone d'arrivée + coordonnées.

Une page prechargé limite la variété du décors à la superficie de la page mise en mémoire.

Alors que ma methode (si elle fonctionne) permet de charger une infinité de décors.
Un simple bload d'une page qui ne pèse et ne mesure que bribes de page :) (16 x 256)

Ça reste qu'une idée mais on verra bien.


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

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 31/08/2014 à 22h39
Ericb te parles des copy "nom de fichier" to (x,y)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 01/09/2014 à 07h49
Je savais pas que l'on pouvait procéder ainsi.

Je verrai dans la pratique si c'est plus intéressant alors Pq pas :) Edité par igal Le 01/09/2014 à 07h50


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 01/09/2014 à 08h30
je sais pas expérience que tout ce qui touche au loading depuis le lecteur de disquette occupe pas mal le processeur... En tout cas ça provoque toujours (d'après mon expérience) des ralentissements, (inclus la musique !). Je pense qu'il vaut mieux précharger en mémoire ce dont tu as besoin.


banniere-ericb59e
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 01/09/2014 à 09h22
Il s'agit de charger des centaines des bribes donc sur compact flash au moins :)

Pour ce qui est de BLOAD ou COPY, je verrai dans la pratique ce qui convient le mieux.

Peut être même un mix des deux commandes si ça fluidifie les temps d'occupation du BUS :)

Si tu cherches dans mes vidéos, tu trouveras une expérimentation

Voici une vidéo ou je charge [1 x 256 x 212 en screen 12 + musique opl4 FM+Wav] par seconde simultanément en basic!

http://youtu.be/UigcyoFEre8

Edité par igal Le 01/09/2014 à 09h25


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

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 01/09/2014 à 22h28
C'est pas mal :)

Mais ca doit occuper beaucoup de place sur le support !!!

Sinon le COPY "" est plus pratique que le BLOAD "" ;)


Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 02/09/2014 à 19h33
voila..

J'ai commencé gentiment, j'ai donc procédé comme suit:

1) J'ai découpé une image en screen 12 par blocs horizontaux de 16 lignes avec BMP2MSX
2) j'ai LOAD puis BSAVE les Images avec la formule suivante: BSAVE"IMAGE.SCC",0,255X16,S de sorte à créer des Bribes d'images de 16 lignes en SCREEN12
3) J'ai créer le loader que voici:


J'arrive à charger les images nommées:
10000001.SCC
10000002.SCC
10000003.SCC
10000004.SCC
10000005.SCC
10000006.SCC
10000007.SCC
10000008.SCC
10000009.SCC

Par contre, pas moyen des charger les fichiers suivants:
10000010.SCC
10000011.SCC
10000012.SCC
10000013.SCC

J'avais déjà rencontré ce problème avec la méthode de Jipe..
Il avait fallut nommé les fichier avec CINQ caractères seulement et cela créé une forte latence dans la recherche des fichiers à charger automatiquement!
Avec la méhode de Jipe, les 10 ou premières images étaient très longues a charger alors que la 11ième et plus allaient bcp plus vite :moue

si quelqu’un a une solution :top

http://youtu.be/CdBTtwSujSE




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 02/09/2014 à 20h44
- 1 renome tes fichiers en hexa
1xxxxxx1.scc
1xxxxxx2.scc
...
1xxxxxxA.scc
1xxxxxxB.scc

2- utilise cette formule
LD$="1xxxxxx"+MID$(hex$(N),2,1):BLOAD LD$,S,0



Autre solution, tu mets les noms des fichiers à charger dans une ligne de DATA
et tu lis les data Edité par ericb59 Le 02/09/2014 à 20h46


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