diff options
| author | Miquel Sabaté Solà <msabate@suse.com> | 2023-12-05 15:37:35 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <msabate@suse.com> | 2023-12-08 12:41:31 +0100 |
| commit | 57fde0bb5184371da33b212de6731c6e6829349f (patch) | |
| tree | 916bf9ebfa6334b75ee91594b870de6ad1a0e9ec /include | |
| parent | c0d6966592a0aaeda220fff1171f057ef14a7ea6 (diff) | |
| download | aoc2023.nes-57fde0bb5184371da33b212de6731c6e6829349f.tar.gz aoc2023.nes-57fde0bb5184371da33b212de6731c6e6829349f.zip | |
Implemented both parts of the second day
Signed-off-by: Miquel Sabaté Solà <msabate@suse.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/print.s | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/include/print.s b/include/print.s new file mode 100644 index 0000000..7a0ac23 --- /dev/null +++ b/include/print.s @@ -0,0 +1,89 @@ +.scope Print + ;; Print a "Please wait..." message to the screen. This message will be centered + ;; horizontally and slightly at the top of the screen. This function assumes + ;; that alphanumerical tiles are located in a similar fashion as for the + ;; `assets/alphanum.chr` file. + .proc show_wait_message + WRITE_PPU_DATA $2129, $2A + WRITE_PPU_DATA $212A, $26 + WRITE_PPU_DATA $212B, $1F + WRITE_PPU_DATA $212C, $1B + WRITE_PPU_DATA $212D, $2D + WRITE_PPU_DATA $212E, $1F + + WRITE_PPU_DATA $2130, $31 + WRITE_PPU_DATA $2131, $1B + WRITE_PPU_DATA $2132, $23 + WRITE_PPU_DATA $2133, $2E + WRITE_PPU_DATA $2134, $36 + WRITE_PPU_DATA $2135, $36 + WRITE_PPU_DATA $2136, $36 + + rts + .endproc + + ;; TODO + .proc show_bcd_16_number + ;; Clear tiles that were written by `show_wait_message` and that are not re-used + ;; here. + WRITE_PPU_DATA $2129, $00 + WRITE_PPU_DATA $212A, $00 + WRITE_PPU_DATA $212B, $00 + WRITE_PPU_DATA $212C, $00 + WRITE_PPU_DATA $212D, $00 + WRITE_PPU_DATA $2133, $00 + WRITE_PPU_DATA $2134, $00 + WRITE_PPU_DATA $2135, $00 + WRITE_PPU_DATA $2136, $00 + + ;; And loop so PPU::ADDRESS $2E21-$2E32 has the data as stored on bcdResult, + ;; which is the binary to decimal conversion result when the final + ;; computation was done. + ldx #4 + ldy #$2E + @loop: + ;; PPU address. + bit PPU::STATUS + lda #$21 + sta PPU::ADDRESS + sty PPU::ADDRESS + + ;; PPU data. + lda bcdResult, x + clc + adc #$10 + sta PPU::DATA + dex + iny + cpy #$33 + bne @loop + + rts + .endproc + + ;; Copies basic palettes into the proper PPU address. + .proc load_basic_palettes + PPU_ADDR $3F00 + + ldx #0 + @load_palettes_loop: + lda palettes, x + sta PPU::DATA + inx + cpx #$20 + bne @load_palettes_loop + rts + palettes: + ;; Background (only first one used) + .byte $0F, $30, $10, $00 + .byte $0F, $00, $00, $00 + .byte $0F, $00, $00, $00 + .byte $0F, $00, $00, $00 + + ;; Foreground (unused) + .byte $0F, $00, $00, $00 + .byte $0F, $00, $00, $00 + .byte $0F, $00, $00, $00 + .byte $0F, $00, $00, $00 + .endproc +.endscope |
