2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-02 05:51:20 +00:00
|
|
|
do_letters:
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
;=========================================
|
|
|
|
; SETUP
|
|
|
|
;=========================================
|
|
|
|
|
|
|
|
jsr HGR2 ; set/clear HGR page2 to black
|
|
|
|
; Hi-res graphics, no text at bottom
|
|
|
|
; Y=0, A=$60 after this call
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
;==============================
|
|
|
|
; print deater
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #28 ;
|
|
|
|
sta YPOS
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
lda #<desire_ends+1
|
2023-02-03 16:56:50 +00:00
|
|
|
sta type_smc+1
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #<deater_offsets
|
|
|
|
sta offsets_smc+1
|
|
|
|
|
|
|
|
jsr slide_in
|
|
|
|
|
|
|
|
|
|
|
|
;==============================
|
|
|
|
; print maze
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
lda #28
|
|
|
|
sta start_smc+1
|
|
|
|
|
|
|
|
lda #4
|
|
|
|
sta add_smc+1
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #128 ;
|
|
|
|
sta YPOS
|
|
|
|
|
|
|
|
lda #<ma2e_ends
|
|
|
|
sta type_smc+1
|
|
|
|
|
|
|
|
lda #<ma2e_offsets
|
|
|
|
sta offsets_smc+1
|
|
|
|
|
|
|
|
jsr slide_in
|
|
|
|
|
|
|
|
|
|
|
|
; FIXME: tail call
|
|
|
|
|
|
|
|
; jsr zoom_in
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; rts
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
;=========================
|
|
|
|
; zoom in
|
|
|
|
;=========================
|
|
|
|
|
|
|
|
zoom_in:
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #0
|
|
|
|
sta ROTATE
|
|
|
|
sta WHICH
|
|
|
|
|
2023-02-02 04:06:46 +00:00
|
|
|
outer_zoom_loop:
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda WHICH
|
|
|
|
tax ; update offset
|
|
|
|
|
|
|
|
lda desire_offsets,X ; get offsets in place
|
|
|
|
sta xdraw_offset_smc+1 ; setup xdraw
|
|
|
|
|
|
|
|
bpl not_done2 ; if not end, don't return
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
not_done2:
|
|
|
|
|
|
|
|
lda #36 ; start big
|
2023-02-02 04:06:46 +00:00
|
|
|
sta HGR_SCALE
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
lda desire_ends,X ; X Position
|
2023-02-02 04:06:46 +00:00
|
|
|
sta XPOS
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #76 ; Y position
|
2023-02-02 04:06:46 +00:00
|
|
|
sta YPOS
|
|
|
|
|
|
|
|
inner_zoom_loop:
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
jsr draw_wait_erase
|
2023-02-03 16:56:50 +00:00
|
|
|
|
|
|
|
dec HGR_SCALE ; zoom in
|
2023-02-02 04:06:46 +00:00
|
|
|
dec HGR_SCALE
|
|
|
|
|
|
|
|
lda HGR_SCALE
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
cmp #10 ; stop if big enough
|
2023-02-02 04:06:46 +00:00
|
|
|
bcs inner_zoom_loop
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
jsr xdraw ; leave it on screen
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
inc WHICH ; move to next letter
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
bpl outer_zoom_loop
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
draw_wait_erase:
|
|
|
|
jsr xdraw ; draw
|
|
|
|
|
|
|
|
lda #100 ; wait a bit
|
|
|
|
jsr WAIT
|
|
|
|
|
|
|
|
jmp xdraw ; draw for good
|
|
|
|
|
|
|
|
|
2023-02-02 04:06:46 +00:00
|
|
|
;=========================
|
|
|
|
; slide in
|
|
|
|
;=========================
|
|
|
|
|
|
|
|
slide_in:
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda #4
|
|
|
|
sta HGR_SCALE
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
sta WHICH
|
|
|
|
|
2023-02-02 04:06:46 +00:00
|
|
|
outer_slide_loop:
|
2023-02-03 17:56:49 +00:00
|
|
|
|
|
|
|
start_smc:
|
|
|
|
lda #252 ; start position
|
2023-02-03 16:56:50 +00:00
|
|
|
sta XPOS ; 255 instead of 279 for size reasons
|
|
|
|
|
|
|
|
lda WHICH
|
|
|
|
tax
|
|
|
|
type_smc:
|
2023-02-03 17:56:49 +00:00
|
|
|
lda desire_ends+1,X
|
2023-02-03 16:56:50 +00:00
|
|
|
sta ends_smc+1
|
|
|
|
|
|
|
|
offsets_smc:
|
|
|
|
lda deater_offsets,X ; point to next
|
|
|
|
sta xdraw_offset_smc+1
|
|
|
|
|
|
|
|
bpl not_done
|
|
|
|
|
|
|
|
rts
|
|
|
|
not_done:
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
slide_loop:
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
jsr draw_wait_erase
|
2023-02-03 16:56:50 +00:00
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
clc
|
|
|
|
lda XPOS
|
|
|
|
add_smc:
|
|
|
|
adc #$FC
|
|
|
|
sta XPOS
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
lsr
|
2023-02-02 04:06:46 +00:00
|
|
|
lsr
|
|
|
|
and #$f
|
|
|
|
tax
|
|
|
|
lda rotate_pattern,X
|
|
|
|
sta ROTATE
|
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
lda XPOS ; see if hit end
|
2023-02-02 04:06:46 +00:00
|
|
|
ends_smc:
|
|
|
|
cmp #65
|
2023-02-03 17:56:49 +00:00
|
|
|
bne slide_loop
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
jsr xdraw ; one last draw so remains onscreen
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 16:56:50 +00:00
|
|
|
inc WHICH ; move to next letter
|
2023-02-02 04:06:46 +00:00
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
bpl outer_slide_loop ; bra (WHICH always positive)
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;=======================
|
|
|
|
; xdraw
|
|
|
|
;=======================
|
|
|
|
|
|
|
|
xdraw:
|
2023-02-03 17:56:49 +00:00
|
|
|
ldy #0 ; guess we can't draw far right edge
|
2023-02-02 04:06:46 +00:00
|
|
|
ldx XPOS
|
|
|
|
lda YPOS
|
|
|
|
jsr HPOSN ; X= (y,x) Y=(a)
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
clc ; get shape table from offset
|
2023-02-02 04:06:46 +00:00
|
|
|
lda #<shape_table_d
|
|
|
|
xdraw_offset_smc:
|
|
|
|
adc #0
|
|
|
|
tax
|
2023-02-03 17:56:49 +00:00
|
|
|
ldy #>shape_table_d ; assume always in same page
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
lda ROTATE
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
jmp XDRAW0 ; tail call
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
.if 0
|
|
|
|
;=======================
|
|
|
|
; flip page
|
|
|
|
;=======================
|
|
|
|
|
|
|
|
flip_page:
|
|
|
|
lda HGR_PAGE
|
|
|
|
eor #$60
|
|
|
|
sta HGR_PAGE
|
|
|
|
|
|
|
|
clc
|
|
|
|
rol
|
|
|
|
rol
|
|
|
|
tax
|
|
|
|
lda PAGE1,X
|
|
|
|
|
|
|
|
rts
|
|
|
|
.endif
|
|
|
|
|
|
|
|
; ldy #3 ; 2
|
|
|
|
;init_loop:
|
|
|
|
; tya ; 1
|
|
|
|
; asl
|
|
|
|
; asl
|
|
|
|
; sta rotate_pattern,Y; 3
|
|
|
|
; dey ; 1
|
|
|
|
; bne init_loop ; 2
|
|
|
|
|
|
|
|
rotate_pattern:
|
2023-02-03 17:56:49 +00:00
|
|
|
; offset by 3 to give original effect
|
|
|
|
; .byte 0,3,6
|
|
|
|
.byte 9, 9,6,3,0, 0,$FD,$FA,$F7, $F7,$FA,$FD, 0
|
|
|
|
.byte 0,3,6
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
deater_offsets:
|
|
|
|
.byte 0 ; D
|
|
|
|
.byte 8 ; E
|
|
|
|
.byte 15 ; A
|
|
|
|
.byte 23 ; T
|
|
|
|
.byte 8 ; E
|
|
|
|
.byte 30 ; R
|
|
|
|
.byte $FF ; end
|
|
|
|
|
|
|
|
ma2e_offsets:
|
|
|
|
.byte 8 ; E
|
2023-02-03 17:56:49 +00:00
|
|
|
.byte 47 ; 2
|
|
|
|
.byte 15 ; A
|
|
|
|
.byte 39 ; M
|
2023-02-02 04:06:46 +00:00
|
|
|
.byte $FF ; end
|
|
|
|
|
|
|
|
|
|
|
|
desire_offsets:
|
2023-02-03 17:56:49 +00:00
|
|
|
.byte 67 ; -
|
2023-02-02 04:06:46 +00:00
|
|
|
.byte 0 ; D
|
|
|
|
.byte 8 ; E
|
|
|
|
.byte 54 ; S
|
|
|
|
.byte 61 ; I
|
|
|
|
.byte 30 ; R
|
|
|
|
.byte 8 ; E
|
2023-02-03 17:56:49 +00:00
|
|
|
.byte 67 ; -
|
2023-02-02 04:06:46 +00:00
|
|
|
.byte $FF ; end
|
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
desire_ends:
|
|
|
|
; center of screen is 140, offset by 16 each way
|
|
|
|
.byte 28,60,92,124,156,188,220,252
|
2023-02-03 16:56:50 +00:00
|
|
|
|
|
|
|
ma2e_ends:
|
2023-02-03 17:56:49 +00:00
|
|
|
.byte 188,156,124,92
|
2023-02-02 04:06:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
.align $100
|
|
|
|
shape_table:
|
|
|
|
|
|
|
|
shape_table_d: .byte $23,$2c,$2e,$36, $37,$27,$04,$00 ; 0
|
|
|
|
shape_table_e: .byte $27,$2c,$95,$12, $3f,$24,$00 ; 8
|
|
|
|
shape_table_a: .byte $23,$2c,$35,$96, $24,$3f,$36,$00 ; 15
|
|
|
|
shape_table_t: .byte $12,$24,$e4,$2b, $2d,$05,$00 ; 23
|
|
|
|
shape_table_r: .byte $97,$24,$24,$2d, $36,$37,$35,$06,$00 ; 30
|
|
|
|
shape_table_m: .byte $24,$37,$36,$4e, $24,$24,$07,$00 ; 39
|
|
|
|
shape_table_2: .byte $25,$3c,$97,$39, $36,$2d,$00 ; 47
|
|
|
|
shape_table_s: .byte $27,$2c,$95,$2b, $36,$3f,$00 ; 54
|
|
|
|
shape_table_i: .byte $d2,$ed,$24,$e4, $2d,$00 ; 61
|
2023-02-03 17:56:49 +00:00
|
|
|
shape_table_hline: .byte $2b,$05,$00 ; 67
|
2023-02-03 16:56:50 +00:00
|
|
|
|
2023-02-03 17:56:49 +00:00
|
|
|
;shape_table_vline: .byte $12,$24,$24,$00 ; 67
|
2023-02-03 16:56:50 +00:00
|
|
|
;shape_table_o: .byte $23,$2c,$35,$36, $3e,$27,$04,$00 ;
|
|
|
|
;shape_table_v: .byte $18,$30,$36,$35, $28,$24,$04,$00 ;
|
2023-02-02 04:06:46 +00:00
|
|
|
|