MAME

MAME stands for Multiple Arcade Machine Emulator. When used in conjunction with images of the original arcade game's ROM and disk data, MAME attempts to reproduce that game as faithfully as possible on a more modern general-purpose computer. MAME can currently emulate several thousand different classic arcade video games from the late 1970s through the modern era.
MESS(Multi Emulator Super System is now incorporated into MAME.

Because MAME is a command line program with many options, there are several frontends to make browsing and starting ROMs a lot easier.

Frontends:

System requirements: 

ROM/BIOS files

User rating: 
7

Comments

On GNU/Linux this has several hoops for you to jump through and they are burning. Worst of them is the bad documentation.