Inventory selection

This commit is contained in:
blondie7575 2018-06-10 18:05:20 -06:00
parent 23c7c3b2d4
commit 3144b7c9fb
9 changed files with 49 additions and 11 deletions

BIN
Art/Select_008.xcf Normal file

Binary file not shown.

BIN
Art/select_008.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

View File

@ -63,8 +63,6 @@ beginGameplay:
jsr clipTerrain
jsl renderTerrainSpans
jsr renderInventory
gameplayLoop:
jsr syncVBL
BORDER_COLOR #$0
@ -145,9 +143,10 @@ gameplayLoopProjectiles:
gameplayLoopProjectilesSkip:
jsr updateProjectileCollisions
; lda turnRequested
; beq gameplayLoopVictoryCondition
; jsr endTurn
lda inventoryDirty
beq gameplayLoopVictoryCondition
stz inventoryDirty
jsr renderInventory
gameplayLoopVictoryCondition:
lda gameOver
@ -357,6 +356,8 @@ terrainDirty:
.word 1
projectilesDirty:
.word 1
inventoryDirty:
.word 1
activePlayer:
.word 0
currentPlayer:

Binary file not shown.

18
input.s
View File

@ -38,6 +38,8 @@ kbdScan:
beq kbdScanESC
cmp #(127 + $80)
beq kbdScanDEL
cmp #(9 + $80)
beq kbdScanTab
kbdScanDone:
BITS16
@ -113,6 +115,22 @@ kbdScanDEL:
sta paused
rts
kbdScanTab:
BITS16
ldy currentPlayer
PLAYERPTR_Y
lda playerData+PD_CURRWEAPON,y
inc
cmp #INVENTORY_ITEMS
bne kbdScanTab_store
lda #0
kbdScanTab_store:
sta playerData+PD_CURRWEAPON,y
inc inventoryDirty
rts
breakpoint:
.word 0

View File

@ -81,6 +81,20 @@ renderInventoryItem:
clc
jsr DrawSpriteBank
; Render selection
ldy currentPlayer
PLAYERPTR_Y
lda playerData+PD_CURRWEAPON,y
cmp renderInventoryItemIndex
bne renderInventoryItem_unselected
ply
phy
lda #8
clc
jsr DrawSpriteBank
renderInventoryItem_unselected:
lda renderInventoryItemIndex
beq renderInventoryItem_abort ; First item shows no counter
@ -94,10 +108,10 @@ renderInventoryItem:
jsr DrawSpriteBank
; Render counter
ldy renderInventoryItemIndex
lda renderInventoryItemIndex
asl
tay
lda (PARAML1),y
xba
and #$00ff
sta PARAML0
jsr intToString

View File

@ -21,8 +21,9 @@ playerData:
.byte 8,"SPROCKET " ; Name
.word 1 ; Base Sprite
.word 0,5,0,0,0,0,0,0 ; Inventory
.word 0 ; Current weapon
.repeat 90
.repeat 88
.byte 0 ; Padding to 256-byte boundary
.endrepeat
@ -40,8 +41,9 @@ playerData:
.byte 8,"TINKER " ; Name
.word 0 ; Base Sprite
.word 0,5,0,0,0,0,0,0 ; Inventory
.word 0 ; Current weapon
.repeat 90
.repeat 88
.byte 0 ; Padding to 256-byte boundary
.endrepeat
@ -51,6 +53,7 @@ PD_ANGER = 136
PD_NAME = 138
PD_BASESPRITE = 148
PD_INVENTORY = 150
PD_CURRWEAPON = 166
PD_SIZE = 256
.macro PLAYERPTR_Y

View File

@ -2,16 +2,18 @@
DrawSpriteBank :
ASL ; A=Sprite Number ($0000-$0007)
ASL ; A=Sprite Number ($0000-$0008)
TAX ; Y=Target Screen Address ($2000-$9D00)
LDA SpriteBankNum,X ; Relative Sprite Number Table
JMP (SpriteBankBank,X) ; Bank Number Table
SpriteBankNum :
.dbyt $0100,$0000,$0500,$0200,$0300,$0700,$0400,$0600
.dbyt $0800
SpriteBankBank :
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
.addr SpriteBankBank00
SpriteBankBank00 :
JSL $AA0000