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_flip.s

      1         .include    "global.s"
      2 
      3         .title  "Metasprites"
      4         .module Metasprites
      5 
      6         .area   _DATA
      7 
      8         .globl ___current_metasprite, ___current_base_tile, ___current_base_prop, ___render_shadow_OAM
      9 
     10         .area   _CODE
     11 
     12 ; uint8_t __move_metasprite(uint8_t id, uint16_t yx)
     13 ; a: id
     14 ; de: yx
     15 
     16 ___move_metasprite_flipy::
     17 ___move_metasprite_hflip::
     18         cp      #40
     19         jr      c, 0$
     20         xor     a
     21         ret
     22 0$:
     23         push    af
     24         add     a
     25         add     a
     26         ld      c, a
     27 
     28         ld      hl, #___current_metasprite
     29         ld      a, (hl+)
     30         ld      h, (hl)
     31         ld      l, a
     32 
     33         ld      a, (___render_shadow_OAM)
     34         ld      b, a
     35 1$:
     36         ld      a, (hl+)
     37         cp      #0x80
     38         jr      z, 2$
     39         cpl
     40         inc     a
     41         add     d
     42         ld      d, a
     43         ld      (bc), a
     44         inc     c
     45 
     46         ld      a, (hl+)    ; dx
     47         add     e
     48         ld      e, a
     49         ld      (bc), a
     50         inc     c
     51 
     52         ld      a, (___current_base_tile)
     53         add     (hl)        ; tile
     54         inc     hl
     55         ld      (bc), a
     56         inc     c
     57 
     58 	ld      a, (___current_base_prop)
     59         add     (hl)        ; props
     60         inc     hl
     61         xor     #0x40
     62         ld      (bc), a
     63         inc     c
     64 
     65         ld      a, c
     66         cp      #160
     67         jr      c, 1$
     68 2$:
     69         ld      a, c
     70         srl     a
     71         srl     a
     72         pop     de
     73         sub     d
     74 
     75         ret
     76 
     77 ___move_metasprite_flipx::
     78 ___move_metasprite_vflip::
     79         cp      #40
     80         jr      c, 0$
     81         xor     a
     82         ret
     83 0$:
     84         push    af
     85         add     a
     86         add     a
     87         ld      c, a
     88 
     89         ld      hl, #___current_metasprite
     90         ld      a, (hl+)
     91         ld      h, (hl)
     92         ld      l, a
     93 
     94         ld      a, (___render_shadow_OAM)
     95         ld      b, a
     96 1$:
     97         ld      a, (hl+)    ; dy
     98         cp      #0x80
     99         jr      z, 2$
    100         add     d
    101         ld      d, a
    102         ld      (bc), a
    103         inc     c
    104 
    105         ld      a, (hl+)    ; dx
    106         cpl
    107         inc     a
    108         add     e
    109         ld      e, a
    110         ld      (bc), a
    111         inc     c
    112 
    113         ld      a, (___current_base_tile)
    114         add     (hl)        ; tile
    115         inc     hl
    116         ld      (bc), a
    117         inc     c
    118 
    119 	ld      a, (___current_base_prop)
    120         add     (hl)        ; props
    121         inc     hl
    122         xor     #0x20
    123         ld      (bc), a
    124         inc     c
    125 
    126         ld      a, c
    127         cp      #160
    128         jr      c, 1$
    129 2$:
    130         ld      a, c
    131         srl     a
    132         srl     a
    133         pop     de
    134         sub     d
    135 
    136         ret
    137 
    138 ___move_metasprite_flipxy::
    139 ___move_metasprite_hvflip::
    140         cp      #40
    141         jr      c, 0$
    142         xor     a
    143         ret
    144 0$:
    145         push    af
    146         add     a
    147         add     a
    148         ld      c, a
    149 
    150         ld      hl, #___current_metasprite
    151         ld      a, (hl+)
    152         ld      h, (hl)
    153         ld      l, a
    154 
    155         ld      a, (___render_shadow_OAM)
    156         ld      b, a
    157 1$:
    158         ld      a, (hl+)
    159         cp      #0x80
    160         jr      z, 2$
    161         cpl
    162         inc     a
    163         add     d
    164         ld      d, a
    165         ld      (bc), a
    166         inc     c
    167 
    168         ld      a, (hl+)    ; dx
    169         cpl
    170         inc     a
    171         add     e
    172         ld      e, a
    173         ld      (bc), a
    174         inc     c
    175 
    176         ld      a, (___current_base_tile)
    177         add     (hl)        ; tile
    178         inc     hl
    179         ld      (bc), a
    180         inc     c
    181 
    182 	ld      a, (___current_base_prop)
    183         add     (hl)        ; props
    184         inc     hl
    185         xor     #0x60
    186         ld      (bc), a
    187         inc     c
    188 
    189         ld      a, c
    190         cp      #160
    191         jr      c, 1$
    192 2$:
    193         ld      a, c
    194         srl     a
    195         srl     a
    196         pop     de
    197         sub     d
    198 
    199         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.