MSX Village forum

L'école » [En Cours] Space Manbow Mappe complète. Mappe du Jeu Space Manbow.

Conseiller Municipal

rank_5.png

Avatar

Groupe : compte ++

Inscrit le: 17/04/2012

Messages: 4186

Le 06/08/2017 à 15h18
Reprise du message précédent

igal, si tu ne veux que des nombres positifs, tu peux multiplier ta variable par SGN(variable)

SGN() retourne -1 ou 1 suivant que la variable est negative ou positive

A=-5
a=((a-1)MOD190)*SGN(a)

Te donnera toujours un nombre positif ou 0

Y a surement moyen de l'utiliser aussi avec la formule de Metalion


Site web    

Villageois

rank_3.png

Avatar

Inscrit le: 24/08/2015

Messages: 272

Le 07/08/2017 à 13h35
A=-5
a=abs(((a-1)MOD190))
   

Conseiller Municipal

rank_5.png

Avatar

Groupe : compte ++

Inscrit le: 17/04/2012

Messages: 4186

Le 07/08/2017 à 15h31
Ha oui Sector28bis... J'avais oublié qu'il y avait ABS() ! :top
(Retourne la valeur absolue de la variable)


Site web    

Conseiller Municipal

rank_5.png

Avatar

Inscrit le: 23/12/2009

Messages: 1183

Le 08/08/2017 à 11h13
igal :
@Métalion: Ta formule fonctionne parfaitement avec les Valeurs positives mais pour les valeurs négatives, le scroll reste figé à Zéro.

Il suffit que tu travailles uniquement avec les valeurs positives ....
Je ne vois d'ailleurs pas pourquoi tu as besoin des valeurs négatives.

Pour rappel, VDP(24) est un registre du VDP qui prends uniquement concrètement les valeurs de 0 à 255.
Le BASIC permet des valeurs négatives, mais c'est uniquement une question d'encodage en octet signé (-127 est codé par la valeur binaire 129 par exemple).



Edité par Metalion Le 08/08/2017 à 13h38


Daewoo DPC-200 (MSX1) / Sony HB-F9P (MSX2) / Panasonic FS-A1WX (MSX2+)
MegaSRAM 512Kb SCC (made in Jipe) / MegaFlashROM SCC+ 2SD
Sunrise CF ATA-IDE / FM-PAC
   

Conseiller Municipal

rank_5.png

Avatar

Association

Inscrit le: 29/07/2010

Messages: 5014

Le 08/08/2017 à 12h01
Je vous remercie pour vos idées que je n'ai pas encore expérimenté.

Cependant, cette nuit en réfléchissant au pourquoi du comment, je me suis rappelé que VDP(24) n'accepte pas les valeurs négatives si bien que pour scroller dans le sens "non naturel", il faut procéder comme suit:

1) incrémenter VDP(24) de 254.
2) indiquer que si la valeurs 255 est atteinte, celle ci se réinitialise à 0.
3) retourner à la ligne (1)

Concrètement, cela donne cette formule.

10 A=254
20 VDP(24)=VDP(24)+A AND 255
30 GOTO 20

Dans mon cas, puisque je ne veux "surtout" pas de "Boucle, je dois procéder comme suit:

Sachant que les formules proposées par Métalion, Manuel ainsi que Sd_Snatcher (du forum Msx.org) ont tous les trois donnés une solution pour scroller dans le "Sens Naturel".

Voici la formule de manuel que j’appréhende le mieux:
VDP(24) = VDP(24) + 1 + (VDP(24) = HS)

Ce qui donne ceci:
460 'choix du repertoire des bribes
470 CALL CHDIR ("0")
471 COPY"1"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
472 COPY"2"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
473 COPY"3"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
474 COPY"4"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
475 COPY"5"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
476 COPY"6"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
477 COPY"7"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
478 COPY"8"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+1+(VDP(24)=HS)
480 CALL CHDIR (".."):CALL CHDIR ("1")

Nb: CALL CHDIR ("0") jusqu'à CALL CHDIR ("F") contiennent les 128 Bribes larges de 2 Pixels pour afficher une "Image complète" par la biais de la commande SET SCROLL VA.

Maintenant, le problème consiste à remplacer +1 par une variable "DR" comme suggéré par "Manuel".
En théorie:
Si l'on "valorise" DR par 1, on devrait obtenir un scroll avec des décors qui ont l'air de "monter".
Si l'on "valorise" DR par 254, on devrait obtenir un scroll avec des décors qui ont l'air de "descendre".

Sachant que VDP(24) se limite à 255, il faut donc intégrer AND255 pour réinitialiser l'incrémentation ce qui nous donnerait:

10 DR=254 :' Donne l'impression de scroller un décor descendant.
15 'DR=1 :' Donne l'impression de scroller un décor montant.
20 HS=180
460 'choix du repertoire des bribes
470 CALL CHDIR ("0")
471 COPY"1"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
472 COPY"2"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
473 COPY"3"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
474 COPY"4"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
475 COPY"5"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
476 COPY"6"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
477 COPY"7"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
478 COPY"8"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=VDP(24)+DR AND 255+(VDP(24)=HS)
480 CALL CHDIR (".."):CALL CHDIR ("1")

La grande question est de savoir si HS et DR peuvent cohabiter dans la même "Formule" sachant que DR s'incrémente de 254 mais se réinitialise à 0 lorsque 255 est atteint et que dans le même temps, HS attend d'atteindre 180 pour limiter l'incrémentation :fou

Bref...En attendant de mener les essais qui conviennent, j'attends vos spéculations ;)



Edité par igal Le 08/08/2017 à 12h03

Conseiller Municipal

rank_5.png

Avatar

Inscrit le: 23/12/2009

Messages: 1183

Le 08/08/2017 à 13h38
igal:
Cependant, cette nuit en réfléchissant au pourquoi du comment, je me suis rappelé que VDP(24) n'accepte pas les valeurs négatives

CQFD :)


Daewoo DPC-200 (MSX1) / Sony HB-F9P (MSX2) / Panasonic FS-A1WX (MSX2+)
MegaSRAM 512Kb SCC (made in Jipe) / MegaFlashROM SCC+ 2SD
Sunrise CF ATA-IDE / FM-PAC
   

Conseiller Municipal

rank_5.png

Avatar

Association

Inscrit le: 29/07/2010

Messages: 5014

Le 11/08/2017 à 15h20
Finalement, Manuel à apporté une solution qui me convient ;)


200 HA=0:'Latitude du copy Verticale
205 HS=190:'Buté du scroll V Verticale
210 DR=-2:'Direction du scroll V Verticale vers le Bas
215 'DR=2:'Direction du scroll V Verticale vers le Haut

471 COPY"1"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
472 COPY"2"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
473 COPY"3"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
474 COPY"4"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
475 COPY"5"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
476 COPY"6"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
477 COPY"7"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
478 COPY"8"TO(VA,HA):VA=VA+2:SETSCROLLVA:VDP(24)=(VDP(24)+DR+DR*(HS=VDP(24)))AND255
480 CALL CHDIR (".."):CALL CHDIR ("1")

J'ai intégré un simple sprite pour voir ce que cela donne :p


La prochaine étape est encore une fois, le déplacement de la zone de sprite depuis la page Zéro vers la Page 1 :fou
J'ai tendu la perche à Manuel, on va voir si il maitrise cette question :D

Conseiller Municipal

rank_5.png

Avatar

Inscrit le: 23/12/2009

Messages: 1183

Le 13/08/2017 à 15h54
"igal":
La prochaine étape est encore une fois, le déplacement de la zone de sprite depuis la page Zéro vers la Page 1 :fou
J'ai tendu la perche à Manuel, on va voir si il maitrise cette question :D

Sujet déjà discuté en long, en large et en travers, avec présentation des différentes solutions, ici : https://msxvillage.fr/forum/topic.php?id=2642

A quoi ça sert qu'on se décarcasse si tu n'utilises pas les solutions qu'on te propose et qu'on explique en détail ...

:moue


Daewoo DPC-200 (MSX1) / Sony HB-F9P (MSX2) / Panasonic FS-A1WX (MSX2+)
MegaSRAM 512Kb SCC (made in Jipe) / MegaFlashROM SCC+ 2SD
Sunrise CF ATA-IDE / FM-PAC
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté