From 3144b7c9fb5f8db12b01e2cec1ad49761753845b Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sun, 10 Jun 2018 18:05:20 -0600 Subject: [PATCH] Inventory selection --- Art/Select_008.xcf | Bin 0 -> 753 bytes Art/select_008.gif | Bin 0 -> 127 bytes SpriteBank00.bin | Bin 2156 -> 2260 bytes gamemanager.s | 11 ++++++----- gscats.2mg | Bin 819264 -> 819264 bytes input.s | 18 ++++++++++++++++++ inventory.s | 20 +++++++++++++++++--- player.s | 7 +++++-- spritebank.s | 4 +++- 9 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 Art/Select_008.xcf create mode 100644 Art/select_008.gif diff --git a/Art/Select_008.xcf b/Art/Select_008.xcf new file mode 100644 index 0000000000000000000000000000000000000000..2a59785cb302e1d94063f0ae2d224bfa7ca37566 GIT binary patch literal 753 zcmZ`%%}&BV5Z)FMq>_SvCl7msLrsZ30h$mKO?-t?+GQhcNn0$QM{3N#RWcnOMQ9{UUHjCq!MDzQzC#X&m&`2F1;Q`x#a{G=D1lSH>4Nw5=366EU zP~QPxWiXOvdX8hcA;jqvTgSd-gjSD6JnYlX>G=g_YH2BV3}$J}=RHv^kwy?+4=fsZ z1Kw*^8a6Y%f#=gk>NKBq4XPjLsjVO_k!nI~cSUQKr~ead9S1|h{}pSuM&l( zja(j5?wWloz<$rR11tO)5WD|M3uU<#??IUKkumVuZt?n+wqaf}-y6B{0C&5gOr`(;0RR90A^s6Va%Ew3Wn>_CX>@2HM@dak04x9i000mG5C8xKAMnWs hs;x8AYxU+_27=OPo@lDBZ0oLND$1Ja#pDzL06V!1Ho*V@ literal 0 HcmV?d00001 diff --git a/SpriteBank00.bin b/SpriteBank00.bin index c6d840fe05c2c6f124bb82c0800d1e5c8986953f..0a8197a5631a1fea1fb45d02a40940de9db0c4cf 100644 GIT binary patch delta 106 zcmaDOa79qsdo|ap8cqfV23~d#R&y3R=47U6j2w)O4AKk}7l_*b|KHWj(9G7npm~{f lrURq&BZZa!fdcG6f#rt`fI@7TLX6UIJrn!XH|p7O001iwB~1VT delta 34 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 Aj{pDw 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