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