Compare commits
3 Commits
11b2cc9048
...
8a8235181c
Author | SHA1 | Date |
---|---|---|
blondie7575 | 8a8235181c | |
blondie7575 | f0a53d6964 | |
blondie7575 | c2dde9a4b7 |
|
@ -14,6 +14,9 @@ crosshairGameObject:
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
crosshairBackgroundStale:
|
||||||
|
.word 0
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; updateCrosshair
|
; updateCrosshair
|
||||||
|
@ -115,6 +118,8 @@ protectCrosshair:
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
jsr protectGameObject
|
jsr protectGameObject
|
||||||
|
|
||||||
|
stz crosshairBackgroundStale
|
||||||
|
|
||||||
protectCrosshairDone:
|
protectCrosshairDone:
|
||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
|
@ -128,6 +133,9 @@ protectCrosshairDone:
|
||||||
unrenderCrosshair:
|
unrenderCrosshair:
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
lda crosshairBackgroundStale
|
||||||
|
bne unrenderCrosshairDone
|
||||||
|
|
||||||
lda #crosshairGameObject
|
lda #crosshairGameObject
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
jsr unrenderGameObject
|
jsr unrenderGameObject
|
||||||
|
|
|
@ -7,6 +7,18 @@
|
||||||
|
|
||||||
NUMPLAYERS = 2
|
NUMPLAYERS = 2
|
||||||
|
|
||||||
|
initGameplay:
|
||||||
|
; Create players
|
||||||
|
lda #56
|
||||||
|
ldy #0
|
||||||
|
jsr playerCreate
|
||||||
|
|
||||||
|
lda #568
|
||||||
|
ldy #1
|
||||||
|
jsr playerCreate
|
||||||
|
|
||||||
|
jsr deleteAllProjectiles
|
||||||
|
rts
|
||||||
|
|
||||||
beginGameplay:
|
beginGameplay:
|
||||||
; Initialize random numbers
|
; Initialize random numbers
|
||||||
|
@ -19,18 +31,14 @@ beginGameplay:
|
||||||
jsr colorFill
|
jsr colorFill
|
||||||
|
|
||||||
; Generate, compile, and clip terrain
|
; Generate, compile, and clip terrain
|
||||||
|
stz mapScrollPos
|
||||||
stz leftScreenEdge
|
stz leftScreenEdge
|
||||||
|
lda #160-GAMEOBJECTWIDTH/4-2
|
||||||
|
sta rightScreenEdge
|
||||||
jsr generateTerrain
|
jsr generateTerrain
|
||||||
|
|
||||||
; Create players
|
jsr initGameplay
|
||||||
lda #56
|
|
||||||
ldy #0
|
|
||||||
jsr playerCreate
|
|
||||||
|
|
||||||
lda #568
|
|
||||||
ldy #1
|
|
||||||
jsr playerCreate
|
|
||||||
|
|
||||||
jsr syncPlayerHeader
|
jsr syncPlayerHeader
|
||||||
ldy #0
|
ldy #0
|
||||||
jsr renderPlayerHeader
|
jsr renderPlayerHeader
|
||||||
|
@ -44,6 +52,8 @@ beginGameplay:
|
||||||
jsr renderInventory
|
jsr renderInventory
|
||||||
jsr protectPlayers
|
jsr protectPlayers
|
||||||
jsr renderPlayers
|
jsr renderPlayers
|
||||||
|
ldy #0
|
||||||
|
jsr updateCrosshair
|
||||||
|
|
||||||
; Fade in from menu
|
; Fade in from menu
|
||||||
lda #basePalette
|
lda #basePalette
|
||||||
|
@ -95,8 +105,9 @@ gameplayLoopScroll:
|
||||||
bmi gameplayLoopAngleCheck
|
bmi gameplayLoopAngleCheck
|
||||||
|
|
||||||
jsr scrollMap
|
jsr scrollMap
|
||||||
|
ldy currentPlayer
|
||||||
jsr updateCrosshair
|
jsr updateCrosshair
|
||||||
|
|
||||||
gameplayLoopAngleCheck:
|
gameplayLoopAngleCheck:
|
||||||
lda projectileActive ; Skip interactivity during shots
|
lda projectileActive ; Skip interactivity during shots
|
||||||
bpl gameplayLoopRenderJmp
|
bpl gameplayLoopRenderJmp
|
||||||
|
@ -107,7 +118,7 @@ gameplayLoopRenderJmp:
|
||||||
gameplayLoopAngle:
|
gameplayLoopAngle:
|
||||||
; Update aim angle if needed
|
; Update aim angle if needed
|
||||||
lda angleDeltaRequested
|
lda angleDeltaRequested
|
||||||
beq gameplayLoopAim
|
beq gameplayLoopPower
|
||||||
jsr changeAngle
|
jsr changeAngle
|
||||||
|
|
||||||
gameplayLoopAim:
|
gameplayLoopAim:
|
||||||
|
@ -122,6 +133,9 @@ gameplayLoopPower:
|
||||||
lda powerDeltaRequested
|
lda powerDeltaRequested
|
||||||
beq gameplayLoopFire
|
beq gameplayLoopFire
|
||||||
jsr changePower
|
jsr changePower
|
||||||
|
jsr unrenderCrosshair
|
||||||
|
ldy currentPlayer
|
||||||
|
jsr renderCrosshair
|
||||||
|
|
||||||
gameplayLoopFire:
|
gameplayLoopFire:
|
||||||
lda fireRequested
|
lda fireRequested
|
||||||
|
@ -155,8 +169,12 @@ gameplayLoopRender:
|
||||||
beq gameplayLoopRenderPlayersAnyway
|
beq gameplayLoopRenderPlayersAnyway
|
||||||
jsr unrenderPlayers
|
jsr unrenderPlayers
|
||||||
jsr protectPlayers
|
jsr protectPlayers
|
||||||
jsr unrenderCrosshair
|
|
||||||
|
lda dirtExplosionActive ; Crosshair is dirty if map scrolled and dirt is finished
|
||||||
|
bne gameplayLoopRenderPlayersAnyway
|
||||||
jsr protectCrosshair
|
jsr protectCrosshair
|
||||||
|
ldy currentPlayer
|
||||||
|
jsr renderCrosshair
|
||||||
|
|
||||||
gameplayLoopRenderPlayersAnyway:
|
gameplayLoopRenderPlayersAnyway:
|
||||||
jsr renderPlayers
|
jsr renderPlayers
|
||||||
|
@ -297,8 +315,6 @@ endTurnHeader:
|
||||||
jsr renderPlayerHeader
|
jsr renderPlayerHeader
|
||||||
jsr renderInventory
|
jsr renderInventory
|
||||||
stz turnRequested
|
stz turnRequested
|
||||||
|
|
||||||
jsr protectCrosshair
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
endTurnFocusPlayer0:
|
endTurnFocusPlayer0:
|
||||||
|
@ -338,6 +354,8 @@ scrollMap:
|
||||||
lda projectileActive ; Crosshair is visible if projectile isn't
|
lda projectileActive ; Crosshair is visible if projectile isn't
|
||||||
beq scrollMapApplyScrolling
|
beq scrollMapApplyScrolling
|
||||||
jsr unrenderCrosshair
|
jsr unrenderCrosshair
|
||||||
|
lda #1
|
||||||
|
sta crosshairBackgroundStale
|
||||||
|
|
||||||
scrollMapApplyScrolling:
|
scrollMapApplyScrolling:
|
||||||
pla
|
pla
|
||||||
|
@ -358,7 +376,6 @@ scrollMapApplyScrolling:
|
||||||
sta playersDirty
|
sta playersDirty
|
||||||
sta projectilesDirty
|
sta projectilesDirty
|
||||||
sta terrainDirty
|
sta terrainDirty
|
||||||
sta crosshairDirty
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,6 +476,7 @@ moveCleanup:
|
||||||
jsr protectPlayers
|
jsr protectPlayers
|
||||||
jsr renderPlayers
|
jsr renderPlayers
|
||||||
jsr protectCrosshair
|
jsr protectCrosshair
|
||||||
|
ldy currentPlayer
|
||||||
jsr renderCrosshair
|
jsr renderCrosshair
|
||||||
|
|
||||||
RESTORE_AY
|
RESTORE_AY
|
||||||
|
@ -484,10 +502,8 @@ turnRequested:
|
||||||
playerMoveRequested:
|
playerMoveRequested:
|
||||||
.word $0000
|
.word $0000
|
||||||
terrainDirty:
|
terrainDirty:
|
||||||
.word 1
|
|
||||||
playersDirty:
|
|
||||||
.word 0
|
.word 0
|
||||||
crosshairDirty:
|
playersDirty:
|
||||||
.word 0
|
.word 0
|
||||||
projectilesDirty:
|
projectilesDirty:
|
||||||
.word 1
|
.word 1
|
||||||
|
|
4
macros.s
4
macros.s
|
@ -180,8 +180,8 @@
|
||||||
pha
|
pha
|
||||||
lda breakpoint
|
lda breakpoint
|
||||||
beq nobrk
|
beq nobrk
|
||||||
lda #1
|
; lda #1
|
||||||
sta $e1c029
|
; sta $e1c029
|
||||||
pla
|
pla
|
||||||
brk
|
brk
|
||||||
nobrk:
|
nobrk:
|
||||||
|
|
52
player.s
52
player.s
|
@ -6,6 +6,8 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
MAX_ANGER = 100
|
MAX_ANGER = 100
|
||||||
|
START_POWER = 2
|
||||||
|
START_TREATS = 7
|
||||||
|
|
||||||
playerData:
|
playerData:
|
||||||
;;;;;;;;;;;; PLAYER 1 ;;;;;;;;;;;;;;
|
;;;;;;;;;;;; PLAYER 1 ;;;;;;;;;;;;;;
|
||||||
|
@ -17,14 +19,14 @@ playerData:
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.word 24 ; Angle in degrees from +X
|
.word 0 ; Angle in degrees from +X
|
||||||
.word 2 ; Power
|
.word 0 ; Power
|
||||||
.word MAX_ANGER ; Anger
|
.word 0 ; Anger
|
||||||
.byte 8,"SPROCKET " ; Name
|
.byte 8,"SPROCKET " ; Name
|
||||||
.word 29 ; Base Sprite
|
.word 29 ; Base Sprite
|
||||||
.word 0,5,7,0,0,0,0,0 ; Prices
|
.word 0,5,7,0,0,0,0,0 ; Prices
|
||||||
.word 0 ; Current weapon
|
.word 0 ; Current weapon
|
||||||
.word 7 ; Treats
|
.word 0 ; Treats
|
||||||
.repeat 86
|
.repeat 86
|
||||||
.byte 0 ; Padding to 256-byte boundary
|
.byte 0 ; Padding to 256-byte boundary
|
||||||
.endrepeat
|
.endrepeat
|
||||||
|
@ -38,14 +40,14 @@ playerData:
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.word 154 ; Angle in degrees from +X
|
.word 0 ; Angle in degrees from +X
|
||||||
.word 2 ; Power
|
.word 0 ; Power
|
||||||
.word MAX_ANGER ; Anger
|
.word 0 ; Anger
|
||||||
.byte 8,"TINKER " ; Name
|
.byte 8,"TINKER " ; Name
|
||||||
.word 20 ; Base Sprite
|
.word 20 ; Base Sprite
|
||||||
.word 0,5,7,0,0,0,0,0 ; Prices
|
.word 0,5,7,0,0,0,0,0 ; Prices
|
||||||
.word 0 ; Current weapon
|
.word 0 ; Current weapon
|
||||||
.word 7 ; Treats
|
.word 0 ; Treats
|
||||||
|
|
||||||
.repeat 86
|
.repeat 86
|
||||||
.byte 0 ; Padding to 256-byte boundary
|
.byte 0 ; Padding to 256-byte boundary
|
||||||
|
@ -105,6 +107,7 @@ playerCreate:
|
||||||
sty SCRATCHL
|
sty SCRATCHL
|
||||||
pla
|
pla
|
||||||
|
|
||||||
|
; Starting position
|
||||||
sta playerData+GO_POSX,y
|
sta playerData+GO_POSX,y
|
||||||
lda #playerData
|
lda #playerData
|
||||||
clc
|
clc
|
||||||
|
@ -112,6 +115,39 @@ playerCreate:
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
jsr placeGameObjectOnTerrainDefault
|
jsr placeGameObjectOnTerrainDefault
|
||||||
|
|
||||||
|
; Starting aim
|
||||||
|
lda playerData+GO_POSX,y
|
||||||
|
cmp #TERRAINWIDTH/2
|
||||||
|
bcc playerCreateLeft
|
||||||
|
lda #154
|
||||||
|
bra playerCreateInit
|
||||||
|
playerCreateLeft:
|
||||||
|
lda #24
|
||||||
|
|
||||||
|
playerCreateInit:
|
||||||
|
sta playerData+PD_ANGLE,y
|
||||||
|
|
||||||
|
; Initialize standard values
|
||||||
|
lda #START_POWER
|
||||||
|
sta playerData+PD_POWER,y
|
||||||
|
lda #START_TREATS
|
||||||
|
sta playerData+PD_TREATS,y
|
||||||
|
lda #MAX_ANGER
|
||||||
|
sta playerData+PD_ANGER,y
|
||||||
|
lda #0
|
||||||
|
sta playerData+PD_CURRWEAPON,y
|
||||||
|
lda #1
|
||||||
|
sta playersDirty
|
||||||
|
sta terrainDirty
|
||||||
|
sta projectilesDirty
|
||||||
|
sta inventoryDirty
|
||||||
|
|
||||||
|
lda #-1
|
||||||
|
sta gameOver
|
||||||
|
sta projectileActive
|
||||||
|
|
||||||
|
stz currentPlayer
|
||||||
|
|
||||||
jsr createProgressBar
|
jsr createProgressBar
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
22
projectile.s
22
projectile.s
|
@ -630,6 +630,9 @@ endProjectile:
|
||||||
; Trashes A
|
; Trashes A
|
||||||
;
|
;
|
||||||
deleteProjectile:
|
deleteProjectile:
|
||||||
|
lda projectileData+GO_POSX,y
|
||||||
|
bmi deleteProjectileDone ; Already deleted
|
||||||
|
|
||||||
lda #-1
|
lda #-1
|
||||||
sta projectileData+GO_POSX,y
|
sta projectileData+GO_POSX,y
|
||||||
|
|
||||||
|
@ -646,6 +649,25 @@ deleteProjectileDone:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; deleteAllProjectiles
|
||||||
|
;
|
||||||
|
deleteAllProjectiles:
|
||||||
|
SAVE_AXY
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
deleteAllProjectilesLoop:
|
||||||
|
txy
|
||||||
|
PROJECTILEPTR_Y
|
||||||
|
jsr deleteProjectile
|
||||||
|
inx
|
||||||
|
cpx #4
|
||||||
|
bne deleteAllProjectilesLoop
|
||||||
|
|
||||||
|
RESTORE_AXY
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; protectProjectiles
|
; protectProjectiles
|
||||||
;
|
;
|
||||||
|
|
Loading…
Reference in New Issue