Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

*****Les sprites soft sur Cpc
Aller à la page: <  1, 2, 3  >
 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
cmp


Hors ligne

Inscrit le: 08 Sep 2014
Messages: 56
Localisation: nord

MessagePosté le: Jeu 27 Juil - 14:24 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Lol Smile Ce n'est pas plus tordu Smile que le truc que tu m'as fait codé hier mon ami ^^ Smile




Par contre j'avais pas encore vu le dsk Smile


C'est magnifique TRONIC ^^ 


j'adore la End Part
_________________
CMP from impact cpc


Revenir en haut
Skype
Publicité






MessagePosté le: Jeu 27 Juil - 14:24 (2017)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Jeu 27 Juil - 14:27 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

^Pensez à évaluer Tronic pour ses posts de grande qualité ! Cliquez sur évaluer juste sous la signature...
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Jeu 27 Juil - 18:02 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

@Tronic, ma routine est un peu moins rapide que la tienne 15,9us vs 15,6us mais offre l'avantage de ne pas utiliser ni les registres secondaires ni les registres d'index et surtout de pouvoir modifier les adresses écrans plus facilement, ta table étant comprise dans celle des sprites.

Quelqu'un a t'il quelquechose de plus rapide que Tronic ou moi sachant que :

1. La taille du sprite doit être de 12 octets par 16 lignes (contraintes fixées par Tronic sur sa dernière routine)
2. Les datas du sprite doivent être récupérés en mémoire
3. Facilité d'accès à la table des adresses écran pour pouvoir modifier Y à la volée.

Code:
         org &8000
;
; Test Sprites 12 bytes / 16 lignes
; ---- Ast/iMPact juillet 2017 - OrgAms Rulez
; 1023us
;
        di
;
; ---> from here
;
        ld (pile+1),sp ;6;
        ld sp,line1    ;3;
        ld hl,sprdata  ;3;
;
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi;63;
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi
         pop de:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi:ld a,(hl):ld (de),a ;62; 

; to here <----
;
pile  ld sp,0 ;3:
;
; 6+3+3+3+(63*15)+62 =1022
; 1022/64=15,96 RasterLines
;
         ei
         ret
;
sprdata byte 255,&ff,&ff,&aa,&aa,&aa,&aa,&aa,&aa,&ff,&ff,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
            byte 255,&ff,&ff,&aa,&aa,&aa,&aa,&aa,&aa,&ff,&ff,255
 
line1 word #c000,#c800,#d000,#d800
        word #e000,#e800,#f000,#f800
;
line2 word #c050,#c850,#d050,#d850
        word #e050,#e850,#f050,#f850
;
line3 word #c0a0,#c8a0,#d0a0,#d8a0
        word #e0a0,#e8a0,#f0a0,#f8a0


_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Jeu 27 Juil - 18:19 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Une petite explication s'impose sur le cœur de la routine :

Code:

        pop de ; récupère adresse écran
        ldi ; on transfère le contenu de HL (data du sprite) à l'adresse DE (adresse écran)
...

_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
cmp


Hors ligne

Inscrit le: 08 Sep 2014
Messages: 56
Localisation: nord

MessagePosté le: Jeu 27 Juil - 22:01 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Je dirais même pop hl pop de ldi ^^
_________________
CMP from impact cpc


Revenir en haut
Skype
Tronic


Hors ligne

Inscrit le: 20 Mai 2015
Messages: 9

MessagePosté le: Jeu 27 Juil - 23:42 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Salut, 
J'adore ce genre de thread Smile
Bravo à AST pour sa routine qui a le mérite d'être (et de loin !), plus simple que la mienne en restant quasiment tout autant efficace !
Cependant, j'ai un peu raboté la mienne et je passe de 999 nops/64=15.60 RL à désormais 964 nops/64=15.06 RL.
Donc c'est là encore, moins qu'initialement...
Bon, certes... C'est trivial... Limite tricheur ? A vous de juger... :

Code:
; 12 bytes/16 lines sprite test routine (version b)
; 964 nops/64=15.06 RL
; Tronic/GPA


 org &1000
 nolist
 run start
 
start di
 ld hl,&c9fb
 ld (&38),hl  ; >> Se placer dans un contexte "demo" avec &38=ei+ret...
 ;ex af,af'  ; >> comme on se fout royalement du retour au basic
 ;push af  ; on peut virer les sauvegardes des registres
 ;exx   ; secondaires et donc on gagne du temps...
 ;push hl  ; D'autant plus que cela peut-etre fait (ou non)
 ;push bc  ; prealablement en amont de tout debut d'init de prog & donc l'inclure
 ;push de  ; a chq fois dans le calcul TM du sprite est un peu idiot...
 ;ld (stack),sp  ; >> Pas bien dans l'ancienne routine (perte de 3 nop a l'arrivee...)


; >>> From here, donc... ;-)
prog
 ld (newstack+1),sp ; >> Bcp mieux qu'avant donc... Gain de 3 nop a l'arrivee...  
point ld sp,table
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:pop iy:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de:exx:ld sp,iy
 pop ix:pop hl:pop bc:pop de:exx:pop hl:pop bc:pop de:exx:ld sp,ix:push hl:push bc:push de:exx:push hl:push bc:push de
newstack
 ld sp,0000 
 ;pop de   ; >> rien a faire de remettre tout bien au final...
 ;pop bc   ; Et on comptabilise uniquement
 ;pop hl   ; l'affichage du sprite en brut
 ;exx   ; Et forcement on gagne du temps...
 ;pop af   ; Hein ? Quoi ? 
 ;ex af,af'  ; Comment ca je triche ??? ;-)


; >>> To here = 964 nops / 64 = 15.06 rasters lines
; Meilleur score qu'avant donc... Mais... Point noir pour les adr ecr...
;ret   ; >> Pas de retour au basic donc...


modif ld a,0      ; pour afficher le second sprite (ou le même, plus bas...)
 or a
 jr nz,fin
 inc a
 ld (modif+1),a
 ld hl,table2
 ld (point+1),hl
 jp prog
fin 
 ei
loop jr loop   ; et on la boucle ! ;-)


 align 256
 ; acces adr ecran (La effectivement, gros point noir de cette routine...)
 ; align 256 ferait cependant commencer la table en &1200 et finira en &12fd
 ; La table fait moins de &ff de long donc...
 ; Et les prochaines peuvent donc se placer juste derriere en align 256 egalement...
 ; en &1300, &1400, &1500... etc... a la queue-leu-leu donc...
 ; "Visuellement" peut-etre mieux "localisee" ainsi faisant (?)
 ; Mais pas tip-top quand meme car on perdra du temps machine
 ; dans le cadre d'eventuels calculs dessus sur ces x16 adresses ecr (+&10/+1 pour tomber dessus...)
 ; sauf... si on la duplique autant de fois que de mouvements souhaites... 
 ; mais la on s'effondre vite en terme de place en ram...
 ; puisqu'on y inclus le sprite... et donc x mouvements = (x * taille table) en ram
 ; A moins qu'en plus du mouvement, le sprite "change d'aspect"...
 ; Trivial donc... Mais faut voir... 


table ; &1200
ligne1 dw &c00c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne2
ligne2 dw &c80c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne3
ligne3 dw &d00c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne4
ligne4 dw &d80c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne5
ligne5 dw &e00c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne6
ligne6 dw &e80c,&ffff,&ffff,&0000,&0000,&0000,&ffff,ligne7
ligne7 dw &f00c,&ffff,&ffff,&0000,&0000,&0000,&ffff,ligne8
ligne8 dw &f80c,&ffff,&ffff,&0000,&0000,&0000,&ffff,ligne9
ligne9 dw &c05c,&ffff,&ffff,&0000,&0000,&0000,&ffff,ligne10
ligne10 dw &c85c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne11
ligne11 dw &d05c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne12
ligne12 dw &d85c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne13
ligne13 dw &e05c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne14
ligne14 dw &e85c,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,ligne15
ligne15 dw &f05c,&ffff,&ffff,&0000,&0000,&0000,&ffff,ligne16
ligne16 dw &f85c,&ffff,&ffff,&0000,&0000,&0000,&ffff
;stack dw 0000 ; ancien choix de stockage de la pile, pas bon car perte de 3 nop...


align 256
table2 ; &1300
lign1b dw &c00c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign2b
lign2b dw &c80c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign3b
lign3b dw &d00c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign4b
lign4b dw &d80c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign5b
lign5b dw &e00c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign6b
lign6b dw &e80c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff,lign7b
lign7b dw &f00c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff,lign8b
lign8b dw &f80c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff,lign9b
lign9b dw &c05c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff,lign10b
lign10b dw &c85c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign11b
lign11b dw &d05c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign12b
lign12b dw &d85c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign13b
lign13b dw &e05c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign14b
lign14b dw &e85c+&f0,&ffff,&ffff,&ffff,&ffff,&ffff,&ffff,lign15b
lign15b dw &f05c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff,lign16b
lign16b dw &f85c+&f0,&ffff,&0000,&0000,&0000,&ffff,&ffff





Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Jeu 27 Juil - 23:54 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Efficace quand même, même si ça reste trivial pour déplacer un sprite, et là, tu perdras plus que tu gagneras.

Euh, au fait, pourquoi dis tu limite, tricheur ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Tronic


Hors ligne

Inscrit le: 20 Mai 2015
Messages: 9

MessagePosté le: Ven 28 Juil - 00:00 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Bah...
On pourrait penser que le fait que je vire très (trop ?) simplement de l'ancienne routine les sauvegardes/restaurations des registres secondaires (qui ne sont finalement pas utiles dans le calcul TM du rendu du sprite et qui pompent) revient à "limite tricher"...
Bref... Laisse tomber Smile


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Ven 28 Juil - 00:02 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Mouais, ça fonctionne ? C'est efficace ? c'est ce qu'on demande... mais plus de retour basic ^^

Ce serait bien d'expliquer ta routine, et surtout de préciser que le sprite est saisi à l'envers...
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Tronic


Hors ligne

Inscrit le: 20 Mai 2015
Messages: 9

MessagePosté le: Ven 28 Juil - 01:24 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Roulement de tambours... Wink

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Ven 28 Juil - 01:24 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

encore mieux avec 809us soit 12,6 rasterlines !!! C'est oas très difficile de poker les bonnes valeurs pour l'adresse mémoire !!!

Code:
         org &8000

;
; Test Sprites 12 bytes / 16 lignes
; ---- Ast/iMPact juillet 2017
; 809us
;
        di
        ld hl,#c9fb
        ld (#38),hl

; ---> from here


        ld (pile+1),sp ;6;
        ld sp,sprdata
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#c000+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
;
        ld sp,sprdata+12
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#c800+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
 
        ld sp,sprdata+ 24
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#d000+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 36
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#d800+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 48
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#e000+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 60
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#e800+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 72
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#f000+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 84
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#f800+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
;
        ld sp,sprdata+ 96
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#c050+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
;
        ld sp,sprdata+ 108
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#c850+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
;
        ld sp,sprdata+ 120
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#d050+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 132
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#d850+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 144
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#e050+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 156
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#e850+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 168
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#f050+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
        ld sp,sprdata+ 180
        pop bc:pop de:pop hl:exx:pop bc:pop de:pop hl
        ld sp,#f850+16
        push hl:push de:push bc:exx:push hl:push de:push bc ; 50 nops
;
pile    ld sp,0 ;3:


; to here <----
;
; 6+3+(50*16) =809
; 809/64=12,64 RasterLines
;
        ei
loop    jr loop
 
;
sprdata db 255,&ff,&ff,&aa,&aa,&aa,&aa,&aa,&aa,&ff,&ff,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&ff,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&ff,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&ff,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&ff,&ff,&ff,&ff,&ff,&fF,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&ff,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&ff,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,&aa,255
        db 255,&ff,&ff,&aa,&aa,&aa,&aa,&aa,&aa,&ff,&ff,255


_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 210
Localisation: LYON

MessagePosté le: Ven 28 Juil - 09:07 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Bah si tu pokes dans les data, autant faire des LD reg16,nn ça ira encore plus vite hein Smile
D'ailleurs, le sprite généré, c'est ça non?

LD HL,#1234 : PUSH HL : LD HL,#4567 : PUSH HL ...


Revenir en haut
cmp


Hors ligne

Inscrit le: 08 Sep 2014
Messages: 56
Localisation: nord

MessagePosté le: Ven 28 Juil - 09:26 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Tout à fait Roudoudou Smile




d'ailleurs un bon exemple en est la demo de megachur: Bob aime les Boules ^^ Smile
_________________
CMP from impact cpc


Revenir en haut
Skype
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 112

MessagePosté le: Ven 28 Juil - 09:38 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

roudoudou a écrit:
Bah si tu pokes dans les data, autant faire des LD reg16,nn ça ira encore plus vite hein Smile
D'ailleurs, le sprite généré, c'est ça non?

LD HL,#1234 : PUSH HL : LD HL,#4567 : PUSH HL ...





cmp a écrit:
Tout à fait Roudoudou Smile




d'ailleurs un bon exemple en est la demo de megachur: Bob aime les Boules ^^ Smile




Ast a écrit:

Quelqu'un a t'il quelquechose de plus rapide que Tronic ou moi sachant que :

1. La taille du sprite doit être de 12 octets par 16 lignes (contraintes fixées par Tronic sur sa dernière routine)
2. Les datas du sprite doivent être récupérés en mémoire
3. Facilité d'accès à la table des adresses écran pour pouvoir modifier Y à la volée.


_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 210
Localisation: LYON

MessagePosté le: Ven 28 Juil - 10:17 (2017)    Sujet du message: *****Les sprites soft sur Cpc Répondre en citant

Bah les datas sont récupérées en mémoire, dans le code Razz

T'as pas précisé que la routine devait être utilisable pour plusieurs sprites, je respecte la consigne, désolé


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 05:40 (2017)    Sujet du message: *****Les sprites soft sur Cpc

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Aller à la page: <  1, 2, 3  >
Page 2 sur 3

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com