updated from 8bitworkshop.com
This commit is contained in:
parent
98dc6f2e74
commit
27cf5eba4e
|
@ -3,28 +3,37 @@
|
|||
processor 6502
|
||||
|
||||
|
||||
kbd = $c000
|
||||
kbstrb = $c010
|
||||
speaker = $c030
|
||||
kbd equ $c000
|
||||
kbstrb equ $c010
|
||||
speaker equ $c030
|
||||
|
||||
graphics equ $c050
|
||||
text equ $c051
|
||||
fullpage equ $c052
|
||||
page1 equ $c054
|
||||
hires equ $c057
|
||||
|
||||
graphx = $c050
|
||||
text = $c051
|
||||
page1 = $c054
|
||||
hires = $c057
|
||||
|
||||
|
||||
org $803
|
||||
|
||||
|
||||
|
||||
jsr clear_hgr1
|
||||
|
||||
sta graphx
|
||||
sta text
|
||||
|
||||
sta hires
|
||||
sta fullpage
|
||||
sta graphics
|
||||
sta page1
|
||||
|
||||
|
||||
Start jmp Start
|
||||
Start
|
||||
jsr test_blitSHR_orig
|
||||
|
||||
|
||||
include "8bitunity-plot_scroll.asm"
|
||||
|
||||
end jmp end
|
||||
|
||||
|
||||
include "blitSHR_orig.asm"
|
||||
include "hires.asm"
|
||||
|
||||
org $2000
|
||||
incbin "marioluigi-apple2.hires.bin"
|
Binary file not shown.
|
@ -0,0 +1,159 @@
|
|||
|
||||
|
||||
hiresXZP equ $ec ; hires X offset (xcol)
|
||||
hiresYZP equ $ed ; hires Y offset (yrow)
|
||||
hiresAddrZP equ $fc ; 16 bit address of hires line (from LUT)
|
||||
inputAddrZP equ $fa ; 16 bit input address (bitmap to draw)
|
||||
outputAddrZP equ $ee ; 16 bit output address (buffer to save)
|
||||
scr2outRowsZP equ $ce ; number of rows (output) (height)
|
||||
inp2scrRowsZP equ $eb ; number of rows (input) (height)
|
||||
bytesPerRowZP equ $e3 ; bytes per row (width)
|
||||
toggleMainAuxZP equ $42 ; not used here
|
||||
|
||||
|
||||
;; blitSHR original code
|
||||
|
||||
blitSHR_orig subroutine
|
||||
|
||||
ldx #0
|
||||
; Copy Screen Address from Hires Tables (using Line Offset Y and Byte Offset X)
|
||||
.loopRow
|
||||
ldy hiresYZP ; Y-Offset to Hires Line (ytop)
|
||||
lda hiresLinesHI,y
|
||||
sta hiresAddrZP+1
|
||||
|
||||
lda hiresLinesLO,y
|
||||
adc hiresXZP ; X-Offset to Hires Byte (xcol)
|
||||
sta hiresAddrZP
|
||||
|
||||
; Copy bytes from SHR buffer to ouput
|
||||
.screen2output
|
||||
lda outputAddrZP+1
|
||||
beq .input2screen ; If high-byte is zero, then skip
|
||||
ldy #0 ; Y loop: Copy xxx bytes per row
|
||||
.loopCopy1 ; Copy 1 byte
|
||||
lda (hiresAddrZP),y
|
||||
sta (outputAddrZP),y
|
||||
iny
|
||||
cpy bytesPerRowZP
|
||||
bne .loopCopy1 ; Iterate Y loop
|
||||
|
||||
; Copy bytes from input to SHR buffer
|
||||
cpx inp2scrRowsZP ; Check number of input rows (for cropped sprites)
|
||||
bcs .incAddress1
|
||||
.input2screen
|
||||
clc
|
||||
lda inputAddrZP+1
|
||||
beq .incAddress1 ; If high-byte is zero, then skip
|
||||
ldy #0 ; Y loop: Copy xxx bytes per row
|
||||
.loopCopy2
|
||||
lda (inputAddrZP),y ; Copy 1 byte
|
||||
sta (hiresAddrZP),y
|
||||
iny
|
||||
cpy bytesPerRowZP ; Iterate Y loop
|
||||
bne .loopCopy2
|
||||
|
||||
.incAddress1
|
||||
clc ; Increment address of output block
|
||||
lda outputAddrZP
|
||||
adc bytesPerRowZP ; Move by xxx bytes
|
||||
sta outputAddrZP
|
||||
bcc .nocarry1 ; Check if carry to high-byte
|
||||
inc outputAddrZP+1
|
||||
.nocarry1
|
||||
|
||||
.incAddress2
|
||||
clc ; Increment address of input block
|
||||
lda inputAddrZP
|
||||
adc bytesPerRowZP ; Move by xxx bytes
|
||||
sta inputAddrZP
|
||||
bcc .nocarry2 ; Check if carry to high byte
|
||||
inc inputAddrZP+1
|
||||
.nocarry2
|
||||
|
||||
.nextRow
|
||||
; Move to next row
|
||||
inc hiresYZP ; Increment Hires Line offset
|
||||
inx
|
||||
cpx scr2outRowsZP
|
||||
bcc .loopRow ; Iterate X loop (rows)
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
test_blitSHR_orig subroutine
|
||||
|
||||
xcol equ $06
|
||||
yrow equ $07
|
||||
|
||||
lda #0
|
||||
sta xcol
|
||||
sta yrow
|
||||
|
||||
lda #3
|
||||
sta bytesPerRowZP ; width
|
||||
|
||||
lda #21 ; height
|
||||
sta inp2scrRowsZP
|
||||
sta scr2outRowsZP
|
||||
|
||||
|
||||
clc ; needed because not in routine !
|
||||
.loop_mario_x
|
||||
lda #<buffer
|
||||
sta outputAddrZP
|
||||
lda #>buffer
|
||||
sta outputAddrZP+1
|
||||
|
||||
lda #<mario
|
||||
sta inputAddrZP
|
||||
lda #>mario
|
||||
sta inputAddrZP+1
|
||||
|
||||
lda xcol
|
||||
sta hiresXZP
|
||||
lda yrow
|
||||
sta hiresYZP
|
||||
|
||||
|
||||
jsr blitSHR_orig
|
||||
|
||||
lda #<buffer
|
||||
sta inputAddrZP
|
||||
lda #>buffer
|
||||
sta inputAddrZP+1
|
||||
|
||||
lda #0
|
||||
sta outputAddrZP+1
|
||||
|
||||
lda xcol
|
||||
sta hiresXZP
|
||||
lda yrow
|
||||
sta hiresYZP
|
||||
|
||||
clc ; needed because not in routine !
|
||||
jsr blitSHR_orig
|
||||
|
||||
|
||||
ldx xcol
|
||||
inx
|
||||
stx xcol
|
||||
cpx #38
|
||||
bcc .loop_mario_x
|
||||
|
||||
ldx #0
|
||||
stx xcol
|
||||
ldx yrow
|
||||
inx
|
||||
stx yrow
|
||||
cpx #191-21
|
||||
bcc .loop_mario_x
|
||||
|
||||
.rts rts
|
||||
|
||||
|
||||
|
||||
|
||||
|
27
hires.asm
27
hires.asm
|
@ -103,5 +103,28 @@ hiresLinesLO
|
|||
hex D0D0D0D0D0D0D0D0
|
||||
|
||||
|
||||
|
||||
|
||||
mario ; 3x21
|
||||
hex 80A880
|
||||
hex 80AA80
|
||||
hex C0AA85
|
||||
hex A09D80
|
||||
hex E88D87
|
||||
hex E8FF9F
|
||||
hex A8FF80
|
||||
hex A8DF82
|
||||
hex 80FF81
|
||||
hex C09580
|
||||
hex A89681
|
||||
hex AA9683
|
||||
hex AB968B
|
||||
hex A3AA8B
|
||||
hex C7AAFB
|
||||
hex C7AAFD
|
||||
hex C0AA85
|
||||
hex D08285
|
||||
hex D08295
|
||||
hex A8808A
|
||||
hex AA80AA
|
||||
|
||||
buffer ; 3x21
|
||||
ds.b 63,00
|
Binary file not shown.
Loading…
Reference in New Issue