Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 29 Nov 2025, 22:53

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


scroll overscan double buffer

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 14 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
Megachur
 Sujet du message : scroll overscan double buffer
Message Publié : 27 Mai 2011, 15:04 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Hello,

voilà, je me demandai, si cela était possible de faire un scrolling hardware en double buffer en overscan.

Je m'explique :

2 x &4000 pour la première partie de l'écran en overscan
2 x &4000 pour la deuxième partie de l'écran en overscan

par exemple :
&0000 - &4000 pour le 1er
&8000 - &c000 pour le 2ième

la problématique réside que si on fait cela, même sans le système, on ne peut pas écrire en &038 et &039 (interruption en &38 avec au moins EI RET pour que ça marche). Hors, si je fais un scroll hard (double buffer), je vais écrire surement à cet endroit...ou même cela se verra à l'écran (deux octets non couleur du fond).

de plus, je pense que le code devra être en bank mémoire avec des jumps...avec un minimum de code en mémoire &0000-&ffff pour les permutations... sans parler de la pile qu'il faudra bien faire pointer quelque part (donc pas de call ou push et pop quand on est en mémoire &0000-&ffff hors des banks ?)
je pense qu'on doit avoir un peu de place entre les lignes de datas pour les écrans (mais de combien avec un écran large de 96 octets par exemple ?)

Voilà, si vous avez des retours, car j'aimerai savoir si c'est possible sur cpc !? :biere: :kiss:


Haut
 Profil  
 
Plissken
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 27 Mai 2011, 15:40 
Hors-ligne
Rulezzzz
Rulezzzz
Avatar de l’utilisateur

Inscription : 13 Nov 2007, 16:09
Message(s) : 911
Localisation : Gallifrey
J'ai déja vu des scroll en overscan.

Un dans la compil zemeeting 2003(?) et l'autre dans un jeu red & blue .

Je sais pas si ça peu t'aider.

_________________
Tout le monde il es beau,tout le monde il est gentil .


Haut
 Profil  
 
norecess
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 27 Mai 2011, 16:17 
Yo,

C'est parfaitement possible de mettre a 0 TOUTE la mémoire (les 64Kb) et donc effectuer un scroll hard 32Kb page-flippé.

Pour &38, ta réponse est : soit tu executes tout ton code avec un DI (pas tres glop, depent du contexte) soit tu regardes autour de IM 2, qui te permet déplacer le saut en &38.
Quant au reste, il te faudra utiliser les banks C1, C2 et C3 .. pour placer ton code + pile...

Mais j'ai jamais mis en pratique, et je ne suis clairement pas un expert là-dedans.. Longshot, si tu nous lis ? :)


Haut
  
 
Megachur
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 27 Mai 2011, 20:30 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Plissken a écrit :
J'ai déja vu des scroll en overscan.

Un dans la compil zemeeting 2003(?) et l'autre dans un jeu red & blue .

Je sais pas si ça peu t'aider.


Merci pour ces exemples.

Malheureusement, après analyse ils ont bien utilisé l'overscan (un scroll hard) mais pas de double buffer donc pas la totalité de la mémoire...

;-) :biere: :winner:


Haut
 Profil  
 
AsT
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 27 Mai 2011, 21:59 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 29 Août 2007, 08:04
Message(s) : 751
Localisation : Impact Hq
Je pense que ce doit être possible en utilisant les 64ko de ram en video + le mode im2... Je suis certain d'avoir déjà vu ça dans une des nombreuses preview s d'over le fou....


Tu balances le code dans les 64ko supplémentaires...

_________________
AsT / iMP4CT

Retrouvez nous sur le forum Amstrad Plus
"Call &bb06"


Haut
 Profil  
 
Longshot
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 01:05 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 28 Août 2008, 23:41
Message(s) : 270
@megachur
Tu n'as pas besoin d'utiliser 4 banques pour afficher 2 images overscan mais 3.
Donc les problèmes que tu indiques ne se posent pas.
Cela implique une rupture, mais si tu veux faire un scrolling crtc, cela s'imposera

Mais si tu utilisais toute la ram en vidéo, il faudrait bien que ton code soit en banque, donc il te reste les solutions indiquées par norecess:
Déplacer l'adresse d'interruption avec le mode IM2 (pour déplacer le vecteur entre C000 et FFFF en supposant que tu laisses la banque 7 connectée en permanence (via C1/C3))
Désactiver les interruptions (DI, ou 1 interruption sans EI)

Théoriquement, tu pourrais t'amuser à remettre les données à afficher en place avant que le CRTC les affiche et remettre juste après le code de l'interruption. C'est un problème qui devient un peu complexe si la ram cycle, car cela suppose que tu modifies la ram à partir de #38 au bon moment (sur l'interruption qui précède l'affichage de la zone) et se synchroniser pour remettre le code de l'interruption avant que la prochaine survienne.

Ceci étant dit, si tu es prêt à mettre un EI/RET, autant enlever les interruptions car elles ne servent à rien.
Si tu as besoin d'une synchronisation précise, il suffit de générer ton code en temps fixe.


Haut
 Profil  
 
Megachur
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 05:52 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Merci pour votre aide et vos conseils. :biere: :thankyou: :bravo:

@Longshot : ce que je veux faire, c'est bien un scrolling double buffer en overscan. Pourquoi m'indiques-tu que je n'aurai besoin alors que de 3 écrans ? si je mets 2x&4000 pour le 1er écran, j'ai bien besoin de 2x&4000 pour le deuxième...

Effectivement, l'idée de modifier en &38 au moment où le CRTC y accède pour afficher à l'écran est une bonne idée...mais vu que la RAM cycle (c'est un scrolling) il va falloir coder très précis pour cela (ex : un jump en &38 vers un morceau de code qui fait ld hl,0 ld (&38),hl ei ret et ensuite dans le programme faire un di et avant le ei : ld hl,&c9fb ld (&38),hl après que le CRTC est passé la zone &38 en affichage !

Sinon, ta proposition d'enlever complètement les interruptions semble bonne également... Je devrais juste avoir du code constant en tps machine ou tout simplement me caler après une synchro de vbl...

Donc, si je comprends bien, cela va demander un effort supplémentaire dans tous les cas, je vais voir si mon code en vaut le coup par rapport à l'effort ;-) !


Haut
 Profil  
 
TotO
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 09:00 
Hors-ligne
VIP
VIP

Inscription : 13 Jan 2010, 14:25
Message(s) : 2282
Je ne sais pas si c'est lié à cela, mais si tu utilises 24K par écran, tu as bien 3 screens.
En 384x256 ou encore 368x264.

_________________
Cent Pour Cent


Haut
 Profil  
 
shap
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 10:02 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
Ce que dit totO est juste, effectivement, si tu veux deux double buffer fullscreen, ça fait bien 48k soit 3 pages.

En fait, dans la plupart des démos cpc utilisant des scroll hard, c'est à la bourrin, c'est à dire que le codeur affiche, décale son affichage et laisse boucler le tout sur 16k ce qui n'est absolument pas nécessaire.

en fait il faut juste te contenter de boucler sur la longueur nécessaire, et dans ce cas tu peux préserver la zone 0 si tu as besoin des interruptions.

évidemment c'est un peu plus compliqué et ça implique que tu auras un buffer à cheval sur deux pages...

Mais à vaincre sans péril, on triomphe sans gloire :D

Pour info (on va encore m'accuser d'être pro-the demo...) si tu examines la phenix part de longshot, tu t'apercevras qu'il n'aurait pas pu faire un scroll hard-> une page de 16k... (je prend cet exemple car ça m'avait beaucoup travaillé à l'époque ou c'est sorti).


Haut
 Profil  
 
Longshot
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 11:20 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 28 Août 2008, 23:41
Message(s) : 270
Comme l'indiquent Shap et Toto, pour faire 1 image overscan, tu n'as pas besoin de 32 k
Il suffit donc que tu utilises (16k + 8k) x 2
Tu es par contre obligé d'utiliser le cyclage "matériel" de la ram, également pour la banque qui contient les 2 morceaux de 8 k

La méthode qu'évoque shap est le cyclage "logique" de la ram.
Pour éviter le cyclage "matériel", il suffit de le gérer "logiquement".
Cela sert lorsque 2 fois la taille du buffer video affiché est inférieur à 16 k. Tout dépend donc de la ram que tu veux "sauver".
Cela consomme 2 fois la taille du buffer vidéo affiché et il faut gérer 2 fois le rafraichissement des données au lieu d'un (en général, lorsqu'on a calculé les données entrantes il suffit de mettre à jour les 2 "rubans" en même temps).
Ainsi c'est le programme qui remet le pointeur vidéo au début du "double" buffer.
Tu as donc en permanence 2 fois le même buffer en ram pour pouvoir permuter. :wink:


Haut
 Profil  
 
Supersly
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 14:23 
Hors-ligne
Rulezzz
Rulezzz
Avatar de l’utilisateur

Inscription : 15 Oct 2007, 02:49
Message(s) : 405
Localisation : Les Sucres en Morceaux
Un vrai fullscreen bien plein fait plutôt 26Ko que 24Ko. Mais 24Ko, c'est déjà très bien la plupart du temps. Mais si vraiment tu regrettes l'overscan de 26k, je pense qu'il y a encore une solution.

Tu gères chaque écran sur 2 plages de 16k (donc 32k, comme ton idée de départ) mais réduis le R9 du CRTC à la valeur minimum (donc entre 5 et 6, mettons 6 pour un écran de 28k) et tu cales tes interruptions en mode IM2 dans la zone non affichée de ton choix (les 2 derniers Ko d'une des 4 plages mémoire). La précision du mode IM2 étant de 256 octets (donc 257 occupés), tu ne devrais pas avoir de problème compte tenu qu'il te reste 4x2Ko inutilisés en mémoire centrale.

Sauf si je me trompe, bien sûr ; mon truc, c'est plutôt de colorer les pixels, vous savez... :)

_________________
Les Sucres en Morceaux


Haut
 Profil  
 
shap
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 14:40 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
Supersly a écrit :
Un vrai fullscreen bien plein fait plutôt 26Ko que 24Ko.

ça dépend des moniteurs, j'en ai un sur lequel mais un écran de 26k ne rempli pas tout...

Supersly a écrit :
réduis le R9 du CRTC à la valeur minimum (donc entre 5 et 6, mettons 6 pour un écran de 28k)

ça dépend de la quantité de RAM balayé par le CRTC par ligne (R1)...


Haut
 Profil  
 
Megachur
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 28 Mai 2011, 17:40 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Merci à tous pour vos idées et commentaires, cela m'éclaire bien sur les possibilités...

y'a plus qu'à mettre cela en œuvre si mon prog le mérite !

:goodpost: :thankyou:


Haut
 Profil  
 
TotO
 Sujet du message : Re: scroll overscan double buffer
Message Publié : 15 Nov 2011, 21:58 
Hors-ligne
VIP
VIP

Inscription : 13 Jan 2010, 14:25
Message(s) : 2282
shap a écrit :
ça dépend des moniteurs, j'en ai un sur lequel mais un écran de 26k ne rempli pas tout...
Parce qu'un vrai overscan PAL fait 384x288, soit 27Ko.
La taille de 384x272 (270 sur les émulateurs) est arbitraire et non standard.

_________________
Cent Pour Cent


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 14 message(s) ] 

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 13 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.