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_native_data.s
1 .module SetNativeData
2
3 .include "global.s"
4
5 .area GBDKOVR (PAG, OVR)
6 _set_sprite_native_data_PARM_3::
7 _set_bkg_native_data_PARM_3:: .ds 2
8 .ppu_addr_lo: .ds 1
9 .ppu_addr_hi: .ds 1
10 src: .ds 2
11 tmpX: .ds 1
12
13 .area _HOME
14
15 _set_bkg_native_data::
16 sta *.ppu_addr_lo
17 lda *_set_bkg_data_PARM_3
18 sta *src
19 lda *_set_bkg_data_PARM_3+1
20 sta *src+1
21 lda *_shadow_PPUCTRL
22 and #PPUCTRL_BG_CHR
23 lsr
24 jmp .copy_tiles
25 _set_sprite_native_data::
26 sta *.ppu_addr_lo
27 lda *_set_sprite_data_PARM_3
28 sta *src
29 lda *_set_sprite_data_PARM_3+1
30 sta *src+1
31 lda *_shadow_PPUCTRL
32 and #PPUCTRL_SPR_CHR
33 .copy_tiles:
34 lsr
35 lsr
36 lsr
37 ; *= 16
38 asl *.ppu_addr_lo
39 rol
40 asl *.ppu_addr_lo
41 rol
42 asl *.ppu_addr_lo
43 rol
44 asl *.ppu_addr_lo
45 rol
46 bit *__oam_valid_display_on
47 bvc .copy_tiles_indirect
48 ; Direct write
49 sta PPUADDR
50 lda *.ppu_addr_lo
51 sta PPUADDR
52 .copy_tiles_loop:
53 ldy #0
54 1$:
55 lda [*src],y
56 sta PPUDATA
57 iny
58 cpy #16
59 bne 1$
60 ; src += 16
61 lda *src
62 clc
63 adc #16
64 sta *src
65 lda *src+1
66 adc #0
67 sta *src+1
68 dex
69 bne .copy_tiles_loop
70 rts
71
72 .copy_tiles_indirect:
73 sta *.ppu_addr_hi
74 .copy_tiles_indirect_loop:
75 stx *tmpX
76 ;
77 ldx *.ppu_addr_hi
78 lda *.ppu_addr_lo
79 jsr .ppu_stripe_begin_horizontal
80 ;
81 jsr .copy_tiles_indirect_2planes
82 jsr .ppu_stripe_end
83 ; src += 16
84 lda *src
85 clc
86 adc #16
87 sta *src
88 lda *src+1
89 adc #0
90 sta *src+1
91 ; tmp += 16
92 lda *.ppu_addr_lo
93 clc
94 adc #16
95 sta *.ppu_addr_lo
96 lda *.ppu_addr_hi
97 adc #0
98 sta *.ppu_addr_hi
99 ;
100 ldx *tmpX
101 dex
102 bne .copy_tiles_indirect_loop
103 rts
104
105 .copy_tiles_indirect_2planes:
106 lda *__vram_transfer_buffer_pos_w
107 clc
108 adc #16
109 sta *__vram_transfer_buffer_pos_w
110 tax
111 dex
112 ldy #15
113 1$:
114 lda [*src],y
115 sta __vram_transfer_buffer,x
116 dex
117 dey
118 bpl 1$
119 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.