summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/mconfig.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/mconfig.h')
-rw-r--r--src/emu/mconfig.h100
1 files changed, 47 insertions, 53 deletions
diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h
index e6f1ce0e262..089d1c6fc5d 100644
--- a/src/emu/mconfig.h
+++ b/src/emu/mconfig.h
@@ -28,11 +28,6 @@
/* ----- flags for video_attributes ----- */
-/* is the video hardware raster or vector based? */
-#define VIDEO_TYPE_NONE 0x0000
-#define VIDEO_TYPE_RASTER 0x0001
-#define VIDEO_TYPE_VECTOR 0x0002
-
/* should VIDEO_UPDATE by called at the start of VBLANK or at the end? */
#define VIDEO_UPDATE_BEFORE_VBLANK 0x0000
#define VIDEO_UPDATE_AFTER_VBLANK 0x0004
@@ -81,7 +76,6 @@ struct _machine_config
const gfx_decode_entry *gfxdecodeinfo; /* pointer to array of graphics decoding information */
UINT32 total_colors; /* total number of colors in the palette */
const char * default_layout; /* default layout for this machine */
- screen_config screen[MAX_SCREENS]; /* total number of screens */
void (*init_palette)(running_machine *machine, const UINT8 *color_prom); /* one-time palette init callback */
void (*video_start)(running_machine *machine); /* one-time video start callback */
@@ -115,11 +109,9 @@ struct _machine_config
{ \
cpu_config *cpu = NULL; \
sound_config *sound = NULL; \
- screen_config *screen = &machine->screen[0]; \
device_config *device = NULL; \
(void)cpu; \
(void)sound; \
- (void)screen; \
(void)device; \
#define MACHINE_DRIVER_END \
@@ -131,6 +123,23 @@ struct _machine_config
construct_##game(machine); \
+/* add/remove/config devices */
+#define MDRV_DEVICE_ADD(_tag, _type) \
+ device = device_list_add(&machine->devicelist, _type, _tag); \
+
+#define MDRV_DEVICE_REMOVE(_tag, _type) \
+ device_list_remove(&machine->devicelist, _type, _tag); \
+
+#define MDRV_DEVICE_MODIFY(_tag, _type) \
+ device = (device_config *)device_list_find_by_tag(machine->devicelist, _type, _tag); \
+
+#define MDRV_DEVICE_CONFIG(_config) \
+ device->static_config = &(_config); \
+
+#define MDRV_DEVICE_CONFIG_DATA(_struct, _field, _val) \
+ ((_struct *)device->inline_config)->_field = (_val); \
+
+
/* add/modify/remove/replace CPUs */
#define MDRV_CPU_ADD_TAG(tag, type, clock) \
cpu = machine_config_add_cpu(machine, (tag), CPU_##type, (clock)); \
@@ -256,50 +265,54 @@ struct _machine_config
/* add/remove screens */
-#define MDRV_SCREEN_ADD(tag, palbase) \
- screen = machine_config_add_screen(machine, (tag), (palbase)); \
+#define MDRV_SCREEN_ADD(tag, _type) \
+ MDRV_DEVICE_ADD(tag, VIDEO_SCREEN) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, type, SCREEN_TYPE_##_type) \
#define MDRV_SCREEN_REMOVE(tag) \
- machine_config_remove_screen(machine, tag); \
+ MDRV_DEVICE_REMOVE(tag, VIDEO_SCREEN) \
#define MDRV_SCREEN_MODIFY(tag) \
- screen = machine_config_find_screen(machine, tag); \
+ MDRV_DEVICE_MODIFY(tag, VIDEO_SCREEN) \
#define MDRV_SCREEN_FORMAT(_format) \
- screen->defstate.format = (_format); \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.format, _format) \
+
+#define MDRV_SCREEN_TYPE(_type) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, type, SCREEN_TYPE_##_type) \
#define MDRV_SCREEN_RAW_PARAMS(pixclock, htotal, hbend, hbstart, vtotal, vbend, vbstart) \
- screen->defstate.refresh = HZ_TO_ATTOSECONDS(pixclock) * (htotal) * (vtotal); \
- screen->defstate.vblank = (screen->defstate.refresh / (vtotal)) * ((vtotal) - ((vbstart) - (vbend))); \
- screen->defstate.width = (htotal); \
- screen->defstate.height = (vtotal); \
- screen->defstate.visarea.min_x = (hbend); \
- screen->defstate.visarea.max_x = (hbstart) - 1; \
- screen->defstate.visarea.min_y = (vbend); \
- screen->defstate.visarea.max_y = (vbstart) - 1; \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.refresh, HZ_TO_ATTOSECONDS(pixclock) * (htotal) * (vtotal)) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.vblank, ((HZ_TO_ATTOSECONDS(pixclock) * (htotal) * (vtotal)) / (vtotal)) * ((vtotal) - ((vbstart) - (vbend)))) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.width, htotal) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.height, vtotal) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.min_x, hbend) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.max_x, (hbstart) - 1) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.min_y, vbend) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.max_y, (vbstart) - 1) \
#define MDRV_SCREEN_REFRESH_RATE(rate) \
- screen->defstate.refresh = HZ_TO_ATTOSECONDS(rate); \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.refresh, HZ_TO_ATTOSECONDS(rate)) \
#define MDRV_SCREEN_VBLANK_TIME(time) \
- screen->defstate.vblank = time; \
- screen->defstate.oldstyle_vblank_supplied = 1; \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.vblank, time) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.oldstyle_vblank_supplied, TRUE) \
#define MDRV_SCREEN_SIZE(_width, _height) \
- screen->defstate.width = (_width); \
- screen->defstate.height = (_height); \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.width, _width) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.height, _height) \
#define MDRV_SCREEN_VISIBLE_AREA(minx, maxx, miny, maxy) \
- screen->defstate.visarea.min_x = (minx); \
- screen->defstate.visarea.max_x = (maxx); \
- screen->defstate.visarea.min_y = (miny); \
- screen->defstate.visarea.max_y = (maxy); \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.min_x, minx) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.max_x, maxx) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.min_y, miny) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, defstate.visarea.max_y, maxy) \
#define MDRV_SCREEN_DEFAULT_POSITION(_xscale, _xoffs, _yscale, _yoffs) \
- screen->xoffset = (float)(_xoffs); \
- screen->xscale = (float)(_xscale); \
- screen->yoffset = (float)(_yoffs); \
- screen->yscale = (float)(_yscale); \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, xoffset, (float)(_xoffs)) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, xscale, (float)(_xscale)) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, yoffset, (float)(_yoffs)) \
+ MDRV_DEVICE_CONFIG_DATA(screen_config, yscale, (float)(_yscale)) \
/* add/remove speakers */
@@ -367,21 +380,6 @@ struct _machine_config
MDRV_SOUND_ROUTE_EX(_output, _target, _gain, -1) \
-/* add/remove devices */
-#define MDRV_DEVICE_ADD(_tag, _type, _clock) \
- device = device_list_add(&machine->devicelist, _type, _tag); \
- device->clock = (_clock); \
-
-#define MDRV_DEVICE_REMOVE(_tag, _type) \
- device_list_remove(&machine->devicelist, _type, _tag); \
-
-#define MDRV_DEVICE_MODIFY(_tag, _type) \
- device = device_list_find_by_tag(&machine->devicelist, _type, _tag);\
-
-#define MDRV_DEVICE_CONFIG(_config) \
- device->static_config = &(_config); \
-
-
/***************************************************************************
FUNCTION PROTOTYPES
@@ -412,9 +410,5 @@ sound_config *machine_config_add_sound(machine_config *machine, const char *tag,
sound_config *machine_config_find_sound(machine_config *machine, const char *tag);
void machine_config_remove_sound(machine_config *machine, const char *tag);
-screen_config *machine_config_add_screen(machine_config *machine, const char *tag, int palbase);
-screen_config *machine_config_find_screen(machine_config *machine, const char *tag);
-void machine_config_remove_screen(machine_config *machine, const char *tag);
-
#endif /* __MCONFIG_H__ */