La Place des Développeurs [EN COURS] Gradius 4 remake. Remake du Stage 2 de Gradius 4
igal
Membre non connecté
Conseiller Municipal
Afin de mettre en pratique mes avancées sur le SCROLL Hardware, j'ai entrepris de "convertir" Graidus 4 sur MSX2+.
J'ai mis en place une technique d'importation des graphismes à l'aide de Virtual Dub.
En gros....
1) Je télécharge la Vidéo.
2) Je convertis la Vidéo en AVI.
3) J'ouvre avec Virtual Dub.
3b) Je change le Frame Rate à 1 FPS.
3c) Je plaque un filtre pour réduire à 212 pixels de Hauteur.
3d) Je plaque un filtre Null transforme en "trancher" des bribes de 256 X 64 Pixels
3e) Je fais Export => BMP
4) Je reconstruit la Mappe avec Paint.Net
5) J'applique la méthode permettant le SCROLL Horizontal décrit ci dessous.
La première ligne est la source original.
La seconde ligne est le résulta incohérent conséquence du moteur. (Moteur très tordu )
La troisième schématise la conséquence du moteur.
La quatrième ligne montre le découpage nécessaire aux "contre-mesures"
La cinquième ligne est la nouvelle source qui devra t être scrollée pour un résulta identique à la source originale.
Voici le gabarit:
6) Les Bribes allant de 0-1 à 0-44 peuvent être réduites à 1 Pixel de long. (Gain de temps important)
7) Il est possible de "Swapper" entre les SCREEN 12 et SCREEN 10 afin de modifier la palette graphique de l'ensemble de l'écran en temps réel
Voici la vidéo qui m'a servi à importer la Mappe:
https://www.youtube.com/watch?v=DY2t-62xMhQ
Si tout va bien, demain je posterai la mappe Edité par igal Le 12/10/2014 à 20h15
J'ai mis en place une technique d'importation des graphismes à l'aide de Virtual Dub.
En gros....
1) Je télécharge la Vidéo.
2) Je convertis la Vidéo en AVI.
3) J'ouvre avec Virtual Dub.
3b) Je change le Frame Rate à 1 FPS.
3c) Je plaque un filtre pour réduire à 212 pixels de Hauteur.
3d) Je plaque un filtre Null transforme en "trancher" des bribes de 256 X 64 Pixels
3e) Je fais Export => BMP
4) Je reconstruit la Mappe avec Paint.Net
5) J'applique la méthode permettant le SCROLL Horizontal décrit ci dessous.
La première ligne est la source original.
La seconde ligne est le résulta incohérent conséquence du moteur. (Moteur très tordu )
La troisième schématise la conséquence du moteur.
La quatrième ligne montre le découpage nécessaire aux "contre-mesures"
La cinquième ligne est la nouvelle source qui devra t être scrollée pour un résulta identique à la source originale.
Voici le gabarit:
6) Les Bribes allant de 0-1 à 0-44 peuvent être réduites à 1 Pixel de long. (Gain de temps important)
7) Il est possible de "Swapper" entre les SCREEN 12 et SCREEN 10 afin de modifier la palette graphique de l'ensemble de l'écran en temps réel
Voici la vidéo qui m'a servi à importer la Mappe:
https://www.youtube.com/watch?v=DY2t-62xMhQ
Si tout va bien, demain je posterai la mappe Edité par igal Le 12/10/2014 à 20h15
Je te souhaite bon courage dans ton projet, Igal.
Personnellement, je pense que tu touches aux limites du BASIC MSX et que tu vas très vite te heurter à des impossibilités.
Mais je sais aussi que ce n'est pas ce qui t'arrête Edité par Metalion Le 13/10/2014 à 13h38
Personnellement, je pense que tu touches aux limites du BASIC MSX et que tu vas très vite te heurter à des impossibilités.
Mais je sais aussi que ce n'est pas ce qui t'arrête Edité par Metalion Le 13/10/2014 à 13h38
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
Voici la mappe après nettoyage mais surtout avant sa séance te torture
Maintenant que la mappe est extraite, passons tout ça à la moulinette
La moulinette en question c'est ce filtre qui progresse par 2 Pixels
Voici le résulta: (Ne vous fiez pas à la vitesse )
http://youtu.be/Rvng-5EBdYE
A défaut de transparence, je vais élaguer les images pour alléger la quantité des données à charger/afficher
Ca c'est pour demain
Maintenant que la mappe est extraite, passons tout ça à la moulinette
La moulinette en question c'est ce filtre qui progresse par 2 Pixels
Voici le résulta: (Ne vous fiez pas à la vitesse )
http://youtu.be/Rvng-5EBdYE
A défaut de transparence, je vais élaguer les images pour alléger la quantité des données à charger/afficher
Ca c'est pour demain
igal
Membre non connecté
Conseiller Municipal
J'ai espoir d'obtenir une vitesse de déroulement acceptable.
Une fois les parties en vert soustraites aux bribes et le renomage des Bribes de en hexadécimal par groupe de 0 à F le scroll devrait être acceptable.
Une fois les parties en vert soustraites aux bribes et le renomage des Bribes de en hexadécimal par groupe de 0 à F le scroll devrait être acceptable.
igal
Membre non connecté
Conseiller Municipal
Finalement, c'est pas mal du tout juste en rangeant par groupe de 16 Fichiers.
Afin de limiter au maximum les temps d'accès au fichiers, j'ai donc séparé en répertoire et sous répertoires pour ne garder que 16 Fichiers nommés de 0 à F.
Je n'ai même pas eu à soustraire les surfaces vertes comme décrit au dessus
http://youtu.be/DmAB6xfNEy0
Demain, (Si j'ai le temps) j'essaierai de faire varier varier progressivement toutes les couleurs afficher à l'écran sans ralentissement
Voici une méthode qui devrait permettre de modifier les décors lors d'un scrolling.
Voici le schéma que j'ai imaginé dans mon cerveau mala...Biiiiip..
La technique permet d'afficher un décors "pré-éxistant" et rangé rationnellement.
Le sous programme est appelé par:
410 ' Boucle du moteur principale
420 '
430 S=STICK(0):ONS+1GOSUB510,570,640,710,770,840,910,980,1040
440 PUTSPRITE0,(X,Y),11,0:PUTSPRITE1,(X,Y),0,0:PUTSPRITE2,(-X,X),9,0
450 PUTSPRITE3,(-X,-Y),15,0:PUTSPRITE4,(-Y,X),8,0:PUTSPRITE5,(VDP(27),X),1,0
460 GOTO 430
470 '
480 '
490 ' SP gestion mouvement: STATIQUE
500 '
510 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y),3,0
520 IFX<1THENX=0:'N=N-1:GOSUB1380
530 VDP(27)=VDP(27)+1AND255:X=X-1:RETURN
Edité par igal Le 22/10/2014 à 19h28
Afin de limiter au maximum les temps d'accès au fichiers, j'ai donc séparé en répertoire et sous répertoires pour ne garder que 16 Fichiers nommés de 0 à F.
Je n'ai même pas eu à soustraire les surfaces vertes comme décrit au dessus
http://youtu.be/DmAB6xfNEy0
Demain, (Si j'ai le temps) j'essaierai de faire varier varier progressivement toutes les couleurs afficher à l'écran sans ralentissement
Voici une méthode qui devrait permettre de modifier les décors lors d'un scrolling.
Voici le schéma que j'ai imaginé dans mon cerveau mala...Biiiiip..
La technique permet d'afficher un décors "pré-éxistant" et rangé rationnellement.
Le sous programme est appelé par:
Code TEXT :
10 'SAVE"HPLAY15.asc",A 20 'CALL CHDIR ("h-0") 30 'PLAYER DE BRIBES HORIZONTAL [22X(2X256)]+[(106X(4X256)] 40 VDP(10)=0:SCREEN 10:SET PAGE 0,1:VDP(12)=&B001000000:VDP(6)=&B00111111:VDP(7)=&B00000000:BLOAD"prima.sca",S:CALL CHDIR ("h-0") 50 N=2:P=0:R=0:X=100:Y=100 60 IF P=0THEN CALL CHDIR (".."):CALL CHDIR ("H-0"):GOSUB 220 70 IF P=1THEN CALL CHDIR (".."):CALL CHDIR ("H-1"):GOTO220 80 IF P=2THEN CALL CHDIR (".."):CALL CHDIR ("H-2"):GOTO220 90 IF P=3THEN CALL CHDIR (".."):CALL CHDIR ("H-3"):GOTO220 100 IF P=4THEN CALL CHDIR (".."):CALL CHDIR ("H-4"):GOTO220 110 IF P=5THEN CALL CHDIR (".."):CALL CHDIR ("H-5"):GOTO220 120 IF P=6THEN CALL CHDIR (".."):CALL CHDIR ("H-6"):GOTO220 130 IF P=7THEN CALL CHDIR (".."):CALL CHDIR ("H-7"):GOTO220 140 IF P=8THEN CALL CHDIR (".."):CALL CHDIR ("H-8"):GOTO220 150 IF P=9THEN CALL CHDIR (".."):CALL CHDIR ("H-9"):GOTO220 160 IF P=10THEN CALL CHDIR (".."):CALL CHDIR ("H-A"):GOTO220 170 IF P=11THEN CALL CHDIR (".."):CALL CHDIR ("H-B"):GOTO220 180 IF P=12THEN CALL CHDIR (".."):CALL CHDIR ("H-C"):GOTO220 190 IF P=13THEN CALL CHDIR (".."):CALL CHDIR ("H-D"):GOTO220 200 IF P=14THEN CALL CHDIR (".."):CALL CHDIR ("H-E"):GOTO220 210 IF P=15THEN CALL CHDIR (".."):CALL CHDIR ("H-F"):P=0 220 CALL CHDIR ("0") 222 BLOAD"0",S,0-11264:GOSUB 1510 224 BLOAD"1",S,0-11264:GOSUB 1510 226 BLOAD"2",S,0-11264:GOSUB 1510 228 BLOAD"3",S,0-11264:GOSUB 1510 230 BLOAD"4",S,0-11264:GOSUB 1510 232 BLOAD"5",S,0-11264:GOSUB 1510 234 BLOAD"6",S,0-11264:GOSUB 1510 236 BLOAD"7",S,0-11264:GOSUB 1510 238 BLOAD"8",S,0-11264:GOSUB 1510 240 BLOAD"9",S,0-11264:GOSUB 1510 242 BLOAD"A",S,0-11264:GOSUB 1510 244 BLOAD"B",S,0-11264:GOSUB 1510 246 BLOAD"C",S,0-11264:GOSUB 1510 248 BLOAD"D",S,0-11264:GOSUB 1510 250 BLOAD"E",S,0-11264:GOSUB 1510 252 BLOAD"F",S,0-11264:GOSUB 1510 254 R=R+1:CALL CHDIR (".."):CALL CHDIR ("1") 256 BLOAD"0",S,0-11264:GOSUB 1510 258 BLOAD"1",S,0-11264:GOSUB 1510 260 BLOAD"2",S,0-11264:GOSUB 1510 262 BLOAD"3",S,0-11264:GOSUB 1510 264 BLOAD"4",S,0-11264:GOSUB 1510 266 BLOAD"5",S,0-11264:GOSUB 1510 268 BLOAD"6",S:GOSUB 1510 270 BLOAD"7",S:GOSUB 1510 272 BLOAD"8",S:GOSUB 1510 274 BLOAD"9",S:GOSUB 1510 276 BLOAD"A",S:GOSUB 1510 278 BLOAD"B",S:GOSUB 1510 280 BLOAD"C",S:GOSUB 1510 282 BLOAD"D",S:GOSUB 1510 284 BLOAD"E",S:GOSUB 1510 286 BLOAD"F",S:GOSUB 1510 288 R=R+1:CALL CHDIR (".."):CALL CHDIR ("2"):GOTO 300 290 IF R=3THEN CALL CHDIR ("3"):GOTO 300 292 IF R=4THEN CALL CHDIR ("4"):GOTO 300 294 IF R=5THEN CALL CHDIR ("5"):GOTO 300 296 IF R=6THEN CALL CHDIR ("6"):GOTO 300 298 IF R=7THEN CALL CHDIR ("7"):GOTO 300 300 IF R=8THEN R=0 : P=P+1 : GOTO 60 301 BLOAD"0",S:GOSUB 1510 302 BLOAD"1",S:GOSUB 1510 304 BLOAD"2",S:GOSUB 1510 306 BLOAD"3",S:GOSUB 1510 308 BLOAD"4",S:GOSUB 1510 310 BLOAD"5",S:GOSUB 1510 312 BLOAD"6",S:GOSUB 1510 314 BLOAD"7",S:GOSUB 1510 316 BLOAD"8",S:GOSUB 1510 318 BLOAD"9",S:GOSUB 1510 320 BLOAD"A",S:GOSUB 1510 322 BLOAD"B",S:GOSUB 1510 324 BLOAD"C",S:GOSUB 1510 326 BLOAD"D",S:GOSUB 1510 328 BLOAD"E",S:GOSUB 1510 330 BLOAD"F",S:GOSUB 1510 332 R=R+1:CALL CHDIR (".."):GOTO 290 1500 ' 1510 X=X+2AND255:COPY(0,0)-(3,3),0TO(X,Y),0:VDP(27)=(N+7)/8:VDP(28)=-NAND7:COPY(H,0)-(H+1,212),1TO(H,0),0:H=H+2AND255:N=N+2AND255:IFSTRIG(0)THENCOPY(0,0)-(1,1),0TO(X+100AND255,Y),0 1515 S=STICK(0):ONS+1 GOSUB 1530,1560,1590,1620,1650,1690,1720,1750,1780:RETURN 1520 ' 1530 'STATIQUE 1540 RETURN 1550 RETURN 1560 'HAUT 1570 Y=Y-2AND255:RETURN 1580 ' 1590 'DIAGO HAUT DROITE 1600 X=X+2AND255:Y=Y-2AND255:RETURN 1610 ' 1620 'DROITE 1630 X=X+2AND255:RETURN 1640 ' 1650 'DROITE BAS 1660 X=X+2AND255:Y=Y+2AND255:RETURN 1670 ' 1680 ' 1690 'BAS 1700 Y=Y+2AND255:RETURN 1710 ' 1720 'DIAGO BAS GAUCHE 1730 X=X-4AND255:Y=Y+2AND255:RETURN 1740 ' 1750 'GAUCHE 1760 X=X-4AND255:RETURN 1770 ' 1780 'DIAGO HAUT GAUCHE 1790 X=X-4:Y=Y-2:RETURN
410 ' Boucle du moteur principale
420 '
430 S=STICK(0):ONS+1GOSUB510,570,640,710,770,840,910,980,1040
440 PUTSPRITE0,(X,Y),11,0:PUTSPRITE1,(X,Y),0,0:PUTSPRITE2,(-X,X),9,0
450 PUTSPRITE3,(-X,-Y),15,0:PUTSPRITE4,(-Y,X),8,0:PUTSPRITE5,(VDP(27),X),1,0
460 GOTO 430
470 '
480 '
490 ' SP gestion mouvement: STATIQUE
500 '
510 IFSTRIG(0)THENPOKE&HCFFF,11:A=USR2(0):PUTSPRITE1,(X+50,Y),3,0
520 IFX<1THENX=0:'N=N-1:GOSUB1380
530 VDP(27)=VDP(27)+1AND255:X=X-1:RETURN
Edité par igal Le 22/10/2014 à 19h28
GuillianSeed
Membre non connecté
Villageois
Bravo Igal ! Quelle inventivité ! Ca m'intéresse grandement aussi !
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie