Integrated Mr. Sprite bank system

This commit is contained in:
blondie7575 2017-10-06 12:28:18 -07:00
parent 145b969d97
commit c19dee9634
8 changed files with 39 additions and 27 deletions

View File

@ -51,9 +51,9 @@
70F0869F1F413A89002446C3 /* player.s */,
700F21DF1F4A364600D7007D /* projectile.s */,
70A80FB01F43D7F200BD34C9 /* gamemanager.s */,
70E554C41F807ADB00F3C871 /* spritebank.s */,
70E9D8611F2BD95400555C19 /* gscats.s */,
70E9D8631F2BD95400555C19 /* Makefile */,
70E554C41F807ADB00F3C871 /* spritebank.s */,
7088096D1F2ECE8D00D4C950 /* GenerateRenderSpans.py */,
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */,
7099E3851F4107B100182A82 /* GenerateVRAMYOffset.py */,

View File

@ -16,6 +16,12 @@ beginGameplay:
lda #0
jsr setPalette
; Set up sprite rendering
BITS8
lda #3
sta spritebankBank00+3 ; Tell compiled sprites what bank they are in
BITS16
; Erase the screen
ldx #$0000
jsr colorFill

View File

@ -59,7 +59,7 @@ placeGameObjectOnTerrain:
; ptr = Pointer to gameobject data
; Trashes SCRATCHL
;
.macro RENDER_GAMEOBJECT ptr,compiledSprite
.macro RENDER_GAMEOBJECT ptr,spriteIndex
.scope
SAVE_AXY
@ -374,10 +374,10 @@ renderGameobjectBackground:
lda VRAMBANK+160*15+6,x
sta ptr+GO_BACKGROUND,y
; Draw sprite
; Call compiled sprite code
ply
lda #compiledSprite
jsr drawSprite
lda #spriteIndex
jsr DrawSpriteBank
renderGameobjectDone:
RESTORE_AXY

View File

@ -155,16 +155,6 @@ drawNumber:
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; drawSprite
;
; A = Sprite to render
; X = VRAM position to render at
;
;
drawSprite:
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Vertical blank checkers
;

Binary file not shown.

View File

@ -19,13 +19,15 @@ mainBank2:
sta TEXTCOLOR
BITS16
; Set up SCBs
; Set up video
jsr initSCBs
SHRVIDEO
SHADOWMEMORY
jmp beginGameplay
quitGame:
NORMALMEMORY
CLASSICVIDEO
jml (PRODOSRETURN)

View File

@ -69,16 +69,33 @@
.endmacro
.macro FASTGRAPHICS ;50 cycles, 12 bytes
sei ;2
phd ;4
.macro SHADOWMEMORY
sep #%00100000 ; 3 16-bit A only, to preserve X/Y
.a8
lda SHADOW ;5
sta SHADOWREGISTER ;4
lda #0 ;2
sta SHADOW ;5
rep #%00100000 ;3
.a16
.endmacro
.macro NORMALMEMORY
sep #%00100000 ; 3 16-bit A only, to preserve X/Y
.a8
lda SHADOWREGISTER ;4
sta SHADOW ;5
rep #%00100000 ;3
.a16
.endmacro
.macro FASTGRAPHICS ;34 cycles, 12 bytes
sei ;2
phd ;4
sep #%00100000 ; 3 16-bit A only, to preserve X/Y
.a8
lda STACKCTL ;5
sta STACKREGISTER ;4
@ -92,13 +109,10 @@
.endmacro
.macro SLOWGRAPHICS ;37 cycles, 12 bytes
.macro SLOWGRAPHICS ;28 cycles, 12 bytes
sep #%00100000 ; 3 16-bit A only, to preserve X/Y
.a8
lda SHADOWREGISTER ;4
sta SHADOW ;5
lda STACKREGISTER ;4
sta STACKCTL ;5

View File

@ -1,17 +1,17 @@
DrawSpriteBank:
ASL ; A=Sprite Number ($0000-$0002)
ASL ; A=Sprite Number ($0000-$0002)
TAX ; Y=Target Screen Address ($2000-$9D00)
LDA spritebankNum,X ; Relative Sprite Number Table
JMP (spritebankBank,X) ; Bank Number Table
spritebankNum:
.word $0000,$0200,$0100
.word $0000,$0002,$0001
spritebankBank:
.addr spritebankBank00,spritebankBank00,spritebankBank00
spritebankBank00:
JSL $AA0000
JSL $AA0000
PHK
PLB
RTS