[VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

[VG5000] comment trouver la bonne vram pour les setet et seteg resolu

Message par rendomizer »

SOURCES .zip
(26.85 Kio) Téléchargé 61 fois
page 1 sources.png
page 1 sources.png (37.9 Kio) Consulté 1896 fois
capture2.png
capture2.png (218.86 Kio) Consulté 6225 fois
capture3.png
capture3.png (224.85 Kio) Consulté 6225 fois
capture4.png
capture4.png (129.6 Kio) Consulté 6225 fois
Dernière modification par rendomizer le 03 juin 2022 10:01, modifié 4 fois.
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par rendomizer »

Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment faire des sprites en basic sur VG5000

Message par Papy.G »

Si déjà avec un seul sprite ça ne fait pas mieux sur la vraie machine, il va falloir passer à l'assembleur pour les déplacements.
Tant qu'on a des sprites d'une tuile ou deux à suivre, ça passe, mais sur un sprite d'autant de tuiles, ça ne sera pas acceptable.

Tu as les commandes de copie d'écran à écran pour faire du scrolling horizontal de groupes d'aliens, tu bouges de 1 caractère pour aller dans un sens, pour l'autre sens, tu ne pourras pas bouger d'un seul caractère si tu n'utilises qu'une page-écran, car l'auto-incrémentation des instructions ne se fait que dans un sens, il faut alors bouger de 39 caractères, et décaler le registre de première ligne du bloc d'affichage (pour rattrapper le décalage de ligne).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par rendomizer »

@PapyG Oui en effet c'est possible seulement en 40000khz d'éxploiter le basic pour un jeux avec 2 ou 3 sprites j'en conviens. J'ai pas réussi à trouver comment faire un scrolling ! je ne suis pas assez bon en anglais pouir comprendre le datasheet. il faudrait l'intervention d'un expert en VG5000 comme joaopa :shock:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: comment faire des sprites en basic sur VG5000

Message par hlide »

Vu que j'ai un VG5000, je serais intéressé à faire du développement dessus - mais pas en BASIC.

Donc existe-il des alternatives en assembleur pour la gestion en général du clavier, joystick et vidéo ?

Quelque chose qui permettrait de mettre le pied à l'étrier ?
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment faire des sprites en basic sur VG5000

Message par Papy.G »

Pour le scrolling vertical, tu as le registre de première ligne, qui peut être incrémenté ou décrémenté, c'est le mode "rouleau", à ce moment-là, tu n'as que la valeur du registre et la nouvelle ligne à envoyer, ça ne fait pas beaucoup de données à envoyer au VDP, ça passe dans un v-blank.
Pour le scrolling horizontal, les instructions à utiliser sont auto-incrémentales, et une fois le tout calé, il faut juste attendre assez longtemps (le Z80 peut faire autre chose) que le processeur vidéo ait eu le temps de couvrir la zone voulue (comme avec l'effacement écran), il faut ensuite remettre à jour la colonne qui vient d'apparaître de l'autre côté de l'écran. C'est peut-être plus tendu de caler tout ceci dans un v-blank.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par rendomizer »

hlide a écrit : 28 avr. 2020 11:56 Vu que j'ai un VG5000, je serais intéressé à faire du développement dessus - mais pas en BASIC.

Donc existe-il des alternatives en assembleur pour la gestion en général du clavier, joystick et vidéo ?

Quelque chose qui permettrait de mettre le pied à l'étrier ?
je veux bien essailler de t'aider hlide...essaie mon générateur de sprite spéciale assembleur il y a une démo dans le fichier en assembleur avec les commandes de directions qui s'appelle " $5000 fill +ship move.z8a "
https://vg5000.webnode.fr/logiciels-developpes-2018/

Code : Tout sélectionner


ld hl,26789
lD de,26799

_debut00:
ld a,0

inc hl
ld (hl),a
ld a,(de)
sbc a,(hl)
cp 0
jp z,_debut0
jp _debut00

--------------
_debut0:

ld hl,29680;+2000=31780 (25*80)
lD de,31780

_debut1:
ld a,45
ld (hl),a

inc hl
ld (hl),a
ld a,(de)
sbc a,(hl)
cp 0
jp z,_debut3
jp _debut1





_debut3:

      ld a,19
      ld (26600),a ; position initial x sprite 1
      ld (26601),a ; position initial y sprite 1

      ld (26602),a ; position initial x sprite 2
      ld (26603),a ; position initial y sprite 2
      
      ld (26604),a ; position initial x sprite 3
      ld (26605),a ; position initial y sprite 3
      
      ld a,$b1  ; color sprite 1
      ld (26588),a
      ld a,$b1  ; color sprite 2
      ld (26589),a
      ld a,$b1  ; color sprite 8
      ld (26590),a
      ld a,75  ; color sprite 8
      ld (26595),a



call $5E88
_debut:
call $5eaa
      ld a,1        ;sprite 1 on
      ld ($67D0),a
      ld a,0
      ld ($67D1),a    ;sprite 2 off
      ld a,0
      ld ($67D2),a   ;sprite 3 off
      ld a,2
      call $00B3
      cp 255
      jp z,_left
      cp 1
      jp z,_right
      ld a,2
      call $00B0
      cp 255
      jp z,_up
      cp 1
      jp z,_down
      jp _debut

_right:
       ld a,0        ;sprite 1 off
      ld ($67D0),a
       ld a,0
      ld ($67D1),a    ;sprite 2 off
        ld a,1
      ld ($67D2),a   ;sprite 3 on
      
      ld a,($67e8)
      inc a
      ld ($67e8),a;  x ship

      ld a,($67ea)
      inc a
      ld ($67ea),a;  x ship

      ld a,($67ec)
      inc a
      ld ($67ec),a;  x ship
      jp _debut

;--------------------------------------------------------------------
_left:
       ld a,0        ;sprite 1 off
      ld ($67D0),a
       ld a,1
      ld ($67d1),a    ;sprite 2 oN
        ld a,0
      ld ($67d2),a   ;sprite 3 OFF

      ld a,($67e8)
      DEC a
      ld ($67e8),a;  x ship SPRITE 1

      ld a,($67ea)
      DEC  a
      ld ($67ea),a;  x ship SPRITE 2

      ld a,($67ec)
      DEC a
      ld ($67ec),a;  x ship SPRITE 3

      jp _debut
_down:


      ld a,($67e9)
      inc a
      ld ($67e9),a;  Y ship SPRITE 1

      ld a,($67eb)
      inc a
      ld ($67eb),a;  Y ship SPRITE 2

      ld a,($67ed)
      inc a
      ld ($67ed),a;  Y ship SPRITE 3


      jp _debut

;--------------------------------------------------------------------
_up:

      ld a,($67e9)
      DEc a
      ld ($67e9),a;  Y ship SPRITE 1

      ld a,($67eb)
      DEc a
      ld ($67eb),a;  Y ship SPRITE 2

      ld a,($67ed)
      DEc a
      ld ($67ed),a;  Y ship SPRITE 3

      jp _debut

Dernière modification par rendomizer le 28 avr. 2020 20:18, modifié 4 fois.
Je ne suis qu'un utilisateur pas un pro
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment faire des sprites en basic sur VG5000

Message par joaopa »

@papyG pas moyen de faire un scrooling pixel par pixel? (au lieu d'un pas d'un caractère?)
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par Markerror »

Hlide : mis à part la programmation directe de l'EF9345, l'accès aux autres ressources du VG5000 est plutôt simple en comparaison d'autres machines. Je te conseille de regarder "Clefs pour VG5000" qui recense les vecteurs intéressants (il doit être scanné sur le site de Carl). Après, tu peux regarder les sources de Joaopa. Tu peux aussi jeter un oeil sur le source de Soundsheep, il y a par exemple le test de la touche Espace.

Joaopa : le scroll au pixel, j'y crois pas trop pour un processeur dédié au vidéotexte. Par contre, le double buffering doit permettre de faire des animations propres avec des décalages d'un demi-caractère voir moins, à condition de gérer pour chaque sprite les différentes étapes d'animation.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment faire des sprites en basic sur VG5000

Message par Papy.G »

Effectivement, comme c'est un processeur texte, obligé de passer par des "précalculs" par pas de fraction de caractère, ce qui peut demander beaucoup de boulot, ou l'utilisation de techniques de sioux, via du "double-buffering", ou de la rotation de sets de caractères.
Pour du "survol" de sprite sur arrière-plan, on peut envisager de redessiner les tuiles de la zone survolée, tant qu'il y a peu de sprites à l'écran.

Exemple: un affichage typique genre Zelda ou Mystic Quest sur GameBoy, tu réduis à 4 couleurs (ou 4 niveaux mono) pour éviter les color clashes, tu mets en haut la barre d'état (qui ne sera pas affectée par le scrolling), puis tu bouges d'écran avec un scrolling pas fluide comme décrit plus haut, mais dans les écrans fixes, trois ou quatre sprites survolent l'arrière-plan (ou plus, si tous ne bougent pas dans la même frame). Les sprites ne sont pas animés pendant le scrolling d'arrière-plan, sauf le personnage principal. :wink:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment faire des sprites en basic sur VG5000

Message par joaopa »

C'est pas l'animation qui m'intéresse, plutôt une gestion de collision au pixel près (type manic miner sur Spectrum).
Pour ceux qui connaissent, dans Monkey Academy, pour pouvoir sauter sur une plateforme, il faut être en lévitation à coté de la plateforme en dessous pour pouvoir atteindre celle du haut. C'est à cause de la gestion des collision au caractère près.
Pareil dans US Rallye ou La moto infernale, on a l'impression d'avoir esquivé l'obstacle. A bah non en fait, car à un caractère près, on se l'est pris.
Ca casse tout l'intêret d'un jeu. C'est pourquoi le gameplay (même sur ZX81) est infiniment meilleur que sur VG5000.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par Carl »

Mais la gestion des collisions au pixel près n’est pas possible...ce n’est pas une puce graphique qui gère le bitmap...
Carl
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment faire des sprites en basic sur VG5000

Message par joaopa »

Oui Carl, c'est pourquoi je demandais si quelqu'un avait une grosse astuce de sioux pour contourner le problème.
Le bitmap est bien merdique sur l'EF9345: 160x125 en monochrome: wahou!!
Un truc comme ça ne sera jamais possible sur VG5000?
https://www.youtube.com/watch?v=PAA-tKk1ty0
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: comment faire des sprites en basic sur VG5000

Message par Papy.G »

De toute façons, ce VDP ne gère pas les collisions, il faut les faire gérer par le proc, on peut donc envisager de les calculer lors des dessins de survols. Évidemment, il faut les calculer de façon grossière pour l'approche et les décors inoffensifs et de manière fine à proximité d'ennemis

Il ne faut pas utiliser les modes bitmap, mais raisonner en "tuiles" et utiliser les quadrichromes.
Regarde Zelda sur GameBoy, un truc comme ça est envisageable avec le 9345. Avec une ligne d'état en semi-graphiques, et une zone de jeu de 160x120 constituée d'une grille de 10x8 blocs de 16x15px (4x3 Quads en résolution double)
N'utiliser que quatre couleurs permet d'éviter les color clashes mais aussi de gagner un peu de temps et de mémoire vidéo si jamais on devait en manquer. Les sprites sur GameBoy n'ont que trois niveaux, le troisième est la transparence et la périphérie est souvent du noir, ce qui peut aider pour le calcul des collisions.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: comment faire des sprites en basic sur VG5000

Message par Carl »

Le circuit EF9347 apporte t-il le bitmap (celui du minitel 2 de mémoire) ?

Carl
Répondre