summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Zsolt Vasvari <zsoltvas@mamedev.org>2008-03-11 08:37:05 +0000
committer Zsolt Vasvari <zsoltvas@mamedev.org>2008-03-11 08:37:05 +0000
commit77a58d253c7802b6210cea49c472ae014807af23 (patch)
tree0bd68096ba1191f5683a86ba5fad9388403e0581
parentbf88dd74e3f02e2047fa50fdb0692e47a935dffd (diff)
- First batch of machine->screen[] access has been removed
- Added video_screen_auto_bitmap_alloc(screen) -- it is just a shorthand for auto_bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen)) which is a common operation - The Dynax/Don Den Lover games now do their updating in VIDEO_UPDATE instead of VIDEO_EOF. This semmed to have fixed the palette problems - Went through some of these drivers and changed Machine to machine
-rw-r--r--src/emu/cheat.c12
-rw-r--r--src/emu/render.h2
-rw-r--r--src/emu/tilemap.c4
-rw-r--r--src/emu/ui.c34
-rw-r--r--src/emu/uigfx.c2
-rw-r--r--src/emu/video.h10
-rw-r--r--src/emu/video/generic.c18
-rw-r--r--src/emu/video/tms9928a.c5
-rw-r--r--src/mame/drivers/alg.c13
-rw-r--r--src/mame/drivers/blstroid.c8
-rw-r--r--src/mame/drivers/cps3.c111
-rw-r--r--src/mame/drivers/ddenlovr.c97
-rw-r--r--src/mame/drivers/ddragon.c5
-rw-r--r--src/mame/drivers/deco32.c2
-rw-r--r--src/mame/drivers/dgpix.c4
-rw-r--r--src/mame/drivers/dlair.c4
-rw-r--r--src/mame/drivers/dynax.c4
-rw-r--r--src/mame/drivers/filetto.c3
-rw-r--r--src/mame/drivers/fuukifg2.c12
-rw-r--r--src/mame/drivers/fuukifg3.c12
-rw-r--r--src/mame/drivers/hitme.c2
-rw-r--r--src/mame/drivers/hornet.c10
-rw-r--r--src/mame/drivers/igs_blit.c4
-rw-r--r--src/mame/drivers/igs_m027.c2
-rw-r--r--src/mame/drivers/laserbat.c9
-rw-r--r--src/mame/drivers/lastfght.c2
-rw-r--r--src/mame/drivers/legionna.c3
-rw-r--r--src/mame/drivers/m107.c4
-rw-r--r--src/mame/drivers/m72.c2
-rw-r--r--src/mame/drivers/m92.c4
-rw-r--r--src/mame/drivers/marinedt.c6
-rw-r--r--src/mame/drivers/mazerbla.c8
-rw-r--r--src/mame/drivers/megadriv.c2
-rw-r--r--src/mame/drivers/midzeus.c4
-rw-r--r--src/mame/drivers/mlanding.c2
-rw-r--r--src/mame/drivers/mogura.c12
-rw-r--r--src/mame/drivers/namcofl.c4
-rw-r--r--src/mame/drivers/rabbit.c4
-rw-r--r--src/mame/drivers/sbowling.c2
-rw-r--r--src/mame/drivers/sbrkout.c6
-rw-r--r--src/mame/drivers/segae.c2
-rw-r--r--src/mame/drivers/segaorun.c2
-rw-r--r--src/mame/drivers/skullxbo.c8
-rw-r--r--src/mame/drivers/sliver.c4
-rw-r--r--src/mame/drivers/srmp5.c3
-rw-r--r--src/mame/drivers/tickee.c6
-rw-r--r--src/mame/drivers/tmaster.c2
-rw-r--r--src/mame/drivers/wheelfir.c16
-rw-r--r--src/mame/drivers/zn.c2
-rw-r--r--src/mame/includes/dynax.h3
-rw-r--r--src/mame/machine/atarigen.c17
-rw-r--r--src/mame/machine/atarigen.h2
-rw-r--r--src/mame/video/dynax.c15
53 files changed, 258 insertions, 278 deletions
diff --git a/src/emu/cheat.c b/src/emu/cheat.c
index 5751a03fb38..d9ceb968701 100644
--- a/src/emu/cheat.c
+++ b/src/emu/cheat.c
@@ -9414,12 +9414,12 @@ static void HandleLocalCommandCheat(running_machine *machine, UINT32 type, UINT3
/* ----- refresh rate ----- */
case kCustomLocation_RefreshRate:
{
- screen_state *state = &machine->screen[0];
- double refresh = data;
+ int width = video_screen_get_width(machine->primary_screen);
+ int height = video_screen_get_height(machine->primary_screen);
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ double refresh = data / 65536.0;
- refresh /= 65536.0;
-
- video_screen_configure(machine->primary_screen, state->width, state->height, &state->visarea, HZ_TO_ATTOSECONDS(refresh));
+ video_screen_configure(machine->primary_screen, width, height, visarea, HZ_TO_ATTOSECONDS(refresh));
}
break;
}
@@ -10468,7 +10468,7 @@ static UINT8 ** LookupHandlerMemory(UINT8 cpu, UINT32 address, UINT32 * outRelat
{
const address_map * map = memory_get_map(cpu, ADDRESS_SPACE_PROGRAM);
const address_map_entry *entry;
-
+
for (entry = map->entrylist; entry != NULL; entry = entry->next)
if (entry->write.handler != NULL && (address >= entry->addrstart) && (address <= entry->addrend))
{
diff --git a/src/emu/render.h b/src/emu/render.h
index 7ca5f2ffd37..def4516e058 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -465,7 +465,7 @@ void render_container_set_overlay(render_container *container, bitmap_t *bitmap)
/* return a pointer to the UI container */
render_container *render_container_get_ui(void);
-/* return a pointer to the indexed screen container */
+/* return a pointer to the container for the given screen */
render_container *render_container_get_screen(const device_config *screen);
/* set the opacity of a given palette entry */
diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c
index 67d33907f0e..809b4fec858 100644
--- a/src/emu/tilemap.c
+++ b/src/emu/tilemap.c
@@ -263,8 +263,8 @@ INLINE tilemap *indexed_tilemap(int index)
void tilemap_init(running_machine *machine)
{
- screen_width = machine->screen[0].width;
- screen_height = machine->screen[0].height;
+ screen_width = video_screen_get_width(machine->primary_screen);
+ screen_height = video_screen_get_height(machine->primary_screen);
if (screen_width != 0 && screen_height != 0)
{
diff --git a/src/emu/ui.c b/src/emu/ui.c
index d20ca508d08..6d024a5d12f 100644
--- a/src/emu/ui.c
+++ b/src/emu/ui.c
@@ -153,7 +153,7 @@ static INT32 slider_xoffset(running_machine *machine, INT32 newval, char *buffer
static INT32 slider_yoffset(running_machine *machine, INT32 newval, char *buffer, int arg);
static INT32 slider_flicker(running_machine *machine, INT32 newval, char *buffer, int arg);
static INT32 slider_beam(running_machine *machine, INT32 newval, char *buffer, int arg);
-static char *slider_get_screen_desc(int arg);
+static char *slider_get_screen_desc(const device_config *screen);
#ifdef MAME_DEBUG
static INT32 slider_crossscale(running_machine *machine, INT32 newval, char *buffer, int arg);
static INT32 slider_crossoffset(running_machine *machine, INT32 newval, char *buffer, int arg);
@@ -1115,20 +1115,23 @@ int sprintf_game_info(char *buffer)
for (screen = video_screen_first(Machine->config); screen != NULL; screen = video_screen_next(screen))
{
- int index = device_list_index(Machine->config->devicelist, VIDEO_SCREEN, screen->tag);
const screen_config *scrconfig = screen->inline_config;
if (scrcount > 1)
- bufptr += sprintf(bufptr, "%s: ", slider_get_screen_desc(index));
+ bufptr += sprintf(bufptr, "%s: ", slider_get_screen_desc(screen));
if (scrconfig->type == SCREEN_TYPE_VECTOR)
bufptr += sprintf(bufptr, "Vector\n");
else
+ {
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+
bufptr += sprintf(bufptr, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
- Machine->screen[index].visarea.max_x - Machine->screen[index].visarea.min_x + 1,
- Machine->screen[index].visarea.max_y - Machine->screen[index].visarea.min_y + 1,
+ visarea->max_x - visarea->min_x + 1,
+ visarea->max_y - visarea->min_y + 1,
(Machine->gamedrv->flags & ORIENTATION_SWAP_XY) ? "V" : "H",
ATTOSECONDS_TO_HZ(video_screen_get_frame_period(screen).attoseconds));
+ }
}
}
@@ -1748,7 +1751,7 @@ static INT32 slider_refresh(running_machine *machine, INT32 newval, char *buffer
const rectangle *visarea = video_screen_get_visible_area(screen);
video_screen_configure(screen, width, height, visarea, HZ_TO_ATTOSECONDS(defrefresh + (double)newval * 0.001));
- sprintf(buffer, "%s Refresh Rate %.3ffps", slider_get_screen_desc(arg), ATTOSECONDS_TO_HZ(video_screen_get_frame_period(machine->primary_screen).attoseconds));
+ sprintf(buffer, "%s Refresh Rate %.3ffps", slider_get_screen_desc(screen), ATTOSECONDS_TO_HZ(video_screen_get_frame_period(machine->primary_screen).attoseconds));
}
refresh = ATTOSECONDS_TO_HZ(video_screen_get_frame_period(machine->primary_screen).attoseconds);
return floor((refresh - defrefresh) * 1000.0f + 0.5f);
@@ -1767,7 +1770,7 @@ static INT32 slider_brightness(running_machine *machine, INT32 newval, char *buf
if (buffer != NULL)
{
render_container_set_brightness(container, (float)newval * 0.001f);
- sprintf(buffer, "%s Brightness %.3f", slider_get_screen_desc(arg), render_container_get_brightness(container));
+ sprintf(buffer, "%s Brightness %.3f", slider_get_screen_desc(screen), render_container_get_brightness(container));
}
return floor(render_container_get_brightness(container) * 1000.0f + 0.5f);
}
@@ -1785,7 +1788,7 @@ static INT32 slider_contrast(running_machine *machine, INT32 newval, char *buffe
if (buffer != NULL)
{
render_container_set_contrast(container, (float)newval * 0.001f);
- sprintf(buffer, "%s Contrast %.3f", slider_get_screen_desc(arg), render_container_get_contrast(container));
+ sprintf(buffer, "%s Contrast %.3f", slider_get_screen_desc(screen), render_container_get_contrast(container));
}
return floor(render_container_get_contrast(container) * 1000.0f + 0.5f);
}
@@ -1802,7 +1805,7 @@ static INT32 slider_gamma(running_machine *machine, INT32 newval, char *buffer,
if (buffer != NULL)
{
render_container_set_gamma(container, (float)newval * 0.001f);
- sprintf(buffer, "%s Gamma %.3f", slider_get_screen_desc(arg), render_container_get_gamma(container));
+ sprintf(buffer, "%s Gamma %.3f", slider_get_screen_desc(screen), render_container_get_gamma(container));
}
return floor(render_container_get_gamma(container) * 1000.0f + 0.5f);
}
@@ -1820,7 +1823,7 @@ static INT32 slider_xscale(running_machine *machine, INT32 newval, char *buffer,
if (buffer != NULL)
{
render_container_set_xscale(container, (float)newval * 0.001f);
- sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(arg), "Horiz Stretch", render_container_get_xscale(container));
+ sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Stretch", render_container_get_xscale(container));
}
return floor(render_container_get_xscale(container) * 1000.0f + 0.5f);
}
@@ -1838,7 +1841,7 @@ static INT32 slider_yscale(running_machine *machine, INT32 newval, char *buffer,
if (buffer != NULL)
{
render_container_set_yscale(container, (float)newval * 0.001f);
- sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(arg), "Vert Stretch", render_container_get_yscale(container));
+ sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Stretch", render_container_get_yscale(container));
}
return floor(render_container_get_yscale(container) * 1000.0f + 0.5f);
}
@@ -1856,7 +1859,7 @@ static INT32 slider_xoffset(running_machine *machine, INT32 newval, char *buffer
if (buffer != NULL)
{
render_container_set_xoffset(container, (float)newval * 0.001f);
- sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(arg), "Horiz Position", render_container_get_xoffset(container));
+ sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Position", render_container_get_xoffset(container));
}
return floor(render_container_get_xoffset(container) * 1000.0f + 0.5f);
}
@@ -1874,7 +1877,7 @@ static INT32 slider_yoffset(running_machine *machine, INT32 newval, char *buffer
if (buffer != NULL)
{
render_container_set_yoffset(container, (float)newval * 0.001f);
- sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(arg), "Vert Position", render_container_get_yoffset(container));
+ sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Position", render_container_get_yoffset(container));
}
return floor(render_container_get_yoffset(container) * 1000.0f + 0.5f);
}
@@ -1917,10 +1920,9 @@ static INT32 slider_beam(running_machine *machine, INT32 newval, char *buffer, i
description for a given screen index
-------------------------------------------------*/
-static char *slider_get_screen_desc(int arg)
+static char *slider_get_screen_desc(const device_config *screen)
{
- const device_config *screen = device_list_find_by_index(Machine->config->devicelist, VIDEO_SCREEN, arg);
- int screen_count = video_screen_count(Machine->config);
+ int screen_count = video_screen_count(screen->machine->config);
static char descbuf[256];
if (screen_count > 1)
diff --git a/src/emu/uigfx.c b/src/emu/uigfx.c
index 48bc0a0efc3..9c2f07718fb 100644
--- a/src/emu/uigfx.c
+++ b/src/emu/uigfx.c
@@ -1033,7 +1033,7 @@ static void tilemap_handle_keys(ui_gfx_state *state, int viswidth, int visheight
static void tilemap_update_bitmap(ui_gfx_state *state, int width, int height)
{
- bitmap_format screen_format = Machine->screen[0].format;
+ bitmap_format screen_format = video_screen_get_format(Machine->primary_screen);
int screen_texformat;
/* convert the screen format to a texture format */
diff --git a/src/emu/video.h b/src/emu/video.h
index 211f8a8414a..d073bf88d6a 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -14,6 +14,10 @@
#ifndef __VIDEO_H__
#define __VIDEO_H__
+#include "mamecore.h"
+#include "devintrf.h"
+#include "timer.h"
+
/***************************************************************************
CONSTANTS
@@ -47,6 +51,12 @@ enum
#define video_screen_first(config) device_list_first((config)->devicelist, VIDEO_SCREEN)
#define video_screen_next(previous) device_list_next((previous), VIDEO_SCREEN)
+#define video_screen_get_format(screen) (((screen_config *)(screen)->inline_config)->format)
+
+/* allocates a bitmap that has the same dimensions and format as the passed in screen */
+#define video_screen_auto_bitmap_alloc(screen) auto_bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen))
+
+
/***************************************************************************
diff --git a/src/emu/video/generic.c b/src/emu/video/generic.c
index c28ea7020c8..27cb7d483a5 100644
--- a/src/emu/video/generic.c
+++ b/src/emu/video/generic.c
@@ -313,7 +313,7 @@ void generic_video_init(running_machine *machine)
VIDEO_START( generic_bitmapped )
{
/* allocate the temporary bitmap */
- tmpbitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
+ tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
/* ensure the contents of the bitmap are saved */
state_save_register_bitmap("video", 0, "tmpbitmap", tmpbitmap);
@@ -450,8 +450,10 @@ void buffer_spriteram_2(UINT8 *ptr, int length)
static void updateflip(void)
{
- screen_state *state = &Machine->screen[0];
- rectangle visarea = state->visarea;
+ int width = video_screen_get_width(Machine->primary_screen);
+ int height = video_screen_get_height(Machine->primary_screen);
+ attoseconds_t period = video_screen_get_frame_period(Machine->primary_screen).attoseconds;
+ rectangle visarea = *video_screen_get_visible_area(Machine->primary_screen);
tilemap_set_flip(ALL_TILEMAPS,(TILEMAP_FLIPX & flip_screen_x) | (TILEMAP_FLIPY & flip_screen_y));
@@ -459,20 +461,20 @@ static void updateflip(void)
{
int temp;
- temp = state->width - visarea.min_x - 1;
- visarea.min_x = state->width - visarea.max_x - 1;
+ temp = width - visarea.min_x - 1;
+ visarea.min_x = width - visarea.max_x - 1;
visarea.max_x = temp;
}
if (flip_screen_y)
{
int temp;
- temp = state->height - visarea.min_y - 1;
- visarea.min_y = state->height - visarea.max_y - 1;
+ temp = height - visarea.min_y - 1;
+ visarea.min_y = height - visarea.max_y - 1;
visarea.max_y = temp;
}
- video_screen_configure(Machine->primary_screen, state->width, state->height, &visarea, video_screen_get_frame_period(Machine->primary_screen).attoseconds);
+ video_screen_configure(Machine->primary_screen, width, height, &visarea, period);
}
diff --git a/src/emu/video/tms9928a.c b/src/emu/video/tms9928a.c
index 395ccf17ec3..c943eab83e7 100644
--- a/src/emu/video/tms9928a.c
+++ b/src/emu/video/tms9928a.c
@@ -194,7 +194,8 @@ static void TMS9928A_start (running_machine *machine, const TMS9928a_interface *
tms.visarea.max_y = tms.top_border + 24*8 - 1 + MIN(intf->bordery, tms.bottom_border);
/* configure the screen if we weren't overridden */
- if (machine->screen[0].width == LEFT_BORDER+32*8+RIGHT_BORDER && machine->screen[0].height == TOP_BORDER_60HZ+24*8+BOTTOM_BORDER_60HZ)
+ if (video_screen_get_width(machine->primary_screen) == LEFT_BORDER+32*8+RIGHT_BORDER &&
+ video_screen_get_height(machine->primary_screen) == TOP_BORDER_60HZ+24*8+BOTTOM_BORDER_60HZ)
video_screen_configure(machine->primary_screen, LEFT_BORDER + 32*8 + RIGHT_BORDER, tms.top_border + 24*8 + tms.bottom_border, &tms.visarea, video_screen_get_frame_period(machine->primary_screen).attoseconds);
/* Video RAM */
@@ -206,7 +207,7 @@ static void TMS9928A_start (running_machine *machine, const TMS9928a_interface *
tms.dBackMem = (UINT8*)auto_malloc (IMAGE_SIZE);
/* back bitmap */
- tms.tmpbmp = auto_bitmap_alloc (256, 192, machine->screen[0].format);
+ tms.tmpbmp = auto_bitmap_alloc (256, 192, video_screen_get_format(machine->primary_screen));
TMS9928A_reset ();
tms.LimitSprites = 1;
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index bbc2fb9b525..3284f16dc9a 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -22,7 +22,6 @@
#include "driver.h"
#include "render.h"
-#include "deprecat.h"
#include "includes/amiga.h"
#include "machine/laserdsc.h"
@@ -47,16 +46,18 @@ static TIMER_CALLBACK( response_timer );
*
*************************************/
-static int get_lightgun_pos(int player, int *x, int *y)
+static int get_lightgun_pos(const device_config *screen, int player, int *x, int *y)
{
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+
int xpos = readinputportbytag_safe((player == 0) ? "GUN1X" : "GUN2X", -1);
int ypos = readinputportbytag_safe((player == 0) ? "GUN1Y" : "GUN2Y", -1);
if (xpos == -1 || ypos == -1)
return FALSE;
- *x = Machine->screen[0].visarea.min_x + xpos * (Machine->screen[0].visarea.max_x - Machine->screen[0].visarea.min_x + 1) / 255;
- *y = Machine->screen[0].visarea.min_y + ypos * (Machine->screen[0].visarea.max_y - Machine->screen[0].visarea.min_y + 1) / 255;
+ *x = visarea->min_x + xpos * (visarea->max_x - visarea->min_x + 1) / 255;
+ *y = visarea->min_y + ypos * (visarea->max_y - visarea->min_y + 1) / 255;
return TRUE;
}
@@ -78,7 +79,7 @@ static VIDEO_START( alg )
add_exit_callback(machine, video_cleanup);
/* allocate Amiga bitmap */
- amiga_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
+ amiga_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
/* standard video start */
VIDEO_START_CALL(amiga);
@@ -242,7 +243,7 @@ static CUSTOM_INPUT( lightgun_pos_r )
int x = 0, y = 0;
/* get the position based on the input select */
- get_lightgun_pos(input_select, &x, &y);
+ get_lightgun_pos(machine->primary_screen, input_select, &x, &y);
return (y << 8) | (x >> 2);
}
diff --git a/src/mame/drivers/blstroid.c b/src/mame/drivers/blstroid.c
index 0a66a92a6fd..bfa318330ed 100644
--- a/src/mame/drivers/blstroid.c
+++ b/src/mame/drivers/blstroid.c
@@ -48,6 +48,12 @@ static void update_interrupts(running_machine *machine)
}
+static WRITE16_HANDLER( blstroid_halt_until_hblank_0_w )
+{
+ atarigen_halt_until_hblank_0(machine->primary_screen);
+}
+
+
static MACHINE_RESET( blstroid )
{
atarigen_eeprom_reset();
@@ -91,7 +97,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xff8800, 0xff89ff) AM_MIRROR(0x7f8000) AM_WRITE(SMH_RAM) AM_BASE(&blstroid_priorityram)
AM_RANGE(0xff8a00, 0xff8a01) AM_MIRROR(0x7f81fe) AM_WRITE(atarigen_sound_w)
AM_RANGE(0xff8c00, 0xff8c01) AM_MIRROR(0x7f81fe) AM_WRITE(atarigen_sound_reset_w)
- AM_RANGE(0xff8e00, 0xff8e01) AM_MIRROR(0x7f81fe) AM_WRITE(atarigen_halt_until_hblank_0_w)
+ AM_RANGE(0xff8e00, 0xff8e01) AM_MIRROR(0x7f81fe) AM_WRITE(blstroid_halt_until_hblank_0_w)
AM_RANGE(0xff9400, 0xff9401) AM_MIRROR(0x7f83fe) AM_READ(atarigen_sound_r)
AM_RANGE(0xff9800, 0xff9801) AM_MIRROR(0x7f83f8) AM_READ(input_port_0_word_r)
AM_RANGE(0xff9804, 0xff9805) AM_MIRROR(0x7f83f8) AM_READ(input_port_1_word_r)
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index 5eb8dc884a7..cff42729d8a 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -330,7 +330,6 @@ Notes:
#include "driver.h"
#include "cdrom.h"
-#include "deprecat.h"
#include "cpu/sh2/sh2.h"
#include "machine/intelfsh.h"
#include "includes/cps3.h"
@@ -386,7 +385,7 @@ static rectangle renderbuffer_clip;
#define CPS3_TRANSPARENCY_PEN_INDEX 2
#define CPS3_TRANSPARENCY_PEN_INDEX_BLEND 3
-INLINE void cps3_drawgfxzoom( bitmap_t *dest_bmp,const gfx_element *gfx,
+INLINE void cps3_drawgfxzoom(running_machine *machine, bitmap_t *dest_bmp,const gfx_element *gfx,
unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
const rectangle *clip,int transparency,int transparent_color,
int scalex, int scaley,bitmap_t *pri_buffer,UINT32 pri_mask)
@@ -587,7 +586,7 @@ INLINE void cps3_drawgfxzoom( bitmap_t *dest_bmp,const gfx_element *gfx,
if (c&0x02) dest[x] |= 0x4000;
if (c&0x04) dest[x] |= 0x8000;
if (c&0x08) dest[x] |= 0x10000;
- if (c&0xf0) dest[x] |= mame_rand(Machine); // ?? not used?
+ if (c&0xf0) dest[x] |= mame_rand(machine); // ?? not used?
}
else
{
@@ -687,7 +686,7 @@ static const struct game_keys2 keys_table2[] =
{ 0 } // end of table
};
-static void cps3_decrypt_bios(void)
+static void cps3_decrypt_bios(running_machine *machine)
{
int i;
UINT32 *coderegion = (UINT32*)memory_region(REGION_USER1);
@@ -713,7 +712,7 @@ static void cps3_decrypt_bios(void)
/* Dump to file */
{
FILE *fp;
- const char *gamename = Machine->gamedrv->name;
+ const char *gamename = machine->gamedrv->name;
char filename[256];
sprintf(filename, "%s_bios.dump", gamename);
@@ -753,7 +752,7 @@ static DRIVER_INIT( cps3crpt )
++k;
}
- cps3_decrypt_bios();
+ cps3_decrypt_bios(machine);
decrypted_gamerom = auto_malloc(0x1000000);
/* just some NOPs for the game to execute if it crashes and starts executing unmapped addresses
@@ -812,7 +811,7 @@ static int cps3_ss_ram_is_dirty;
static UINT8* cps3_char_ram_dirty;
static int cps3_char_ram_is_dirty;
-static void cps3_set_mame_colours( int colournum, UINT16 data, UINT32 fadeval )
+static void cps3_set_mame_colours(running_machine *machine, int colournum, UINT16 data, UINT32 fadeval )
{
int r,g,b;
UINT16* dst = (UINT16*)cps3_colourram;
@@ -847,50 +846,9 @@ static void cps3_set_mame_colours( int colournum, UINT16 data, UINT32 fadeval )
cps3_mame_colours[colournum] = (r << (16+3)) | (g << (8+3)) | (b << (0+3));
- if (colournum<0x10000) palette_set_color(Machine,colournum,cps3_mame_colours[colournum]/* MAKE_RGB(r<<3,g<<3,b<<3)*/);//cps3_mame_colours[colournum]);
+ if (colournum<0x10000) palette_set_color(machine,colournum,cps3_mame_colours[colournum]/* MAKE_RGB(r<<3,g<<3,b<<3)*/);//cps3_mame_colours[colournum]);
}
-#ifdef UNUSED_FUNCTION
-static void decode_ssram(void)
-{
- if (cps3_ss_ram_dirty)
- {
- int i;
- for (i=0;i<0x400;i++)
- {
- if (cps3_ss_ram_dirty[i])
- {
- decodechar(Machine->gfx[0], i, (UINT8*)cps3_ss_ram);
- cps3_ss_ram_dirty[i] = 0;
- }
- }
-
- cps3_ss_ram_is_dirty = 0;
- }
-
- return;
-}
-
-static void decode_charram(void)
-{
- if (cps3_char_ram_is_dirty)
- {
- int i;
- for (i=0;i<0x8000;i++)
- {
- if (cps3_char_ram_dirty[i])
- {
- decodechar(Machine->gfx[1], i, (UINT8*)cps3_char_ram);
- cps3_char_ram_dirty[i] = 0;
- }
- }
-
- cps3_char_ram_is_dirty = 0;
- }
-
- return;
-}
-#endif
static VIDEO_START(cps3)
{
@@ -928,7 +886,7 @@ static VIDEO_START(cps3)
// the renderbuffer can be twice the size of the screen, this allows us to handle framebuffer zoom values
// between 0x00 and 0x80 (0x40 is normal, 0x80 would be 'view twice as much', 0x20 is 'view half as much')
- renderbuffer_bitmap = auto_bitmap_alloc(512*2,224*2,machine->screen[0].format);
+ renderbuffer_bitmap = auto_bitmap_alloc(512*2,224*2,video_screen_get_format(machine->primary_screen));
renderbuffer_clip.min_x = 0;
renderbuffer_clip.max_x = cps3_screenwidth-1;
@@ -941,7 +899,7 @@ static VIDEO_START(cps3)
// the 0x400 bit in the tilemap regs is "draw it upside-down" (bios tilemap during flashing, otherwise capcom logo is flipped)
-static void cps3_draw_tilemapsprite_line(int tmnum, int drawline, bitmap_t *bitmap, const rectangle *cliprect )
+static void cps3_draw_tilemapsprite_line(running_machine *machine, int tmnum, int drawline, bitmap_t *bitmap, const rectangle *cliprect )
{
UINT32* tmapregs[4] = { tilemap20_regs_base, tilemap30_regs_base, tilemap40_regs_base, tilemap50_regs_base };
UINT32* regs;
@@ -1015,15 +973,15 @@ static void cps3_draw_tilemapsprite_line(int tmnum, int drawline, bitmap_t *bitm
yflip = (dat & 0x00000800)>>11;
xflip = (dat & 0x00001000)>>12;
- if (!bpp) Machine->gfx[1]->color_granularity=256;
- else Machine->gfx[1]->color_granularity=64;
+ if (!bpp) machine->gfx[1]->color_granularity=256;
+ else machine->gfx[1]->color_granularity=64;
if (cps3_char_ram_dirty[tileno])
{
- decodechar(Machine->gfx[1], tileno, (UINT8*)cps3_char_ram);
+ decodechar(machine->gfx[1], tileno, (UINT8*)cps3_char_ram);
cps3_char_ram_dirty[tileno] = 0;
}
- cps3_drawgfxzoom(bitmap, Machine->gfx[1],tileno,colour,xflip,yflip,(x*16)-scrollx%16,drawline-tilesubline,&clip,CPS3_TRANSPARENCY_PEN_INDEX,0, 0x10000, 0x10000, NULL, 0);
+ cps3_drawgfxzoom(machine, bitmap, machine->gfx[1],tileno,colour,xflip,yflip,(x*16)-scrollx%16,drawline-tilesubline,&clip,CPS3_TRANSPARENCY_PEN_INDEX,0, 0x10000, 0x10000, NULL, 0);
}
}
@@ -1032,7 +990,8 @@ static void cps3_draw_tilemapsprite_line(int tmnum, int drawline, bitmap_t *bitm
static VIDEO_UPDATE(cps3)
{
int y,x, count;
-// int offset;
+ attoseconds_t period = video_screen_get_frame_period(screen).attoseconds;
+ rectangle visarea = *video_screen_get_visible_area(screen);
int bg_drawn[4] = { 0, 0, 0, 0 };
@@ -1049,24 +1008,20 @@ static VIDEO_UPDATE(cps3)
{
if (cps3_screenwidth!=496)
{
- screen_state *state = &screen->machine->screen[0];
- rectangle visarea = state->visarea;
cps3_screenwidth = 496;
visarea.min_x = 0; visarea.max_x = 496-1;
visarea.min_y = 0; visarea.max_y = 224-1;
- video_screen_configure(screen, 496, 224, &visarea, video_screen_get_frame_period(screen).attoseconds);
+ video_screen_configure(screen, 496, 224, &visarea, period);
}
}
else
{
if (cps3_screenwidth!=384)
{
- screen_state *state = &screen->machine->screen[0];
- rectangle visarea = state->visarea;
cps3_screenwidth = 384;
visarea.min_x = 0; visarea.max_x = 384-1;
visarea.min_y = 0; visarea.max_y = 224-1;
- video_screen_configure(screen, 384, 224, &visarea, video_screen_get_frame_period(screen).attoseconds);
+ video_screen_configure(screen, 384, 224, &visarea, period);
}
}
@@ -1183,7 +1138,7 @@ static VIDEO_UPDATE(cps3)
{
for (uu=0;uu<1023;uu++)
{
- cps3_draw_tilemapsprite_line( tilemapnum, uu, renderbuffer_bitmap, &renderbuffer_clip );
+ cps3_draw_tilemapsprite_line(screen->machine, tilemapnum, uu, renderbuffer_bitmap, &renderbuffer_clip );
}
}
bg_drawn[tilemapnum] = 1;
@@ -1276,11 +1231,11 @@ static VIDEO_UPDATE(cps3)
if (global_alpha || alpha)
{
- cps3_drawgfxzoom(renderbuffer_bitmap, screen->machine->gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,&renderbuffer_clip,CPS3_TRANSPARENCY_PEN_INDEX_BLEND,0,xinc,yinc, NULL, 0);
+ cps3_drawgfxzoom(screen->machine, renderbuffer_bitmap, screen->machine->gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,&renderbuffer_clip,CPS3_TRANSPARENCY_PEN_INDEX_BLEND,0,xinc,yinc, NULL, 0);
}
else
{
- cps3_drawgfxzoom(renderbuffer_bitmap, screen->machine->gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,&renderbuffer_clip,CPS3_TRANSPARENCY_PEN_INDEX,0,xinc,yinc, NULL, 0);
+ cps3_drawgfxzoom(screen->machine, renderbuffer_bitmap, screen->machine->gfx[1],realtileno,actualpal,0^flipx,0^flipy,current_xpos,current_ypos,&renderbuffer_clip,CPS3_TRANSPARENCY_PEN_INDEX,0,xinc,yinc, NULL, 0);
}
count++;
}
@@ -1353,7 +1308,7 @@ static VIDEO_UPDATE(cps3)
cps3_ss_ram_dirty[tile] = 0;
}
- cps3_drawgfxzoom(bitmap, screen->machine->gfx[0],tile,pal,flipx,flipy,x*8,y*8,cliprect,CPS3_TRANSPARENCY_PEN,0,0x10000,0x10000,NULL,0);
+ cps3_drawgfxzoom(screen->machine, bitmap, screen->machine->gfx[0],tile,pal,flipx,flipy,x*8,y*8,cliprect,CPS3_TRANSPARENCY_PEN,0,0x10000,0x10000,NULL,0);
count++;
}
}
@@ -2014,11 +1969,11 @@ static WRITE32_HANDLER( cps3_palettedma_w )
//if (paldma_fade!=0) printf("%08x\n",paldma_fade);
- cps3_set_mame_colours((paldma_dest+i)^1, coldata, paldma_fade);
+ cps3_set_mame_colours(machine, (paldma_dest+i)^1, coldata, paldma_fade);
}
- cpunum_set_input_line(Machine, 0,10, ASSERT_LINE);
+ cpunum_set_input_line(machine, 0,10, ASSERT_LINE);
}
@@ -2212,7 +2167,7 @@ static void cps3_do_alt_char_dma( UINT32 src, UINT32 real_dest, UINT32 real_leng
}
}
-static void cps3_process_character_dma(UINT32 address)
+static void cps3_process_character_dma(running_machine *machine, UINT32 address)
{
int i;
@@ -2239,14 +2194,14 @@ static void cps3_process_character_dma(UINT32 address)
/* We should probably copy this, but a pointer to it is fine for our purposes as the data doesn't change */
current_table_address = real_source;
}
- cpunum_set_input_line(Machine, 0,10, ASSERT_LINE);
+ cpunum_set_input_line(machine, 0,10, ASSERT_LINE);
}
else if ( (dat1&0x00e00000) ==0x00400000 )
{
/* 6bpp DMA decompression
- this is used for the majority of sprites and backgrounds */
cps3_do_char_dma( real_source, real_destination, real_length );
- cpunum_set_input_line(Machine, 0,10, ASSERT_LINE);
+ cpunum_set_input_line(machine, 0,10, ASSERT_LINE);
}
else if ( (dat1&0x00e00000) ==0x00600000 )
@@ -2254,7 +2209,7 @@ static void cps3_process_character_dma(UINT32 address)
/* 8bpp DMA decompression
- this is used on SFIII NG Sean's Stage ONLY */
cps3_do_alt_char_dma( real_source, real_destination, real_length);
- cpunum_set_input_line(Machine, 0,10, ASSERT_LINE);
+ cpunum_set_input_line(machine, 0,10, ASSERT_LINE);
}
else
{
@@ -2292,7 +2247,7 @@ static WRITE32_HANDLER( cps3_characterdma_w )
list_address = (chardma_source | ((chardma_other&0x003f0000)));
//printf("chardma_w activated %08x %08x (address = cram %08x)\n", chardma_source, chardma_other, list_address*4 );
- cps3_process_character_dma(list_address);
+ cps3_process_character_dma(machine, list_address);
}
else
{
@@ -2311,12 +2266,12 @@ static WRITE32_HANDLER( cps3_characterdma_w )
static WRITE32_HANDLER( cps3_irq10_ack_w )
{
- cpunum_set_input_line(Machine, 0,10, CLEAR_LINE); return;
+ cpunum_set_input_line(machine, 0,10, CLEAR_LINE); return;
}
static WRITE32_HANDLER( cps3_irq12_ack_w )
{
- cpunum_set_input_line(Machine, 0,12, CLEAR_LINE); return;
+ cpunum_set_input_line(machine, 0,12, CLEAR_LINE); return;
}
static WRITE32_HANDLER( cps3_unk_vidregs_w )
@@ -2337,12 +2292,12 @@ static WRITE32_HANDLER( cps3_colourram_w )
if (ACCESSING_MSB32)
{
- cps3_set_mame_colours(offset*2, (data & 0xffff0000) >> 16, 0);
+ cps3_set_mame_colours(machine, offset*2, (data & 0xffff0000) >> 16, 0);
}
if (ACCESSING_LSB32)
{
- cps3_set_mame_colours(offset*2+1, (data & 0x0000ffff) >> 0, 0);
+ cps3_set_mame_colours(machine, offset*2+1, (data & 0x0000ffff) >> 0, 0);
}
}
@@ -2672,7 +2627,7 @@ static void copy_from_nvram(void)
/*
{
FILE *fp;
- const char *gamename = Machine->gamedrv->name;
+ const char *gamename = machine->gamedrv->name;
char filename[256];
sprintf(filename, "%s_bios.dump", gamename);
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index 4073cf7912f..509c61d755b 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -36,12 +36,6 @@ Year + Game Board CPU Sound C
98 Reach Ippatsu Z80 YM2413 + M6295 70C160F011
-----------------------------------------------------------------------------------------------------------------------------
-Notes:
-
-- the zooming Dynax logo in ddenlovr would flicker because the palette is
- updated one frame after the bitmap. This is fixed using a framebuffer but I
- don't think it's correct.
-
TODO:
@@ -60,8 +54,6 @@ TODO:
- ddenlovr: sometimes the colors of the girl in the presentation before the
beginning of a stage are wrong, and they correct themselves when the board
is drawn.
-- The palette problems mentioned above happen in other games as well, e.g.
- quizchq attract mode.
- the registers right after the palette bank selectors (e00048-e0004f in ddenlovr)
are not understood. They are related to the layer enable register and to the
@@ -104,7 +96,6 @@ TODO:
UINT8 *ddenlovr_pixmap[8];
-static bitmap_t *framebuffer;
static int extra_layers;
@@ -171,8 +162,6 @@ VIDEO_START(ddenlovr)
ddenlovr_scroll[i*2+0] = ddenlovr_scroll[i*2+1] = 0;
}
- framebuffer = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
-
extra_layers = 0;
// older games do not set these !?
@@ -607,7 +596,7 @@ INLINE void log_blit(int data)
#endif
}
-static void blitter_w(int blitter, offs_t offset,UINT8 data,int irq_vector)
+static void blitter_w(running_machine *machine, int blitter, offs_t offset,UINT8 data,int irq_vector)
{
static int ddenlovr_blit_reg[2];
int hi_bits;
@@ -745,14 +734,14 @@ profiler_mark(PROFILER_VIDEO);
if (irq_vector)
/* quizchq */
- cpunum_set_input_line_and_vector(Machine, 0, 0, HOLD_LINE, irq_vector);
+ cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, irq_vector);
else
{
/* ddenlovr */
if (ddenlovr_blitter_irq_enable)
{
ddenlovr_blitter_irq_flag = 1;
- cpunum_set_input_line(Machine, 0,1,HOLD_LINE);
+ cpunum_set_input_line(machine, 0,1,HOLD_LINE);
}
}
break;
@@ -770,7 +759,7 @@ profiler_mark(PROFILER_END);
// differences wrt blitter_data_w: slightly different blitter commands
-static void blitter_w_funkyfig(int blitter, offs_t offset,UINT8 data,int irq_vector)
+static void blitter_w_funkyfig(running_machine *machine, int blitter, offs_t offset,UINT8 data,int irq_vector)
{
static int ddenlovr_blit_reg[2];
int hi_bits;
@@ -912,7 +901,7 @@ profiler_mark(PROFILER_VIDEO);
#endif
}
- cpunum_set_input_line_and_vector(Machine, 0, 0, HOLD_LINE, irq_vector);
+ cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, irq_vector);
break;
default:
@@ -1125,13 +1114,13 @@ profiler_mark(PROFILER_END);
static WRITE8_HANDLER( rongrong_blitter_w )
{
- blitter_w(0,offset,data,0xf8);
+ blitter_w(machine, 0,offset,data,0xf8);
}
static WRITE16_HANDLER( ddenlovr_blitter_w )
{
if (ACCESSING_LSB)
- blitter_w(0,offset,data & 0xff,0);
+ blitter_w(machine, 0,offset,data & 0xff,0);
}
@@ -1211,16 +1200,6 @@ static void copylayer(bitmap_t *bitmap,const rectangle *cliprect,int layer)
VIDEO_UPDATE(ddenlovr)
{
- copybitmap(bitmap,framebuffer,0,0,0,0,cliprect);
- return 0;
-}
-
-/*
- I do the following in a eof handler, to avoid palette/gfx synchronization
- issues with frameskipping
-*/
-VIDEO_EOF(ddenlovr)
-{
static const int order[24][4] =
{
{ 3,2,1,0 }, { 2,3,1,0 }, { 3,1,2,0 }, { 1,3,2,0 }, { 2,1,3,0 }, { 1,2,3,0 },
@@ -1257,7 +1236,7 @@ VIDEO_EOF(ddenlovr)
if (input_code_pressed_once(KEYCODE_F)) { base++; while ((memory_region(REGION_GFX1)[base] & 0xf0) != 0x30) base++; }
#endif
- fillbitmap(framebuffer,ddenlovr_bgcolor,&machine->screen[0].visarea);
+ fillbitmap(bitmap,ddenlovr_bgcolor,cliprect);
#ifdef MAME_DEBUG
if (input_code_pressed(KEYCODE_Z))
@@ -1297,10 +1276,10 @@ VIDEO_EOF(ddenlovr)
pri = 0;
}
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][0]);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][1]);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][2]);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][3]);
+ copylayer(bitmap,cliprect,order[pri][0]);
+ copylayer(bitmap,cliprect,order[pri][1]);
+ copylayer(bitmap,cliprect,order[pri][2]);
+ copylayer(bitmap,cliprect,order[pri][3]);
if (extra_layers)
{
@@ -1312,14 +1291,16 @@ VIDEO_EOF(ddenlovr)
pri = 0;
}
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][0]+4);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][1]+4);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][2]+4);
- copylayer(framebuffer,&machine->screen[0].visarea,order[pri][3]+4);
+ copylayer(bitmap,cliprect,order[pri][0]+4);
+ copylayer(bitmap,cliprect,order[pri][1]+4);
+ copylayer(bitmap,cliprect,order[pri][2]+4);
+ copylayer(bitmap,cliprect,order[pri][3]+4);
}
ddenlovr_layer_enable = enab;
ddenlovr_layer_enable2 = enab2;
+
+ return 0;
}
static READ16_HANDLER( ddenlovr_special_r )
@@ -1518,8 +1499,8 @@ static READ8_HANDLER( quiz365_input_r )
if (!(ddenlovr_select & 0x01)) return readinputport(3);
if (!(ddenlovr_select & 0x02)) return readinputport(4);
if (!(ddenlovr_select & 0x04)) return readinputport(5);
- if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(Machine);
- if (!(ddenlovr_select & 0x10)) return 0xff;//mame_rand(Machine);
+ if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(machine);
+ if (!(ddenlovr_select & 0x10)) return 0xff;//mame_rand(machine);
return 0xff;
}
@@ -1831,8 +1812,8 @@ static READ8_HANDLER( rongrong_input_r )
{
if (!(ddenlovr_select & 0x01)) return readinputport(3);
if (!(ddenlovr_select & 0x02)) return readinputport(4);
- if (!(ddenlovr_select & 0x04)) return 0xff;//mame_rand(Machine);
- if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(Machine);
+ if (!(ddenlovr_select & 0x04)) return 0xff;//mame_rand(machine);
+ if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(machine);
if (!(ddenlovr_select & 0x10)) return readinputport(5);
return 0xff;
}
@@ -1971,11 +1952,11 @@ static WRITE8_HANDLER( mmpanic_soundlatch_w )
static WRITE8_HANDLER( mmpanic_blitter_w )
{
- blitter_w(0,offset,data,0xdf); // RST 18
+ blitter_w(machine, 0,offset,data,0xdf); // RST 18
}
static WRITE8_HANDLER( mmpanic_blitter2_w )
{
- blitter_w(1,offset,data,0xdf); // RST 18
+ blitter_w(machine, 1,offset,data,0xdf); // RST 18
}
/* A led for each of the 9 buttons */
@@ -2134,7 +2115,7 @@ static READ8_HANDLER( funkyfig_busy_r )
static WRITE8_HANDLER( funkyfig_blitter_w )
{
- blitter_w_funkyfig(0,offset,data,0xe0);
+ blitter_w_funkyfig(machine, 0,offset,data,0xe0);
}
static WRITE8_HANDLER( funkyfig_rombank_w )
@@ -2373,7 +2354,7 @@ static WRITE8_HANDLER( hanakanz_palette_w )
int g = ddenlovr_blit_reg & 0x1f;
int r = data & 0x1f;
int b = ((data & 0xe0) >> 5) | ((ddenlovr_blit_reg & 0x60) >> 2);
- palette_set_color_rgb(Machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b));
+ palette_set_color_rgb(machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b));
}
}
@@ -2384,7 +2365,7 @@ static WRITE8_HANDLER( hanakanz_oki_bank_w )
static READ8_HANDLER( hanakanz_rand_r )
{
- return mame_rand(Machine);
+ return mame_rand(machine);
}
static ADDRESS_MAP_START( hanakanz_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff)
@@ -2553,7 +2534,7 @@ static WRITE8_HANDLER( mjchuuka_palette_w )
int r = (rgb >> 0) & 0x1f;
int g = (rgb >> 8) & 0x1f;
int b = ((rgb >> 5) & 0x07) | ((rgb & 0x6000) >> 10);
- palette_set_color_rgb(Machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b));
+ palette_set_color_rgb(machine,(palette_index++)&0x1ff,pal5bit(r),pal5bit(g),pal5bit(b));
}
}
@@ -2710,7 +2691,7 @@ static WRITE8_HANDLER( mjmyster_coincounter_w )
static WRITE8_HANDLER( mjmyster_blitter_w )
{
- blitter_w(0,offset,data,0xfc);
+ blitter_w(machine, 0,offset,data,0xfc);
}
static ADDRESS_MAP_START( mjmyster_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff)
@@ -2888,7 +2869,7 @@ static WRITE8_HANDLER( hginga_blitter_w )
break;
}
}
- blitter_w(0,offset,data,0xfc);
+ blitter_w(machine, 0,offset,data,0xfc);
}
static ADDRESS_MAP_START( hginga_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff)
@@ -2929,9 +2910,9 @@ ADDRESS_MAP_END
static UINT8 hgokou_hopper;
-static UINT8 hgokou_player_r(int player)
+static UINT8 hgokou_player_r(running_machine *machine, int player)
{
- UINT8 hopper_bit = ((hgokou_hopper && !(video_screen_get_frame_number(Machine->primary_screen)%10)) ? 0 : (1<<6));
+ UINT8 hopper_bit = ((hgokou_hopper && !(video_screen_get_frame_number(machine->primary_screen)%10)) ? 0 : (1<<6));
if (!(ddenlovr_select2 & 0x01)) return readinputport(player * 5 + 1) | hopper_bit;
if (!(ddenlovr_select2 & 0x02)) return readinputport(player * 5 + 2) | hopper_bit;
@@ -2947,8 +2928,8 @@ static READ8_HANDLER( hgokou_input_r )
switch (hginga_select)
{
case 0x20: return readinputport(0);
- case 0x21: return hgokou_player_r(1);
- case 0x22: return hgokou_player_r(0);
+ case 0x21: return hgokou_player_r(machine, 1);
+ case 0x22: return hgokou_player_r(machine, 0);
case 0x23: return hginga_coins;
}
logerror("%06x: warning, unknown bits read, hginga_select = %02x\n", activecpu_get_pc(), hginga_select);
@@ -3320,7 +3301,7 @@ static READ8_HANDLER( mjflove_blitter_r )
static WRITE8_HANDLER( mjflove_blitter_w )
{
- blitter_w(0,offset,data,0);
+ blitter_w(machine, 0,offset,data,0);
}
static WRITE8_HANDLER( mjflove_coincounter_w )
@@ -6537,8 +6518,8 @@ static MACHINE_DRIVER_START( ddenlovr )
MDRV_PALETTE_LENGTH(0x100)
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MDRV_VIDEO_START(ddenlovr)
- MDRV_VIDEO_EOF(ddenlovr)
MDRV_VIDEO_UPDATE(ddenlovr)
/* sound hardware */
@@ -6652,8 +6633,8 @@ static MACHINE_DRIVER_START( quizchq )
MDRV_PALETTE_LENGTH(0x100)
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MDRV_VIDEO_START(ddenlovr)
- MDRV_VIDEO_EOF(ddenlovr)
MDRV_VIDEO_UPDATE(ddenlovr)
/* sound hardware */
@@ -6727,8 +6708,8 @@ static MACHINE_DRIVER_START( mmpanic )
MDRV_PALETTE_LENGTH(0x100)
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MDRV_VIDEO_START(mmpanic) // extra layers
- MDRV_VIDEO_EOF(ddenlovr)
MDRV_VIDEO_UPDATE(ddenlovr)
/* sound hardware */
@@ -6791,8 +6772,8 @@ static MACHINE_DRIVER_START( hanakanz )
MDRV_PALETTE_LENGTH(0x200)
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MDRV_VIDEO_START(hanakanz) // blitter commands in the roms are shuffled around
- MDRV_VIDEO_EOF(ddenlovr)
MDRV_VIDEO_UPDATE(ddenlovr)
/* sound hardware */
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index ffd3dfba1a6..18f15a5c3f9 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -141,7 +141,8 @@ INLINE int scanline_to_vcount(int scanline)
static TIMER_CALLBACK( ddragon_scanline_callback )
{
int scanline = param;
- int vcount_old = scanline_to_vcount((scanline == 0) ? machine->screen[0].height - 1 : scanline - 1);
+ int screen_height = video_screen_get_height(machine->primary_screen);
+ int vcount_old = scanline_to_vcount((scanline == 0) ? screen_height - 1 : scanline - 1);
int vcount = scanline_to_vcount(scanline);
/* update to the current point */
@@ -156,7 +157,7 @@ static TIMER_CALLBACK( ddragon_scanline_callback )
cpunum_set_input_line(machine, 0, M6809_FIRQ_LINE, ASSERT_LINE);
/* adjust for next scanline */
- if (++scanline >= machine->screen[0].height)
+ if (++scanline >= screen_height)
scanline = 0;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index db2c82fb48e..eb7deb424af 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -280,7 +280,7 @@ static READ32_HANDLER( deco32_irq_controller_r )
/* ZV03082007 - video_screen_get_vblank() doesn't work for Captain America, as it expects
that this bit is NOT set in rows 0-7. */
- vblank = video_screen_get_vpos(machine->primary_screen) > machine->screen[0].visarea.max_y;
+ vblank = video_screen_get_vpos(machine->primary_screen) > video_screen_get_visible_area(machine->primary_screen)->max_y;
if (vblank)
return 0xffffff80 | 0x1 | 0x10; /* Assume VBL takes priority over possible raster/lightgun irq */
diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c
index 83d0131ab8a..45ee720a41a 100644
--- a/src/mame/drivers/dgpix.c
+++ b/src/mame/drivers/dgpix.c
@@ -307,8 +307,8 @@ INPUT_PORTS_END
static VIDEO_START( dgpix )
{
vram = auto_malloc(0x40000*2);
- bitmaps[0] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- bitmaps[1] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ bitmaps[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ bitmaps[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
static VIDEO_UPDATE( dgpix )
diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c
index 3125ce273d1..aefd8ef6988 100644
--- a/src/mame/drivers/dlair.c
+++ b/src/mame/drivers/dlair.c
@@ -192,7 +192,7 @@ static VIDEO_START( dleuro )
{
VIDEO_START_CALL(dlair);
- overlay_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED16);
+ overlay_bitmap = auto_bitmap_alloc(video_screen_get_width(machine->primary_screen), video_screen_get_height(machine->primary_screen), BITMAP_FORMAT_INDEXED16);
fillbitmap(overlay_bitmap, 8, NULL);
overlay_texture = render_texture_alloc(NULL, NULL);
}
@@ -242,7 +242,7 @@ static VIDEO_UPDATE( dleuro )
}
/* update the overlay */
- render_texture_set_bitmap(overlay_texture, overlay_bitmap, &screen->machine->screen[0].visarea, 0, TEXFORMAT_PALETTE16);
+ render_texture_set_bitmap(overlay_texture, overlay_bitmap, video_screen_get_visible_area(screen), 0, TEXFORMAT_PALETTE16);
/* get the current video and update the bitmap if different */
seqid = laserdisc_get_video(discinfo, &vidbitmap);
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index d62c9c36388..759d3711b87 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -4068,9 +4068,9 @@ static MACHINE_DRIVER_START( htengoku )
MDRV_PALETTE_LENGTH(16*256)
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MDRV_VIDEO_START(htengoku)
- MDRV_VIDEO_UPDATE(ddenlovr)
- MDRV_VIDEO_EOF(htengoku)
+ MDRV_VIDEO_UPDATE(htengoku)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/filetto.c b/src/mame/drivers/filetto.c
index a5dd41d6ca2..91ff270e2cc 100644
--- a/src/mame/drivers/filetto.c
+++ b/src/mame/drivers/filetto.c
@@ -69,8 +69,7 @@ AH
#define SET_VISIBLE_AREA(_x_,_y_) \
{ \
- screen_state *state = &machine->screen[0]; \
- rectangle visarea = state->visarea; \
+ rectangle visarea = *video_screen_get_visible_area(machine->primary_screen); \
visarea.min_x = 0; \
visarea.max_x = _x_-1; \
visarea.min_y = 0; \
diff --git a/src/mame/drivers/fuukifg2.c b/src/mame/drivers/fuukifg2.c
index 58f63cad475..e327522ab0e 100644
--- a/src/mame/drivers/fuukifg2.c
+++ b/src/mame/drivers/fuukifg2.c
@@ -70,7 +70,9 @@ static WRITE16_HANDLER( fuuki16_vregs_w )
UINT16 new_data = COMBINE_DATA(&fuuki16_vregs[offset]);
if ((offset == 0x1c/2) && old_data != new_data)
{
- timer_adjust_periodic(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, new_data, Machine->screen[0].visarea.max_x + 1), 0, video_screen_get_frame_period(machine->primary_screen));
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ attotime period = video_screen_get_frame_period(machine->primary_screen);
+ timer_adjust_periodic(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, new_data, visarea->max_x + 1), 0, period);
}
}
@@ -530,7 +532,7 @@ static TIMER_CALLBACK( level_1_interrupt_callback )
static TIMER_CALLBACK( vblank_interrupt_callback )
{
cpunum_set_input_line(machine, 0, 3, PULSE_LINE); // VBlank IRQ
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
+ timer_set(video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
}
@@ -550,9 +552,11 @@ static MACHINE_START( fuuki16 )
static MACHINE_RESET( fuuki16 )
{
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
timer_set(video_screen_get_time_until_pos(machine->primary_screen, 248, 0), NULL, 0, level_1_interrupt_callback);
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
- timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, machine->screen[0].visarea.max_x + 1), 0);
+ timer_set(video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
+ timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, visarea->max_x + 1), 0);
}
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index 4c8263229e4..0ee3692064d 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -259,7 +259,9 @@ static WRITE32_HANDLER( fuuki32_vregs_w )
COMBINE_DATA(&fuuki32_vregs[offset]);
if (offset == 0x1c/4)
{
- timer_adjust_periodic(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, fuuki32_vregs[0x1c/4]>>16, Machine->screen[0].visarea.max_x + 1), 0, video_screen_get_frame_period(machine->primary_screen));
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ attotime period = video_screen_get_frame_period(machine->primary_screen);
+ timer_adjust_periodic(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, fuuki32_vregs[0x1c/4]>>16, visarea->max_x + 1), 0, period);
}
}
}
@@ -556,7 +558,7 @@ static TIMER_CALLBACK( level_1_interrupt_callback )
static TIMER_CALLBACK( vblank_interrupt_callback )
{
cpunum_set_input_line(machine, 0, 3, PULSE_LINE); // VBlank IRQ
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
+ timer_set(video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
}
@@ -576,9 +578,11 @@ static MACHINE_START( fuuki32 )
static MACHINE_RESET( fuuki32 )
{
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
timer_set(video_screen_get_time_until_pos(machine->primary_screen, 248, 0), NULL, 0, level_1_interrupt_callback);
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
- timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, machine->screen[0].visarea.max_x + 1), 0);
+ timer_set(video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
+ timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, visarea->max_x + 1), 0);
}
diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c
index 3290785d3d4..fa46fe1f78c 100644
--- a/src/mame/drivers/hitme.c
+++ b/src/mame/drivers/hitme.c
@@ -138,7 +138,7 @@ static UINT8 read_port_and_t0(int port)
static UINT8 read_port_and_t0_and_hblank(running_machine *machine, int port)
{
UINT8 val = read_port_and_t0(port);
- if (video_screen_get_hpos(machine->primary_screen) < (machine->screen[0].width * 9 / 10))
+ if (video_screen_get_hpos(machine->primary_screen) < (video_screen_get_width(machine->primary_screen) * 9 / 10))
val ^= 0x04;
return val;
}
diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c
index 807ac02f7a5..390ac27c890 100644
--- a/src/mame/drivers/hornet.c
+++ b/src/mame/drivers/hornet.c
@@ -369,16 +369,18 @@ static void K037122_tile_update(running_machine *machine, int chip)
static void K037122_tile_draw(int chip, bitmap_t *bitmap, const rectangle *cliprect)
{
+ const rectangle *visarea = video_screen_get_visible_area(Machine->primary_screen);
+
if (K037122_reg[chip][0xc] & 0x10000)
{
- tilemap_set_scrolldx(K037122_layer[chip][1], Machine->screen[0].visarea.min_x, Machine->screen[0].visarea.min_x);
- tilemap_set_scrolldy(K037122_layer[chip][1], Machine->screen[0].visarea.min_y, Machine->screen[0].visarea.min_y);
+ tilemap_set_scrolldx(K037122_layer[chip][1], visarea->min_x, visarea->min_x);
+ tilemap_set_scrolldy(K037122_layer[chip][1], visarea->min_y, visarea->min_y);
tilemap_draw(bitmap, cliprect, K037122_layer[chip][1], 0,0);
}
else
{
- tilemap_set_scrolldx(K037122_layer[chip][0], Machine->screen[0].visarea.min_x, Machine->screen[0].visarea.min_x);
- tilemap_set_scrolldy(K037122_layer[chip][0], Machine->screen[0].visarea.min_y, Machine->screen[0].visarea.min_y);
+ tilemap_set_scrolldx(K037122_layer[chip][0], visarea->min_x, visarea->min_x);
+ tilemap_set_scrolldy(K037122_layer[chip][0], visarea->min_y, visarea->min_y);
tilemap_draw(bitmap, cliprect, K037122_layer[chip][0], 0,0);
}
}
diff --git a/src/mame/drivers/igs_blit.c b/src/mame/drivers/igs_blit.c
index c8c8a2285ff..570e3419f5a 100644
--- a/src/mame/drivers/igs_blit.c
+++ b/src/mame/drivers/igs_blit.c
@@ -216,7 +216,7 @@ static WRITE16_HANDLER( igs_blit_flags_w )
int gfx_size = memory_region_length(REGION_GFX1);
int gfx2_size = memory_region_length(REGION_GFX2);
- rectangle clip = Machine->screen[0].visarea;
+ const rectangle *clip = video_screen_get_visible_area(machine->primary_screen);
COMBINE_DATA(&blitter.flags);
@@ -285,7 +285,7 @@ static WRITE16_HANDLER( igs_blit_flags_w )
}
// plot it
- if (x >= clip.min_x && x <= clip.max_x && y >= clip.min_y && y <= clip.max_y)
+ if (x >= clip->min_x && x <= clip->max_x && y >= clip->min_y && y <= clip->max_y)
{
if (clear) dest[x + y * 512] = clear_pen;
else if (pen != trans_pen) dest[x + y * 512] = pen | pen_hi;
diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c
index 85cb9b419ec..4709ac0b16a 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -143,7 +143,7 @@ static VIDEO_START(igs_majhong)
static VIDEO_UPDATE(igs_majhong)
{
//??????????
- fillbitmap(bitmap,get_black_pen(screen->machine),&screen->machine->screen[0].visarea);
+ fillbitmap(bitmap,get_black_pen(screen->machine),cliprect);
//??????
tilemap_draw(bitmap,cliprect,igs_bg_tilemap,0,0);
diff --git a/src/mame/drivers/laserbat.c b/src/mame/drivers/laserbat.c
index 8309974c285..a35758cdc17 100644
--- a/src/mame/drivers/laserbat.c
+++ b/src/mame/drivers/laserbat.c
@@ -502,15 +502,18 @@ static TILE_GET_INFO( get_tile_info )
static VIDEO_START( laserbat )
{
+ int screen_width = video_screen_get_width(machine->primary_screen);
+ int screen_height = video_screen_get_height(machine->primary_screen);
+
bg_tilemap = tilemap_create(get_tile_info,tilemap_scan_rows,8,8,32,32);
videoram = (UINT8 *)auto_malloc(0x400);
colorram = (UINT8 *)auto_malloc(0x400);
/* configure the S2636 chips */
- s2636_0 = s2636_config(s2636_0_ram, machine->screen[0].height, machine->screen[0].width, 0, -19);
- s2636_1 = s2636_config(s2636_1_ram, machine->screen[0].height, machine->screen[0].width, 0, -19);
- s2636_2 = s2636_config(s2636_2_ram, machine->screen[0].height, machine->screen[0].width, 0, -19);
+ s2636_0 = s2636_config(s2636_0_ram, screen_height, screen_width, 0, -19);
+ s2636_1 = s2636_config(s2636_1_ram, screen_height, screen_width, 0, -19);
+ s2636_2 = s2636_config(s2636_2_ram, screen_height, screen_width, 0, -19);
}
static VIDEO_UPDATE( laserbat )
diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c
index 2cf80060775..34c616398b1 100644
--- a/src/mame/drivers/lastfght.c
+++ b/src/mame/drivers/lastfght.c
@@ -78,7 +78,7 @@ static VIDEO_START( lastfght )
{
int i;
for (i = 0; i < 2; i++)
- lastfght_bitmap[i] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ lastfght_bitmap[i] = video_screen_auto_bitmap_alloc(machine->primary_screen);
colorram = auto_malloc(256*3);
}
diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c
index 307a56d1a33..b883f1c43ea 100644
--- a/src/mame/drivers/legionna.c
+++ b/src/mame/drivers/legionna.c
@@ -258,8 +258,7 @@ static UINT32 hit_check_x,hit_check_y;
#define CRT_MODE(_x_,_y_,_flip_) \
{ \
- screen_state *state = &Machine->screen[0]; \
- rectangle visarea = state->visarea; \
+ rectangle visarea = *video_screen_get_visible_area(machine->primary_screen); \
visarea.min_x = 0; \
visarea.max_x = _x_-1; \
visarea.min_y = 0; \
diff --git a/src/mame/drivers/m107.c b/src/mame/drivers/m107.c
index 83ae5be8ed2..7c4feb22199 100644
--- a/src/mame/drivers/m107.c
+++ b/src/mame/drivers/m107.c
@@ -69,14 +69,14 @@ static TIMER_CALLBACK( m107_scanline_interrupt )
}
/* VBLANK interrupt */
- else if (scanline == machine->screen[0].visarea.max_y + 1)
+ else if (scanline == video_screen_get_visible_area(machine->primary_screen)->max_y + 1)
{
video_screen_update_partial(machine->primary_screen, scanline);
cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, M107_IRQ_0);
}
/* adjust for next scanline */
- if (++scanline >= machine->screen[0].height)
+ if (++scanline >= video_screen_get_height(machine->primary_screen))
scanline = 0;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c
index 79431582835..7a837e34133 100644
--- a/src/mame/drivers/m72.c
+++ b/src/mame/drivers/m72.c
@@ -137,7 +137,7 @@ static TIMER_CALLBACK( m72_scanline_interrupt )
}
/* adjust for next scanline */
- if (++scanline >= machine->screen[0].height)
+ if (++scanline >= video_screen_get_height(machine->primary_screen))
scanline = 0;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
diff --git a/src/mame/drivers/m92.c b/src/mame/drivers/m92.c
index fbc0e1baea6..0e0a2774ccc 100644
--- a/src/mame/drivers/m92.c
+++ b/src/mame/drivers/m92.c
@@ -249,14 +249,14 @@ static TIMER_CALLBACK( m92_scanline_interrupt )
}
/* VBLANK interrupt */
- else if (scanline == machine->screen[0].visarea.max_y + 1)
+ else if (scanline == video_screen_get_visible_area(machine->primary_screen)->max_y + 1)
{
video_screen_update_partial(machine->primary_screen, scanline);
cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, M92_IRQ_0);
}
/* adjust for next scanline */
- if (++scanline >= machine->screen[0].height)
+ if (++scanline >= video_screen_get_height(machine->primary_screen))
scanline = 0;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
diff --git a/src/mame/drivers/marinedt.c b/src/mame/drivers/marinedt.c
index c09c2a1dbc7..435d9509f35 100644
--- a/src/mame/drivers/marinedt.c
+++ b/src/mame/drivers/marinedt.c
@@ -456,9 +456,9 @@ static VIDEO_START( marinedt )
tilemap_set_scrolldx(tx_tilemap, 0, 4*8);
tilemap_set_scrolldy(tx_tilemap, 0, -4*8);
- tile = auto_bitmap_alloc(32 * 8, 32 * 8, machine->screen[0].format);
- obj1 = auto_bitmap_alloc(32,32,machine->screen[0].format);
- obj2 = auto_bitmap_alloc(32,32,machine->screen[0].format);
+ tile = auto_bitmap_alloc(32 * 8, 32 * 8, video_screen_get_format(machine->primary_screen));
+ obj1 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
+ obj2 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c
index 5d521139a5b..10185d92689 100644
--- a/src/mame/drivers/mazerbla.c
+++ b/src/mame/drivers/mazerbla.c
@@ -104,10 +104,10 @@ static bitmap_t * tmpbitmaps[4];
static VIDEO_START( mazerbla )
{
- tmpbitmaps[0] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- tmpbitmaps[1] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- tmpbitmaps[2] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- tmpbitmaps[3] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ tmpbitmaps[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ tmpbitmaps[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ tmpbitmaps[2] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ tmpbitmaps[3] = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
#if 0
diff --git a/src/mame/drivers/megadriv.c b/src/mame/drivers/megadriv.c
index 77f3ad2b8a5..8d5797c04e1 100644
--- a/src/mame/drivers/megadriv.c
+++ b/src/mame/drivers/megadriv.c
@@ -2567,7 +2567,7 @@ VIDEO_START(megadriv)
{
int x;
- render_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ render_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
megadrive_vdp_vram = auto_malloc(0x10000);
megadrive_vdp_cram = auto_malloc(0x80);
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index fd02ff498ab..a92e8968fea 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -525,7 +525,7 @@ static TIMER_CALLBACK( invasn_gun_callback )
/* generate another interrupt on the next scanline while we are within the BEAM_DY */
beamy++;
- if (beamy <= machine->screen[0].visarea.max_y && beamy <= gun_y[player] + BEAM_DY)
+ if (beamy <= video_screen_get_visible_area(machine->primary_screen)->max_y && beamy <= gun_y[player] + BEAM_DY)
timer_adjust_oneshot(gun_timer[player], video_screen_get_time_until_pos(machine->primary_screen, beamy, MAX(0, gun_x[player] - BEAM_DX)), player);
}
@@ -547,7 +547,7 @@ static WRITE32_HANDLER( invasn_gun_w )
UINT8 pmask = 0x04 << player;
if (((old_control ^ gun_control) & pmask) != 0 && (gun_control & pmask) == 0)
{
- const rectangle *visarea = &Machine->screen[0].visarea;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
static const char *const names[2][2] =
{
{ "GUNX1", "GUNY1" },
diff --git a/src/mame/drivers/mlanding.c b/src/mame/drivers/mlanding.c
index 502e0a44154..339d9f9a34e 100644
--- a/src/mame/drivers/mlanding.c
+++ b/src/mame/drivers/mlanding.c
@@ -205,7 +205,7 @@ static VIDEO_START(mlanding)
}
for (i=0;i<8;i++)
- ml_bitmap[i] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ ml_bitmap[i] = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
static VIDEO_UPDATE(mlanding)
diff --git a/src/mame/drivers/mogura.c b/src/mame/drivers/mogura.c
index b702eb1a8a9..48f8842bfe0 100644
--- a/src/mame/drivers/mogura.c
+++ b/src/mame/drivers/mogura.c
@@ -60,19 +60,21 @@ static VIDEO_START( mogura )
static VIDEO_UPDATE( mogura )
{
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+
/* tilemap layout is a bit strange ... */
rectangle clip;
- clip.min_x = screen->machine->screen[0].visarea.min_x;
+ clip.min_x = visarea->min_x;
clip.max_x = 256-1;
- clip.min_y = screen->machine->screen[0].visarea.min_y;
- clip.max_y = screen->machine->screen[0].visarea.max_y;
+ clip.min_y = visarea->min_y;
+ clip.max_y = visarea->max_y;
tilemap_set_scrollx(mogura_tilemap,0, 256);
tilemap_draw(bitmap,&clip,mogura_tilemap,0,0);
clip.min_x = 256;
clip.max_x = 512-1;
- clip.min_y = screen->machine->screen[0].visarea.min_y;
- clip.max_y = screen->machine->screen[0].visarea.max_y;
+ clip.min_y = visarea->min_y;
+ clip.max_y = visarea->max_y;
tilemap_set_scrollx(mogura_tilemap,0, -128);
tilemap_draw(bitmap,&clip,mogura_tilemap,0,0);
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index f083351ba17..8105c607daa 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -342,8 +342,8 @@ static MACHINE_START( namcofl )
static MACHINE_RESET( namcofl )
{
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 3, 0), NULL, 0, network_interrupt_callback);
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
+ timer_set(video_screen_get_time_until_pos(machine->primary_screen, video_screen_get_visible_area(machine->primary_screen)->max_y + 3, 0), NULL, 0, network_interrupt_callback);
+ timer_set(video_screen_get_time_until_pos(machine->primary_screen, video_screen_get_visible_area(machine->primary_screen)->max_y + 1, 0), NULL, 0, vblank_interrupt_callback);
}
diff --git a/src/mame/drivers/rabbit.c b/src/mame/drivers/rabbit.c
index f5923edd1e0..cff9c8cd2fb 100644
--- a/src/mame/drivers/rabbit.c
+++ b/src/mame/drivers/rabbit.c
@@ -354,7 +354,7 @@ static VIDEO_START(rabbit)
tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
- rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,machine->screen[0].format);
+ rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,video_screen_get_format(machine->primary_screen));
rabbit_sprite_clip.min_x = 0;
rabbit_sprite_clip.max_x = 0x1000-1;
rabbit_sprite_clip.min_y = 0;
@@ -1144,7 +1144,7 @@ static VIDEO_START(tmmjprd)
tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
- rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,machine->screen[0].format);
+ rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,video_screen_get_format(machine->primary_screen));
rabbit_sprite_clip.min_x = 0;
rabbit_sprite_clip.max_x = 0x1000-1;
rabbit_sprite_clip.min_y = 0;
diff --git a/src/mame/drivers/sbowling.c b/src/mame/drivers/sbowling.c
index 75de83ac36e..183a0763ea9 100644
--- a/src/mame/drivers/sbowling.c
+++ b/src/mame/drivers/sbowling.c
@@ -102,7 +102,7 @@ static VIDEO_UPDATE(sbowling)
static VIDEO_START(sbowling)
{
- tmpbitmap = auto_bitmap_alloc(32*8,32*8,machine->screen[0].format);
+ tmpbitmap = auto_bitmap_alloc(32*8,32*8,video_screen_get_format(machine->primary_screen));
sb_tilemap = tilemap_create(get_sb_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
}
diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c
index d4b4f2b5493..95a38579e74 100644
--- a/src/mame/drivers/sbrkout.c
+++ b/src/mame/drivers/sbrkout.c
@@ -123,7 +123,7 @@ static TIMER_CALLBACK( scanline_callback )
DAC_data_w(0, (videoram[0x380 + 0x11] & (scanline >> 2)) ? 255 : 0);
/* on the VBLANK, read the pot and schedule an interrupt time for it */
- if (scanline == machine->screen[0].visarea.max_y + 1)
+ if (scanline == video_screen_get_visible_area(machine->primary_screen)->max_y + 1)
{
UINT8 potvalue = readinputportbytag("PADDLE");
timer_adjust_oneshot(pot_timer, video_screen_get_time_until_pos(machine->primary_screen, 72 + (potvalue / 2), (potvalue % 2) * 128), 0);
@@ -131,7 +131,7 @@ static TIMER_CALLBACK( scanline_callback )
/* call us back in 4 scanlines */
scanline += 4;
- if (scanline >= machine->screen[0].height)
+ if (scanline >= video_screen_get_height(machine->primary_screen))
scanline = 0;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
@@ -259,7 +259,7 @@ static WRITE8_HANDLER( coincount_w )
static READ8_HANDLER( sync_r )
{
int hpos = video_screen_get_hpos(machine->primary_screen);
- sync2_value = (hpos >= 128 && hpos <= machine->screen[0].visarea.max_x);
+ sync2_value = (hpos >= 128 && hpos <= video_screen_get_visible_area(machine->primary_screen)->max_x);
return video_screen_get_vpos(machine->primary_screen);
}
diff --git a/src/mame/drivers/segae.c b/src/mame/drivers/segae.c
index 7594f5d3188..3a80f6c8383 100644
--- a/src/mame/drivers/segae.c
+++ b/src/mame/drivers/segae.c
@@ -716,7 +716,7 @@ static void *start_vdp(running_machine *machine, int type)
memset(chip->sprite_renderline,0x00,256+32);
chip->writemode = 0;
- chip->r_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ chip->r_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
chip->sms_scanline_timer = timer_alloc(sms_scanline_timer_callback, chip);
diff --git a/src/mame/drivers/segaorun.c b/src/mame/drivers/segaorun.c
index 5785678d810..38f4e2e9846 100644
--- a/src/mame/drivers/segaorun.c
+++ b/src/mame/drivers/segaorun.c
@@ -214,7 +214,7 @@ static TIMER_CALLBACK( scanline_callback )
case 65:
case 129:
case 193:
- timer_set(video_screen_get_time_until_pos(machine->primary_screen, scanline, machine->screen[0].visarea.max_x + 1), NULL, 0, irq2_gen);
+ timer_set(video_screen_get_time_until_pos(machine->primary_screen, scanline, video_screen_get_visible_area(machine->primary_screen)->max_x + 1), NULL, 0, irq2_gen);
next_scanline = scanline + 1;
break;
diff --git a/src/mame/drivers/skullxbo.c b/src/mame/drivers/skullxbo.c
index e758834dcae..ac6fc788a30 100644
--- a/src/mame/drivers/skullxbo.c
+++ b/src/mame/drivers/skullxbo.c
@@ -72,6 +72,12 @@ static void alpha_row_update(const device_config *screen, int scanline)
}
+static WRITE16_HANDLER( skullxbo_halt_until_hblank_0_w )
+{
+ atarigen_halt_until_hblank_0(machine->primary_screen);
+}
+
+
static MACHINE_RESET( skullxbo )
{
atarigen_eeprom_reset();
@@ -120,7 +126,7 @@ static WRITE16_HANDLER( skullxbo_mobwr_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0xff0000, 0xff07ff) AM_WRITE(skullxbo_mobmsb_w)
- AM_RANGE(0xff0800, 0xff0bff) AM_WRITE(atarigen_halt_until_hblank_0_w)
+ AM_RANGE(0xff0800, 0xff0bff) AM_WRITE(skullxbo_halt_until_hblank_0_w)
AM_RANGE(0xff0c00, 0xff0fff) AM_WRITE(atarigen_eeprom_enable_w)
AM_RANGE(0xff1000, 0xff13ff) AM_WRITE(atarigen_video_int_ack_w)
AM_RANGE(0xff1400, 0xff17ff) AM_WRITE(atarigen_sound_w)
diff --git a/src/mame/drivers/sliver.c b/src/mame/drivers/sliver.c
index 329569f5c97..63a8a7ef186 100644
--- a/src/mame/drivers/sliver.c
+++ b/src/mame/drivers/sliver.c
@@ -441,8 +441,8 @@ ADDRESS_MAP_END
static VIDEO_START(sliver)
{
- sliver_bitmap_bg = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- sliver_bitmap_fg = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ sliver_bitmap_bg = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ sliver_bitmap_fg = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
static VIDEO_UPDATE(sliver)
diff --git a/src/mame/drivers/srmp5.c b/src/mame/drivers/srmp5.c
index e82f7e45723..2e75593c19c 100644
--- a/src/mame/drivers/srmp5.c
+++ b/src/mame/drivers/srmp5.c
@@ -67,6 +67,7 @@ static VIDEO_UPDATE( srmp5 )
UINT16 *sprite_list=sprram;
UINT16 *sprite_list_end=&sprram[0x1000]; //guess
UINT8 *pixels=(UINT8 *)tileram;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
fillbitmap(bitmap,0,cliprect);
@@ -105,7 +106,7 @@ static VIDEO_UPDATE( srmp5 )
if(pen)
{
- if(xb+xs<=screen->machine->screen[0].visarea.max_x && xb+xs>=screen->machine->screen[0].visarea.min_x && yb+ys<=screen->machine->screen[0].visarea.max_y && yb+ys>=screen->machine->screen[0].visarea.min_y )
+ if(xb+xs<=visarea->max_x && xb+xs>=visarea->min_x && yb+ys<=visarea->max_y && yb+ys>=visarea->min_y )
{
UINT32 pixdata=paletteram32[pen+((sprite_sublist[SPRITE_PALETTE]&0xff)<<8)];
*BITMAP_ADDR32(bitmap, yb+ys, xb+xs) = ((pixdata&0x7c00)>>7) | ((pixdata&0x3e0)<<6) | ((pixdata&0x1f)<<19);
diff --git a/src/mame/drivers/tickee.c b/src/mame/drivers/tickee.c
index 153b5d94c2c..95bfc1b953d 100644
--- a/src/mame/drivers/tickee.c
+++ b/src/mame/drivers/tickee.c
@@ -41,8 +41,10 @@ static emu_timer *setup_gun_timer;
INLINE void get_crosshair_xy(running_machine *machine, int player, int *x, int *y)
{
- *x = (((readinputport(4 + player * 2) & 0xff) * (machine->screen[0].visarea.max_x - machine->screen[0].visarea.min_x)) >> 8) + machine->screen[0].visarea.min_x;
- *y = (((readinputport(5 + player * 2) & 0xff) * (machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y)) >> 8) + machine->screen[0].visarea.min_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
+ *x = (((readinputport(4 + player * 2) & 0xff) * (visarea->max_x - visarea->min_x)) >> 8) + visarea->min_x;
+ *y = (((readinputport(5 + player * 2) & 0xff) * (visarea->max_y - visarea->min_y)) >> 8) + visarea->min_y;
}
diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c
index 071ca13bb9e..332a89f05d0 100644
--- a/src/mame/drivers/tmaster.c
+++ b/src/mame/drivers/tmaster.c
@@ -193,7 +193,7 @@ static VIDEO_START( tmaster )
{
for (buffer = 0; buffer < 2; buffer++)
{
- tmaster_bitmap[layer][buffer] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ tmaster_bitmap[layer][buffer] = video_screen_auto_bitmap_alloc(machine->primary_screen);
bitmap_fill(tmaster_bitmap[layer][buffer], NULL, 0xff);
}
}
diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c
index 84b3dad0104..2c305e6a94e 100644
--- a/src/mame/drivers/wheelfir.c
+++ b/src/mame/drivers/wheelfir.c
@@ -155,6 +155,8 @@ static bitmap_t* render_bitmap;
static WRITE16_HANDLER(wheelfir_blit_w)
{
//wheelfir_blitdata[offset]=data;
+ int width = video_screen_get_width(machine->primary_screen);
+ int height = video_screen_get_height(machine->primary_screen);
int vpage=0;
COMBINE_DATA(&wheelfir_blitdata[offset]);
@@ -263,7 +265,7 @@ static WRITE16_HANDLER(wheelfir_blit_w)
pix = rom[offs];
- if(pix && destx >0 && desty >0 && destx<Machine->screen[0].width && desty <Machine->screen[0].height)
+ if(pix && destx >0 && desty >0 && destx<width && desty <height)
*BITMAP_ADDR16(wheelfir_tmp_bitmap[vpage], desty, destx) = pix;
}
}
@@ -275,11 +277,11 @@ static WRITE16_HANDLER(wheelfir_blit_w)
static VIDEO_START(wheelfir)
{
- wheelfir_tmp_bitmap[0] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- wheelfir_tmp_bitmap[1] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
- wheelfir_tmp_bitmap[2] = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ wheelfir_tmp_bitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ wheelfir_tmp_bitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
+ wheelfir_tmp_bitmap[2] = video_screen_auto_bitmap_alloc(machine->primary_screen);
- render_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
+ render_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
@@ -304,7 +306,7 @@ static VIDEO_UPDATE(wheelfir)
copybitmap(bitmap, wheelfir_tmp_bitmap[2], 0, 0, 0, 0, cliprect);
//copybitmap_trans(bitmap, wheelfir_tmp_bitmap[1], 0, 0, 0, 0, cliprect, 0);
copybitmap_trans(bitmap, wheelfir_tmp_bitmap[0], 0, 0, 0, 0, cliprect, 0);
- fillbitmap(wheelfir_tmp_bitmap[0], 0,&machine->screen[0].visarea);
+ fillbitmap(wheelfir_tmp_bitmap[0], 0,video_screen_get_visible_area(screen));
if ( input_code_pressed(KEYCODE_R) )
{
@@ -606,7 +608,7 @@ static TIMER_CALLBACK( scanline_timer_callback )
static VIDEO_EOF( wheelfir )
{
scanline_counter = -1;
- fillbitmap(wheelfir_tmp_bitmap[0], 0,&machine->screen[0].visarea);
+ fillbitmap(wheelfir_tmp_bitmap[0], 0,video_screen_get_visible_area(machine->primary_screen));
timer_adjust_oneshot(frame_timer, attotime_zero, 0);
timer_adjust_oneshot(scanline_timer, attotime_zero, 0);
diff --git a/src/mame/drivers/zn.c b/src/mame/drivers/zn.c
index ccb419c9258..674b88b5be9 100644
--- a/src/mame/drivers/zn.c
+++ b/src/mame/drivers/zn.c
@@ -306,7 +306,7 @@ static READ32_HANDLER( boardconfig_r )
111----- rev=5
*/
- if( Machine->screen[0].height == 1024 )
+ if( video_screen_get_height(machine->primary_screen) == 1024 )
{
return 64|32|8;
}
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index cc5748389b2..405b016286c 100644
--- a/src/mame/includes/dynax.h
+++ b/src/mame/includes/dynax.h
@@ -68,7 +68,7 @@ VIDEO_UPDATE( hnoridur );
VIDEO_UPDATE( sprtmtch );
VIDEO_UPDATE( mjdialq2 );
VIDEO_UPDATE( jantouki );
-VIDEO_EOF( htengoku );
+VIDEO_UPDATE( htengoku );
PALETTE_INIT( sprtmtch );
@@ -93,5 +93,4 @@ extern UINT8 *ddenlovr_pixmap[8];
VIDEO_START(ddenlovr);
VIDEO_UPDATE(ddenlovr);
-VIDEO_EOF(ddenlovr);
diff --git a/src/mame/machine/atarigen.c b/src/mame/machine/atarigen.c
index abc8f0517a5..a240ed38304 100644
--- a/src/mame/machine/atarigen.c
+++ b/src/mame/machine/atarigen.c
@@ -1425,25 +1425,26 @@ int atarigen_get_hblank(const device_config *screen)
/*---------------------------------------------------------------
- atarigen_halt_until_hblank_0_w: Halts CPU 0 until the
+ atarigen_halt_until_hblank_0: Halts CPU 0 until the
next HBLANK.
---------------------------------------------------------------*/
-WRITE16_HANDLER( atarigen_halt_until_hblank_0_w )
+void atarigen_halt_until_hblank_0(const device_config *screen)
{
/* halt the CPU until the next HBLANK */
- int hpos = video_screen_get_hpos(machine->primary_screen); /* need to support scrnum */
- int hblank = machine->screen[0].width * 9 / 10;
+ int hpos = video_screen_get_hpos(screen);
+ int width = video_screen_get_width(screen);
+ int hblank = width * 9 / 10;
double fraction;
/* if we're in hblank, set up for the next one */
if (hpos >= hblank)
- hblank += machine->screen[0].width;
+ hblank += width;
/* halt and set a timer to wake up */
- fraction = (double)(hblank - hpos) / (double)machine->screen[0].width;
- timer_set(double_to_attotime(attotime_to_double(video_screen_get_scan_period(machine->primary_screen)) * fraction), NULL, 0, unhalt_cpu);
- cpunum_set_input_line(machine, 0, INPUT_LINE_HALT, ASSERT_LINE);
+ fraction = (double)(hblank - hpos) / (double)width;
+ timer_set(double_to_attotime(attotime_to_double(video_screen_get_scan_period(screen)) * fraction), NULL, 0, unhalt_cpu);
+ cpunum_set_input_line(screen->machine, 0, INPUT_LINE_HALT, ASSERT_LINE);
}
diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h
index 0fed5eb2711..870fae6ca15 100644
--- a/src/mame/machine/atarigen.h
+++ b/src/mame/machine/atarigen.h
@@ -220,7 +220,7 @@ WRITE16_HANDLER( atarigen_playfield2_latched_msb_w );
void atarigen_scanline_timer_reset(const device_config *screen, atarigen_scanline_func update_graphics, int frequency);
int atarigen_get_hblank(const device_config *screen);
-WRITE16_HANDLER( atarigen_halt_until_hblank_0_w );
+void atarigen_halt_until_hblank_0(const device_config *screen);
WRITE16_HANDLER( atarigen_666_paletteram_w );
WRITE16_HANDLER( atarigen_expanded_666_paletteram_w );
WRITE32_HANDLER( atarigen_666_paletteram32_w );
diff --git a/src/mame/video/dynax.c b/src/mame/video/dynax.c
index a4fb7bf21fd..68d21f4c10e 100644
--- a/src/mame/video/dynax.c
+++ b/src/mame/video/dynax.c
@@ -1254,29 +1254,26 @@ VIDEO_UPDATE( mjdialq2 )
// htengoku uses the mixer chip from ddenlovr
-static bitmap_t *framebuffer;
-
VIDEO_START(htengoku)
{
VIDEO_START_CALL(ddenlovr);
VIDEO_START_CALL(hnoridur);
- framebuffer = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
}
-VIDEO_EOF(htengoku)
+VIDEO_UPDATE(htengoku)
{
int layer,x,y;
// render the layers, one by one, "dynax.c" style. Then convert the pixmaps to "ddenlovr.c"
- // format and let VIDEO_EOF(ddenlovr) do the final compositing (priorities + palettes)
+ // format and let VIDEO_UPDATE(ddenlovr) do the final compositing (priorities + palettes)
for (layer = 0; layer < 4; layer++)
{
- fillbitmap(framebuffer,0,&machine->screen[0].visarea);
- hanamai_copylayer( framebuffer, &machine->screen[0].visarea, layer );
+ fillbitmap(bitmap,0,cliprect);
+ hanamai_copylayer( bitmap, cliprect, layer );
for (y=0; y < 256; y++)
for (x=0; x < 512; x++)
- ddenlovr_pixmap[3-layer][y*512+x] = (UINT8)(*BITMAP_ADDR16(framebuffer, y,x));
+ ddenlovr_pixmap[3-layer][y*512+x] = (UINT8)(*BITMAP_ADDR16(bitmap, y,x));
}
- VIDEO_EOF_CALL(ddenlovr);
+ return VIDEO_UPDATE_CALL(ddenlovr);
}