1/2/3 selectable viewports
This commit is contained in:
parent
e51aa91e4e
commit
100c0f3314
2 changed files with 49 additions and 18 deletions
65
mandel.s
65
mandel.s
|
@ -104,6 +104,9 @@ KEY_UP = $8e
|
||||||
KEY_DOWN = $8f
|
KEY_DOWN = $8f
|
||||||
KEY_LEFT = $86
|
KEY_LEFT = $86
|
||||||
KEY_RIGHT = $87
|
KEY_RIGHT = $87
|
||||||
|
KEY_1 = $1f
|
||||||
|
KEY_2 = $1e
|
||||||
|
KEY_3 = $1a
|
||||||
|
|
||||||
.struct float48
|
.struct float48
|
||||||
exponent .byte
|
exponent .byte
|
||||||
|
@ -250,14 +253,17 @@ fill_masks:
|
||||||
|
|
||||||
viewport_zoom:
|
viewport_zoom:
|
||||||
.byte 1
|
.byte 1
|
||||||
|
.byte 6
|
||||||
.byte 8
|
.byte 8
|
||||||
|
|
||||||
viewport_ox:
|
viewport_ox:
|
||||||
.word $0000
|
.word $0000
|
||||||
.word $f110
|
.word $f110
|
||||||
|
.word $f110
|
||||||
|
|
||||||
viewport_oy:
|
viewport_oy:
|
||||||
.word $0000
|
.word $0000
|
||||||
|
.word $fb60
|
||||||
.word $fbe0
|
.word $fbe0
|
||||||
|
|
||||||
; 2 + 9 * byte cycles
|
; 2 + 9 * byte cycles
|
||||||
|
@ -1206,7 +1212,13 @@ done:
|
||||||
beq left
|
beq left
|
||||||
cpy #KEY_RIGHT
|
cpy #KEY_RIGHT
|
||||||
beq right
|
beq right
|
||||||
|
cpy #KEY_1
|
||||||
|
beq one
|
||||||
|
cpy #KEY_2
|
||||||
|
beq two
|
||||||
|
cpy #KEY_3
|
||||||
|
beq three
|
||||||
|
|
||||||
skip_char:
|
skip_char:
|
||||||
lda #0
|
lda #0
|
||||||
rts
|
rts
|
||||||
|
@ -1234,6 +1246,19 @@ left:
|
||||||
jmp done
|
jmp done
|
||||||
right:
|
right:
|
||||||
add16 ox, ox, temp
|
add16 ox, ox, temp
|
||||||
|
jmp done
|
||||||
|
one:
|
||||||
|
ldx #0
|
||||||
|
jmp load_key_viewport
|
||||||
|
two:
|
||||||
|
ldx #1
|
||||||
|
jmp load_key_viewport
|
||||||
|
three:
|
||||||
|
ldx #2
|
||||||
|
; fall through
|
||||||
|
load_key_viewport:
|
||||||
|
jsr load_viewport
|
||||||
|
; fall through
|
||||||
done:
|
done:
|
||||||
lda #255
|
lda #255
|
||||||
rts
|
rts
|
||||||
|
@ -1271,13 +1296,10 @@ zero_byte_loop:
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
.proc start
|
; input: viewport selector in x
|
||||||
|
; clobbers: a, x
|
||||||
|
.proc load_viewport
|
||||||
|
|
||||||
jsr imul8xe_init
|
|
||||||
|
|
||||||
; initialize viewport
|
|
||||||
ldx #0 ; overview
|
|
||||||
;ldx #1 ; closeup
|
|
||||||
lda viewport_zoom,x
|
lda viewport_zoom,x
|
||||||
sta zoom
|
sta zoom
|
||||||
|
|
||||||
|
@ -1294,16 +1316,16 @@ zero_byte_loop:
|
||||||
lda viewport_oy,x
|
lda viewport_oy,x
|
||||||
sta oy + 1
|
sta oy + 1
|
||||||
|
|
||||||
; count_frames = 0; count_pixels = 0
|
rts
|
||||||
lda #0
|
.endproc
|
||||||
sta count_frames
|
|
||||||
sta count_pixels
|
|
||||||
|
|
||||||
; total_ms = 0.0; total_pixels = 0.0
|
.proc start
|
||||||
ldx #total_ms
|
|
||||||
jsr ZF1
|
jsr imul8xe_init
|
||||||
ldx #total_pixels
|
|
||||||
jsr ZF1
|
; initialize viewport
|
||||||
|
ldx #0 ; overview
|
||||||
|
jsr load_viewport
|
||||||
|
|
||||||
; Disable display DMA
|
; Disable display DMA
|
||||||
lda #0
|
lda #0
|
||||||
|
@ -1345,6 +1367,17 @@ copy_byte_loop:
|
||||||
jsr SETVBV
|
jsr SETVBV
|
||||||
|
|
||||||
main_loop:
|
main_loop:
|
||||||
|
; count_frames = 0; count_pixels = 0
|
||||||
|
lda #0
|
||||||
|
sta count_frames
|
||||||
|
sta count_pixels
|
||||||
|
|
||||||
|
; total_ms = 0.0; total_pixels = 0.0
|
||||||
|
ldx #total_ms
|
||||||
|
jsr ZF1
|
||||||
|
ldx #total_pixels
|
||||||
|
jsr ZF1
|
||||||
|
|
||||||
jsr clear_screen
|
jsr clear_screen
|
||||||
jsr status_bar
|
jsr status_bar
|
||||||
|
|
||||||
|
|
2
todo.md
2
todo.md
|
@ -1,7 +1,5 @@
|
||||||
things to try:
|
things to try:
|
||||||
|
|
||||||
* add some preset viewports that can be switched via number keys (1, 2, 3 etc)
|
|
||||||
|
|
||||||
* patch the entire expanded-ram imul8xe on top of imul8 to avoid the 3-cycle thunk penalty :D
|
* patch the entire expanded-ram imul8xe on top of imul8 to avoid the 3-cycle thunk penalty :D
|
||||||
|
|
||||||
* optimize out a store/load with mul8_add16 and mul8_add24
|
* optimize out a store/load with mul8_add16 and mul8_add24
|
||||||
|
|
Loading…
Reference in a new issue