Hi, for full-screen scrolling (in text mode) I'm implementing 4 routines in assembler. They're meant to scroll the whole text screen 1 position up, down, left or right.
For the C-64 this is fairly straightforward because the character screen matrix is simply avaiable as a block of memory that you can manipulate directly. But with the VERA this is not the case.
What would be the way to do it on the VERA? Is this best done via an intermediate line buffer of some sorts? For scrolling the screen up 1 line for instance, I think I will do something like this:
lda #%00010000
sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0.
lda #1
sta cx16.VERA_ADDR_M ; start at (0, 1)
- jsr _copy_line_to_buffer
; now copy the linebuffer back to the line above this one
dec cx16.VERA_ADDR_M
jsr _copy_buffer_to_line
; next line to copy
inc cx16.VERA_ADDR_M
inc cx16.VERA_ADDR_M
dec NUM_LINES_TO_SCROLL
bne -
That buffer is required because those copy subroutines make use of the VERA auto increment to first copy one single line of text into the buffer, and the second one copies the line of text in the buffer back to the VERA using the autoincrement.
Is this reasonable or is there a more optimal way to do it? I feel I am perhaps too focused on using that autoincrement mode
Hi, for full-screen scrolling (in text mode) I'm implementing 4 routines in assembler. They're meant to scroll the whole text screen 1 position up, down, left or right.
For the C-64 this is fairly straightforward because the character screen matrix is simply avaiable as a block of memory that you can manipulate directly. But with the VERA this is not the case.
What would be the way to do it on the VERA? Is this best done via an intermediate line buffer of some sorts? For scrolling the screen up 1 line for instance, I think I will do something like this:
That buffer is required because those copy subroutines make use of the VERA auto increment to first copy one single line of text into the buffer, and the second one copies the line of text in the buffer back to the VERA using the autoincrement.
Is this reasonable or is there a more optimal way to do it? I feel I am perhaps too focused on using that autoincrement mode
Edited by desertfishShare this post
Link to post
Share on other sites