MSX Village forum

La Place des Développeurs Projet GOS Et oui, encore trop d'ambitions ^^

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 15h19

Reprise du message précédent

Ce qui m'intéresse de voir c'est ta routine la plus rapide.
En Screen mode 8 ou 5 ont doit obtenir les mêmes vitesses.
Oui utilises 7 Prints différents s'il te plait.

J'ai vu dans ta routine que tu transferts des caractères avec fonction Ram To VRAM. Tu en fait 8 par caractères, si j'ai bien pigé. 1 par ligne.
Pourquoi tu n'utilises pas HMMC ou LMMC pour faire un seul transfert par caractère ? Edité par ericb59 Le 22/12/2020 à 15h23


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 16h04
En mode 8 (8-bits per dot), on a 2 fois plus de data à envoyer au VDP qu'en mode 5 (4-bits par dot).
Je n'utilise pas HMMC ou LMMC parce que... je les ais pas encore (re)implémenté. ^^
C'est prévu (c'est nécessaire pour le mode "ombre" notamment).
Ceci dit, si un jour je veux avoir un système d'affichage vraiment performant (pour afficher bcp de texte par frame), j'installerai mes fonts en VRAM et je n'afficherai mon texte qu'à base de commandes inter-VDP.

Je te ferais quand même les tests ce soir ; ça m'intéresse aussi d'avoir un comparatif avec le Bios (j'imagine que tu as fais tes tests via les routines du Bios).


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 16h48
Je viens de m'apercevoir que de mesurer le temps avec le Timer ce n'était pas du tout fiable. Le Timer étant synchronisé sur les interruptions, les routines qui utilisent un DI / EI faussent le résultat.
Tu as une idée de comment faire autrement ?


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 17h24
Une question pour les connaisseurs du MSX. ^^
A priori, y a un port avec un registre 'timer' mais ça semble spécifique au TruboR (chip S1990).
Mais sinon, si la tâche prends plusieurs frames, la méthode du JIFFY devrait pas être trop mauvaise.
Y a pas de raison que des DI/EI fassent sauter une frame (le VDP va tenter de re-balancer son interruption tant que le flag de S#0 n'est pas reset) ; par contre, si tu fais des lectures du registre S#0 du VDP, là ça va tout fausser.
En tout cas, j'ai pas d'autres idées là comme ça. :gne


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 20h18
J'ai modifié ma routine pour ne pas avoir de DI / EI, j'utilise donc comme toi un copy Ram To vram par ligne de chaque caractère.
J'affiche mes 7 lignes de texte en Screen 8, MSX2 PAL, en 197 154 Cycles.
Ce qui est bien trop long.
Avec le bios ca ne prend que 28 Cycles. Edité par ericb59 Le 22/12/2020 à 20h39


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 20h26
A quelle fréquence ? EDIT: Ah, PAL donc 50Hz
Voici mes résultats :
Screen Freq Lib Frames
5 60 Full 23
5 60 Optim 22
8 60 Full 83
8 60 Optim 114 (!?) 78
5 50 Full 19
5 50 Optim 18
8 50 Full 69
8 50 Optim 94 (!?) 64


La version de la lib optimisé est plus lente en Screen 8... faut que je check ça c'est pas normal. :fou EDIT : C'est bon, corrigé


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 20h58
Il y a quelques incohérence dans ton tableau, c'est étrange ...

Je viens de passer à 154 Cycles, dans les mêmes conditions.

HA ! Une idée ...

Je suis passé à 75 Cycles ! :)


Et 64 cycles en utilisant un HMMC pour copier un bloc de 8x8 vers la VRAM.

Toujours plus lent que le Bios... Mais comment fait il donc ? Edité par ericb59 Le 22/12/2020 à 21h09


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 21h08
Tu pourrais me donner les temps des routines Bios pour le Screen mode 5 stp ?


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 21h11
28 Cycles en Screen 5.
Identique au Screen 8 !



PutText( int X, int Y, char *str, char LogOp )
Code ASM :
 
 
_PutText::
  push ix
  ld ix,#0
  add ix,sp
  ld l,4(ix)
  ld h,5(ix)
  ld (GRPACX),hl ; X
  ld l,6(ix)
  ld h,7(ix)
  ld (GRPACY),hl ; Y
  ld a,10(ix)
  ld (LOGOPR),a  ; LogOp
  ld l,8(ix)
  ld h,9(ix)
 
lb_ptlp:  
  ld   a,(hl)
  or   a
  jr   z, lb_ptEx
  call 0x008D       ; Call Bios
  ei
  inc hl
  jr  lb_ptlp
lb_ptEx:
  pop ix
  ret
 
Edité par ericb59 Le 22/12/2020 à 21h14


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 21h17
Tient C'est bizarre j'ai la même incohérence que toi !

Mon texte s'affiche en 91 Cycles à 60 Hz
alors qu'il s'affiche en 75 Cycles à 50Hz

Mazette quel est ce maléfice :lol Edité par ericb59 Le 22/12/2020 à 21h17


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 21h26
C'est normal, on compte le nombre de frames... à 60 Hz y a plus de frames pour un même temps donné.
Tout va bien, tu peux ranger ton pack de proton ;)

En tout cas, j'suis content d'être plus rapide que le Bios en Screen Mode 5 ! :tchin
Par contre, je comprends pas comment il peut aller à la même vitesse en Screen 8 !?
Y a 2 fois plus de données à envoyer... :hum


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/12/2020 à 21h41
J’ai essayé d’analyser la routine Bios cette aprem...
Mais j’suis pas à niveau... j’y pige rien :oups


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 21h45
Je vois pas de ruse pour décoder rapidement 8-bits en 8 bytes, mais je vais y réfléchir...
Si les ingénieurs des années 80 ont trouvés, on doit pouvoir le faire aussi :p


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 22h54
C'est bon, je suis tombé à 21 frames en Screen 8 @ 50 Hz ! :tchin
(et 23 frames avec la version autorisant les tailles variables de caractères)

L'explication serait un peu technique, mais je peux vous montrer si ça vous tente.


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 22/12/2020 à 23h30
Je descend même à 19 frames si je décode/envoi que 6-bits par ligne (la font du Bios n'utilise que 6 de ses 8-bits).
J'ai ajouté des paramètres à la lib pour que l'utilisateur puisse choisir entre rapidité et flexibilité.
J'ai encore un p'tit bug à corriger et du ménage à faire, puis je pusherai sur GitHub.

EDIT : C'est bon. C'est à jour sur https://github.com/aoineko-fr/cmsx


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 23/12/2020 à 07h07
Bien joué ! :) :top

Mais heu... j’ai beaucoup de mal avec ton code... :oups
Peux tu expliquer cette technique ici :D


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie