27Fermer29
chickendudeLe 16/06/2011 à 20:01
DRWSPR:

        push    hl              ; Save sprite address

;ÛÛÛÛ   Calculate the address in graphbuf   ÛÛÛÛ
        ld      hl,0            ; Do y*12
        ld      d,l
        add     hl,de
        add     hl,de
        add     hl,de
        add     hl,hl
        add     hl,hl
        rra
        rra
        rra
        ld e,a
        add     hl,de

        ld      de,gbuf
        add     hl,de           ; Add address to graphbuf
ALIGN:                          ; Blit an aligned sprite to graphbuf
        pop     de              ; de->sprite
        ld      b,8
ALOP1:  ld      a,(de)
        or      (hl)            ; xor=erase/blit
        ld      (hl),a
        inc     de
        push    bc
        ld      bc,12
        add     hl,bc
        pop     bc
        djnz    ALOP1

DONE1:
        ret




;ÜÛÛÛÛÛÛÛÛÛÛÛÛß CLRSPR ßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ Clear 8x8 sprite þ a=x, e=y, hl=sprite address                             ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CLRSPR:
        push    hl              ; Save sprite address

;ÛÛÛÛ   Calculate the address in graphbuf   ÛÛÛÛ
        ld      hl,0            ; Do y*12
        ld      d,l
        add     hl,de
        add     hl,de
        add     hl,de
        add     hl,hl
        add     hl,hl
		rra					; tous les sprites sont deja alignes
		rra					; x/8
		rra
        ld      e,a			; d=0
        add     hl,de

        ld      de,gbuf
        add     hl,de           ; Add address to graphbuf

ALIGN2:                         ; Erase an aligned sprite in graphbuf
        pop     de              ; de->sprite
        ld      b,8
ALOP2:  ld      a,(de)
        cpl
        and     (hl)
        ld      (hl),a
        inc     de
        push    bc
        ld      bc,12
        add     hl,bc
        pop     bc
        djnz    ALOP2

DONE5:
        ret
Chaque fois que tu affiches un sprite il est toujours aligné, pour ça tu peux effacer la partie qui s'agit des sprites non-alignés. (J'ai changé ton addresse pour gbuf pour être plus facile de compiler entre le 83/+).tromb Fichier joint : oilcap.zip

N'hésite pas à me demander si tu as des questions. Je ne me souviens pas de tout ce que j'ai fait, mais pour le moment jette un coup d'oeuil à:
move/select_scan_key
map_load
les algos pour afficher des sprites
le timer

Il faut aussi faire quelque chose pour que le timer n'aille pas si lentement quand on déplace le pointeur, mais je ne sais pas quoi.

Ah, et une dernière chose: tu peux utiliser saferam pour garder vos matrices et ainsi gagner de l'espace.