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/mos6502/nes/set_1bit_data.s

      1     .include "global.s"
      2 
      3     .globl __current_1bpp_colors
      4 
      5     .area	GBDKOVR (PAG, OVR)
      6     _set_bkg_1bpp_data_PARM_3::
      7     _set_win_1bpp_data_PARM_3:: .ds 2
      8     src:                        .ds 2
      9     num_tiles:                  .ds 1
     10     num_planes:                 .ds 1
     11     fg_bit:                     .ds 1
     12     bg_bit:                     .ds 1
     13     fg_bit_p0:                  .ds 1
     14     bg_bit_p0:                  .ds 1
     15     fg_bit_p1:                  .ds 1
     16     bg_bit_p1:                  .ds 1
     17     bits:                       .ds 1
     18     ppuaddr:                    .ds 2
     19 
     20     .area   _HOME
     21 
     22 _set_bkg_1bpp_data::
     23 _set_win_1bpp_data::
     24     stx *num_tiles
     25     ;
     26     sta *src
     27     lda #0
     28     asl *src
     29     rol
     30     asl *src
     31     rol
     32     asl *src
     33     rol
     34     asl *src
     35     rol
     36     sta *src+1
     37     ;
     38     lda *_shadow_PPUCTRL
     39     and #PPUCTRL_BG_CHR
     40     ora *src+1
     41     sta *ppuaddr+1
     42     lda *src
     43     sta *ppuaddr
     44     ;
     45     lda *_set_bkg_1bpp_data_PARM_3
     46     sta *src
     47     lda *_set_bkg_1bpp_data_PARM_3+1
     48     sta *src+1
     49     ; .fg_color[0] -> fg_bit_p0[7]
     50     ; .fg_color[1] -> fg_bit_p1[7]
     51     lda .fg_colour
     52     lsr
     53     ror *fg_bit_p0
     54     lsr
     55     ror *fg_bit_p1
     56     ; .bg_color[0] -> bg_bit_p0[7]
     57     ; .bg_color[1] -> bg_bit_p1[7]
     58     lda .bg_colour
     59     lsr
     60     ror *bg_bit_p0
     61     lsr
     62     ror *bg_bit_p1
     63     ;
     64 _set_bkg_1bpp_data_tile_loop:
     65     lda #2
     66     sta *num_planes
     67     lda *fg_bit_p0
     68     sta *fg_bit
     69     lda *bg_bit_p0
     70     sta *bg_bit
     71 _set_bkg_1bpp_data_plane_loop:
     72     ldy #0
     73 _set_bkg_1bpp_data_byte_loop:
     74     lda [*src],y
     75     ldx #8
     76 _set_bkg_1bpp_data_bit_loop:
     77     asl
     78     bcs _set_bkg_1bpp_data_fg
     79     bit *bg_bit
     80     bpl _set_bkg_1bpp_data_bit_loop_skip
     81     sec
     82     jmp _set_bkg_1bpp_data_bit_loop_skip
     83 _set_bkg_1bpp_data_fg:
     84     bit *fg_bit
     85     bmi _set_bkg_1bpp_data_bit_loop_skip
     86     clc
     87 _set_bkg_1bpp_data_bit_loop_skip:
     88     rol *bits
     89     dex
     90     bne _set_bkg_1bpp_data_bit_loop
     91     lda *bits
     92     ;
     93     sty *REGTEMP+4
     94     sta *_set_vram_byte_PARM_2
     95     lda *ppuaddr
     96     ldx *ppuaddr+1
     97     jsr _set_vram_byte
     98     inc *ppuaddr
     99     bne 1$
    100     inc *ppuaddr+1
    101 1$:
    102     ldy *REGTEMP+4
    103     ;
    104     iny
    105     cpy #8
    106     bne _set_bkg_1bpp_data_byte_loop
    107     ;
    108     lda *fg_bit_p1
    109     sta *fg_bit
    110     lda *bg_bit_p1
    111     sta *bg_bit
    112     dec *num_planes
    113     bne _set_bkg_1bpp_data_plane_loop
    114     ; src += 8
    115     lda *src
    116     clc
    117     adc #8
    118     sta *src
    119     lda *src+1
    120     adc #0
    121     sta *src+1
    122     dec *num_tiles
    123     bne _set_bkg_1bpp_data_tile_loop
    124     rts

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