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.