summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/mame.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/mame.h')
-rw-r--r--trunk/src/emu/mame.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/trunk/src/emu/mame.h b/trunk/src/emu/mame.h
new file mode 100644
index 00000000000..081b1e7a421
--- /dev/null
+++ b/trunk/src/emu/mame.h
@@ -0,0 +1,166 @@
+/***************************************************************************
+
+ mame.h
+
+ Controls execution of the core MAME system.
+
+ Copyright Nicola Salmoria and the MAME Team.
+ Visit http://mamedev.org for licensing and usage restrictions.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef __MAME_H__
+#define __MAME_H__
+
+#include <time.h>
+
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+// return values from run_game
+enum
+{
+ MAMERR_NONE = 0, /* no error */
+ MAMERR_FAILED_VALIDITY = 1, /* failed validity checks */
+ MAMERR_MISSING_FILES = 2, /* missing files */
+ MAMERR_FATALERROR = 3, /* some other fatal error */
+ MAMERR_DEVICE = 4, /* device initialization error (MESS-specific) */
+ MAMERR_NO_SUCH_GAME = 5, /* game was specified but doesn't exist */
+ MAMERR_INVALID_CONFIG = 6, /* some sort of error in configuration */
+ MAMERR_IDENT_NONROMS = 7, /* identified all non-ROM files */
+ MAMERR_IDENT_PARTIAL = 8, /* identified some files but not all */
+ MAMERR_IDENT_NONE = 9 /* identified no files */
+};
+
+
+// MESS vs. MAME abstractions
+#ifndef MESS
+#define APPNAME "MAME"
+#define APPNAME_LOWER "mame"
+#define CONFIGNAME "mame"
+#define APPLONGNAME "M.A.M.E."
+#define FULLLONGNAME "Multiple Arcade Machine Emulator"
+#define CAPGAMENOUN "GAME"
+#define CAPSTARTGAMENOUN "Game"
+#define GAMENOUN "game"
+#define GAMESNOUN "games"
+#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttp://mamedev.org"
+#define COPYRIGHT_INFO "Copyright Nicola Salmoria and the MAME team"
+#define DISCLAIMER "MAME is an emulator: it reproduces, more or less faithfully, the behaviour of\n" \
+ "several arcade machines. But hardware is useless without software, so an image\n" \
+ "of the ROMs which run on that hardware is required. Such ROMs, like any other\n" \
+ "commercial software, are copyrighted material and it is therefore illegal to\n" \
+ "use them if you don't own the original arcade machine. Needless to say, ROMs\n" \
+ "are not distributed together with MAME. Distribution of MAME together with ROM\n" \
+ "images is a violation of copyright law and should be promptly reported to the\n" \
+ "authors so that appropriate legal action can be taken.\n"
+#define USAGE "Usage: %s [%s] [options]"
+#define XML_ROOT "mame"
+#define XML_TOP "game"
+#define STATE_MAGIC_NUM 'M', 'A', 'M', 'E', 'S', 'A', 'V', 'E'
+#else
+#define APPNAME "MESS"
+#define APPNAME_LOWER "mess"
+#define CONFIGNAME "mess"
+#define APPLONGNAME "M.E.S.S."
+#define FULLLONGNAME "Multi Emulator Super System"
+#define CAPGAMENOUN "SYSTEM"
+#define CAPSTARTGAMENOUN "System"
+#define GAMENOUN "system"
+#define GAMESNOUN "systems"
+#define COPYRIGHT "Copyright the MESS team\nhttp://mess.org"
+#define COPYRIGHT_INFO "Copyright the MESS team\n\n" \
+ "MESS is based on MAME Source code\n" \
+ "Copyright Nicola Salmoria and the MAME team"
+#define DISCLAIMER "MESS is an emulator: it reproduces, more or less faithfully, the behaviour of\n"\
+ "several computer and console systems. But hardware is useless without software\n" \
+ "so a file dump of the ROM, cartridges, discs, and cassettes which run on that\n" \
+ "hardware is required. Such files, like any other commercial software, are\n" \
+ "copyrighted material and it is therefore illegal to use them if you don't own\n" \
+ "the original media from which the files are derived. Needless to say, these\n" \
+ "files are not distributed together with MESS. Distribution of MESS together\n" \
+ "with these files is a violation of copyright law and should be promptly\n" \
+ "reported to the authors so that appropriate legal action can be taken.\n"
+#define USAGE "Usage: %s [%s] [media] [software] [options]"
+#define XML_ROOT "mess"
+#define XML_TOP "machine"
+#define STATE_MAGIC_NUM 'M', 'E', 'S', 'S', 'S', 'A', 'V', 'E'
+#endif
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// output channel callback
+typedef void (*output_callback_func)(void *param, const char *format, va_list argptr);
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+extern const char build_version[];
+
+
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+
+/* ----- core system management ----- */
+
+/* execute as configured by the OPTION_SYSTEMNAME option on the specified options */
+int mame_execute(emu_options &options, osd_interface &osd);
+
+/* return true if the given machine is valid */
+int mame_is_valid_machine(running_machine &machine);
+
+
+
+/* ----- output management ----- */
+
+/* set the output handler for a channel, returns the current one */
+void mame_set_output_channel(output_channel channel, output_callback_func callback, void *param, output_callback_func *prevcb, void **prevparam);
+
+/* built-in default callbacks */
+void mame_file_output_callback(void *param, const char *format, va_list argptr);
+void mame_null_output_callback(void *param, const char *format, va_list argptr);
+
+/* calls to be used by the code */
+void mame_printf_error(const char *format, ...) ATTR_PRINTF(1,2);
+void mame_printf_warning(const char *format, ...) ATTR_PRINTF(1,2);
+void mame_printf_info(const char *format, ...) ATTR_PRINTF(1,2);
+void mame_printf_verbose(const char *format, ...) ATTR_PRINTF(1,2);
+void mame_printf_debug(const char *format, ...) ATTR_PRINTF(1,2);
+
+/* discourage the use of printf directly */
+/* sadly, can't do this because of the ATTR_PRINTF under GCC */
+/*
+#undef printf
+#define printf !MUST_USE_MAME_PRINTF_*_CALLS_WITHIN_THE_CORE!
+*/
+
+
+/* ----- miscellaneous bits & pieces ----- */
+
+// pop-up a user visible message
+void CLIB_DECL popmessage(const char *format,...) ATTR_PRINTF(1,2);
+
+// log to the standard error.log file
+void CLIB_DECL logerror(const char *format,...) ATTR_PRINTF(1,2);
+
+
+#endif /* __MAME_H__ */