mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-11-25 10:30:49 +00:00
136 lines
2.1 KiB
ArmAsm
136 lines
2.1 KiB
ArmAsm
;
|
|
; inventory
|
|
; Code and data structures related to the weapons inventory and store
|
|
;
|
|
; Created by Quinn Dunki on 8/13/17
|
|
;
|
|
|
|
|
|
INVENTORY_ITEMS = 3
|
|
ITEM_WIDTH = 16 ; In pixels
|
|
ITEM_HEIGHT = 16 ; In pixels
|
|
ICON_WIDTH = 8 ; In pixels
|
|
ICON_ORIGIN = (ITEM_WIDTH-ICON_WIDTH)/4 ; In bytes
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; renderInventory
|
|
;
|
|
; Renders inventory for current player
|
|
;
|
|
; Trashes PARAML0
|
|
;
|
|
renderInventory:
|
|
SAVE_AXY
|
|
|
|
; Find inventory we need to render
|
|
ldy currentPlayer
|
|
PLAYERPTR_Y
|
|
tya
|
|
clc
|
|
adc #playerData
|
|
adc #PD_INVENTORY
|
|
sta PARAML1
|
|
|
|
; Compute initial VRAM position ($E1-relative)
|
|
ldy #(8192 + (160*10 + (160*ICON_ORIGIN + ICON_ORIGIN)))
|
|
ldx #0
|
|
|
|
|
|
renderInventoryLoop:
|
|
jsr renderInventoryItem
|
|
|
|
tya ; Advance VRAM pointer
|
|
clc
|
|
adc #ITEM_WIDTH/2
|
|
tay
|
|
|
|
inx
|
|
cpx #INVENTORY_ITEMS
|
|
bne renderInventoryLoop
|
|
|
|
RESTORE_AXY
|
|
rts
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; renderInventoryItem
|
|
;
|
|
; X = Item index
|
|
; Y = VRAM pos ($E1-relative)
|
|
; PARAML1 = Inventory state
|
|
;
|
|
renderInventoryItem:
|
|
SAVE_AXY
|
|
stx renderInventoryItemIndex
|
|
|
|
phy
|
|
lda #2 ; Frame
|
|
clc
|
|
jsr DrawSpriteBank
|
|
|
|
; Find projectile type data
|
|
ldy renderInventoryItemIndex
|
|
PROJECTILETYPEPTR_Y
|
|
|
|
; Render projectile
|
|
lda projectileTypes+PT_FRAME1,y
|
|
ply
|
|
phy
|
|
|
|
clc
|
|
jsr DrawSpriteBank
|
|
|
|
; Render selection
|
|
ldy currentPlayer
|
|
PLAYERPTR_Y
|
|
lda playerData+PD_CURRWEAPON,y
|
|
cmp renderInventoryItemIndex
|
|
bne renderInventoryItem_unselected
|
|
|
|
ply
|
|
phy
|
|
lda #11
|
|
clc
|
|
jsr DrawSpriteBank
|
|
|
|
renderInventoryItem_unselected:
|
|
lda renderInventoryItemIndex
|
|
beq renderInventoryItem_abort ; First item shows no counter
|
|
|
|
; Render counter background
|
|
clc
|
|
pla
|
|
adc #ITEM_HEIGHT*160
|
|
pha
|
|
tay
|
|
lda #10
|
|
jsr DrawSpriteBank
|
|
|
|
; Render counter
|
|
lda renderInventoryItemIndex
|
|
asl
|
|
tay
|
|
lda (PARAML1),y
|
|
sta PARAML0
|
|
jsr intToString
|
|
|
|
sec
|
|
pla
|
|
sbc #($2000 - 160*2)-1 ; Font engine wants VRAM-relative
|
|
tax
|
|
lda #intToStringResult
|
|
jsr DrawNumber
|
|
|
|
renderInventoryItem_done:
|
|
RESTORE_AXY
|
|
rts
|
|
|
|
renderInventoryItem_abort:
|
|
ply ; Balance stack
|
|
bra renderInventoryItem_done
|
|
|
|
renderInventoryItemIndex:
|
|
.word 0
|
|
|