hgr: more timing info

This commit is contained in:
Vince Weaver 2018-09-10 01:09:58 -04:00
parent d732fe8ed2
commit 1dbc60d0c1

View File

@ -28,21 +28,18 @@ LOWSCR = $C054
MIXCLR = $C052 MIXCLR = $C052
HISCR = $C055 HISCR = $C055
;==========================
; HGR2
;==========================
hgr2: hgr2:
; F3D8 ; F3D8
bit HISCR ; BIT SW.HISCR Use PAGE2 ($C055) bit HISCR ; BIT SW.HISCR Use PAGE2 ($C055)
bit MIXCLR ; BIT SW.MIXCLR bit MIXCLR ; BIT SW.MIXCLR
lda #$40 ; HIRES Page 2 at $4000 lda #$40 ; HIRES Page 2 at $4000
bne sethpg bne sethpg
;==========================
; HGR
;==========================
hgr: hgr:
; F3E2 ; F3E2
lda #$20 ; HIRES Page 1 at $2000 lda #$20 ; HIRES Page 1 at $2000
@ -79,7 +76,6 @@ bkgnd_loop:
rts rts
msktbl: .byte $81,$82,$84,$88,$90,$A0,$C0 ; original msktbl: .byte $81,$82,$84,$88,$90,$A0,$C0 ; original
;==================================================== ;====================================================
@ -223,6 +219,7 @@ done_mod:
;===================================== ;=====================================
; HPLOT0 ; HPLOT0
;=====================================
; point in (YX),A ; point in (YX),A
; 244 cycles ; 244 cycles
hplot0: hplot0:
@ -241,13 +238,14 @@ move_left_or_right:
; F465 ; F465
bpl move_right bpl move_right
lda HMASK lda HMASK ; 3
lsr lsr ; 2
bcs lr_2 bcs lr_2
eor #$c0 eor #$c0 ; 2
lr_1: lr_1:
sta HMASK sta HMASK ; 3
rts rts ; 6
lr_2: lr_2:
dey dey
bpl lr_3 bpl lr_3
@ -261,7 +259,8 @@ lr_4:
;=================================== ;===================================
; ; COLOR_SHIFT
;===================================
; positive = 7+(7)+6 = 20 ; positive = 7+(7)+6 = 20
; negative = 7+ 7 +6 = 20 ; negative = 7+ 7 +6 = 20
@ -281,6 +280,9 @@ done_color_shift:
nop ; 2 nop ; 2
rts ; 6 rts ; 6
;==============================================================
move_right: move_right:
lda HMASK lda HMASK
asl asl
@ -363,113 +365,137 @@ md_3:
ror GBASL ror GBASL
bcc ud_1 bcc ud_1
;===================================
; HGLIN
;===================================
; cycles = 22+
hglin: hglin:
; F53A ; F53A: calc quadrant
pha ; 3 pha ; 3
sec sec ; 2
sbc HGR_X sbc HGR_X ; 3
pha ; 3 pha ; 3
txa txa ; 2
sbc HGR_X+1 sbc HGR_X+1 ; 3
sta HGR_QUADRANT sta HGR_QUADRANT ; 3
;===========
; 22
; F544 ; F544
bcs hglin_1 bcs hglin_1
pla
eor #$ff pla ; 4
adc #1 eor #$ff ; 2
adc #1 ; 2
pha ; 3 pha ; 3
lda #0 lda #0 ; 2
sbc HGR_QUADRANT sbc HGR_QUADRANT ; 3
; F550 ; F550
hglin_1: hglin_1:
sta HGR_DX+1 sta HGR_DX+1 ; 3
sta HGR_E+1 sta HGR_E+1 ; 3
pla pla ; 4
sta HGR_DX sta HGR_DX ; 3
sta HGR_E sta HGR_E ; 3
pla pla ; 4
sta HGR_X sta HGR_X ; 3
stx HGR_X+1 stx HGR_X+1 ; 3
tya tya ; 2
clc clc ; 2
sbc HGR_Y sbc HGR_Y ; 3
bcc hglin_2 bcc hglin_2 ; 3
eor #$ff
adc #$fe eor #$ff ; 2
adc #$fe ; 2
hglin_2: hglin_2:
; F568 ; F568
sta HGR_DY sta HGR_DY ; 3
sty HGR_Y sty HGR_Y ; 3
ror HGR_QUADRANT ror HGR_QUADRANT
sec sec ; 2
sbc HGR_DX sbc HGR_DX ; 3
tax tax ; 2
lda #$ff lda #$ff ; 3
sbc HGR_DX+1 sbc HGR_DX+1 ; 3
sta HGR_COUNT sta HGR_COUNT ; 3
ldy HGR_HORIZ ldy HGR_HORIZ ; 3
bcs movex2 ; always? bcs movex2 ; always? ; 3
; f57c ; f57c
movex: movex:
asl asl ; 2
jsr move_left_or_right jsr move_left_or_right ; 6+?
sec sec ; 2
; f581 ; f581
movex2: movex2:
lda HGR_E lda HGR_E ; 3
adc HGR_DY adc HGR_DY ; 3
sta HGR_E sta HGR_E ; 3
lda HGR_E+1 lda HGR_E+1 ; 3
sbc #0 sbc #0 ; 2
movex2_1: movex2_1:
sta HGR_E+1 sta HGR_E+1 ; 3
lda (GBASL),y lda (GBASL),y
eor HGR_BITS eor HGR_BITS ; 3
and HMASK and HMASK ; 3
eor (GBASL),y eor (GBASL),y
sta (GBASL),y sta (GBASL),y
inx inx ; 2
bne movex2_2 bne movex2_2
inc HGR_COUNT inc HGR_COUNT
beq rts22 beq rts22
; F59e ; F59e
movex2_2: movex2_2:
lda HGR_QUADRANT lda HGR_QUADRANT ; 3
bcs movex bcs movex
jsr move_up_or_down
clc jsr move_up_or_down ; 6+
lda HGR_E clc ; 2
adc HGR_DX lda HGR_E ; 3
sta HGR_E adc HGR_DX ; 3
lda HGR_E+1 sta HGR_E ; 3
adc HGR_DX+1 lda HGR_E+1 ; 3
bvc movex2_1 adc HGR_DX+1 ; 3
bvc movex2_1 ; 3
;===============================
; HPLOT_TO
;===============================
;
; cycles = 10 + 6 + X + 6
hplot_to: hplot_to:
; F712 ; F712: put vars in right location
sty DSCTMP sty DSCTMP ; 3
tay tay ; 2
txa txa ; 2
ldx DSCTMP ldx DSCTMP ; 3
jsr hglin ;============
; 10
jsr hglin ;6+?
rts22: rts22:
rts rts ; 6
;=============================
; HCOLOR_EQUALS
;=============================
; Color in X ; Color in X
; 13 cycles
hcolor_equals: hcolor_equals:
; F6E9 ; F6E9
; TODO: mask to be less than 8 ; TODO: mask to be less than 8
lda colortbl,x lda colortbl,x ; 4+
sta HGR_COLOR sta HGR_COLOR ; 3
rts rts ; 6
colortbl: colortbl:
.byte $00,$2A,$55,$7F,$80,$AA,$D5,$FF .byte $00,$2A,$55,$7F,$80,$AA,$D5,$FF