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 30 Nov 2025, 06:40

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Problèmes généraux de timing

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 7 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
TrebleAlex
 Sujet du message : Problèmes généraux de timing
Message Publié : 27 Juil 2025, 12:58 
Hors-ligne

Inscription : 07 Mai 2020, 18:19
Message(s) : 5
Bonjour mes chers amis !

J’ai un problème fondamental lorsque j’écris une démo ou certaines parties de démo. Il s’agit d’un problème de timing.
Lorsque je crée des routines, par exemple une interruption raster, un défilement matériel, un affichage d’égaliseur, un scroller sinusoidal, un split raster, etc., chaque élément fonctionne bien de manière indépendante.
Mais dès que j’essaie de combiner plusieurs éléments, je rencontre un problème de synchronisation. Soit la musique ralentit, soit l’interruption raster scintille, soit les textes défilants saccadent, etc.
Par exemple, si je combine un affichage d’égaliseur avec la musique, il semble que le temps CPU soit tout juste suffisant.
Mais dès que j’ajoute un autre élément, comme un texte défilant ou une interruption raster, le CPU semble trop lent.
Avec les scrollers sinusoidaux, trois textes défilants fonctionnent parfaitement en parallèle, mais si je n’en garde qu’un seul et que j’ajoute une interruption raster, celle-ci ne fonctionne plus correctement ou bien la musique ralentit.

Peu importe la manière dont je combine les éléments, je n’arrive pas à programmer le tout de façon à ce que le CPU tienne le coup.
Malheureusement, je ne suis pas un très bon programmeur, je ne parviens pas à trouver la solution par moi-même. D’autres programmeurs de démos ne semblent pas avoir ce problème.
Qu’est-ce que je fais fondamentalement de travers ?
J’ai tout essayé : tout mettre dans une boucle principale, tout en routines d’interruption, un mélange des deux, avec interruptions du système d’exploitation, avec interruptions manuelles, etc. etc.
Il y a quelque chose que je fais fondamentalement mal, mais je ne sais pas quoi.

Je serais très reconnaissant pour une réponse !
Votre Alex de Treble A


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 28 Juil 2025, 10:44 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
Le temps d'exécution de tes divers effets dépasse un vbl ? Je me sers de la fonction "Row Highlight" sur la fenêtre "Registers" et de la variable "T" du debugger WinAPE pour optimiser mon code..

Image


Haut
 Profil  
 
TrebleAlex
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 30 Juil 2025, 20:08 
Hors-ligne

Inscription : 07 Mai 2020, 18:19
Message(s) : 5
Merci beaucoup pour votre suggestion ! Je ne connaissais même pas ces paramètres ! :-) Je me suis rendu compte que je devais réécrire tout mon code… Même après 40 ans chez CPC, il y a encore beaucoup de choses que je ne comprends pas, mais j'espère pouvoir continuer encore 30 ans ! :-) Cordialement, Alex


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 31 Juil 2025, 07:03 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Hello @Alex of Treble A !


N'hésite pas à poster ici les routines que tu n'arrives pas à optimiser. :sweatingbullets:

On te donnera des conseils pour les améliorer et tenir dans le bon timming :kissed: !

:biere:


Haut
 Profil  
 
TrebleAlex
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 02 Août 2025, 22:24 
Hors-ligne

Inscription : 07 Mai 2020, 18:19
Message(s) : 5
Voilà ! Je vous dévoile ici mon code spaghetti pour une démo à moitié terminée. Le problème, c'est que le texte défilant ne me satisfait pas. Il est très approximatif, ou plutôt, pas fluide. J'ai essayé de dessiner les lettres à l'écran octet par octet, mais cela ralentit encore plus le défilement. La musique n'a aucun effet sur ce point. J'ai donc omis la musique ici (c'est pourquoi les égaliseurs ne sont pas visibles). Vous pouvez ajouter de la musique à &4000 si vous le souhaitez. Je ne sais pas comment rendre le texte défilant plus fluide. Je n'ai peut-être pas assez d'expérience pour cela. Je vous serais très reconnaissant de votre réponse ! Cordialement, Alex :)
P.S.: J'utilise WinAPE pour tout


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
Longshot
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 04 Août 2025, 10:32 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 28 Août 2008, 23:41
Message(s) : 270
Tes routines « scrollmal/scrollmal2 » sont appelées à chaque interruption.
Chacune d’entre elle, pour une itération, affiche 64 octets pour afficher un caractère.

Il semble que tu aies prévu de gérer 20 caractères pour une ligne complète.
Donc pour afficher une itération complète d’un scrolling il faut 20 interruptions.
Si les interruptions switchent pour les 2 scrollings, il faut donc 40 interruptions.

Le CPC ne génère que 6 interruptions durant un frame (1 toute les 52 lignes).
Tu ne peux pas changer ça sans rentrer dans une programmation assez avancée.

Mon conseil:
Tu devrais d’abord gérer un seul scrolling de 20 caractères dans ton "main" sans utiliser les interruptions.
(ceci afin d'octroyer dans un premier temps 100% de la CPU d'un frame à un seul scroll complet)

Avant ta routine, changer la couleur du bord en rouge, puis à la fin de la routine, changer la couleur du bord en noir.
Ainsi tu auras une idée « visuelle » de la cpu prise par une seule routine de scroll pour 20 caractères.

Si tu as besoin ensuite de mettre ensuite des raster-couleur à un emplacement précis (donc prioritaire), tu pourras alors envisager dans un second temps de mettre ce code de raster sous interruption (il interrompra alors la routine de scrolling, moins prioritaire).


Haut
 Profil  
 
TrebleAlex
 Sujet du message : Re: Problèmes généraux de timing
Message Publié : 07 Août 2025, 13:10 
Hors-ligne

Inscription : 07 Mai 2020, 18:19
Message(s) : 5
Bonjour à tous ! :-) Merci beaucoup pour vos nombreux conseils utiles. Malheureusement, je n'arrive pas à le faire fonctionner. J'ai tout essayé : supprimer les fonctions principales « scrollmal » et « scrollmal2 » de l'interruption, reprogrammer entièrement les fonctions pour un affichage octet par octet, utiliser des polices plus petites, etc., mais rien n'y fait. Je vais mettre cette démo de côté pour l'instant et me concentrer sur quelque chose de plus récent. Merci encore pour votre aide ! Cordialement, Alex


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 7 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 1 invité


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.