Derniers sujets
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité Aucun
Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion
Statistiques
Nous avons 241 membres enregistrésL'utilisateur enregistré le plus récent est ben_frog
Nos membres ont posté un total de 8921 messages dans 811 sujets
remplissage de l'écran Hires
2 participants
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
remplissage de l'écran Hires
J'aimerais savoir s'il existe algo significativement plus rapide que celui-ci pour effacer l'écran ???
- Code:
_fillscr
ldy #199
suite
lda ScreenAdressLow,y
sta write_f+1
lda ScreenAdressHigh,y
sta write_f+2
clc
ldx #40
lda #64
suite_x
write_f
sta $1234,x
dex
bne suite_x
dey
bne suite
rts
goyo- Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy
Dbug- Messages : 248
Date d'inscription : 06/01/2013
Re: remplissage de l'écran Hires
En gros ton code coute pour chaque octet écrit le cout de:
- 1 sta absolu indexé
- 1 dex
- 1 bne
et par dessus ca, vu que tu fais ca que par blocs de 40 (lignes), tu payes en plus 200 fois
- 2 lda absolu indexé
- 2 sta absolus
- 1 clc
- 1 ldx immediat
- 1 lda immediat
- 1 dey
- 1 branchement
alors après tout dépend de tes paramètres, mais déja au lieu de tracer par blocs de 40, tu pourrais tracer 4 lignes a la fois (160 octets) ca te ferais 4 fois moins d'appels a la boucle extérieure.
Après la vrai facon d'augmenter la vitesse c'est de dérouler le code, style 8000 instructions STA:
- STA $a000 / STA $a001 / ... / STA $a000+7999
Et a l'intermédiaire, juste 32 STA donnent un bon compromis de vitesse: 8000/256=31.25
- 1 sta absolu indexé
- 1 dex
- 1 bne
et par dessus ca, vu que tu fais ca que par blocs de 40 (lignes), tu payes en plus 200 fois
- 2 lda absolu indexé
- 2 sta absolus
- 1 clc
- 1 ldx immediat
- 1 lda immediat
- 1 dey
- 1 branchement
alors après tout dépend de tes paramètres, mais déja au lieu de tracer par blocs de 40, tu pourrais tracer 4 lignes a la fois (160 octets) ca te ferais 4 fois moins d'appels a la boucle extérieure.
Après la vrai facon d'augmenter la vitesse c'est de dérouler le code, style 8000 instructions STA:
- STA $a000 / STA $a001 / ... / STA $a000+7999
Et a l'intermédiaire, juste 32 STA donnent un bon compromis de vitesse: 8000/256=31.25
- Code:
lda #40
ldx #255
loop
sta $a000+256*0,x
sta $a000+256*1,x
sta $a000+256*2,x
(...)
sta $a000+256*31,x
sta $a000+7999-256,x ; cas spécial pour le dernier
dex
bpl loop
_________________
Dbug- Messages : 248
Date d'inscription : 06/01/2013
Re: remplissage de l'écran Hires
Dbug a écrit:En gros ton code coute pour chaque octet écrit le cout de:
- 1 sta absolu indexé
- 1 dex
- 1 bne
et par dessus ca, vu que tu fais ca que par blocs de 40 (lignes), tu payes en plus 200 fois
- 2 lda absolu indexé
- 2 sta absolus
- 1 clc
- 1 ldx immediat
- 1 lda immediat
- 1 dey
- 1 branchement
alors après tout dépend de tes paramètres, mais déja au lieu de tracer par blocs de 40, tu pourrais tracer 4 lignes a la fois (160 octets) ca te ferais 4 fois moins d'appels a la boucle extérieure.
Après la vrai facon d'augmenter la vitesse c'est de dérouler le code, style 8000 instructions STA:
- STA $a000 / STA $a001 / ... / STA $a000+7999
Et a l'intermédiaire, juste 32 STA donnent un bon compromis de vitesse: 8000/256=31.25
- Code:
lda #40
ldx #255
loop
sta $a000+256*0,x
sta $a000+256*1,x
sta $a000+256*2,x
(...)
sta $a000+256*31,x
sta $a000+7999-256,x ; cas spécial pour le dernier
dex
bpl loop
Merci Dbug de toutes ces précisions, je vois l'oeil de l'expert !, cool je vais donc faire 160 au lieu de 40.
j'ai un autre question: est ce toi qui a développé la routine Mike8() pour tracer rapidement des droites ?
Je trouve que c'est génial comme routine pour faire de la 3D comme dans le jeu 1337, surtout celle avec clipping
goyo- Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy
Re: remplissage de l'écran Hires
Voici ce que dit SVN:goyo a écrit:j'ai un autre question: est ce toi qui a développé la routine Mike8() pour tracer rapidement des droites ?
Je trouve que c'est génial comme routine pour faire de la 3D comme dans le jeu 1337, surtout celle avec clipping
Et le thread de discussion originel:
http://forum.defence-force.org/viewtopic.php?f=4&t=386&hilit=line+drawing
_________________
Dbug- Messages : 248
Date d'inscription : 06/01/2013
Re: remplissage de l'écran Hires
c'est top, bravo!Dbug a écrit:Voici ce que dit SVN:goyo a écrit:j'ai un autre question: est ce toi qui a développé la routine Mike8() pour tracer rapidement des droites ?
Je trouve que c'est génial comme routine pour faire de la 3D comme dans le jeu 1337, surtout celle avec clipping
Et le thread de discussion originel:
http://forum.defence-force.org/viewtopic.php?f=4&t=386&hilit=line+drawing
rien n'est impossible à celui qui .... a ce niveau en programmation!
goyo- Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy
Sujets similaires
» CEO MAG 350
» HRC (Hires RLE Compressed)
» Scrolling en mode HIRES
» AC 2017: écrans Hires
» Créer une image HIRES
» HRC (Hires RLE Compressed)
» Scrolling en mode HIRES
» AC 2017: écrans Hires
» Créer une image HIRES
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Jeu 21 Mar 2024 - 8:51 par Dom50
» carte mère Oric (re)tracée
Mar 5 Mar 2024 - 18:54 par kenneth
» Meurtre à Grande Vitesse
Dim 25 Fév 2024 - 5:09 par Iurius
» ORIC-1 sur LE BON COIN
Ven 23 Fév 2024 - 23:01 par Mcar
» ORIC ATMOS sur LE BON COIN
Dim 4 Fév 2024 - 12:06 par kiwilevrai
» Problème d'affichage des couleurs avec un Oric Atmos
Sam 27 Jan 2024 - 1:26 par pierbail
» Bienvenue dans le Forum des Oriciens
Mar 9 Jan 2024 - 12:33 par Dom50
» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Ven 29 Déc 2023 - 14:13 par Arcade-des-Monts
» Bonnes fêtes
Mar 26 Déc 2023 - 10:21 par Dom50
» Murders in Venice / Meutres à Venise
Sam 18 Nov 2023 - 22:44 par retroric
» Un clavier PS/2 pour tester un ORIC
Dim 27 Aoû 2023 - 9:49 par Voyageur
» Disquette 3" Sedoric
Mar 1 Aoû 2023 - 14:22 par AtomeX
» faire un 6502 avec des phototransistor
Dim 16 Juil 2023 - 17:26 par Voyageur
» Oricutron linux et DSK
Jeu 29 Juin 2023 - 18:34 par Voyageur
» No Problem !
Dim 25 Juin 2023 - 17:53 par Voyageur