Okay, a breakthrough!
I recently upgraded my core from 070.4, to 0710 beta 3, and set up a dev environment on it.
I then went through the following steps:
* Defined device templates for MAME Plugin and MAME player, taking their equivalent parameters from the Xine pair.
* built and ran DCEGen on the new templates
* built and ran sql2cpp, to update all constants.
* built the initial stubs to make sure the build is stable, copied them into /usr/pluto/bin
* added the MAME Plugin as a child to the DCE Router
* added the MAME Player as a child to the primary orbiter, making sure the entertainment areas are properly mapped.
* removed unnecessary methods not needed for standalone use.
* implemented the Register, FindDeviceInEntertainmentArea, CreateMediaStream, StartMedia, StopMedia methods patterning after the Xine Plugin
* implemented MAMEMediaStream subclass
* added my new stream type to MediaHandlerInfo.h in Media_Plugin
* added new row to MediaType for the new media type.
* added new row to DeviceTemplate_Mediatype, pointing to the MAME Player
* added new row to MediaType_DesignObj, patterning after Xine player for now
* added new rows to the appropriate fields in Media database.
* added new scenario to trigger local orbiter->Show File List for my new media type.
* force reload router (any time plugin is compiled, router reload must be forced)
As of now, the file list appears, I can select a game, and it will trigger the CreateMediaStream and StartMedia methods in my plugin, updating the Orbiter display as needed. This works great. Now I have to start implementing the various methods in the MAME_Player to launch mame, and swallow the window correctly.
more to come soon.