mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-11-28 00:51:14 +00:00
Added inventory tabs and number rendering
This commit is contained in:
parent
4edd8540f5
commit
cfeefce8c3
BIN
Art/Box_002.xcf
BIN
Art/Box_002.xcf
Binary file not shown.
BIN
Art/Tab_007.xcf
Normal file
BIN
Art/Tab_007.xcf
Normal file
Binary file not shown.
BIN
Art/box_002.gif
BIN
Art/box_002.gif
Binary file not shown.
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 197 B |
BIN
Art/tab_007.gif
Normal file
BIN
Art/tab_007.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 124 B |
@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
7002647320CD78C40015B184 /* smallNumbers.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = smallNumbers.s; sourceTree = "<group>"; };
|
||||
700B5E6F2069831000B31C00 /* inventory.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = inventory.s; sourceTree = "<group>"; };
|
||||
700C39C51F2E5CA800C24F9C /* tables.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = tables.s; sourceTree = "<group>"; };
|
||||
700F21DE1F43E31300D7007D /* input.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = input.s; sourceTree = "<group>"; };
|
||||
@ -48,6 +49,7 @@
|
||||
7099E3841F41022100182A82 /* gameobject.s */,
|
||||
706DF1641F2D39F700AA6680 /* loader.s */,
|
||||
700FFAFB1F40F3BF00A442DE /* font.s */,
|
||||
7002647320CD78C40015B184 /* smallNumbers.s */,
|
||||
706DF1651F2D4A8100AA6680 /* terrain.s */,
|
||||
705AAFA920040B0D001BB0ED /* terrain_e1.s */,
|
||||
70C073091F5BAA3E009844A9 /* collision.s */,
|
||||
|
2
Makefile
2
Makefile
@ -16,7 +16,7 @@ ADDR=800
|
||||
PGM=gscats
|
||||
MRSPRITE=../MrSprite/mrsprite
|
||||
CHROMA=a4dffb
|
||||
PALETTE=a4dffb a4dffb 008800 886611 cc9933 eebb44 dd6666 ff99aa 00ff00 ff0000 b7b7b7 dddddd 0077bb ffff00 000000 ffffff
|
||||
PALETTE=a4dffb a4dffb 008800 886611 cc9933 eebb44 dd6666 ff99aa 777777 ff0000 b7b7b7 dddddd 0077bb ffff00 000000 ffffff
|
||||
SPRITES=SpriteBank
|
||||
REMOTESYMBOLS=-Wl $(shell ./ParseMapFile.py *.map)
|
||||
|
||||
|
BIN
SpriteBank00.bin
BIN
SpriteBank00.bin
Binary file not shown.
@ -335,7 +335,7 @@ fire:
|
||||
basePalette:
|
||||
; Color 0 and 1 must both be sky blue. Compiled rendering uses PHD (which must contain $0000),
|
||||
; and span rendering uses fill mode, so 0 can't be used there
|
||||
.word $0aef,$0aef,$0080,$0861,$0c93,$0eb4,$0d66,$0f9a,$00f0,$0f00,$0bbb,$ddd,$007b,$0ff0,$0000,$0fff
|
||||
.word $0aef,$0aef,$0080,$0861,$0c93,$0eb4,$0d66,$0f9a,$0777,$0f00,$0bbb,$ddd,$007b,$0ff0,$0000,$0fff
|
||||
statusBarPalette:
|
||||
.word $0888,$0aef,$0F00,$0861,$0c93,$0eb4,$0d66,$0f9a,$00f0,$0fff,$0bbb,$ddd,$007b,$0000,$0ff0,$0fff
|
||||
|
||||
|
BIN
gscats.2mg
BIN
gscats.2mg
Binary file not shown.
1
gscats.s
1
gscats.s
@ -37,6 +37,7 @@ quitGame:
|
||||
|
||||
.include "graphics.s"
|
||||
.include "font.s"
|
||||
.include "smallNumbers.s"
|
||||
.include "player.s"
|
||||
.include "terrain.s"
|
||||
.include "collision.s"
|
||||
|
36
inventory.s
36
inventory.s
@ -8,9 +8,11 @@
|
||||
|
||||
INVENTORY_ITEMS = 2
|
||||
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
|
||||
;
|
||||
@ -25,9 +27,9 @@ renderInventory:
|
||||
ldy currentPlayer
|
||||
PLAYERPTR_Y
|
||||
lda playerData+PD_INVENTORY,y
|
||||
sta PARAML0
|
||||
sta PARAML1
|
||||
|
||||
; Compute initial VRAM position
|
||||
; Compute initial VRAM position ($E1-relative)
|
||||
ldy #(8192 + (160*10 + (160*ICON_ORIGIN + ICON_ORIGIN)))
|
||||
ldx #0
|
||||
|
||||
@ -52,8 +54,8 @@ RESTORE_AXY
|
||||
; renderInventoryItem
|
||||
;
|
||||
; X = Item index
|
||||
; Y = VRAM pos
|
||||
; PARAML0 = Inventory state
|
||||
; Y = VRAM pos ($E1-relative)
|
||||
; PARAML1 = Inventory state
|
||||
;
|
||||
renderInventoryItem:
|
||||
SAVE_AXY
|
||||
@ -63,18 +65,40 @@ renderInventoryItem:
|
||||
lda #2 ; Frame
|
||||
clc
|
||||
jsr DrawSpriteBank
|
||||
plx
|
||||
|
||||
; Find projectile type data
|
||||
txy
|
||||
ply ; Pushed as X
|
||||
PROJECTILETYPEPTR_Y
|
||||
|
||||
; Render projectile
|
||||
lda projectileTypes+PT_FRAME1,y
|
||||
ply
|
||||
phy
|
||||
|
||||
clc
|
||||
jsr DrawSpriteBank
|
||||
|
||||
; Render counter background
|
||||
clc
|
||||
pla
|
||||
adc #ITEM_HEIGHT*160
|
||||
pha
|
||||
tay
|
||||
lda #7
|
||||
jsr DrawSpriteBank
|
||||
|
||||
; Render counter
|
||||
lda #789
|
||||
sta PARAML0
|
||||
jsr intToString
|
||||
|
||||
sec
|
||||
pla
|
||||
sbc #($2000 - 160*2)-1 ; Font engine wants VRAM-relative
|
||||
tax
|
||||
lda #intToStringResult
|
||||
jsr DrawNumber
|
||||
|
||||
RESTORE_AXY
|
||||
rts
|
||||
|
||||
|
4
macros.s
4
macros.s
@ -165,6 +165,10 @@
|
||||
.dbyt (Arg>>16)&$7777,Arg&$00007777
|
||||
.endmacro
|
||||
|
||||
.macro fontword Arg ; Converts 0->A,F->E to match our palette for font rendering
|
||||
.dbyt (((Arg & $FF00) | $AA00) & $EE00) | (((Arg & $00FF) | $00AA) & $00EE)
|
||||
.endmacro
|
||||
|
||||
.macro BREAK
|
||||
pha
|
||||
lda breakpoint
|
||||
|
160
smallNumbers.s
Normal file
160
smallNumbers.s
Normal file
@ -0,0 +1,160 @@
|
||||
; Mini font render dedicated to small numbers.
|
||||
; Adapted from Dagen Brock's general purpose font
|
||||
; engine, also in this project
|
||||
;
|
||||
; A= ptr to string preceded by length
|
||||
; X= screen location
|
||||
; Trashes zero page locations 6,7
|
||||
;
|
||||
F_LEN: .word 0 ;length of string (only one byte currently used)
|
||||
F_DIGITIDX: .word 0 ;index of current character
|
||||
F_CURRPOS: .word 0 ;current top left char position
|
||||
F_NUMPTR = $06 ;pointer to string (including length byte) / DP
|
||||
|
||||
|
||||
DrawNumber:
|
||||
SAVE_AXY
|
||||
|
||||
sta F_NUMPTR
|
||||
stx F_CURRPOS
|
||||
stz F_DIGITIDX
|
||||
lda (F_NUMPTR)
|
||||
and #$00ff ;strip off first char (len is only one byte)
|
||||
sta F_LEN ;get our length byte
|
||||
|
||||
nextDigit:
|
||||
lda F_DIGITIDX
|
||||
cmp F_LEN
|
||||
bne moreDigits
|
||||
|
||||
RESTORE_AXY
|
||||
rts
|
||||
|
||||
moreDigits:
|
||||
inc F_DIGITIDX
|
||||
ldy F_DIGITIDX
|
||||
lda (F_NUMPTR),y ;get next char!
|
||||
and #$00FF ;mask high byte
|
||||
sec
|
||||
sbc #'0' ;our table starts with space ' '
|
||||
asl
|
||||
tay
|
||||
ldx F_CURRPOS
|
||||
jsr drawDigit
|
||||
inc F_CURRPOS
|
||||
inc F_CURRPOS ;update screen pos (1 word=4 pixels)
|
||||
bra nextDigit
|
||||
|
||||
;x = TopLeft screen pos
|
||||
;y = char table offset
|
||||
drawDigit:
|
||||
lda DigitTable,y ;get real address of char data
|
||||
sec
|
||||
sbc #DigitData ;pivot offset - now a is offset of fontdata
|
||||
tay ;so we'll index with that
|
||||
|
||||
lda DigitData,y
|
||||
sta $012000,x
|
||||
|
||||
lda DigitData+2,y
|
||||
sta $012000+160,x
|
||||
|
||||
lda DigitData+4,y
|
||||
sta $012000+160*2,x
|
||||
|
||||
lda DigitData+6,y
|
||||
sta $012000+160*3,x
|
||||
|
||||
lda DigitData+8,y
|
||||
sta $012000+160*4,x
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DigitTable:
|
||||
.addr s_0
|
||||
.addr s_1
|
||||
.addr s_2
|
||||
.addr s_3
|
||||
.addr s_4
|
||||
.addr s_5
|
||||
.addr s_6
|
||||
.addr s_7
|
||||
.addr s_8
|
||||
.addr s_9
|
||||
|
||||
DigitData:
|
||||
|
||||
s_0:
|
||||
fontword $FFF0
|
||||
fontword $F0F0
|
||||
fontword $F0F0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
|
||||
s_1:
|
||||
fontword $0F00
|
||||
fontword $FF00
|
||||
fontword $0F00
|
||||
fontword $0F00
|
||||
fontword $0F00
|
||||
|
||||
s_2:
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $FFF0
|
||||
fontword $F000
|
||||
fontword $FFF0
|
||||
|
||||
s_3:
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $FFF0
|
||||
|
||||
s_4:
|
||||
fontword $F0F0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $00F0
|
||||
|
||||
s_5:
|
||||
fontword $FFF0
|
||||
fontword $F000
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $FFF0
|
||||
|
||||
s_6:
|
||||
fontword $FFF0
|
||||
fontword $F000
|
||||
fontword $FFF0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
|
||||
s_7:
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $00F0
|
||||
fontword $00F0
|
||||
fontword $00F0
|
||||
|
||||
s_8:
|
||||
fontword $FFF0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
|
||||
s_9:
|
||||
fontword $FFF0
|
||||
fontword $F0F0
|
||||
fontword $FFF0
|
||||
fontword $00F0
|
||||
fontword $00F0
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
|
||||
DrawSpriteBank :
|
||||
ASL ; A=Sprite Number ($0000-$0006)
|
||||
ASL ; A=Sprite Number ($0000-$0007)
|
||||
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,$0600,$0400
|
||||
.dbyt $0100,$0000,$0500,$0200,$0300,$0700,$0400,$0600
|
||||
|
||||
SpriteBankBank :
|
||||
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
|
||||
.addr SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00,SpriteBankBank00
|
||||
|
||||
SpriteBankBank00 :
|
||||
JSL $AA0000
|
||||
|
Loading…
Reference in New Issue
Block a user