DEF ITEM_ATTRF_NONE EQU 0
|
|
DEF ITEM_ATTRF_USABLE EQU (1 << 0)
|
|
DEF ITEM_ATTRF_WEAPON EQU (1 << 1)
|
|
DEF ITEM_ATTRF_ARMOR EQU (1 << 2)
|
|
|
|
DEF NEXT_ITEM_ID SET 1
|
|
|
|
; Declare a new item
|
|
; \1 Display name
|
|
; \2 Attributes
|
|
MACRO Item
|
|
ASSERT STRLEN("\1") < 16
|
|
|
|
; Define item ID symbol
|
|
DEF ID_NAME EQUS "\1_ID"
|
|
DEF {ID_NAME} EQU NEXT_ITEM_ID
|
|
EXPORT {ID_NAME}
|
|
REDEF NEXT_ITEM_ID SET NEXT_ITEM_ID + 1
|
|
|
|
DB \2
|
|
|
|
; Display name
|
|
DB "\1"
|
|
REPT 16 - STRLEN("\1")
|
|
DB 0
|
|
ENDR
|
|
ENDM
|
|
|
|
SECTION "Item Sprite Data", ROM0
|
|
|
|
COIN_LEFT:: INCBIN "png/sprite/item/coin_left.2bpp"
|
|
COIN_RIGHT:: INCBIN "png/sprite/item/coin_right.2bpp"
|
|
|
|
SECTION "Item Data", ROM0
|
|
|
|
; NOTE: Macro invocation MUST be indented in order to be expanded correctly
|
|
Items::
|
|
Item COIN, ITEM_ATTRF_NONE
|
|
|
|
SECTION "Item Code", ROM0
|