Working parallel sprite demo

This commit is contained in:
Quinn Dunki 2017-04-02 19:54:51 -07:00
parent 537e1e0544
commit f031405e33
4 changed files with 225 additions and 88 deletions

View File

@ -7,6 +7,7 @@
objects = {
/* Begin PBXFileReference section */
7018A7A81E883A3A00C57515 /* spriteBuffers.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = spriteBuffers.s; sourceTree = "<group>"; };
701B5E0E1D84810000E6D330 /* macros.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = macros.s; sourceTree = "<group>"; };
701B5E0F1D84810000E6D330 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
701B5E101D84813500E6D330 /* hisprite.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = hisprite.s; sourceTree = "<group>"; };
@ -29,6 +30,7 @@
701B5E111D84817500E6D330 /* HiSprite.py */,
701B5E0E1D84810000E6D330 /* macros.s */,
701B5E101D84813500E6D330 /* hisprite.s */,
7018A7A81E883A3A00C57515 /* spriteBuffers.s */,
701B5E181D849F3800E6D330 /* graphics.s */,
701B5E121D8481C800E6D330 /* hgrtableX.s */,
701B5E171D84824400E6D330 /* hgrtableY.s */,

Binary file not shown.

View File

@ -27,8 +27,8 @@ PARAM2 = $08
PARAM3 = $09
SCRATCH0 = $19
SCRATCH1 = $1a
HIRES_PAGE_L = $1b
HIRES_PAGE_H = $1c
SPRITEPTR_L = $1b
SPRITEPTR_H = $1c
; Macros
.macro BLITBYTE xPos,yPos,addr
@ -75,60 +75,121 @@ main:
; sta PARAM1
; jsr BloadHires
lda #<HGRROWS_H1
sta HIRES_PAGE_L
lda #>HGRROWS_H1
sta HIRES_PAGE_H
ldx #0
;;;;
; stz PARAM0
; stz PARAM1
; jsr BOXW_MAG
;
; lda #10
; sta PARAM1
; jsr BOXW_MIX
;
; lda #20
; sta PARAM1
; jsr BOXW_ORG
;
; rts
;;;;
; Draw sprites
renderLoop:
lda #0
; Find our sprite pointer
lda spriteNum
asl
tax
lda META_BUFFERS+1,x
sta SPRITEPTR_H
lda META_BUFFERS,x
sta SPRITEPTR_L
; Find Y coordinate
ldy #1
lda (SPRITEPTR_L),y
sta PARAM1
loop:
txa
; Find X coordinate
ldy #0
lda (SPRITEPTR_L),y
sta PARAM0
lda #<bgBuffer
; Calculate sprite background buffer location
lda BG_BUFFERS,x
sta PARAM2
lda #>bgBuffer
lda BG_BUFFERS+1,x
sta PARAM3
jsr SaveBackground
jsr BOXW_MAG
; Next sprite
dec spriteNum
bmi restartList
jmp renderLoop
restartList:
lda #9
sta spriteNum
jsr delayShort
jsr delayShort
; Sync to VBL
@1: lda $C019
beq @1
bpl @1
@0: lda $C019
bmi @0
; Background restore
backgroundLoop:
; Find our sprite pointer
lda spriteNum
asl
tax
lda META_BUFFERS+1,x
sta SPRITEPTR_H
lda META_BUFFERS,x
sta SPRITEPTR_L
; Find Y coordinate
ldy #1
lda (SPRITEPTR_L),y
sta PARAM1
; Find X coordinate
ldy #0
lda (SPRITEPTR_L),y
sta PARAM0
; Calculate sprite background buffer location
lda BG_BUFFERS,x
sta PARAM2
lda BG_BUFFERS+1,x
sta PARAM3
jsr RestoreBackground
inx
cpx #133
bne loop
; Next sprite
dec spriteNum
bmi backgroundRestartList
jmp backgroundLoop
backgroundRestartList:
lda #9
sta spriteNum
movementLoop:
; Find our sprite pointer
lda spriteNum
asl
tax
lda META_BUFFERS+1,x
sta SPRITEPTR_H
lda META_BUFFERS,x
sta SPRITEPTR_L
; Adjust X coordinate
ldy #0
lda (SPRITEPTR_L),y
inc
inc
cmp #132
beq resetX
storeAndContinue:
sta (SPRITEPTR_L),y
dec spriteNum
bmi movementRestartList
jmp movementLoop
resetX:
lda #0
bra storeAndContinue
movementRestartList:
lda #9
sta spriteNum
jmp renderLoop
ldx #0
jmp loop
rts
@ -161,62 +222,15 @@ delayShortInner:
bgBuffer:
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
spriteNum:
.byte 9
bgFilename:
.byte "KOL",0
.include "graphics.s"
.include "hgrtableX.s"
.include "hgrtableY.s"
.include "spriteBuffers.s"
.include "spritegen0.s"
;.include "spritegen1.s"
;.include "spritegen2.s"

121
spriteBuffers.s Normal file
View File

@ -0,0 +1,121 @@
;
; spriteBuffers.s
;
; Created by Quinn Dunki on 7/19/16
; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved.
;
BG_BUFFERS:
.addr bgBuffer0
.addr bgBuffer1
.addr bgBuffer2
.addr bgBuffer3
.addr bgBuffer4
.addr bgBuffer5
.addr bgBuffer6
.addr bgBuffer7
.addr bgBuffer8
.addr bgBuffer9
META_BUFFERS:
.addr metaBuffer0
.addr metaBuffer1
.addr metaBuffer2
.addr metaBuffer3
.addr metaBuffer4
.addr metaBuffer5
.addr metaBuffer6
.addr metaBuffer7
.addr metaBuffer8
.addr metaBuffer9
metaBuffer0:
.byte 0 ; X pos
.byte 0 ; Y pos
metaBuffer1:
.byte 0 ; X pos
.byte 10 ; Y pos
metaBuffer2:
.byte 0 ; X pos
.byte 20 ; Y pos
metaBuffer3:
.byte 0 ; X pos
.byte 30 ; Y pos
metaBuffer4:
.byte 0 ; X pos
.byte 40 ; Y pos
metaBuffer5:
.byte 0 ; X pos
.byte 50 ; Y pos
metaBuffer6:
.byte 0 ; X pos
.byte 60 ; Y pos
metaBuffer7:
.byte 0 ; X pos
.byte 70 ; Y pos
metaBuffer8:
.byte 0 ; X pos
.byte 80 ; Y pos
metaBuffer9:
.byte 0 ; X pos
.byte 90 ; Y pos
bgBuffer0:
.repeat 48
.byte 0
.endrepeat
bgBuffer1:
.repeat 48
.byte 0
.endrepeat
bgBuffer2:
.repeat 48
.byte 0
.endrepeat
bgBuffer3:
.repeat 48
.byte 0
.endrepeat
bgBuffer4:
.repeat 48
.byte 0
.endrepeat
bgBuffer5:
.repeat 48
.byte 0
.endrepeat
bgBuffer6:
.repeat 48
.byte 0
.endrepeat
bgBuffer7:
.repeat 48
.byte 0
.endrepeat
bgBuffer8:
.repeat 48
.byte 0
.endrepeat
bgBuffer9:
.repeat 48
.byte 0
.endrepeat