git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

gbdk-lib/libc/targets/sm83/metasprites.s

      1         .include    "global.s"
      2 
      3         .title  "Metasprites"
      4         .module Metasprites
      5 
      6         .area   _DATA
      7 
      8 ___current_metasprite::
      9         .ds     0x02
     10 ___current_base_tile::
     11         .ds     0x01
     12 ___current_base_prop::
     13 	.ds     0x01
     14 
     15         .area   _INITIALIZED
     16 ___render_shadow_OAM::
     17         .ds     0x01
     18 
     19         .area   _INITIALIZER
     20         .db     #>_shadow_OAM
     21 
     22         .area   _CODE
     23 
     24 ; uint8_t __move_metasprite(uint8_t id, uint16_t yx)
     25 ; a: id
     26 ; de: yx
     27 
     28 ___move_metasprite::
     29         cp      #40
     30         jr      nc, .sprite_limit
     31 
     32         push    af
     33         add     a
     34         add     a
     35         ld      c, a
     36 
     37         ld      hl, #___current_metasprite
     38         ld      a, (hl+)
     39         ld      h, (hl)
     40         ld      l, a
     41 
     42         ld      a, (___render_shadow_OAM)
     43         ld      b, a
     44 1$:
     45         ld      a, (hl+)    ; dy
     46         cp      #0x80
     47         jr      z, 2$
     48         add     d
     49         ld      d, a
     50         ld      (bc), a
     51         inc     c
     52 
     53         ld      a, (hl+)    ; dx
     54         add     e
     55         ld      e, a
     56         ld      (bc), a
     57         inc     c
     58 
     59         ld      a, (___current_base_tile)
     60         add     (hl)        ; tile
     61         inc     hl
     62         ld      (bc), a
     63         inc     c
     64 
     65 		ld      a, (___current_base_prop)
     66         add     (hl)        ; props
     67         inc     hl
     68         ld      (bc), a
     69         inc     c
     70 
     71         ld      a, c
     72         cp      #160
     73         jr      c, 1$
     74 2$:
     75         ld      a, c
     76 		rrca
     77 		rrca
     78         pop     de
     79         sub     d
     80 
     81         ret
     82 .sprite_limit:
     83 		xor a
     84 		ret

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.