Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» rs
optimisation scrolling horizontal EmptyDim 31 Mar 2024 - 14:35 par kenneth

» Bla Bla général du Jury
optimisation scrolling horizontal EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
optimisation scrolling horizontal EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
optimisation scrolling horizontal EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
optimisation scrolling horizontal EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
optimisation scrolling horizontal EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
optimisation scrolling horizontal EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
optimisation scrolling horizontal EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
optimisation scrolling horizontal EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
optimisation scrolling horizontal EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
optimisation scrolling horizontal EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
optimisation scrolling horizontal EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
optimisation scrolling horizontal EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
optimisation scrolling horizontal EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
optimisation scrolling horizontal EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 242 membres enregistrés
L'utilisateur enregistré le plus récent est AIRBUS44

Nos membres ont posté un total de 8922 messages dans 811 sujets
Sites Sympas

> Culture Club


Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

optimisation scrolling horizontal

5 participants

Aller en bas

optimisation scrolling horizontal Empty optimisation scrolling horizontal

Message par goyo Sam 31 Aoû 2019 - 12:42

J'essaie de faire un scrolling horizontal (vers la gauche) le plus performant possible en Hires.

Je déroule une ligne entière de scrolling pour gagner de la vitesse.

Si quelqu'un peut m'indiquer si je peux encore optimiser ce scrolling (à part dérouler toutes les lignes de l'écran) ?


Code:

_Hleftscroll
sta $FFFF ; only to debug in oricutron
 
 ldx #0
 
suiteLH
 
 lda HiresScreenAdressLow,x
 sta tmp0
 lda HiresScreenAdressHigh,x
 sta tmp0+1
 
 ldy #1
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #2
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #3
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #4
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #5
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #6
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #7
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #8
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #9
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #10
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #11
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #12
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #13
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #14
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #15
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #16
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #17
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #18
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #19
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #20
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #21
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #22
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #23
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #24
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #25
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #26
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #27
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #28
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #29
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #30
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #31
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #32
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #33
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #34
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #35
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #36
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #37
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #38
 lda (tmp0),y
 dey
 sta (tmp0),y
 ldy #39
 lda (tmp0),y
 dey
 sta (tmp0),y
 ;ldy #40
 ;lda (tmp0),y
 ;dey
 ;sta (tmp0),y

 inx
 cpx height
 bcs saut
 jmp suiteLH
 saut
rts

height .byt 200
Fichiers joints
optimisation scrolling horizontal Attachment
hscroll.zip Vous n'avez pas la permission de télécharger les fichiers joints.(14 Ko) Téléchargé 1 fois
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par assinie Sam 31 Aoû 2019 - 13:03

Si tu utilises 2 variables en page zéro tmp0 et tmp1, en mettant dans tmp1 la valeur de tmp0 +1, tu supprimes tous les ldy et tu remplaces les dey par des iny:

Code:

ldy #$00
lda (tmp1),y
sta (tmp0),y
iny
lda (tmp1),y
sta (tmp0),y
iny
...
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par goyo Sam 31 Aoû 2019 - 14:58

assinie a écrit:Si tu utilises 2 variables en page zéro tmp0 et tmp1, en mettant dans tmp1 la valeur de tmp0 +1, tu supprimes tous les ldy et tu remplaces les dey par des iny:

Code:

ldy #$00
lda (tmp1),y
sta (tmp0),y
iny
lda (tmp1),y
sta (tmp0),y
iny
...

Super ! Ça fait gagner 2 points de timer (0x276)
Merci Assinie
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par kenneth Sam 31 Aoû 2019 - 15:55

J ai fait ce bout de code qui tourne sans trop de saccades
Fichiers joints
optimisation scrolling horizontal Attachment
hirescro.txt Vous n'avez pas la permission de télécharger les fichiers joints.(7 Ko) Téléchargé 11 fois
kenneth
kenneth
Modérateur

Messages : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par Dbug Sam 31 Aoû 2019 - 19:43

Si quelqu'un peut m'indiquer si je peux encore optimiser ce scrolling (à part dérouler toutes les lignes de l'écran) ?
Vu que tu as déja déroulé le code pour une ligne complete, a mon avis l'alternative la plus rapide c'est de faire a la place un déroulement vertical:
Code:

suiteLH

 lda $a000+1+(40*0),x
 sta $a000+0+(40*0),x

 lda $a000+1+(40*1),x
 sta $a000+0+(40*1),x

 (...)

 lda $a000+1+(40*198),x
 sta $a000+0+(40*198),x

 lda $a000+1+(40*199),x
 sta $a000+0+(40*199),x

 inx
 cpx #39
 bcs saut
 jmp suiteLH
 saut
rts
Dbug
Dbug

Messages : 248
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par assinie Sam 31 Aoû 2019 - 20:09

Dans la version de Kenneth, le BEQ n'est exécuté qu'à la fin mais fait perdre 2 cycles à chaque fois, donc, si tu remplaces la fin:

Code:
DEX
BEQ $10EF
JMP $100E
par
Code:
DEX
BNE $100E
tu gagnes 2 cycles par ligne (un JMP utilise 3 cycles tout comme le BNE qui est ecécuté à chaque fois)
2 * 200 => 400 cycles gagnés au total.
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par kenneth Sam 31 Aoû 2019 - 21:19

En fait le JMP remplace le saut relatif parce il me semble que la distance de saut est trop grande. Arrow
kenneth
kenneth
Modérateur

Messages : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par assinie Sam 31 Aoû 2019 - 21:21

Oups, je n'ai pas vérifié la distance Embarassed
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par goyo Lun 2 Sep 2019 - 10:07

Dbug a écrit:
Si quelqu'un peut m'indiquer si je peux encore optimiser ce scrolling (à part dérouler toutes les lignes de l'écran) ?
Vu que tu as déja déroulé le code pour une ligne complete, a mon avis l'alternative la plus rapide c'est de faire a la place un déroulement vertical:
Code:

suiteLH

 lda $a000+1+(40*0),x
 sta $a000+0+(40*0),x

 lda $a000+1+(40*1),x
 sta $a000+0+(40*1),x

 (...)

 lda $a000+1+(40*198),x
 sta $a000+0+(40*198),x

 lda $a000+1+(40*199),x
 sta $a000+0+(40*199),x

 inx
 cpx #39
 bcs saut
 jmp suiteLH
 saut
rts

Merci Dr Dbug!
Incroyable , un gros gain de vitesse ! je gagne au moins 5 points de vitesse !
J’ai l’impression qu’on peut pas faire mieux
(A l'aide de Python j'ai généré les 400 lignes de code assez facilement)
Fichiers joints
optimisation scrolling horizontal Attachment
hscroll.zip Vous n'avez pas la permission de télécharger les fichiers joints.(12 Ko) Téléchargé 4 fois
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par Dbug Lun 2 Sep 2019 - 20:32

Techniquement on peut faire mieux, en décrémentant:
Code:
   ldx width
(...)
        dex
        bmi saut
Comme ca on évite 40 instructions "cpx width", mais bon, c'est un détail Very Happy
Dbug
Dbug

Messages : 248
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par iss Lun 2 Sep 2019 - 20:58

Dbug a écrit:Techniquement on peut faire mieux, en décrémentant:
Code:
 ldx width
(...)
        dex
        bmi saut
Comme ca on évite 40 instructions "cpx width", mais bon, c'est un détail Very Happy

I think this will not work Rolling Eyes because it will replicate the last byte 40 times i.e. byte from pos 39 goes to pos 38, on next iteration the same byte will go from pos 38 to pos 37 etc...

PS: this is almost like the difference between memcpy() and memmove() when we have overlapping source and destination Wink.
iss
iss

Messages : 112
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par goyo Lun 2 Sep 2019 - 22:14

Dbug a écrit:Techniquement on peut faire mieux, en décrémentant:
Code:
 ldx width
(...)
        dex
        bmi saut
Comme ca on évite 40 instructions "cpx width", mais bon, c'est un détail Very Happy

Merci, je vais essayer Smile
aussi on peut désactiver l'interruption clavier durant le scrolling :
j'ai cru comprendre qu'elle est appelée 200 fois par seconde...

Code:
poke (782,64);
scrolling();
poke (782,192);
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par Dbug Mar 3 Sep 2019 - 12:49

C'est pas "l'interruption clavier", c'est "l'interruption système", qui entre autre s'occupe du clavier, mais aussi de tout ce qui nécessite un traitement régulier, comme les mises a jour de timers, le curseur clignotant, l'instruction WAIT, etc...

Il me semble qu'elle tourne a 100hz (alors que 50hz serait largement suffisant), et prend environ 20% du temps machine global.

Pour gagner le maximum de vitesse tout en conservant la possibilité d'utiliser les interruptions, l'idéal c'est de faire ca avec un lecteur de disquette, comme ca on peut remplacer directement le vecteur IRQ en haut de ram vu que maintenant on est en mode overlay, ce qui évite de passer par le système de trampoline de la ROM basic qui fait une série d'appels intermédiaires histoire de pouvoir exécuter les routines utilisateur en page 2.
Dbug
Dbug

Messages : 248
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par goyo Mar 3 Sep 2019 - 18:14

Dbug a écrit:C'est pas "l'interruption clavier", c'est "l'interruption système", qui entre autre s'occupe du clavier, mais aussi de tout ce qui nécessite un traitement régulier, comme les mises a jour de timers, le curseur clignotant, l'instruction WAIT, etc...

Il me semble qu'elle tourne a 100hz (alors que 50hz serait largement suffisant), et prend environ 20% du temps machine global.

Pour gagner le maximum de vitesse tout en conservant la possibilité d'utiliser les interruptions, l'idéal c'est de faire ca avec un lecteur de disquette, comme ca on peut remplacer directement le vecteur IRQ en haut de ram vu que maintenant on est en mode overlay, ce qui évite de passer par le système de trampoline de la ROM basic qui fait une série d'appels intermédiaires histoire de pouvoir exécuter les routines utilisateur en page 2.

Oui pardon tu as raison ça ne gère pas que le clavier.
J'ai quand même essayé cette désactivation dans mon jeu d'action 'rain panic' qui en cours de développement et ça marche. Comme je n'utilise pas le wait et que des compteurs maison, ça passe et j'ai l'impression que ça tourne bien plus vite.
L'Oric avec lecteur de disquette je ne connais pas du tout, pour l'instant je vais rester sur l'Oric atmos simple.
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

optimisation scrolling horizontal Empty Re: optimisation scrolling horizontal

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum