Názor k článku Vykreslování spritů a animací na ZX Spectru od _dw - Jde to vlastne i rovnou pomoci DE draw_sprite: ...

  • Článek je starý, nové názory již nelze přidávat.
  • 26. 7. 2023 21:55

    _dw

    Jde to vlastne i rovnou pomoci DE

    draw_sprite:
            ld hl, SPRITE_ADR        ; 3:10
            ld  c, 3                 ; 2:7          výška spritu v řádcích
    draw_sprite_1:
            di                       ; 1:4
            ld (draw_sprite_e+1), sp ; 4:20
            ld sp, hl                ; 1:6          adresa, od níž začíná maska spritu
                                    ;[11:47]
    draw_sprite_2:
            ld  b, 8                 ; 2:7          počitadlo zapsaných řádků
    
    
    draw_sprite_3:
            pop hl                   ; 1:10         ; první sloupec
            ld  a, (de)              ; 1:7
            and h                    ; 1:4
            xor l                    ; 1:4
            ld (de), a               ; 1:7
    
            inc e                    ; 1:4
    
            pop hl                   ; 1:10         ; druhý sloupec
            ld  a, (de)              ; 1:7
            and h                    ; 1:4
            xor l                    ; 1:4
            ld (de), a               ; 1:7
    
            inc e                    ; 1:4
    
            pop hl                   ; 1:10         ; třetí sloupec
            ld  a, (de)              ; 1:7
            and h                    ; 1:4
            xor l                    ; 1:4
            ld (de), a               ; 1:7
    
            dec e                    ; 1:4
            dec e                    ; 1:4
            inc d                    ; 1:4          posun na definici dalšího obrazového řádku
            djnz draw_sprite_3       ; 2:13/8       vnitřní smyčka: blok s 3x osmi zápisy
                                    ;[22:1027=8*129-5]
    
    
            dec c                    ; 1:4
            jr  z, draw_sprite_e     ; 2:7/12
    
            ld  a, e                 ; 1:4
            add a, 0x20              ; 2:7
            ld  e, a                 ; 1:4
            jr  c, draw_sprite_2     ; 2:7/12
    
            ld  a, d                 ; 1:4
            sub 0x08                 ; 2:7
            ld  d, a                 ; 1:4
            jr  draw_sprite_2        ; 2:12
    
    draw_sprite_e:
            ld  sp, 0x0000           ; 3:10
            ei                       ; 1:4
            ret                      ; 1:10         návrat z podprogramu

    26. 7. 2023, 21:55 editováno autorem komentáře