Page 1 of 1

[ASM83P] Zoom graphique & synchro (fluidité)

PostPosted: 23 Dec 2015, 11:17
by grosged
Pour me remettre dans le bain!, je viens d'écrire un programme ASM qui fait un zoom graphique (x2)
Oh Il est surement optimisable (je pense notamment aux rr (hl) sra (hl) qui prendraient moins de temps si l'on optait pour un registre au lieu du travail dans (hl) ) ,mais rien que le fait de lancer un 1er programme qui marche, je suis content! :D

GFXZOOM.ASM (assemblé et compilé avec SPASM)
Code: Select all
.nolist
#include    "ti83plus.inc"
.list
.org userMem-2
.db t2ByteTok,tAsmCmp

    ld a,32
    ld hl,plotSScreen+195
    ld de,plotSScreen
    ld b,0
boucle:
    ld c,6
    ldir
    ld c,6
    add hl,bc
    dec a
    or a             ;                     après relecture, je remarque qu'i l n'est pas nécessaire !
    jr nz,boucle
    ld bc,plotSScreen+191
    ld hl,plotSScreen+767
    ld de,plotSScreen+755
    ld a,32
dep:
    push af
    ld a,6
cont:
    push af
    ld a,(bc)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    ldd
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    inc bc
    ldd
    pop af
    dec a
    jr nz,cont
    push bc
    ld bc,-24
    add hl,bc
    ex de,hl
    pop bc
    pop af
    dec a
    jr nz,dep
    bcall(_GrBufCpy)
    ret

archives_voir.php?id=393640 (ASM compilé)

Par contre, j'aimerais savoir comment on pourrait rendre le résultat plus fluide si, par exemple, je veux faire boucler.
Y-a-t-il un moyen de synchroniser avec l'affichage LCD ? Si oui, comment ? En lisant un port ? (c'était comme ça avec l'Amstrad CPC)

Re: [ASM83P] Zoom graphique & synchro (fluidité)

PostPosted: 23 Dec 2015, 16:29
by Ti64CLi++
Déjà tu peux remplacer par ce code:
Code: Select all
.nolist
#include    "ti83plus.inc"
.list
.org userMem-2
.db t2ByteTok,tAsmCmp

    ld a,32
    ld hl,plotSScreen+195
    ld de,plotSScreen
    ld b,0
boucle:
    ld c,6
    ldir
    add hl,bc
    dec a
    jr nz,boucle
    ld bc,plotSScreen+191
    ld hl,plotSScreen+767
    ld de,plotSScreen+755
    ld a,32
dep:
    push af
    ld a,6
cont:
    push af
    ld a,(bc)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    ldd
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    rra
    rr (hl)
    sra (hl)
    inc bc
    ldd
    pop af
    dec a
    jr nz,cont
    push bc
    ld bc,-24
    add hl,bc
    ex de,hl
    pop bc
    pop af
    dec a
    jr nz,dep
    bcall(_GrBufCpy)
    ret

Après, je ne suis pas très bon en ASM

Re: [ASM83P] Zoom graphique & synchro (fluidité)

PostPosted: 23 Dec 2015, 17:00
by grosged
Oui, le "or a" en ligne 17 était futile
Par contre, on ne peut pas se passer de remettre la valeur 6 dans le registre C (ligne 14)
car après un ldir, le registre bc est à zéro.

Re: [ASM83P] Zoom graphique & synchro (fluidité)

PostPosted: 23 Dec 2015, 17:04
by Ti64CLi++
Ah, oui, c'est vrai.
Je l'ai su mais je l'ai oublié :D