aboutsummaryrefslogtreecommitdiff
path: root/include/print.s
diff options
context:
space:
mode:
Diffstat (limited to 'include/print.s')
-rw-r--r--include/print.s89
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