mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-06-10 23:29:30 +00:00
Start coding support for the spider. Also, try to show the performance of the main game loop in the border colour.
This commit is contained in:
parent
ada774960b
commit
4f74d630b9
|
@ -86,6 +86,7 @@
|
||||||
9DB1505024C3801100558B87 /* gameFlea.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameFlea.s; sourceTree = "<group>"; };
|
9DB1505024C3801100558B87 /* gameFlea.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameFlea.s; sourceTree = "<group>"; };
|
||||||
9DB1505124C6875C00558B87 /* gameScorpion.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameScorpion.s; sourceTree = "<group>"; };
|
9DB1505124C6875C00558B87 /* gameScorpion.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameScorpion.s; sourceTree = "<group>"; };
|
||||||
9DB1505224C7495400558B87 /* globals.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = globals.s; sourceTree = "<group>"; };
|
9DB1505224C7495400558B87 /* globals.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = globals.s; sourceTree = "<group>"; };
|
||||||
|
9DB1505324C9E54C00558B87 /* gameSpider.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameSpider.s; sourceTree = "<group>"; };
|
||||||
9DC4D7BD24B7652100BACF4B /* ship.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ship.s; sourceTree = "<group>"; };
|
9DC4D7BD24B7652100BACF4B /* ship.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = ship.s; sourceTree = "<group>"; };
|
||||||
9DC4D7BE24B80C9600BACF4B /* shot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = shot.s; sourceTree = "<group>"; };
|
9DC4D7BE24B80C9600BACF4B /* shot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = shot.s; sourceTree = "<group>"; };
|
||||||
9DC4D7BF24BE9F7100BACF4B /* tiles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tiles.h; sourceTree = "<group>"; };
|
9DC4D7BF24BE9F7100BACF4B /* tiles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tiles.h; sourceTree = "<group>"; };
|
||||||
|
@ -134,6 +135,7 @@
|
||||||
9D8FFC612491CAF0005C9327 /* game.h */,
|
9D8FFC612491CAF0005C9327 /* game.h */,
|
||||||
9DB1505024C3801100558B87 /* gameFlea.s */,
|
9DB1505024C3801100558B87 /* gameFlea.s */,
|
||||||
9DB1505124C6875C00558B87 /* gameScorpion.s */,
|
9DB1505124C6875C00558B87 /* gameScorpion.s */,
|
||||||
|
9DB1505324C9E54C00558B87 /* gameSpider.s */,
|
||||||
9D62AF3B249871A300348F45 /* colour.s */,
|
9D62AF3B249871A300348F45 /* colour.s */,
|
||||||
9D2FF6DA24C4C79A000181E5 /* random.s */,
|
9D2FF6DA24C4C79A000181E5 /* random.s */,
|
||||||
9DB1505224C7495400558B87 /* globals.s */,
|
9DB1505224C7495400558B87 /* globals.s */,
|
||||||
|
|
34
BuGS/game.s
34
BuGS/game.s
|
@ -32,10 +32,12 @@ game start
|
||||||
gameLoop anop
|
gameLoop anop
|
||||||
jsl drawDirtyGameTiles
|
jsl drawDirtyGameTiles
|
||||||
jsl drawScorpion
|
jsl drawScorpion
|
||||||
|
jsl drawSpider
|
||||||
jsl drawFlea
|
jsl drawFlea
|
||||||
jsl drawDirtyNonGameTiles
|
jsl drawDirtyNonGameTiles
|
||||||
|
|
||||||
jsl updateScorpion
|
jsl updateScorpion
|
||||||
|
jsl updateSpider
|
||||||
jsl updateFlea
|
jsl updateFlea
|
||||||
jsl checkKeyboard
|
jsl checkKeyboard
|
||||||
|
|
||||||
|
@ -44,6 +46,13 @@ gameLoop anop
|
||||||
lda shouldQuit
|
lda shouldQuit
|
||||||
bne gameLoop
|
bne gameLoop
|
||||||
|
|
||||||
|
short i,m
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
|
and #$f0
|
||||||
|
ora borderColour
|
||||||
|
sta >BORDER_COLOUR_REGISTER
|
||||||
|
long i,m
|
||||||
|
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
@ -605,7 +614,10 @@ setupScreen entry
|
||||||
|
|
||||||
lda #$a1
|
lda #$a1
|
||||||
sta >NEW_VIDEO_REGISTER ; Enable SHR mode
|
sta >NEW_VIDEO_REGISTER ; Enable SHR mode
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
long i,m
|
long i,m
|
||||||
|
and #$000f
|
||||||
|
sta borderColour
|
||||||
|
|
||||||
sei
|
sei
|
||||||
phd
|
phd
|
||||||
|
@ -663,6 +675,11 @@ checkKey_loop2 anop
|
||||||
cmp #'S'
|
cmp #'S'
|
||||||
beq checkKey_shootScorpion
|
beq checkKey_shootScorpion
|
||||||
|
|
||||||
|
cmp #'p'
|
||||||
|
beq checkKey_addSpider
|
||||||
|
cmp #'P'
|
||||||
|
beq checkKey_shootSpider
|
||||||
|
|
||||||
lda colourPalette
|
lda colourPalette
|
||||||
inc a
|
inc a
|
||||||
cmp #NUM_COLOUR_PALETTES
|
cmp #NUM_COLOUR_PALETTES
|
||||||
|
@ -684,6 +701,12 @@ checkKey_addScorpion anop
|
||||||
checkKey_shootScorpion anop
|
checkKey_shootScorpion anop
|
||||||
jmp shootScorpion
|
jmp shootScorpion
|
||||||
|
|
||||||
|
checkKey_addSpider anop
|
||||||
|
jmp addSpider
|
||||||
|
|
||||||
|
checkKey_shootSpider anop
|
||||||
|
jmp shootSpider
|
||||||
|
|
||||||
checkKey_quit anop
|
checkKey_quit anop
|
||||||
stz shouldQuit
|
stz shouldQuit
|
||||||
|
|
||||||
|
@ -703,6 +726,9 @@ waitForKey_loop anop
|
||||||
|
|
||||||
waitForVbl entry
|
waitForVbl entry
|
||||||
short i,m
|
short i,m
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
|
and #$f0
|
||||||
|
sta >BORDER_COLOUR_REGISTER
|
||||||
vblLoop1 anop
|
vblLoop1 anop
|
||||||
lda #$fe
|
lda #$fe
|
||||||
cmp >READ_VBL
|
cmp >READ_VBL
|
||||||
|
@ -710,11 +736,15 @@ vblLoop1 anop
|
||||||
vblLoop2 anop
|
vblLoop2 anop
|
||||||
cmp >READ_VBL
|
cmp >READ_VBL
|
||||||
bmi vblLoop2
|
bmi vblLoop2
|
||||||
|
lda >BORDER_COLOUR_REGISTER
|
||||||
|
ora #$0f
|
||||||
|
sta >BORDER_COLOUR_REGISTER
|
||||||
long i,m
|
long i,m
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
colourPalette dc i2'0'
|
colourPalette dc i2'0'
|
||||||
shouldQuit dc i2'1'
|
shouldQuit dc i2'1'
|
||||||
|
borderColour dc i2'0'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -60,7 +60,6 @@ drawScorpion_nonGame1 anop
|
||||||
sty numDirtyNonGameTiles
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
drawScorpion_skipTile1 anop
|
drawScorpion_skipTile1 anop
|
||||||
|
|
||||||
ldx scorpionTileOffsets+2
|
ldx scorpionTileOffsets+2
|
||||||
lda tiles+TILE_DIRTY_OFFSET,x
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
bne drawScorpion_skipTile2
|
bne drawScorpion_skipTile2
|
||||||
|
@ -85,7 +84,6 @@ drawScorpion_nonGame2 anop
|
||||||
sty numDirtyNonGameTiles
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
drawScorpion_skipTile2 anop
|
drawScorpion_skipTile2 anop
|
||||||
|
|
||||||
ldx scorpionTileOffsets+4
|
ldx scorpionTileOffsets+4
|
||||||
lda tiles+TILE_DIRTY_OFFSET,x
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
bne drawScorpion_done
|
bne drawScorpion_done
|
||||||
|
|
279
BuGS/gameSpider.s
Normal file
279
BuGS/gameSpider.s
Normal file
|
@ -0,0 +1,279 @@
|
||||||
|
;
|
||||||
|
; gameSpider.s
|
||||||
|
; BuGS
|
||||||
|
;
|
||||||
|
; Created by Jeremy Rand on 2020-07-23.
|
||||||
|
;Copyright © 2020 Jeremy Rand. All rights reserved.
|
||||||
|
;
|
||||||
|
|
||||||
|
case on
|
||||||
|
mcopy gameSpider.macros
|
||||||
|
keep gameSpider
|
||||||
|
|
||||||
|
gameSpider start
|
||||||
|
using globalData
|
||||||
|
|
||||||
|
SPIDER_STATE_NONE equ 0
|
||||||
|
SPIDER_STATE_LEFT_DIAG_DOWN equ 1
|
||||||
|
SPIDER_STATE_LEFT_DIAG_UP equ 2
|
||||||
|
SPIDER_STATE_LEFT_DOWN equ 3
|
||||||
|
SPIDER_STATE_LEFT_UP equ 4
|
||||||
|
SPIDER_STATE_RIGHT_DIAG_DOWN equ 5
|
||||||
|
SPIDER_STATE_RIGHT_DIAG_UP equ 6
|
||||||
|
SPIDER_STATE_RIGHT_DOWN equ 7
|
||||||
|
SPIDER_STATE_RIGHT_UP equ 8
|
||||||
|
SPIDER_STATE_EXPLODING equ 9
|
||||||
|
|
||||||
|
drawSpider entry
|
||||||
|
lda spiderState
|
||||||
|
bne drawSpider_cont
|
||||||
|
rtl
|
||||||
|
|
||||||
|
drawSpider_cont anop
|
||||||
|
ldy spiderScreenOffset
|
||||||
|
ldx spiderSprite
|
||||||
|
jsl spiderJump
|
||||||
|
|
||||||
|
ldx spiderTileOffsets
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_skipTile1
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame1
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
bra drawSpider_skipTile1
|
||||||
|
|
||||||
|
drawSpider_nonGame1 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_skipTile1 anop
|
||||||
|
ldx spiderTileOffsets+2
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_skipTile2
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame2
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
bra drawSpider_skipTile2
|
||||||
|
|
||||||
|
drawSpider_nonGame2 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_skipTile2 anop
|
||||||
|
ldx spiderTileOffsets+4
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_skipTile3
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame3
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
bra drawSpider_skipTile3
|
||||||
|
|
||||||
|
drawSpider_nonGame3 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_skipTile3 anop
|
||||||
|
ldx spiderTileOffsets+6
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_skipTile4
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame4
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
bra drawSpider_skipTile4
|
||||||
|
|
||||||
|
drawSpider_nonGame4 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_skipTile4 anop
|
||||||
|
ldx spiderTileOffsets+8
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_skipTile5
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame5
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
bra drawSpider_skipTile5
|
||||||
|
|
||||||
|
drawSpider_nonGame5 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_skipTile5 anop
|
||||||
|
ldx spiderTileOffsets+2
|
||||||
|
lda tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
bne drawSpider_done
|
||||||
|
lda #TILE_STATE_DIRTY
|
||||||
|
sta tiles+TILE_DIRTY_OFFSET,x
|
||||||
|
txa
|
||||||
|
cmp #RHS_FIRST_TILE_OFFSET
|
||||||
|
bge drawSpider_nonGame6
|
||||||
|
|
||||||
|
ldy numDirtyGameTiles
|
||||||
|
sta dirtyGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyGameTiles
|
||||||
|
rtl
|
||||||
|
|
||||||
|
drawSpider_nonGame6 anop
|
||||||
|
ldy numDirtyNonGameTiles
|
||||||
|
sta dirtyNonGameTiles,y
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty numDirtyNonGameTiles
|
||||||
|
|
||||||
|
drawSpider_done anop
|
||||||
|
rtl
|
||||||
|
|
||||||
|
spiderJump entry
|
||||||
|
cmp #SPIDER_STATE_EXPLODING
|
||||||
|
beq spiderJump_exploding
|
||||||
|
|
||||||
|
lda spiderScreenShift
|
||||||
|
beq spiderJump_shift
|
||||||
|
|
||||||
|
lda spiderJumpTable,x
|
||||||
|
sta jumpInst+1
|
||||||
|
|
||||||
|
lda spiderJumpTable+2,x
|
||||||
|
sta jumpInst+3
|
||||||
|
bra jumpInst
|
||||||
|
|
||||||
|
spiderJump_shift anop
|
||||||
|
lda spiderShiftJumpTable,x
|
||||||
|
sta jumpInst+1
|
||||||
|
|
||||||
|
lda spiderShiftJumpTable+2,x
|
||||||
|
sta jumpInst+3
|
||||||
|
bra jumpInst
|
||||||
|
|
||||||
|
spiderJump_exploding anop
|
||||||
|
tya
|
||||||
|
clc
|
||||||
|
adc #TILE_BYTE_WIDTH
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda explosionJumpTable,x
|
||||||
|
sta jumpInst+1
|
||||||
|
|
||||||
|
lda explosionJumpTable+2,x
|
||||||
|
sta jumpInst+3
|
||||||
|
|
||||||
|
jumpInst jmp >spider1
|
||||||
|
nop
|
||||||
|
|
||||||
|
|
||||||
|
updateSpider entry
|
||||||
|
; Write this code
|
||||||
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
addSpider entry
|
||||||
|
lda spiderState
|
||||||
|
bne addSpider_done
|
||||||
|
|
||||||
|
lda #SPIDER_STATE_RIGHT_DOWN
|
||||||
|
sta spiderState
|
||||||
|
|
||||||
|
stz spiderScreenShift
|
||||||
|
|
||||||
|
; Write this code
|
||||||
|
|
||||||
|
addSpider_done anop
|
||||||
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
shootSpider entry
|
||||||
|
; Write this code
|
||||||
|
rtl
|
||||||
|
|
||||||
|
|
||||||
|
spiderState dc i2'SPIDER_STATE_NONE'
|
||||||
|
spiderSprite dc i2'0'
|
||||||
|
spiderScreenOffset dc i2'0'
|
||||||
|
spiderScreenShift dc i2'0'
|
||||||
|
spiderShiftInTile dc i2'0'
|
||||||
|
|
||||||
|
spiderTileOffsets dc i2'0'
|
||||||
|
dc i2'0'
|
||||||
|
dc i2'0'
|
||||||
|
dc i2'0'
|
||||||
|
dc i2'0'
|
||||||
|
dc i2'0'
|
||||||
|
|
||||||
|
SPIDER_SPRITE_LAST_OFFSET gequ 7*4
|
||||||
|
spiderJumpTable dc i4'spider7'
|
||||||
|
dc i4'spider6'
|
||||||
|
dc i4'spider2'
|
||||||
|
dc i4'spider3'
|
||||||
|
dc i4'spider4'
|
||||||
|
dc i4'spider3'
|
||||||
|
dc i4'spider2'
|
||||||
|
dc i4'spider1'
|
||||||
|
|
||||||
|
|
||||||
|
spiderShiftJumpTable dc i4'spider7s'
|
||||||
|
dc i4'spider6s'
|
||||||
|
dc i4'spider2s'
|
||||||
|
dc i4'spider3s'
|
||||||
|
dc i4'spider4s'
|
||||||
|
dc i4'spider3s'
|
||||||
|
dc i4'spider2s'
|
||||||
|
dc i4'spider1s'
|
||||||
|
|
||||||
|
end
|
|
@ -125,6 +125,7 @@ KEYBOARD_STROBE gequ $e0c010
|
||||||
READ_VBL gequ $e0c019
|
READ_VBL gequ $e0c019
|
||||||
SHADOW_REGISTER gequ $e0c035
|
SHADOW_REGISTER gequ $e0c035
|
||||||
NEW_VIDEO_REGISTER gequ $e0c029
|
NEW_VIDEO_REGISTER gequ $e0c029
|
||||||
|
BORDER_COLOUR_REGISTER gequ $e0c034
|
||||||
STATE_REGISTER gequ $e1c068
|
STATE_REGISTER gequ $e1c068
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user