diff options
Diffstat (limited to 'src/osd/osdepend.h')
-rw-r--r-- | src/osd/osdepend.h | 165 |
1 files changed, 37 insertions, 128 deletions
diff --git a/src/osd/osdepend.h b/src/osd/osdepend.h index 467642bb8f6..a344482d4f1 100644 --- a/src/osd/osdepend.h +++ b/src/osd/osdepend.h @@ -35,30 +35,6 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -**************************************************************************** - - The prototypes in this file describe the interfaces that the MAME core - relies upon to interact with the outside world. They are broken out into - several categories. - - The general flow for an OSD port of MAME is as follows: - - - parse the command line or display the frontend - - call run_game (mame.c) with the index in the driver list of - the game selected - - osd_init() is called shortly afterwards; at this time, you are - expected to set up the display system and create render_targets - - the input system will call osd_get_code_list() - - the input port system will call osd_customize_inputport_list() - - the sound system will call osd_start_audio_stream() - - while the game runs, osd_update() will be called periodically - - when the game exits, we return from run_game() - - the OSD layer is now in control again - - This process is expected to be in flux over the next several versions - (this was written during 0.109u2 development) as some of the OSD - responsibilities are pushed into the core. - *******************************************************************c********/ #pragma once @@ -70,114 +46,47 @@ #include "osdcore.h" +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// forward references class input_type_desc; class device_t; -/*----------------------------------------------------------------------------- - osd_init: initialize the OSD system. - - Parameters: - - machine - pointer to a structure that contains parameters for the - current "machine" - - Return value: - - None - - Notes: - - This function is responsible for initializing the OSD-specific - video and input functionality, and registering that functionality - with the MAME core. - - In terms of video, this function is expected to create one or more - render_targets that will be used by the MAME core to provide graphics - data to the system. Although it is possible to do this later, the - assumption in the MAME core is that the user interface will be - visible starting at osd_init() time, so you will have some work to - do to avoid these assumptions. - - In terms of input, this function is expected to enumerate all input - devices available and describe them to the MAME core by adding - input devices and their attached items (buttons/axes) via the input - system. - - Beyond these core responsibilities, osd_init() should also initialize - any other OSD systems that require information about the current - running_machine. - - This callback is also the last opportunity to adjust the options - before they are consumed by the rest of the core. - - Note that there is no corresponding osd_exit(). Rather, like most - systems in MAME, you can register an exit callback via the - add_notifier() function in mame.c. - - Also note that there is no return value. If you need to report a - fatal error, use the fatalerror() function with a friendly message - to the user. - - Future work/changes: - - Audio initialization may eventually move into here as well, - instead of relying on independent callbacks from each system. ------------------------------------------------------------------------------*/ -void osd_init(running_machine *machine); - -void osd_init_debugger(running_machine *machine); -void osd_wait_for_debugger(device_t *device, int firststop); - - - -/****************************************************************************** - - Display - -******************************************************************************/ - -void osd_update(running_machine *machine, int skip_redraw); - - - - -/****************************************************************************** - - Sound - -******************************************************************************/ - -void osd_update_audio_stream(running_machine *machine, INT16 *buffer, int samples_this_frame); - -/* - control master volume. attenuation is the attenuation in dB (a negative - number). To convert from dB to a linear volume scale do the following: - volume = MAX_VOLUME; - while (attenuation++ < 0) - volume /= 1.122018454; // = (10 ^ (1/20)) = 1dB -*/ -void osd_set_mastervolume(int attenuation); - - - -/****************************************************************************** - - Controls - -******************************************************************************/ - -/* - inptport.c defines some general purpose defaults for key and joystick bindings. - They may be further adjusted by the OS dependent code to better match the - available keyboard, e.g. one could map pause to the Pause key instead of P, or - snapshot to PrtScr instead of F12. Of course the user can further change the - settings to anything he/she likes. - This function is called on startup, before reading the configuration from disk. - Scan the list, and change the keys/joysticks you want. -*/ -void osd_customize_input_type_list(input_type_desc *typelist); - +// ======================> osd_interface + +// description of the currently-running machine +class osd_interface +{ +public: + // construction/destruction + osd_interface(); + virtual ~osd_interface(); + + // getters + running_machine &machine() const { assert(m_machine != NULL); return *m_machine; } + + // general overridables + virtual void init(running_machine &machine); + virtual void update(bool skip_redraw); + + // debugger overridables + virtual void init_debugger(); + virtual void wait_for_debugger(device_t &device, bool firststop); + + // audio overridables + virtual void update_audio_stream(const INT16 *buffer, int samples_this_frame); + virtual void set_mastervolume(int attenuation); + + // input overridables + virtual void customize_input_type_list(input_type_desc *typelist); + +private: + // internal state + running_machine * m_machine; +}; #endif /* __OSDEPEND_H__ */ |