mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-24 02:29:32 +00:00
Fixes to SHRLINELO. (SHRLINEHI still doesn't work)
This commit is contained in:
parent
e585fabd8b
commit
78245db5fc
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -422,14 +422,9 @@ SHRLINE LDA A2L ; y1
|
||||||
:X1 JSR SHRLINESWAP ; Swap parms
|
:X1 JSR SHRLINESWAP ; Swap parms
|
||||||
JMP SHRLINELO
|
JMP SHRLINELO
|
||||||
|
|
||||||
:YDOM SEP #$30 ; 8 bit M & X
|
:YDOM LDA SHRYPIXEL ; y0
|
||||||
MX %11 ; Tell Merlin
|
|
||||||
LDA SHRYPIXEL ; y0
|
|
||||||
CMP A2L ; y1
|
CMP A2L ; y1
|
||||||
BCS :Y1 ; y0 >= y1
|
BCS :Y1 ; y0 >= y1
|
||||||
REP #$30 ; 16 bit M & X
|
|
||||||
MX %00 ; Tell Merlin
|
|
||||||
|
|
||||||
JMP SHRLINEHI ; y0 < y1
|
JMP SHRLINEHI ; y0 < y1
|
||||||
:Y1 JSR SHRLINESWAP ; Swap parms
|
:Y1 JSR SHRLINESWAP ; Swap parms
|
||||||
JMP SHRLINEHI
|
JMP SHRLINEHI
|
||||||
|
@ -459,15 +454,10 @@ SHRLINELO LDA A1L ; x1
|
||||||
SEC
|
SEC
|
||||||
SBC SHRXPIXEL ; Subtract x0
|
SBC SHRXPIXEL ; Subtract x0
|
||||||
STA :DX
|
STA :DX
|
||||||
SEP #$30 ; 8 bit M & X
|
|
||||||
MX %11 ; Tell Merlin
|
|
||||||
LDA A2L ; y1
|
LDA A2L ; y1
|
||||||
SEC
|
SEC
|
||||||
SBC SHRYPIXEL ; Subtract y0
|
SBC SHRYPIXEL ; Subtract y0
|
||||||
STA :DY+0
|
STA :DY
|
||||||
STZ :DY+1
|
|
||||||
REP #$30 ; 16 bit M & X
|
|
||||||
MX %00 ; Tell Merlin
|
|
||||||
LDA #$0001
|
LDA #$0001
|
||||||
STA :YI ; yi = 1
|
STA :YI ; yi = 1
|
||||||
LDA :DY
|
LDA :DY
|
||||||
|
@ -532,13 +522,76 @@ SHRLINELO LDA A1L ; x1
|
||||||
|
|
||||||
* Plot y-dominant line (steep gradient)
|
* Plot y-dominant line (steep gradient)
|
||||||
* Called in 16 bit 65816 native mode. Returns in emulation mode.
|
* Called in 16 bit 65816 native mode. Returns in emulation mode.
|
||||||
SHRLINEHI
|
SHRLINEHI LDA A1L ; x1
|
||||||
* TODO: Write me!
|
SEC
|
||||||
|
SBC SHRXPIXEL ; Subtract x0
|
||||||
|
STA :DX
|
||||||
|
LDA A2L ; y1
|
||||||
|
STA :LIM+0 ; We re-use A1L/H later
|
||||||
|
SEC
|
||||||
|
SBC SHRYPIXEL ; Subtract y0
|
||||||
|
STA :DY
|
||||||
|
LDA #$0001
|
||||||
|
STA :XI ; xi = 1
|
||||||
|
LDA :DX
|
||||||
|
BPL :S1 ; Skip if dx = 0
|
||||||
|
EOR #$FFFF ; Negate dx
|
||||||
|
INC A
|
||||||
|
STA :DX ; dx = -dx
|
||||||
|
LDA #$FFFF
|
||||||
|
STA :XI ; xi = -1
|
||||||
|
:S1 LDA :DX ; dx
|
||||||
|
ASL ; 2 * dx
|
||||||
|
SEC
|
||||||
|
SBC :DY ; (2 * dx) - dy
|
||||||
|
STA :D ; D = (2 * dx) - dy
|
||||||
|
LDA SHRXPIXEL ; x0
|
||||||
|
STA A1L ; x = x0 (re-using A1L/H)
|
||||||
|
LDA :DX
|
||||||
|
SEC
|
||||||
|
SBC :DY
|
||||||
|
ASL
|
||||||
|
STA :DY ; DY now (2 * (dx - dy)
|
||||||
|
LDA :DX
|
||||||
|
ASL
|
||||||
|
STA :DX ; DX now (2 * dx)
|
||||||
|
LDX SHRYPIXEL ; y = y0
|
||||||
|
:L1 STX A2L ; Store y-coord for SHRPOINT
|
||||||
|
PHX
|
||||||
|
SEP #$30 ; 8 bit M & X
|
||||||
|
MX %11 ; Tell Merlin
|
||||||
|
JSR SHRPOINT ; x in A1L/H, y in A2L
|
||||||
|
REP #$30 ; 16 bit M & X
|
||||||
|
MX %00 ; Tell Merlin
|
||||||
|
PLX
|
||||||
|
LDA :D
|
||||||
|
BMI :S2 ; D < 0
|
||||||
|
CLC
|
||||||
|
ADC :DY
|
||||||
|
STA :D ; D = D + (2 * (dx - dy))
|
||||||
|
LDA A1L ; x
|
||||||
|
CLC
|
||||||
|
ADC :XI
|
||||||
|
STA A1L ; x = x + xi
|
||||||
|
BRA :S3
|
||||||
|
:S2 CLC
|
||||||
|
ADC :DX
|
||||||
|
STA :D ; D = D + 2 * dx
|
||||||
|
:S3 INX
|
||||||
|
CPX :LIM ; Compare with y1
|
||||||
|
BNE :L1
|
||||||
|
|
||||||
SEC ; 65816 emulation mode
|
SEC ; 65816 emulation mode
|
||||||
XCE
|
XCE
|
||||||
MX %11 ; Tell Merlin
|
MX %11 ; Tell Merlin
|
||||||
PLP ; Resume normal service
|
PLP ; Resume normal service
|
||||||
RTS
|
RTS
|
||||||
|
:DX DW $0000 ; dx initially, then (2 * dx)
|
||||||
|
:DY DW $0000 ; dy initially, then (2 * (dy - dx)))
|
||||||
|
:XI DW $0000 ; +1 or -1
|
||||||
|
:D DW $0000 ; D
|
||||||
|
:LIM DW $0000 ; x1 gets stashed here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Convert high-resolution screen coordinates
|
* Convert high-resolution screen coordinates
|
||||||
|
|
Loading…
Reference in New Issue
Block a user