La Place des Développeurs [EN COURS] VDP(24) Le scrolling hardware vertical Comment créer un scroll vertical.
En cherchant à créer un "Scrolling Vertical" ne nécessitant aucun paramètre quant au positionnement de la bribe d'image à charger, je cherche l'éventuelle solution "plus ou moins identique" pour créer une Bribe d'image qui aura les mêmes caractéristiques mais convenant à un "Scrolling Horizontal".
N'étant pas capable de déterminer quel paramètre "Intégré à la bribe" permet de la situer cette bribes dans "l'Espace" entre 0 et 212 inclus, j'attend un coup de main afin d'identifier "Le comment" de la chose.
L'idée étant de voir si il est possible d'une manière ou d'une autre d'obtenir un résulta similaires aux bribes Horizontales mais cette fois sur des bribes verticales.
Concertnant les bribes horizontales, j'ai essayé d'imaginer le fonctionnement et j'en suis venu à l'idée suivante
Une bribe à la particularité de ne pas nécessiter une coordonnée pour l'afficher à un emplacement prédéterminé.
La "prédetermination" se fait lors du BSAVE et consiste à donner une coordonnée de Début et de Fin d'image pour que le MSX l'enregistre comme une Bribe
Voici un exemple simple de générateur de Bribes:
100 BLOAD"00000000.scc",S: BSAVE"10000000.scc",256*0,256*8-1,S
Cette ligne va générer une Bribe d'image avec comme latitude la ligne ZERO!
Sa longueur faisant 256 Pixel et Son épaisseur étant de 8 lignes, cette ligne de commande permet de créer une Bribe qui sera affichée "Spontanément" de la ligne 0 jusqu'à 7.
101 BLOAD"00000001.scc",S: BSAVE"10000001.scc",256*8,256*16-1,S
Cette ligne va générer une Bribe d'image avec comme Latitude 7.
Sa longueur faisant 256 Pixel et Son épaisseur étant de 8 lignes, cette ligne de commande permet de créer une Bribe qui sera affichée "Spontanément" de la ligne 8 jusqu'à 15.
102 BLOAD"00000002.scc",S: BSAVE"10000002.scc",256*16,256*24-1,S
Etc etc...
Nb: On peut créer des Bribes de 4 Lignes comme des bribes d'une seule ligne.
Le but étant de trouver le meilleur compromis entre le temps de recherche de fichier, de chargement de fichier, d'affichage de la bribe et de déplacement du SCREEN pour que le tout se fasse dans les meilleurs conditions.
Voici ou est mon problème:
Le gros problème avec cette méthode est qu'il n'est pas possible de créer une Bribe Verticale sur le même principe.
Pourquoi ?!?!
Simplement parce (Je crois) que le VDP ou le MSX ou la RAM ou encore le TOUT se fait en lecture Horizontale et non verticale.
Le VDP répète l'opération jusqu'au dernier pixel déterminé par la commande BSAVE mais toujours en lisant les lignes Horizontalement.
Voici quelques éléments qui cachent peut être une solution au problème:
Le générateur de Bribes verticales avec 256 Pixels de Longueur et 4 Pixels d'épaisseur:
Voici les entêtes des fichiers générés par le générateur de Bribes:

Je me trompe peut être, mais on dirait bien que cela correspond à:
BRIBE 02.SCC
00 => FE => Décimale => 254
01 => 00 => Début Longitude X => colonne "Zero"
02 => 04 => Début Latitude Y => Ligne "Quatre"
03 => FF => fin Longitude => Colonne "deux cent cinquante cinq"
04 => 07 => Fin latitude => Ligne "Sept"
05 => 00 => semble répéter les données inscrites en 01
06 => 04 => semble répéter les données inscrites en 08
Il est peut être possible d'agir directement sur les Données indiquées au dessus pour afficher des graphismes à l'écran sans passer par les commandes COPY
Reste à voir si il es possible de "former" une "bribe Verticale" avec ces paramètres de la même façon que les bribes horizontales
Edité par
igal
Le 05/10/2014 à 01h23
N'étant pas capable de déterminer quel paramètre "Intégré à la bribe" permet de la situer cette bribes dans "l'Espace" entre 0 et 212 inclus, j'attend un coup de main afin d'identifier "Le comment" de la chose.
L'idée étant de voir si il est possible d'une manière ou d'une autre d'obtenir un résulta similaires aux bribes Horizontales mais cette fois sur des bribes verticales.
Concertnant les bribes horizontales, j'ai essayé d'imaginer le fonctionnement et j'en suis venu à l'idée suivante
Une bribe à la particularité de ne pas nécessiter une coordonnée pour l'afficher à un emplacement prédéterminé.
La "prédetermination" se fait lors du BSAVE et consiste à donner une coordonnée de Début et de Fin d'image pour que le MSX l'enregistre comme une Bribe
Voici un exemple simple de générateur de Bribes:
100 BLOAD"00000000.scc",S: BSAVE"10000000.scc",256*0,256*8-1,S
Cette ligne va générer une Bribe d'image avec comme latitude la ligne ZERO!
Sa longueur faisant 256 Pixel et Son épaisseur étant de 8 lignes, cette ligne de commande permet de créer une Bribe qui sera affichée "Spontanément" de la ligne 0 jusqu'à 7.
101 BLOAD"00000001.scc",S: BSAVE"10000001.scc",256*8,256*16-1,S
Cette ligne va générer une Bribe d'image avec comme Latitude 7.
Sa longueur faisant 256 Pixel et Son épaisseur étant de 8 lignes, cette ligne de commande permet de créer une Bribe qui sera affichée "Spontanément" de la ligne 8 jusqu'à 15.
102 BLOAD"00000002.scc",S: BSAVE"10000002.scc",256*16,256*24-1,S
Etc etc...
Nb: On peut créer des Bribes de 4 Lignes comme des bribes d'une seule ligne.
Le but étant de trouver le meilleur compromis entre le temps de recherche de fichier, de chargement de fichier, d'affichage de la bribe et de déplacement du SCREEN pour que le tout se fasse dans les meilleurs conditions.
Voici ou est mon problème:
Le gros problème avec cette méthode est qu'il n'est pas possible de créer une Bribe Verticale sur le même principe.
Pourquoi ?!?!
Simplement parce (Je crois) que le VDP ou le MSX ou la RAM ou encore le TOUT se fait en lecture Horizontale et non verticale.
Le VDP répète l'opération jusqu'au dernier pixel déterminé par la commande BSAVE mais toujours en lisant les lignes Horizontalement.
Voici quelques éléments qui cachent peut être une solution au problème:
Le générateur de Bribes verticales avec 256 Pixels de Longueur et 4 Pixels d'épaisseur:
Code TEXT :
10 'SAVE"GEN3.asc",A
20 'generateur de bribes d'images [11x(4x256)]+[(53x(4x256)]
30 VDP(10)=0: SCREEN 12
99 CALL CHDIR ("00-01")
100 BLOAD"00000000.scc",S: BSAVE"00.scc",256*0,256*4-1,S
101 BLOAD"00000000.scc",S: BSAVE"01.scc",256*4,256*8-1,S
102 BLOAD"00000000.scc",S: BSAVE"02.scc",256*8,256*12-1,S
103 BLOAD"00000000.scc",S: BSAVE"03.scc",256*12,256*16-1,S
104 BLOAD"00000000.scc",S: BSAVE"04.scc",256*16,256*20-1,S
105 BLOAD"00000000.scc",S: BSAVE"05.scc",256*20,256*24-1,S
106 BLOAD"00000000.scc",S: BSAVE"06.scc",256*24,256*28-1,S
107 BLOAD"00000000.scc",S: BSAVE"07.scc",256*28,256*32-1,S
108 BLOAD"00000000.scc",S: BSAVE"08.scc",256*32,256*36-1,S
109 BLOAD"00000000.scc",S: BSAVE"09.scc",256*36,256*40-1,S
110 BLOAD"00000000.scc",S: BSAVE"10.scc",256*40,256*44-1,S
111 BLOAD"00000001.scc",S: BSAVE"11.scc",256*0,256*4-1,S
112 BLOAD"00000001.scc",S: BSAVE"12.scc",256*4,256*8-1,S
113 BLOAD"00000001.scc",S: BSAVE"13.scc",256*8,256*12-1,S
114 BLOAD"00000001.scc",S: BSAVE"14.scc",256*12,256*16-1,S
115 BLOAD"00000001.scc",S: BSAVE"15.scc",256*16,256*20-1,S
116 BLOAD"00000001.scc",S: BSAVE"16.scc",256*20,256*24-1,S
117 BLOAD"00000001.scc",S: BSAVE"17.scc",256*24,256*28-1,S
118 BLOAD"00000001.scc",S: BSAVE"18.scc",256*28,256*32-1,S
119 BLOAD"00000001.scc",S: BSAVE"19.scc",256*32,256*36-1,S
120 BLOAD"00000001.scc",S: BSAVE"20.scc",256*36,256*40-1,S
121 BLOAD"00000001.scc",S: BSAVE"21.scc",256*40,256*44-1,S
122 BLOAD"00000001.scc",S: BSAVE"22.scc",256*44,256*48-1,S
123 BLOAD"00000001.scc",S: BSAVE"23.scc",256*48,256*52-1,S
124 BLOAD"00000001.scc",S: BSAVE"24.scc",256*52,256*56-1,S
125 BLOAD"00000001.scc",S: BSAVE"25.scc",256*56,256*60-1,S
126 BLOAD"00000001.scc",S: BSAVE"26.scc",256*60,256*64-1,S
127 BLOAD"00000001.scc",S: BSAVE"27.scc",256*64,256*68-1,S
128 BLOAD"00000001.scc",S: BSAVE"28.scc",256*68,256*72-1,S
129 BLOAD"00000001.scc",S: BSAVE"29.scc",256*72,256*76-1,S
130 BLOAD"00000001.scc",S: BSAVE"30.scc",256*76,256*80-1,S
131 BLOAD"00000001.scc",S: BSAVE"31.scc",256*80,256*84-1,S
132 BLOAD"00000001.scc",S: BSAVE"32.scc",256*84,256*88-1,S
133 BLOAD"00000001.scc",S: BSAVE"33.scc",256*88,256*92-1,S
134 BLOAD"00000001.scc",S: BSAVE"34.scc",256*92,256*96-1,S
135 BLOAD"00000001.scc",S: BSAVE"35.scc",256*96,256*100-1,S
136 BLOAD"00000001.scc",S: BSAVE"36.scc",256*100,256*104-1,S
137 BLOAD"00000001.scc",S: BSAVE"37.scc",256*104,256*108-1,S
138 BLOAD"00000001.scc",S: BSAVE"38.scc",256*108,256*112-1,S
139 BLOAD"00000001.scc",S: BSAVE"39.scc",256*112,256*116-1,S
140 BLOAD"00000001.scc",S: BSAVE"40.scc",256*116,256*120-1,S
141 BLOAD"00000001.scc",S: BSAVE"41.scc",256*120,256*124-1,S
142 BLOAD"00000001.scc",S: BSAVE"42.scc",256*124,256*128-1,S
143 BLOAD"00000001.scc",S: BSAVE"43.scc",256*128,256*132-1,S
144 BLOAD"00000001.scc",S: BSAVE"44.scc",256*132,256*136-1,S
145 BLOAD"00000001.scc",S: BSAVE"45.scc",256*136,256*140-1,S
146 BLOAD"00000001.scc",S: BSAVE"46.scc",256*140,256*144-1,S
147 BLOAD"00000001.scc",S: BSAVE"47.scc",256*144,256*148-1,S
148 BLOAD"00000001.scc",S: BSAVE"48.scc",256*148,256*152-1,S
149 BLOAD"00000001.scc",S: BSAVE"49.scc",256*152,256*156-1,S
150 BLOAD"00000001.scc",S: BSAVE"50.scc",256*156,256*160-1,S
151 BLOAD"00000001.scc",S: BSAVE"51.scc",256*160,256*164-1,S
152 BLOAD"00000001.scc",S: BSAVE"52.scc",256*164,256*168-1,S
153 BLOAD"00000001.scc",S: BSAVE"53.scc",256*168,256*172-1,S
154 BLOAD"00000001.scc",S: BSAVE"54.scc",256*162,256*176-1,S
155 BLOAD"00000001.scc",S: BSAVE"55.scc",256*176,256*180-1,S
156 BLOAD"00000001.scc",S: BSAVE"56.scc",256*180,256*184-1,S
157 BLOAD"00000001.scc",S: BSAVE"57.scc",256*184,256*188-1,S
158 BLOAD"00000001.scc",S: BSAVE"58.scc",256*188,256*192-1,S
159 BLOAD"00000001.scc",S: BSAVE"59.scc",256*192,256*196-1,S
160 BLOAD"00000001.scc",S: BSAVE"60.scc",256*196,256*200-1,S
161 BLOAD"00000001.scc",S: BSAVE"61.scc",256*200,256*204-1,S
162 BLOAD"00000001.scc",S: BSAVE"62.scc",256*204,256*208-1,S
163 BLOAD"00000001.scc",S: BSAVE"63.scc",256*208,256*212-1,S
Voici les entêtes des fichiers générés par le générateur de Bribes:

Je me trompe peut être, mais on dirait bien que cela correspond à:
BRIBE 02.SCC
Code TEXT :
00 01 02 03 04 05 06
FE 00 04 FF 07 00 04
00 => FE => Décimale => 254
01 => 00 => Début Longitude X => colonne "Zero"
02 => 04 => Début Latitude Y => Ligne "Quatre"
03 => FF => fin Longitude => Colonne "deux cent cinquante cinq"
04 => 07 => Fin latitude => Ligne "Sept"
05 => 00 => semble répéter les données inscrites en 01
06 => 04 => semble répéter les données inscrites en 08
Il est peut être possible d'agir directement sur les Données indiquées au dessus pour afficher des graphismes à l'écran sans passer par les commandes COPY
Reste à voir si il es possible de "former" une "bribe Verticale" avec ces paramètres de la même façon que les bribes horizontales
Edité par
igal
Le 05/10/2014 à 01h23
Encore une fois, je respecte ta persévérance et ton imagination
Mais la réponse à ta question est non.
BLOAD/BSAVE réalise tout simplement une opération de copie linéaire de la RAM ou de la VRAM vers un média extérieur. Lorsque tu sauvegarde par BSAVE une "bribe" de x pixels de haut, en fait tu demandes simplement au MSX de sauvegarder tous les octets consécutifs de la VRAM compris entre une adresse et une autre (et il intègre ces données dans le fichier).
Lorsque tu charges la bribe par BLOAD, il va rechercher les adresses et la longueur, contenues dans le fichier, et recharge tout simplement les données à partir de l'adresse de début. C'est tout. Et c'est pour cela que tes "bribes" s'affichent "spontanément" au bon endroit, comme tu dis. C'est simplement la reproduction exacte de la portion sauvegardée, en longueur et en adresse dans la VRAM.
BLOAD et BSAVE sont des commandes de sauvegarde de portions de mémoire (RAM ou VRAM), et ne gère donc pas de "coordonnées" au sens "latitude" et "longitude" comme tu l'expliques.
Pour les octets que tu analyses dans le "header" de tes fichiers, ce sont en fait les adresses de début et de fin :
- Bribe 00.SCC : adresse de début $0000 (0000), adresse de fin $03FF (1023) => 00 00 FF 03
- Bribe 01.SCC : adresse de début $0400 (1024), adresse de fin $07FF (2047) => 00 04 FF 07
- Bribe 02.SCC : adresse de début $0800 (2048), adresse de fin $0BFF (3071) => 00 08 FF 0B
- ...
La seule façon, à ma connaissance, de sauvegarder une "bribe" verticale en BASIC, c'est de passer par COPY. Edité par Metalion Le 23/09/2014 à 17h52
Mais la réponse à ta question est non.
BLOAD/BSAVE réalise tout simplement une opération de copie linéaire de la RAM ou de la VRAM vers un média extérieur. Lorsque tu sauvegarde par BSAVE une "bribe" de x pixels de haut, en fait tu demandes simplement au MSX de sauvegarder tous les octets consécutifs de la VRAM compris entre une adresse et une autre (et il intègre ces données dans le fichier).
Lorsque tu charges la bribe par BLOAD, il va rechercher les adresses et la longueur, contenues dans le fichier, et recharge tout simplement les données à partir de l'adresse de début. C'est tout. Et c'est pour cela que tes "bribes" s'affichent "spontanément" au bon endroit, comme tu dis. C'est simplement la reproduction exacte de la portion sauvegardée, en longueur et en adresse dans la VRAM.
BLOAD et BSAVE sont des commandes de sauvegarde de portions de mémoire (RAM ou VRAM), et ne gère donc pas de "coordonnées" au sens "latitude" et "longitude" comme tu l'expliques.
Pour les octets que tu analyses dans le "header" de tes fichiers, ce sont en fait les adresses de début et de fin :
- Bribe 00.SCC : adresse de début $0000 (0000), adresse de fin $03FF (1023) => 00 00 FF 03
- Bribe 01.SCC : adresse de début $0400 (1024), adresse de fin $07FF (2047) => 00 04 FF 07
- Bribe 02.SCC : adresse de début $0800 (2048), adresse de fin $0BFF (3071) => 00 08 FF 0B
- ...
La seule façon, à ma connaissance, de sauvegarder une "bribe" verticale en BASIC, c'est de passer par COPY. Edité par Metalion Le 23/09/2014 à 17h52
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)
Metalion a raison.
Tu peux toujours tester COPY pour créer tes brides sur MSX mais j'ai peur que la lecture soit bien plus longue que pour les bribes horizontales à cause des sauts dans la VRAM.
COPY (X1,Y1)– (X2-Y2),page TO “lec:nom”
Copie la zone s’étendant de X1,Y1 à X2,Y2 vers un fichier nom dans le lecteur lec (A à F) (pour les modes écrans 5 à 8)
Si la page n'est pas précisé l'opération se déroulera sur la page active. Edité par Fabf Le 23/09/2014 à 18h39
Tu peux toujours tester COPY pour créer tes brides sur MSX mais j'ai peur que la lecture soit bien plus longue que pour les bribes horizontales à cause des sauts dans la VRAM.
COPY (X1,Y1)– (X2-Y2),page TO “lec:nom”
Copie la zone s’étendant de X1,Y1 à X2,Y2 vers un fichier nom dans le lecteur lec (A à F) (pour les modes écrans 5 à 8)
Si la page n'est pas précisé l'opération se déroulera sur la page active. Edité par Fabf Le 23/09/2014 à 18h39
et ... pour faire suite à ce qu'à écris Fabf
copy "<non de fichier>" to (x,y),s
s étant la page écran où tu veux envoyer les données graphiques.
copy "<non de fichier>" to (x,y),s
s étant la page écran où tu veux envoyer les données graphiques.

Apres une journée de Taf, c'est trop violent pour moi ca
Désolé
Edité par
TurboSEB
Le 23/09/2014 à 22h50
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
De très nombreuses infos détaillées par ici => http://marmsx.msxall.com/msxvw/msxvw5/appendix5c.pdf
Après quelques essais, malgré la lenteur de la commande copy par rapport à bload, copy présente quand même certains avantages très intéressants.
Bload est extrêmement rapide quand il s'agit de charger des Bribes horizontales mais "verouille" le msx jusqu'à ce que le dernier pixel contenu dans le fichier soit chargé.
Copy est beaucoup moins rapide que bload mais présente l'avantage de "rendre la main" avant meme d'afficher le dernier pixel contenu dans le fichier et surtout contrairement à bload, il est possible de charger un "morceau" d'image verticale.
Après de nombreux essais je vais tenter de combiner bload et copy de sorte à recréer un scroll du genre gradius 4 (ps2) avec des décors "haut et bas" d'écran chargés avec bload et un décors central chargé par copy.
Le rendu pourrait très intéressant à la condition d'automatiser le tout par la suite
A suivre...
Bload est extrêmement rapide quand il s'agit de charger des Bribes horizontales mais "verouille" le msx jusqu'à ce que le dernier pixel contenu dans le fichier soit chargé.
Copy est beaucoup moins rapide que bload mais présente l'avantage de "rendre la main" avant meme d'afficher le dernier pixel contenu dans le fichier et surtout contrairement à bload, il est possible de charger un "morceau" d'image verticale.
Après de nombreux essais je vais tenter de combiner bload et copy de sorte à recréer un scroll du genre gradius 4 (ps2) avec des décors "haut et bas" d'écran chargés avec bload et un décors central chargé par copy.
Le rendu pourrait très intéressant à la condition d'automatiser le tout par la suite

A suivre...
ericb59 :
Ca c'était facile !
Maintenant tu fais comment pour mettre un sprite de soldat qui tire sur tout ce qui bouge ?

PS : Le scroll normalement il devrait être inversé ... du haut vers le bas...
Maintenant tu fais comment pour mettre un sprite de soldat qui tire sur tout ce qui bouge ?

PS : Le scroll normalement il devrait être inversé ... du haut vers le bas...
J'y travaille

En attendant de travailler sur les sprites, voici le moteur du SCROLL à reculons!
http://youtu.be/aZXJifixrWk
Voici le listing:
Code TEXT :
10 'SAVE"RPLAY13.asc",A
20 'PLAYER REVERSE DE BRIBES DVDP(27)=(N+7)8: VDP(28)=-N AND 7:N=N+1AND255:GOSUB 10000IMAGES [11X(4X256)]+[(53X(4X256)]
30 VDP(10)=0:SCREEN 12,1:X=100:Y=100:P=0:VDP(24)=VDP(24)+170
40 IF P=0 THEN CALL CHDIR ("h-22-23"):GOTO 59
41 IF P=1 THEN CALL CHDIR ("h-20-21"):GOTO 59
42 IF P=2 THEN CALL CHDIR ("h-18-19"):GOTO 59
43 IF P=3 THEN CALL CHDIR ("h-16-17"):GOTO 59
44 IF P=4 THEN CALL CHDIR ("h-14-15"):GOTO 59
45 IF P=5 THEN CALL CHDIR ("h-12-13"):GOTO 59
46 IF P=6 THEN CALL CHDIR ("h-10-11"):GOTO 59
47 IF P=7 THEN CALL CHDIR ("h-08-09"):GOTO 59
48 IF P=8 THEN CALL CHDIR ("h-06-07"):GOTO 59
49 IF P=9 THEN CALL CHDIR ("h-04-05"):GOTO 59
50 IF P=10 THEN CALL CHDIR ("h-02-03"):GOTO 59
51 IF P=11 THEN CALL CHDIR ("h-00-01"):P=-1:GOTO 59
59 BLOAD"63.scc",S:GOSUB 10000
60 BLOAD"62.scc",S:GOSUB 10000
70 BLOAD"61.scc",S:GOSUB 10000
80 BLOAD"60.scc",S:GOSUB 10000
90 BLOAD"59.scc",S:GOSUB 10000
100 BLOAD"58.scc",S:GOSUB 10000
110 BLOAD"57.scc",S:GOSUB 10000
120 BLOAD"56.scc",S:GOSUB 10000
130 BLOAD"55.scc",S:GOSUB 10000
140 BLOAD"54.scc",S:GOSUB 10000
150 BLOAD"53.scc",S:GOSUB 10000
160 BLOAD"52.scc",S:GOSUB 10000
170 BLOAD"51.scc",S:GOSUB 10000
180 BLOAD"50.scc",S:GOSUB 10000
190 BLOAD"49.scc",S:GOSUB 10000
200 BLOAD"48.scc",S:GOSUB 10000
210 BLOAD"47.scc",S:GOSUB 10000
220 BLOAD"46.scc",S:GOSUB 10000
230 BLOAD"45.scc",S:GOSUB 10000
240 BLOAD"44.scc",S:GOSUB 10000
250 BLOAD"43.scc",S:GOSUB 10000
260 BLOAD"42.scc",S:GOSUB 10000
270 BLOAD"41.scc",S:GOSUB 10000
280 BLOAD"40.scc",S:GOSUB 10000
290 BLOAD"39.scc",S:GOSUB 10000
300 BLOAD"38.scc",S:GOSUB 10000
310 BLOAD"37.scc",S:GOSUB 10000
320 BLOAD"36.scc",S:GOSUB 10000
330 BLOAD"35.scc",S:GOSUB 10000
340 BLOAD"34.scc",S:GOSUB 10000
350 BLOAD"33.scc",S:GOSUB 10000
360 BLOAD"32.scc",S:GOSUB 10000
370 BLOAD"31.scc",S:GOSUB 10000
380 BLOAD"30.scc",S:GOSUB 10000
390 BLOAD"29.scc",S:GOSUB 10000
400 BLOAD"28.scc",S:GOSUB 10000
410 BLOAD"27.scc",S:GOSUB 10000
420 BLOAD"26.scc",S:GOSUB 10000
430 BLOAD"25.scc",S:GOSUB 10000
440 BLOAD"24.scc",S:GOSUB 10000
450 BLOAD"23.scc",S:GOSUB 10000
460 BLOAD"22.scc",S:GOSUB 10000
470 BLOAD"21.scc",S:GOSUB 10000
480 BLOAD"20.scc",S:GOSUB 10000
490 BLOAD"19.scc",S:GOSUB 10000
500 BLOAD"18.scc",S:GOSUB 10000
510 BLOAD"17.scc",S:GOSUB 10000
520 BLOAD"16.scc",S:GOSUB 10000
530 BLOAD"15.scc",S:GOSUB 10000
540 BLOAD"14.scc",S:GOSUB 10000
550 BLOAD"13.scc",S:GOSUB 10000
560 BLOAD"12.scc",S:GOSUB 10000
570 BLOAD"11.scc",S:GOSUB 10000
580 BLOAD"10.scc",S,0-11264:GOSUB 10000
590 BLOAD"09.scc",S,0-11264:GOSUB 10000
600 BLOAD"08.scc",S,0-11264:GOSUB 10000
610 BLOAD"07.scc",S,0-11264:GOSUB 10000
620 BLOAD"06.scc",S,0-11264:GOSUB 10000
630 BLOAD"05.scc",S,0-11264:GOSUB 10000
640 BLOAD"04.scc",S,0-11264:GOSUB 10000
650 BLOAD"03.scc",S,0-11264:GOSUB 10000
660 BLOAD"02.scc",S,0-11264:GOSUB 10000
670 BLOAD"01.scc",S,0-11264:GOSUB 10000
680 BLOAD"00.scc",S,0-11264:GOSUB 10000
690 CALL CHDIR (".."):P=P+1:GOTO40
1350 '
10000 VDP(24)=VDP(24)+252AND255:PUTSPRITE0,(X,Y),7,0:S=STICK(0):ONS+1 GOSUB 11000,12000,13000,14000,15000,16000,17000,18000,19000:RETURN
10010 '
11000 'STATIQUE
11010 RETURN
11020 '
12000 'HAUT
12010 Y=Y-8:RETURN
12020 '
13000 'DIAGO HAUT DROITE
13010 Y=Y-16:VDP(27)=VDP(27)+1AND255:RETURN
13020 '
14000 'DROITE
14010 VDP(27)=VDP(27)+1AND255:RETURN
14020 '
15000 'DIAGO DROITE BAS
15010 Y=Y+16:VDP(27)=VDP(27)+1AND255::RETURN
15020 '
15030 '
16000 'BAS
16010 Y=Y+8:RETURN
16020 '
17000 'DIAGO BAS GAUCHE
17010 Y=Y+16:VDP(27)=VDP(27)+255AND255:RETURN
17020 '
18000 'GAUCHE
18010 VDP(27)=VDP(27)+255AND255:RETURN
18020 '
19000 'DIAGO HAUT GAUCHE
19010 VDP(27)=VDP(27)+255AND255:Y=Y-16:RETURN
Voici le listing quasiment identique pour un SCROLL de haut en bas.
Code TEXT :
10 'SAVE"VPLAY13.asc",A
20 'PLAYER DE BRIBES DVDP(27)=(N+7)8: VDP(28)=-N AND 7:N=N+1AND255:GOSUB 10000IMAGES [11X(4X256)]+[(53X(4X256)]
30 VDP(10)=0:SCREEN 12,1:X=100:Y=100:P=0:'VDP(24)=VDP(24)+212
40 IF P=0 THEN CALL CHDIR ("h-00-01"):GOTO 59
41 IF P=1 THEN CALL CHDIR ("h-02-03"):GOTO 59
42 IF P=2 THEN CALL CHDIR ("h-04-05"):GOTO 59
43 IF P=3 THEN CALL CHDIR ("h-06-07"):GOTO 59
44 IF P=4 THEN CALL CHDIR ("h-08-09"):GOTO 59
45 IF P=5 THEN CALL CHDIR ("h-10-11"):GOTO 59
46 IF P=6 THEN CALL CHDIR ("h-12-13"):GOTO 59
47 IF P=7 THEN CALL CHDIR ("h-14-15"):GOTO 59
48 IF P=8 THEN CALL CHDIR ("h-16-17"):GOTO 59
49 IF P=9 THEN CALL CHDIR ("h-18-19"):GOTO 59
50 IF P=10 THEN CALL CHDIR ("h-20-21"):GOTO 59
51 IF P=11 THEN CALL CHDIR ("h-22-23"):P=-1:GOTO 59
59 BLOAD"00.scc",S,0-11264:GOSUB 10000
60 BLOAD"01.scc",S,0-11264:GOSUB 10000
70 BLOAD"02.scc",S,0-11264:GOSUB 10000
80 BLOAD"03.scc",S,0-11264:GOSUB 10000
90 BLOAD"04.scc",S,0-11264:GOSUB 10000
100 BLOAD"05.scc",S,0-11264:GOSUB 10000
110 BLOAD"06.scc",S,0-11264:GOSUB 10000
120 BLOAD"07.scc",S,0-11264:GOSUB 10000
130 BLOAD"08.scc",S,0-11264:GOSUB 10000
140 BLOAD"09.scc",S,0-11264:GOSUB 10000
150 BLOAD"10.scc",S,0-11264:GOSUB 10000
160 BLOAD"11.scc",S:GOSUB 10000
170 BLOAD"12.scc",S:GOSUB 10000
180 BLOAD"13.scc",S:GOSUB 10000
190 BLOAD"14.scc",S:GOSUB 10000
200 BLOAD"15.scc",S:GOSUB 10000
210 BLOAD"16.scc",S:GOSUB 10000
220 BLOAD"17.scc",S:GOSUB 10000
230 BLOAD"18.scc",S:GOSUB 10000
240 BLOAD"19.scc",S:GOSUB 10000
250 BLOAD"20.scc",S:GOSUB 10000
260 BLOAD"21.scc",S:GOSUB 10000
270 BLOAD"22.scc",S:GOSUB 10000
280 BLOAD"23.scc",S:GOSUB 10000
290 BLOAD"24.scc",S:GOSUB 10000
300 BLOAD"25.scc",S:GOSUB 10000
310 BLOAD"26.scc",S:GOSUB 10000
320 BLOAD"27.scc",S:GOSUB 10000
330 BLOAD"28.scc",S:GOSUB 10000
340 BLOAD"29.scc",S:GOSUB 10000
350 BLOAD"30.scc",S:GOSUB 10000
360 BLOAD"31.scc",S:GOSUB 10000
370 BLOAD"32.scc",S:GOSUB 10000
380 BLOAD"33.scc",S:GOSUB 10000
390 BLOAD"34.scc",S:GOSUB 10000
400 BLOAD"35.scc",S:GOSUB 10000
410 BLOAD"36.scc",S:GOSUB 10000
420 BLOAD"37.scc",S:GOSUB 10000
430 BLOAD"38.scc",S:GOSUB 10000
440 BLOAD"39.scc",S:GOSUB 10000
450 BLOAD"40.scc",S:GOSUB 10000
460 BLOAD"41.scc",S:GOSUB 10000
470 BLOAD"42.scc",S:GOSUB 10000
480 BLOAD"43.scc",S:GOSUB 10000
490 BLOAD"44.scc",S:GOSUB 10000
500 BLOAD"45.scc",S:GOSUB 10000
510 BLOAD"46.scc",S:GOSUB 10000
520 BLOAD"47.scc",S:GOSUB 10000
530 BLOAD"48.scc",S:GOSUB 10000
540 BLOAD"49.scc",S:GOSUB 10000
550 BLOAD"50.scc",S:GOSUB 10000
560 BLOAD"51.scc",S:GOSUB 10000
570 BLOAD"52.scc",S:GOSUB 10000
580 BLOAD"53.scc",S:GOSUB 10000
590 BLOAD"54.scc",S:GOSUB 10000
600 BLOAD"55.scc",S:GOSUB 10000
610 BLOAD"56.scc",S:GOSUB 10000
620 BLOAD"57.scc",S:GOSUB 10000
630 BLOAD"58.scc",S:GOSUB 10000
640 BLOAD"59.scc",S:GOSUB 10000
650 BLOAD"60.scc",S:GOSUB 10000
660 BLOAD"61.scc",S:GOSUB 10000
670 BLOAD"62.scc",S:GOSUB 10000
680 BLOAD"63.scc",S:GOSUB 10000
690 CALL CHDIR (".."):P=P+1:GOTO40
1350 '
10000 VDP(24)=VDP(24)+4AND255:PUTSPRITE0,(X,Y),7,0:S=STICK(0):ONS+1 GOSUB 11000,12000,13000,14000,15000,16000,17000,18000,19000:RETURN
10010 '
11000 'STATIQUE
11010 RETURN
11020 '
12000 'HAUT
12010 Y=Y-8:RETURN
12020 '
13000 'DIAGO HAUT DROITE
13010 Y=Y-16:VDP(27)=VDP(27)+1AND255:RETURN
13020 '
14000 'DROITE
14010 VDP(27)=VDP(27)+1AND255:RETURN
14020 '
15000 'DIAGO DROITE BAS
15010 Y=Y+16:VDP(27)=VDP(27)+1AND255::RETURN
15020 '
15030 '
16000 'BAS
16010 Y=Y+8:RETURN
16020 '
17000 'DIAGO BAS GAUCHE
17010 Y=Y+16:VDP(27)=VDP(27)+255AND255:RETURN
17020 '
18000 'GAUCHE
18010 VDP(27)=VDP(27)+255AND255:RETURN
18020 '
19000 'DIAGO HAUT GAUCHE
19010 VDP(27)=VDP(27)+255AND255:RETURN
Voici les modifications à apporter pour inverser le SCROLL:
1) Inverser l'ordre des répertoires contenants les bribes.
2) inverser l'ordre de chargement des bribes.
3) Changer la incrémentation de VDP(24) en remplaçant: +4AND255 par +252AND255
Voila tout. Edité par igal Le 04/10/2014 à 22h37
Effectivement y a plus rapide sur msx mais au final, le scroll devrait se faire par pas de 2 ou encore pixel par pixel.
Sachant que les bribes sont chargées tous les 4 pixels, on devrait avoir en théorie une "capacite/vitesse" de deplacement du héros de 2 à 4 fois plus rapide que la vitesse du scroll.
@eric: il est possible "d'injecter" des ennemis de façon très précise puisque l'on peut les faire apparaître à 62 instants prédéterminés.
Pour ce qui est de l'interaction entre les spirites, on peut considérer deux approches différentes.
1) Soit le héros à un "longitude" fixe et il suffirait de faire exploser n'importe quel ennemi lorsque ce dernier se trouve sur la même longitude lorsque le sous programme "ON STRIG GOSUB " est lancé.
2) avec un hero completement libre, Il est possible d'utiliser la commande "ON SPRITES GOSUB" habituel.
Sachant que les bribes sont chargées tous les 4 pixels, on devrait avoir en théorie une "capacite/vitesse" de deplacement du héros de 2 à 4 fois plus rapide que la vitesse du scroll.
@eric: il est possible "d'injecter" des ennemis de façon très précise puisque l'on peut les faire apparaître à 62 instants prédéterminés.
Pour ce qui est de l'interaction entre les spirites, on peut considérer deux approches différentes.
1) Soit le héros à un "longitude" fixe et il suffirait de faire exploser n'importe quel ennemi lorsque ce dernier se trouve sur la même longitude lorsque le sous programme "ON STRIG GOSUB " est lancé.
2) avec un hero completement libre, Il est possible d'utiliser la commande "ON SPRITES GOSUB" habituel.
Code TEXT :
Edité par
igal
Le 23/10/2014 à 15h42
10 'SAVE"RPLAY15.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 ("M-0"):GOSUB 220
70 IF P=1THEN CALL CHDIR (".."):CALL CHDIR ("M-1"):GOTO220
80 IF P=2THEN CALL CHDIR (".."):CALL CHDIR ("M-2"):GOTO220
90 IF P=3THEN CALL CHDIR (".."):CALL CHDIR ("M-3"):GOTO220
100 IF P=4THEN CALL CHDIR (".."):CALL CHDIR ("M-4"):GOTO220
110 IF P=5THEN CALL CHDIR (".."):CALL CHDIR ("M-5"):GOTO220
120 IF P=6THEN CALL CHDIR (".."):CALL CHDIR ("M-6"):GOTO220
130 IF P=7THEN CALL CHDIR (".."):CALL CHDIR ("M-7"):GOTO220
140 IF P=8THEN CALL CHDIR (".."):CALL CHDIR ("M-8"):GOTO220
150 IF P=9THEN CALL CHDIR (".."):CALL CHDIR ("M-9"):GOTO220
160 IF P=10THEN CALL CHDIR (".."):CALL CHDIR ("M-A"):GOTO220
170 IF P=11THEN CALL CHDIR (".."):CALL CHDIR ("M-B"):GOTO220
180 IF P=12THEN CALL CHDIR (".."):CALL CHDIR ("M-C"):GOTO220
190 IF P=13THEN CALL CHDIR (".."):CALL CHDIR ("M-D"):GOTO220
200 IF P=14THEN CALL CHDIR (".."):CALL CHDIR ("M-E"):GOTO220
210 IF P=15THEN CALL CHDIR (".."):CALL CHDIR ("M-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 Y=Y+2AND255:COPY(0,0)-(3,3),0TO(X,Y),0:VDP(24)=VDP(24)+252and255:N=N+2AND255:IFSTRIG(0)THENGOSUB2000
1515 S=STICK(0):ONS+1 GOSUB 1530,1560,1590,1620,1650,1690,1720,1750,1780:RETURN
1520 '
1530 'STATIQUE
1540 RETURN
1550 '
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
2000 '
2010 'BETA MAPPE Longitude "X" '(Sélécteur de Colonnes)
2020 CALL CHDIR ("..")
2020 IF X>239THEN CALL CHDIR ("B-F"): GOTO 3000
2030 IF X>223THEN CALL CHDIR ("B-E"): GOTO 3000
2040 IF X>207THEN CALL CHDIR ("B-D"): GOTO 3000
2030 IF X>191THEN CALL CHDIR ("B-C"): GOTO 3000
2040 IF X>175THEN CALL CHDIR ("B-B"): GOTO 3000
2050 IF X>159THEN CALL CHDIR ("B-A"): GOTO 3000
2060 IF X>143THEN CALL CHDIR ("B-9"): GOTO 3000
2070 IF X>127THEN CALL CHDIR ("B-8"): GOTO 3000
2080 IF X>111THEN CALL CHDIR ("B-7"): GOTO 3000
2090 IF X>95THEN CALL CHDIR ("B-6"): GOTO 3000
2100 IF X>79THEN CALL CHDIR ("B-5"): GOTO 3000
2110 IF X>63THEN CALL CHDIR ("B-4"): GOTO 3000
2120 IF X>47THEN CALL CHDIR ("B-3"): GOTO 3000
2130 IF X>31THEN CALL CHDIR ("B-2"): GOTO 3000
2140 IF X>15THEN CALL CHDIR ("B-1"): GOTO 3000
2150 IF X>-1THEN CALL CHDIR ("B-0"): GOTO 3000
3000 '
3010 'BETA MAPPE Latitude "Y" (Selecteur de bribes)
3020 IF Y>239THEN CALL CHDIR ("B-F"): GOTO 4000
3030 IF Y>223THEN CALL CHDIR ("B-E"): GOTO 4000
3040 IF Y>207THEN CALL CHDIR ("B-D"): GOTO 4000
3030 IF Y>191THEN CALL CHDIR ("B-C"): GOTO 4000
3040 IF Y>175THEN CALL CHDIR ("B-B"): GOTO 4000
3050 IF Y>159THEN CALL CHDIR ("B-A"): GOTO 4000
3060 IF Y>143THEN CALL CHDIR ("B-9"): GOTO 4000
3070 IF Y>127THEN CALL CHDIR ("B-8"): GOTO 4000
3080 IF Y>111THEN CALL CHDIR ("B-7"): GOTO 4000
3090 IF Y>95THEN CALL CHDIR ("B-6"): GOTO 4000
3100 IF Y>79THEN CALL CHDIR ("B-5"): GOTO 4000
3110 IF Y>63THEN E=5: GOTO
3120 IF Y>47THEN E=4: GOTO 4272
3130 IF Y>31THEN E=3: GOTO 4254
3140 IF Y>15THEN E=2: GOTO 4238
3150 IF Y>-1THEN E=1: GOTO 4220
4000 ' BRIBES BETA (Lecteur de Bribes par groupe de 8)
4220 '
4222 CALL CHDIR ("0"):BLOAD"0",S,0-11264
4224 BLOAD"1",S,0-11264
4226 BLOAD"2",S,0-11264
4228 BLOAD"3",S,0-11264
4230 BLOAD"4",S,0-11264
4232 BLOAD"5",S,0-11264
4234 BLOAD"6",S,0-11264
4236 BLOAD"7",S,0-11264:CALL CHDIR (".."):RETURN1515
4238 CALL CHDIR ("0"):BLOAD"8",S,0-11264
4240 BLOAD"9",S,0-11264
4242 BLOAD"A",S,0-11264
4244 BLOAD"B",S,0-11264
4246 BLOAD"C",S,0-11264
4248 BLOAD"D",S,0-11264
4250 BLOAD"E",S,0-11264
4252 BLOAD"F",S,0-11264:CALL CHDIR (".."):RETURN1515
4254 CALL CHDIR (".."):CALL CHDIR ("1"):BLOAD"0",S,0-11264
4258 BLOAD"1",S,0-11264
4260 BLOAD"2",S,0-11264
4262 BLOAD"3",S,0-11264
4264 BLOAD"4",S,0-11264
4266 BLOAD"5",S,0-11264
4268 BLOAD"6",S
4270 BLOAD"7",S:CALL CHDIR (".."):RETURN1515
4272 CALL CHDIR (".."):CALL CHDIR ("1"):BLOAD"8",S
4274 BLOAD"9",S
4276 BLOAD"A",S
4278 BLOAD"B",S
4280 BLOAD"C",S
4282 BLOAD"D",S
4284 BLOAD"E",S
4286 BLOAD"F",S:CALL CHDIR (".."):RETURN1515
4301 BLOAD"0",S:GOSUB 1510
4302 BLOAD"1",S:GOSUB 1510
4304 BLOAD"2",S:GOSUB 1510
4306 BLOAD"3",S:GOSUB 1510
4308 BLOAD"4",S:GOSUB 1510
4310 BLOAD"5",S:GOSUB 1510
4312 BLOAD"6",S:GOSUB 1510
4314 BLOAD"7",S:GOSUB 1510
4316 BLOAD"8",S:GOSUB 1510
4318 BLOAD"9",S:GOSUB 1510
4320 BLOAD"A",S:GOSUB 1510
4322 BLOAD"B",S:GOSUB 1510
4324 BLOAD"C",S:GOSUB 1510
4326 BLOAD"D",S:GOSUB 1510
4328 BLOAD"E",S:GOSUB 1510
4330 BLOAD"F",S:GOSUB 1510
4332 R=R+1:CALL CHDIR (".."):GOTO 290
1500 '
1510 Y=Y+2AND255:COPY(0,0)-(3,3),0TO(X,Y),0:VDP(24)=VDP(24)+252and255:N=N+2AND255:IFSTRIG(0)THENGOSUB2000
1515 S=STICK(0):ONS+1 GOSUB 1530,1560,1590,1620,1650,1690,1720,1750,1780:RETURN
Igal, j'aimerais expérimenté la lecture depuis les secteurs du disk pour faire un scrolling Vertical, et voir si il reste du temps machine pour faire autre chose...
Peux tu me fournir les fichiers d'un grand décors en screen 8, pour faire le test, par brides de 64 pixels de haut sous forme de fichiers "Bloadables" ?
Peux tu me fournir les fichiers d'un grand décors en screen 8, pour faire le test, par brides de 64 pixels de haut sous forme de fichiers "Bloadables" ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie



