PICO-8 Wiki
menuitem( index, [label,] [callback] )
Adds a custom item to the PICO-8 menu.
The item index, a number between 1 and 5.

The label text of the menu item to add or change.

A Lua function to call when the user selects this menu item.

To remove a previously added item, call menuitem(i) where i is the index of the item to remove.

New in PICO-8 0.2.0.

If the callback returns true, the pause menu remains open.

Menu items can detect Left and Right button presses. The callback takes a single parameter that is a bitfield of Left (0) and Right (1).

It can also detect O (4), X (5) and Pause (6), but it cannot distinguish them (if any is pressed, the parameter is the bitmask sum = 16+32+64 = 112).

Combining all these properties allows a developer to add a numeric field tuner (decrease on Left, increase on Right, and possibly reset on X).

By making the callback function immediately return anything on either a Left or Right press, the field tuning feature can be disabled.


menuitem(1, "restart puzzle", function() reset_puzzle() sfx(10) end)

function display_hints()
  hint_shown = level_id
menuitem(2, "show hints", display_hints)

-- v0.2.0
menuitem(3, "foo", function(b) if (b&1 > 0) then printh("left was pressed") end end)
function my_menu_item(b)
    if(b&1 > 0) menuitem(_,"left!")
    if(b&2 > 0) menuitem(_,"right!")
    if(b&32 > 0) menuitem(_,"selected!")
    return true -- stay open

menuitem(1, "select me", my_menu_item)

See also[]