Working parallel sprite demo
This commit is contained in:
parent
537e1e0544
commit
f031405e33
|
@ -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 */,
|
||||
|
|
BIN
hisprite.dsk
BIN
hisprite.dsk
Binary file not shown.
190
hisprite.s
190
hisprite.s
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
Loading…
Reference in New Issue