La Place des Développeurs [RESOLU] VDP(27) le Scrolling hardware Horizontal Comment alimenter de nouveaux décors VDP (27)?
ericb59
Membre non connecté
Conseiller Municipal
Reprise du message précédent
- 1 renome tes fichiers en hexa1xxxxxx1.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
igal :
J'arrive à charger les images nommées:
10000001.SCC
....
10000009.SCC
Par contre, pas moyen des charger les fichiers suivants:
10000010.SCC
....
10000013.SCC
10000001.SCC
....
10000009.SCC
Par contre, pas moyen des charger les fichiers suivants:
10000010.SCC
....
10000013.SCC
Oui ton code est valable pour les noms finissant par 0 à 9 mais au delà il faut que tu prenne en compte la longeur de la chaine du nom -1 pour les dizaines -2 pour les centaines ....
Tu as plusieurs solution mais la plus pratique est de convertir en string le chiffre ensuite de l'insérer dans le nom en tenant compte de sa longueur
@GDX: tu peux faire un poil mieux en remplaçant NME$ par NM$
Vu que de mémoire le BAISC MSX ne prends en compte que les 2 premiers caractères d'une variable?...
Vu que de mémoire le BAISC MSX ne prends en compte que les 2 premiers caractères d'une variable?...
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
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
igal
Membre non connecté
Conseiller Municipal
Voici une technique qui devrait faire l'affaire.
Ce programme répétitif permet de générer 25 strates d'une seule image en SCREEN 12. www.vgmaps.com/
Les Lesstrates ont une épaisseur de 8 pixels sauf la dernière qui est épaisse de 4 pixels.
Le grand avantage de cette technique est qu'il n'est pas nécessaire de donner une coordonnée de destination puisque chaque strate est faite d'une bribes d'image qui commence après la dernière ligne de la strate précédente et termine la dernière ligne de la strate suivante.
L'idée est donc de récupérer la map d'un jeu que l'on veut, découper la map en succession d'images de 212 pixels de hauteur, les convertir en SCREEN 12 avec bmp2msx, générer les strates à l'aide du programme basic sur msx.
A la suite de quoi on devrait avoir [ 25 (strates) x nombre d'images de 212 pixels de haut qui composent le stage] = nombre de fichiers à charger successivement pour créer une illusion de scrolling de 8 pixels de deplacement vertical.
La boucle principale devra intégrer le déplacement du héros et ennemis si possible
Edité par igal Le 05/09/2014 à 23h09
Code TEXT :
10 'SAVE"generat.asc",A 15 'generateur de 25 strates (0 a 23) de 8*256 pixels 16' strate (24) de 4*256 pixels 20 SCREEN 12 30 'BLOAD"00000007.scc",S 35 'GOTO 35 100 BLOAD"00000000.scc",S: BSAVE"10000000.scc",256*0,256*8-1,S 101 BLOAD"00000001.scc",S: BSAVE"10000001.scc",256*8,256*16-1,S 102 BLOAD"00000002.scc",S: BSAVE"10000002.scc",256*16,256*24-1,S 103 BLOAD"00000003.scc",S: BSAVE"10000003.scc",256*24,256*32-1,S 104 BLOAD"00000004.scc",S: BSAVE"10000004.scc",256*32,256*40-1,S 105 BLOAD"00000005.scc",S: BSAVE"10000005.scc",256*40,256*48-1,S 106 BLOAD"00000006.scc",S: BSAVE"10000006.scc",256*48,256*56-1,S 107 BLOAD"00000007.scc",S: BSAVE"10000007.scc",256*56,256*64-1,S 108 BLOAD"00000008.scc",S: BSAVE"10000008.scc",256*64,256*72-1,S 109 BLOAD"00000009.scc",S: BSAVE"10000009.scc",256*80,256*88-1,S 110 BLOAD"00000010.scc",S: BSAVE"10000010.scc",256*96,256*104-1,S 111 BLOAD"00000011.scc",S: BSAVE"10000011.scc",256*104,256*112-1,S 112 BLOAD"00000012.scc",S: BSAVE"10000012.scc",256*112,256*120-1,S 113 BLOAD"00000013.scc",S: BSAVE"10000013.scc",256*120,256*128-1,S 114 BLOAD"00000014.scc",S: BSAVE"10000014.scc",256*128,256*136-1,S 115 BLOAD"00000015.scc",S: BSAVE"10000015.scc",256*136,256*144-1,S 116 BLOAD"00000016.scc",S: BSAVE"10000016.scc",256*144,256*152-1,S 117 BLOAD"00000017.scc",S: BSAVE"10000017.scc",256*152,256*160-1,S 118 BLOAD"00000018.scc",S: BSAVE"10000018.scc",256*160,256*168-1,S 119 BLOAD"00000019.scc",S: BSAVE"10000019.scc",256*168,256*176-1,S 120 BLOAD"00000020.scc",S: BSAVE"10000020.scc",256*176,256*184-1,S 121 BLOAD"00000021.scc",S: BSAVE"10000021.scc",256*184,256*192-1,S 122 BLOAD"00000022.scc",S: BSAVE"10000022.scc",256*192,256*200-1,S 123 BLOAD"00000023.scc",S: BSAVE"10000023.scc",256*200,256*208-1,S 124 BLOAD"00000024.scc",S: BSAVE"10000024.scc",256*208,256*212-1,S
Ce programme répétitif permet de générer 25 strates d'une seule image en SCREEN 12. www.vgmaps.com/
Les Lesstrates ont une épaisseur de 8 pixels sauf la dernière qui est épaisse de 4 pixels.
Le grand avantage de cette technique est qu'il n'est pas nécessaire de donner une coordonnée de destination puisque chaque strate est faite d'une bribes d'image qui commence après la dernière ligne de la strate précédente et termine la dernière ligne de la strate suivante.
L'idée est donc de récupérer la map d'un jeu que l'on veut, découper la map en succession d'images de 212 pixels de hauteur, les convertir en SCREEN 12 avec bmp2msx, générer les strates à l'aide du programme basic sur msx.
A la suite de quoi on devrait avoir [ 25 (strates) x nombre d'images de 212 pixels de haut qui composent le stage] = nombre de fichiers à charger successivement pour créer une illusion de scrolling de 8 pixels de deplacement vertical.
La boucle principale devra intégrer le déplacement du héros et ennemis si possible
Edité par igal Le 05/09/2014 à 23h09
igal
Membre non connecté
Conseiller Municipal
GDX :
Un poil plus court :
Code TEXT :
10 FOR A=1 TO 20 20 EX$=STR(A) 30 NME$=LEFT$("1000000",9-LEN(EX$))+RIGHT$(EX$,LEN(EX$)-1) 40 PRINT NME$ 50 NEXT
Cette formule fonctionne il y a juste un oubli du sigle dollars après STR De la ligne 20.
20 EX$=STR$(A)
Par contre la encore on a une "auto-génération" des noms de fichiers trop longue!
La création est plus rapide que la méthode de jipe et en plus la création est régulière ce qui est très bien mais le temps de chargement du fichier qui pèse 8x256 pixels est bien plus rapide que la création des noms de fichiers.
Ce serait vraiment dommage de rester sur un tel résulta d'autant que j'ai prévu d'aller encore plus loin en créant des fichiers de 4X256 pixels
Donc encore plus rapide a charger, plus rapide a afficher, plus fluide dans le déroulement du scroll, BUS MSX accessible en deux fois plus grand nombre etc etc...
J'ai trouve une solution simple et extrêmement efficace pour écrire sur la page ZÉRO (celle visible a l'écran) dans les lignes réputés "Non exploitable" directement!
Il s'agit des lignes supérieurs a 212 qui sont au total de 44!
Soit 212+44=256.
On peut donc afficher en page zéro sur une zone de [(256)x(212+44)]...soit:
256 X 256 et ça c'est cool
Jipe m'avait donné une technique contraignante pour écrire dans cette zone:
1) j'affiche un dessin sur une zone comprise entre 1 et 212.
2) je copie une fraction de la zone vers un point entre 213 et 255.
Au final on obtient le clonage d'une zone vers une autre zone ce qui est lent et limite la variété des graphismes
En creusant la chose je suis arrivé à trouver la solution simple et radicale que voici:
1) je copie colle un dessin de 44x256 sur la ligne [zero moins quarante quatre]
BLOAD"image.SCC",s,0-44
L'astuce consiste à donner comme point de départ pour le "décompte", un point de référence situé sur une zone "normale" de la âge zéro!
Une fois ce point de départ determiné, (ici, la ligne zéro) il ne reste que déterminer le lieu d'affichage allant de -1 a -44
Si votre dessin fait 44 x 256 alors il couvrira l'intégralité de çette fameuse zone
En définitive, on peut donc afficher une image de 256 x 256 sur la page zéro du vdp.
Pour les 256 de hauteur, il suffira juste d'appliquer la règle que je donne au dessus.
Voilà une bonne solution bien tordue comme je les aime
Plus simple, tu créé un seul fichier dans lequel tu déplace un index qui évolue modulo 16x256 (4096).
Index = Nuémro_section x 4096
Numéro_section va de 0 à N de 1 en 1. Tu veux le morceau N°9, alors tu pointe dans ton fichier à l'octet 9 x 4096 = 36864 et tu charge 4096 octet dans la VRAM à l'adresse qui va bien.
Du coup tu passes à 1 fichier par niveau de jeux ce qui est quand même vachement plus simple à gérer...
Index = Nuémro_section x 4096
Numéro_section va de 0 à N de 1 en 1. Tu veux le morceau N°9, alors tu pointe dans ton fichier à l'octet 9 x 4096 = 36864 et tu charge 4096 octet dans la VRAM à l'adresse qui va bien.
Du coup tu passes à 1 fichier par niveau de jeux ce qui est quand même vachement plus simple à gérer...
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
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
Voici la matrice telle que je l'explique plus haut.
BMP2MSX n'étant pas capable (a ma connaissance) de traiter des images en 256 X 256, il faut donc créer deux images différentes telles que:
A) Image contenant les Graphismes des pixels destinés aux lignes -44 à -1.
B) Image contenant les graphismes des pixels destinées aux lignes 0 à 212.
voici l'idée mise en pratique pour la création d'un Scrool d'une Map world de n'importe quel jeu
1) Je découpe des tranches alternativement de 44 pixels de Haut puis 212 pixels de haut.
Afin de les reconnaître aisément, je les nomme:
Page 0 -44 à -1
Page 0 1 à 255
Page 1 -44 à -1
Page 1 1 à 255
Page 2 -44 à -1
Page 2 1 à 255
Etc etc...
Voici l'image PAGE 0 -44 À -1
Voici l'image PAGE 0 0 A 212
Je tranche dans la mappe World comme dans un Gateau
2) Il ne reste plus qu'à traiter les images découpées avec BMP2MSX pour en faire des IMAGE.SCC en SCREEN12
3) Traiter les IMAGES.SCC de 256X212 pour en faire des Bribes d'images d'une superficie de 8 X 212.
(La bribe est en fait le résulta d'une soustraction d'une grande partie de l'image pour n'en laisser que "le bandeau qui nous interresse".
Le gros avantage de cette méthode étant qu'elle ne nécessite aucune coordonnée de COPIER ni de COLLER puisque seule la Bribe est visible et le reste est transparent.
Voici en gros ce que le BASIC applique à l'image:
Etc etc.....
(La partie banche est en réalité "Anéantie" une fois traitée sous Basic )
@Eric: J'attends vos idées pour la "génération automatique" des noms de fichiers à charger
De mon coté,je me demande si une simple boucle du genre:
C'est juste une idée
Voici les commandes qui couvrent la zone des lignes -44 à -1
Edité par igal Le 08/09/2014 à 20h53
BMP2MSX n'étant pas capable (a ma connaissance) de traiter des images en 256 X 256, il faut donc créer deux images différentes telles que:
A) Image contenant les Graphismes des pixels destinés aux lignes -44 à -1.
B) Image contenant les graphismes des pixels destinées aux lignes 0 à 212.
voici l'idée mise en pratique pour la création d'un Scrool d'une Map world de n'importe quel jeu
1) Je découpe des tranches alternativement de 44 pixels de Haut puis 212 pixels de haut.
Afin de les reconnaître aisément, je les nomme:
Page 0 -44 à -1
Page 0 1 à 255
Page 1 -44 à -1
Page 1 1 à 255
Page 2 -44 à -1
Page 2 1 à 255
Etc etc...
Voici l'image PAGE 0 -44 À -1
Voici l'image PAGE 0 0 A 212
Je tranche dans la mappe World comme dans un Gateau
2) Il ne reste plus qu'à traiter les images découpées avec BMP2MSX pour en faire des IMAGE.SCC en SCREEN12
3) Traiter les IMAGES.SCC de 256X212 pour en faire des Bribes d'images d'une superficie de 8 X 212.
(La bribe est en fait le résulta d'une soustraction d'une grande partie de l'image pour n'en laisser que "le bandeau qui nous interresse".
Le gros avantage de cette méthode étant qu'elle ne nécessite aucune coordonnée de COPIER ni de COLLER puisque seule la Bribe est visible et le reste est transparent.
Voici en gros ce que le BASIC applique à l'image:
Etc etc.....
(La partie banche est en réalité "Anéantie" une fois traitée sous Basic )
@Eric: J'attends vos idées pour la "génération automatique" des noms de fichiers à charger
De mon coté,je me demande si une simple boucle du genre:
Code TEXT :
10 BLOAD"A"+"B"+"C"+"D"+"E"+"F"+"G".SCC",S 20 G=G+1 and 10: F=G/10: E=F/10: D=E/10: C=D/10: B=C/10: A=B/10
C'est juste une idée
Voici les commandes qui couvrent la zone des lignes -44 à -1
Edité par igal Le 08/09/2014 à 20h53
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie