FAQ:Goals: Difference between revisions

From MAMEDEV Wiki
No edit summary
No edit summary
 
(14 intermediate revisions by 4 users not shown)
Line 3: Line 3:
'''Global'''
'''Global'''
* Use modern C++ to replace macros and platform-specific code wherever possible
* Use modern C++ to replace macros and platform-specific code wherever possible
* Eliminate remaining static variables in drivers and devices
* Replace global_alloc/auto_alloc/pool_alloc with smart pointers




'''Drivers'''
'''Drivers'''
* 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 older drivers to modern standards
* Rewrite the 2 or 3 drivers still outstanding from the license change
* Rewrite the 2 or 3 drivers still outstanding from the license change
* Convert more shared custom chips and function boards into devices
* Convert the remaining devices that use the old floppy system
* Substitute proper IRQ acking for HOLD_LINE
* "MAME doesn't really provide a way to run with no machine loaded. Changing this would be a huge amount of work. It would be nice as a long-term goal, but in the short term it isn't realistic to be considering changing it." - Vas Crabb
'''CPU cores'''
* Remove fake port addresses from MCU memory maps (use callbacks instead)
* Provide and improve emulation of MCU on-chip peripherals (timers are generally the most critical)


'''Slots'''
'''Slots'''
* Come up with a clean way to allow devices to have multiple slot connectors
* Come up with a clean way to allow devices to have multiple slot connectors
'''Input'''
* Decouple input port updates from video frame rate
* Make natural keyboard cooperate better with matrix scanning keyboards
* External files for defining button names


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


'''Rendering'''
'''Rendering'''
Line 21: Line 40:
* 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 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.
* 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.
'''Lua'''
* Offload more secondary frontend/UI functions to Lua scripts
* Add tools necessary for TASing
* Add scripting hooks for autopatching ROMs/image files

Latest revision as of 03:56, 16 September 2017

Return to the main Frequently Asked Questions page.

What are the current technical goals of the MAME project?

Global

  • Use modern C++ to replace macros and platform-specific code wherever possible
  • Eliminate remaining static variables in drivers and devices
  • Replace global_alloc/auto_alloc/pool_alloc with smart pointers


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
  • Convert the remaining devices that use the old floppy system
  • Substitute proper IRQ acking for HOLD_LINE
  • "MAME doesn't really provide a way to run with no machine loaded. Changing this would be a huge amount of work. It would be nice as a long-term goal, but in the short term it isn't realistic to be considering changing it." - Vas Crabb


CPU cores

  • Remove fake port addresses from MCU memory maps (use callbacks instead)
  • Provide and improve emulation of MCU on-chip peripherals (timers are generally the most critical)


Slots

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


Input

  • Decouple input port updates from video frame rate
  • Make natural keyboard cooperate better with matrix scanning keyboards
  • External files for defining button names


UI

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


Rendering

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.


Lua

  • Offload more secondary frontend/UI functions to Lua scripts
  • Add tools necessary for TASing
  • Add scripting hooks for autopatching ROMs/image files