// menu_inventory demonstrates a complete, reproducible library workflow.
#include "gb_tile_example.h"
#include "vram_example_colors.h"
#include "text.c"
#include "menu.c"
__location(0xC600) u16 result[80];
void demo_label(u8 y,const u8* label){m_text(1,y,label);}
void demo_word(u8 y,u16 value){u8 x;u16 place;place=10000;for(x=0;x<5;x++){m_put(13+x,y,(u8)(48+value/place));value=value%place;place=place/10;}}
const u8 dialogue_tiles[128] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 ,
0, 0, 16, 16, 24, 24, 28, 28, 24, 24, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 124, 124, 56, 56, 16, 16
};
const u8 * const choices[]={"SWORD","SHIELD","POTION"};menu_state_t menu_state;menu_t menu;item_t items[3];
void main(){u8 i;tile_example_begin();M_LCDC=0;vram_example_color(1,2,18,14,2);for(i=0;i<80;i++)result[i]=0;__vram_copy(0x8010,dialogue_tiles,128);vram_example_color(1,1,18,15,3);M_LCDC=0x91;items[0].id=10;items[0].qty=7;items[0].name="SWORD";items[1].id=20;items[1].qty=42;items[1].name="SHIELD";items[2].id=30;items[2].qty=99;items[2].name="POTION";
// example:menu_inventory:start
result[0]=menu_inventory(items,3);
// example:menu_inventory:end
result[1]=items[1].qty;result[2]=menu_inventory(items,0);

demo_label(0,"ITEM QUANTITIES");
demo_label(8,"SELECTED");demo_word(8,result[0]);
demo_label(16,"A: OK  B: CANCEL");
result[79]=0xA55A;M_LCDC=0x91;while(1){}
}
