diff --git a/Art/Select_008.xcf b/Art/Select_008.xcf new file mode 100644 index 0000000..2a59785 Binary files /dev/null and b/Art/Select_008.xcf differ diff --git a/Art/select_008.gif b/Art/select_008.gif new file mode 100644 index 0000000..572323a Binary files /dev/null and b/Art/select_008.gif differ diff --git a/SpriteBank00.bin b/SpriteBank00.bin index c6d840f..0a8197a 100644 Binary files a/SpriteBank00.bin and b/SpriteBank00.bin differ diff --git a/gamemanager.s b/gamemanager.s index eab1f6f..7aa8c4c 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -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: diff --git a/gscats.2mg b/gscats.2mg index a9761ac..1e35864 100644 Binary files a/gscats.2mg and b/gscats.2mg differ diff --git a/input.s b/input.s index ab71a24..17222c9 100644 --- a/input.s +++ b/input.s @@ -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 diff --git a/inventory.s b/inventory.s index 818387d..bb86e23 100644 --- a/inventory.s +++ b/inventory.s @@ -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 diff --git a/player.s b/player.s index 8210bf2..1fb06e0 100644 --- a/player.s +++ b/player.s @@ -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 diff --git a/spritebank.s b/spritebank.s index af03737..a9a31da 100644 --- a/spritebank.s +++ b/spritebank.s @@ -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