\chapter{Plugins}
Plugins are little programs that Rockbox can load and run. Plugins have
the file extension .rock.  Most of them can be started from the main
menu if you put them in the \textbf{/.rockbox/rocks} directory. Press
PLAY on them to start them. 

Viewer plugins get started automatically by
``playing'' an associated file (i.e. text
files, chip8 games), or from the ``Open with'' option on the File menu.\\

\textbf{The plugin loader}
Only one plugin can be loaded at a time. Plugins run in the GUI thread
and have exclusive control over the user interface. This means you
cannot switch back and forth between a plugin and Rockbox. A plugin is
loaded, run and then exited, which returns control to Rockbox.  Music
will carry on playing whilst plugins are being run.

\section{Games}
\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}
    {See also the Chip{}-8 emulator on page \pageref{ref:Chip8emulator}
    \opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor}{, Rockboy on page
    \pageref{ref:Rockboy} and Sudoku on page \pageref{ref:Sudoku}}.}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/brickmania.tex}}

\opt{h1xx,h300,ipodcolor,ipodnano,ipodvideo,x5}{\input{plugins/bubbles.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/chessbox.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/flipit.tex}}

\opt{player}{\input{plugins/jackpot.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/jewels.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/minesweeper.tex}}

\opt{player}{\input{plugins/nim.tex}}

\opt{h1xx,h300,ipodcolor,ipodnano}{\input{plugins/pacbox.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/pong.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/rockblox.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/sliding.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/snake.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/snake2.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/sokoban.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/solitaire.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/star.tex}}

\opt{HAVE_LCD_BITMAP}{\input{plugins/tetrox.tex}}

\opt{recorder,recorderv2fm}{\input{plugins/wormlet.tex}}

\opt{h1xx,h300,ipodcolor,ipodnano,ipodvideo}{\input{plugins/xobox.tex}}

\section{Demos}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/bounce.tex}}

{\input{plugins/credits.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/cube.tex}}

\opt{HAVE_LCD_BITMAP}{\input{plugins/demystify.tex}}

\opt{HAVE_LCD_BITMAP}{\input{plugins/fire.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300}{\input{plugins/grayscale.tex}}

{\input{plugins/hello.tex}}

{\input{plugins/logo.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/mandelbrot.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/mosaic.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/oscilloscope.tex}}

\opt{HAVE_LCD_BITMAP}{\input{plugins/plasma.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/snow.tex}}

\opt{HAVE_LCD_BITMAP}{\input{plugins/starfield.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/vumeter.tex}}

\section{\label{ref:Viewersplugins}Viewers}

Viewers are plugins which are associated with specific file extensions.
They cannot be run directly but are started by ``playing''
the associated file.  Viewers are stored in the
\textbf{/.rockbox/viewers/ }directory.

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/chip8emulator.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/jpegviewer.tex}}

\opt{recorder,recorderv2fm,ondio}{\input{plugins/movieplayer.tex}}

\opt{recorder,recorderv2fm,ondio}{\input{plugins/rockbox_flash.tex}}

\opt{recorder,recorderv2fm,h1xx,h300,ipodcolor}{\input{plugins/rockboy.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/search.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/sort.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor}{\input{plugins/sudoku.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/text_viewer.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/vbrfix.tex}}

\section{Applications}

{\input{plugins/batterybenchmark.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/battery_test.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/calculator.tex}}

\opt{recorder,recorderv2fm,ondio}{\input{plugins/calendar.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/chess_clock.tex}}

\opt{recorder,recorderv2fm}{\input{plugins/clock.tex}}

{\input{plugins/dice.tex}}

\opt{recorder,recorderv2fm}{\input{plugins/euro_converter.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/favorites.tex}}

\opt{recorder,recorderv2fm,ondio}{\input{plugins/firmware_flash.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/metronome.tex}}

\opt{recorder,recorderv2fm,ondio}{\input{plugins/split_editor.tex}}

{\input{plugins/stats.tex}}

\opt{recorder,recorderv2fm,ondio,h1xx,h300,ipodcolor,ipodnano}{\input{plugins/stopwatch.tex}}
