Page 1 of 1

[eZ80] conversion 16bpp vers 1bpp

Unread postPosted: 02 Apr 2016, 16:36
by grosged
Je me suis amusé à créer cette petite routine de conversion 16bpp vers 1bpp (pur monochrome style)

Code: Select all
16vers1bpp:
         ld a,$21             ; bascule en mode
         ld ($e30018),a     ; monochrome 1bpp
         ld hl,$e30200        ; on rectifie la mini-palette
         ld (hl),l                 ; pour avoir la couleur 0 en noire
         inc l                     ; et la couleur 1 en blanc
         ld de,$ffff00
         ld (hl),de
         ld hl,$d40000      ; début de la mémoire video
         ld de,$d40000
         ld bc,9600           ; en mode 1bpp , 9600 octets suffisent
Boucle:      push bc
         ld b,8                ; 8 pixels/octet
huitbits:   ld a,(hl)    ; la valeur 16bits
         inc hl                   ; est-elle nulle ?
         or (hl)                  ; si oui
         jr z,rien             ; alors on écrit un bit nul
         scf                     ; sinon, c'est un bit à 1
rien:      rr c              ; on place ça au fur et à mesure dans un octet
         inc hl                   ; donc...
         djnz huitbits            ; 8 tours à effectuer
         ld a,c                    ; puis l'on ré-écrit le résultat
         ld (de),a                ; dans la mémoire video
         inc de                   ; mais on se déplace 16x moins vite (153600/9600)
         pop bc
         dec bc
         ld a,b                    ; tant qu'on n'a pas bouclé 9600x
         or c
         jr nz,Boucle           ; on continue
        ret


Ne soyez pas surpris de voir quelques trainées d'octets apparaître : cela provient de la barre supérieure et sa jauge de batterie, je pense ;)
Si , par hasard vous venez d'essayer cette routine seule et vous voulez revenir en 16bpp : éteignez puis rallumez la TI ;)

Re: [eZ80] conversion 16bpp vers 1bpp

Unread postPosted: 02 Apr 2016, 16:44
by Adriweb
Hm, tu aurais un screenshot d'exemple avant/après ? :)

Re: [eZ80] conversion 16bpp vers 1bpp

Unread postPosted: 02 Apr 2016, 16:57
by grosged
Désolé, Adriweb : je n'arrive pas à faire un screenshot d'un mode 1bpp depuis TILP :(
C'est une conversion "brut de décoffrage" (si c'est noir, on laisse noir , sinon on met du blanc...héhé)

Re: [eZ80] conversion 16bpp vers 1bpp

Unread postPosted: 02 Apr 2016, 17:07
by Adriweb
Hm, et sur CEmu peut-être que ca fonctionne ? (m'en rappelle plus si le 1bpp est implémenté)