dos33fsprogs/vaporlock/doubledouble/setup_graphics.s

202 lines
2.9 KiB
ArmAsm

;================================
; Clear screen and setup graphics
;================================
jsr SETGR ; set lo-res 40x40 mode
bit LORES
sta FULLGR
;====================================================
; setup text page2 screen of "Apple II Forever" text
;====================================================
; there are much better ways to accomplish this
sta SETMOUSETEXT
ldy #0
ldx #0
sty XX
a24e_newy:
lda gr_offsets_l,Y
sta stringing_smc+1
lda gr_offsets_h,Y
clc
adc #4
sta stringing_smc+2
a24e_loop:
lda a2_string,X
bne keep_stringing
ldx #0
lda a2_string,X
keep_stringing:
inx
eor #$80
stringing_smc:
sta $d000
inc stringing_smc+1
inc XX
lda XX
cmp #40
bne a24e_loop
lda #0
sta XX
iny
cpy #24
bne a24e_newy
stringing_done:
; set 80-store mode
sta EIGHTYSTOREON ; PAGE2 selects AUX memory
;=========================================================
; load double lo-res image to $C00 and copy to MAIN:PAGE1
;=========================================================
bit PAGE1
lda #<image_dgr_main
sta ZX0_src
lda #>image_dgr_main
sta ZX0_src+1
lda #$0c
jsr full_decomp
jsr copy_to_400
;=========================================================
; load double lo-res image to $C00 and copy to AUX:PAGE1
;=========================================================
bit PAGE2 ; map in AUX (80store)
lda #<image_dgr_aux
sta ZX0_src
lda #>image_dgr_aux
sta ZX0_src+1
lda #$0c
jsr full_decomp
jsr copy_to_400
;=======================================
; load double hi-res image to MAIN:PAGE1
;=======================================
bit HIRES ; need to do this for 80store to work
bit PAGE1
lda #<image_dhgr_bin
sta ZX0_src
lda #>image_dhgr_bin
sta ZX0_src+1
lda #$20
jsr full_decomp
;=======================================
; load double hi-res image to AUX:PAGE1
;=======================================
bit PAGE2 ; map in AUX (80store)
lda #<image_dhgr_aux
sta ZX0_src
lda #>image_dhgr_aux
sta ZX0_src+1
lda #$20
jsr full_decomp
;=================================
; load hi-res image to MAIN:PAGE2
;=================================
; turn off eightystore
sta EIGHTYSTOREOFF
lda #<image_hgr
sta ZX0_src
lda #>image_hgr
sta ZX0_src+1
lda #$40
jsr full_decomp
;========================================
; Put message in 80-column top of screen
;========================================
ldx #40
eloop:
lda #' '+$80
sta $800,X ; line 0
; sta $880,X ; line 1
; sta $900,X ; line 2
dex
bpl eloop
ldx #0
floop:
lda top_string_main,X
beq done_floop
ora #$80
sta $800,X
inx
bne floop
done_floop:
; turn on write to AUX
sta WRAUXRAM
ldx #40
eloop2:
lda #' '+$80
sta $800,X ; line 0
sta $880,X ; line 1
sta $900,X ; line 2
dex
bpl eloop2
ldx #0
floop2:
lda top_string_aux,X
beq done_floop2
ora #$80
sta $800,X
inx
bne floop2
done_floop2:
; turn on write to MAIN
sta WRMAINRAM