Return to the main Frequently Asked Questions page.

What are the current technical goals of the MAME project?


  • Use modern C++ to replace macros and platform-specific code wherever possible
  • Eliminate remaining static variables in drivers and devices


  • Remove deprecated direct_update_handler functions from the remaining drivers that have one. This will facilitate speeding up the memory system, which in turn will improve all drivers
  • Rewrite older drivers to modern standards
  • Rewrite the 2 or 3 drivers still outstanding from the license change
  • Convert more shared custom chips and function boards into devices


  • Come up with a clean way to allow devices to have multiple slot connectors


  • Continue to modernize and untangle the UI code so that the business logic is separate from the presentation


Note: in order to make the rest of these points feasible, the BGFX rendering path is the preferred implementation. The existing D3D9 and OpenGL renderers and the HLSL and GLSL features are deprecated and should not be the target of any new features unless those features also target the BGFX path.

  • Drivers / the core need a way to tell the renderer to run a specific shader pass or passes (such as NTSC or PAL filtering, YUV conversion for laserdisc, etc) on each submitted bitmap
  • Drivers / the core need some way to do GPU rasterization. This will involve drivers needing to submit polygons, textures and texture atlases, and custom shaders to the renderer.