summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Zsolt Vasvari <zsoltvas@mamedev.org>2008-03-12 10:47:20 +0000
committer Zsolt Vasvari <zsoltvas@mamedev.org>2008-03-12 10:47:20 +0000
commit19b68f421f4e155d2c4a4e02433ca0adac9b6e91 (patch)
tree4003e519e86f11d37745f45806ba79c94ef05bf0 /src
parent7ec1537d2287580e02f42328351834ff9ae546c3 (diff)
Next batch of machine->screen[] removal
Diffstat (limited to 'src')
-rw-r--r--src/emu/inptport.h1
-rw-r--r--src/emu/render.c7
-rw-r--r--src/emu/video.c85
-rw-r--r--src/emu/video.h2
-rw-r--r--src/mame/machine/amiga.c2
-rw-r--r--src/mame/machine/konamigx.c17
-rw-r--r--src/mame/machine/n64.c16
-rw-r--r--src/mame/machine/snes.c3
-rw-r--r--src/mame/video/angelkds.c9
-rw-r--r--src/mame/video/atarimo.c8
-rw-r--r--src/mame/video/atarirle.c29
-rw-r--r--src/mame/video/atarisy1.c2
-rw-r--r--src/mame/video/avgdvg.c16
-rw-r--r--src/mame/video/aztarac.c10
-rw-r--r--src/mame/video/blockout.c13
-rw-r--r--src/mame/video/bosco.c6
-rw-r--r--src/mame/video/cave.c14
-rw-r--r--src/mame/video/cchasm.c11
-rw-r--r--src/mame/video/cinemat.c9
-rw-r--r--src/mame/video/contra.c4
-rw-r--r--src/mame/video/copsnrob.c2
-rw-r--r--src/mame/video/cvs.c19
-rw-r--r--src/mame/video/decocass.c8
-rw-r--r--src/mame/video/dkong.c16
-rw-r--r--src/mame/video/equites.c7
-rw-r--r--src/mame/video/fantland.c3
-rw-r--r--src/mame/video/fastlane.c4
-rw-r--r--src/mame/video/flkatck.c9
-rw-r--r--src/mame/video/flyball.c8
-rw-r--r--src/mame/video/fromance.c33
-rw-r--r--src/mame/video/fuukifg2.c13
-rw-r--r--src/mame/video/fuukifg3.c13
-rw-r--r--src/mame/video/gaelco2.c12
-rw-r--r--src/mame/video/gaelco3d.c18
-rw-r--r--src/mame/video/galaga.c9
-rw-r--r--src/mame/video/galaxian.c179
-rw-r--r--src/mame/video/grchamp.c6
-rw-r--r--src/mame/video/gstriker.c9
-rw-r--r--src/mame/video/gticlub.c39
-rw-r--r--src/mame/video/hng64.c34
-rw-r--r--src/mame/video/jaguar.c15
-rw-r--r--src/mame/video/kan_pand.c20
-rw-r--r--src/mame/video/kaneko16.c8
-rw-r--r--src/mame/video/kncljoe.c9
-rw-r--r--src/mame/video/konamiic.c15
-rw-r--r--src/mame/video/labyrunr.c4
-rw-r--r--src/mame/video/lemmings.c2
-rw-r--r--src/mame/video/lethalj.c6
-rw-r--r--src/mame/video/lordgun.c10
-rw-r--r--src/mame/video/m52.c5
-rw-r--r--src/mame/video/m58.c23
-rw-r--r--src/mame/video/magmax.c4
-rw-r--r--src/mame/video/marvins.c2
-rw-r--r--src/mame/video/matmania.c8
-rw-r--r--src/mame/video/mcr68.c2
-rw-r--r--src/mame/video/megazone.c2
-rw-r--r--src/mame/video/metro.c17
-rw-r--r--src/mame/video/mexico86.c82
-rw-r--r--src/mame/video/midvunit.c4
-rw-r--r--src/mame/video/mjsister.c4
-rw-r--r--src/mame/video/model2.c5
-rw-r--r--src/mame/video/moo.c2
-rw-r--r--src/mame/video/mrflea.c2
-rw-r--r--src/mame/video/munchmo.c2
-rw-r--r--src/mame/video/mustache.c7
-rw-r--r--src/mame/video/naughtyb.c2
-rw-r--r--src/mame/video/nbmj8688.c2
-rw-r--r--src/mame/video/nmk16.c2
-rw-r--r--src/mame/video/pitnrun.c8
-rw-r--r--src/mame/video/playch10.c2
-rw-r--r--src/mame/video/popeye.c14
-rw-r--r--src/mame/video/popper.c4
-rw-r--r--src/mame/video/ppu2c0x.c2
-rw-r--r--src/mame/video/psikyo4.c2
-rw-r--r--src/mame/video/psikyosh.c2
-rw-r--r--src/mame/video/rallyx.c4
-rw-r--r--src/mame/video/realbrk.c25
-rw-r--r--src/mame/video/rohga.c4
-rw-r--r--src/mame/video/rpunch.c2
-rw-r--r--src/mame/video/segag80v.c4
-rw-r--r--src/mame/video/segas32.c2
-rw-r--r--src/mame/video/seta.c3
-rw-r--r--src/mame/video/skullxbo.c2
-rw-r--r--src/mame/video/skyraid.c2
-rw-r--r--src/mame/video/snk.c4
-rw-r--r--src/mame/video/sprint2.c17
-rw-r--r--src/mame/video/sprint4.c2
-rw-r--r--src/mame/video/sprint8.c11
-rw-r--r--src/mame/video/srmp2.c6
-rw-r--r--src/mame/video/ssv.c2
-rw-r--r--src/mame/video/st0016.c2
-rw-r--r--src/mame/video/starcrus.c8
-rw-r--r--src/mame/video/starshp1.c13
-rw-r--r--src/mame/video/stvvdp2.c6
-rw-r--r--src/mame/video/superqix.c4
-rw-r--r--src/mame/video/suprnova.c4
-rw-r--r--src/mame/video/suprridr.c7
-rw-r--r--src/mame/video/system1.c32
-rw-r--r--src/mame/video/taito_b.c10
-rw-r--r--src/mame/video/taito_f3.c5
-rw-r--r--src/mame/video/taitoic.c10
-rw-r--r--src/mame/video/taitojc.c8
-rw-r--r--src/mame/video/taitosj.c6
-rw-r--r--src/mame/video/tank8.c17
-rw-r--r--src/mame/video/taotaido.c9
-rw-r--r--src/mame/video/tia.c6
-rw-r--r--src/mame/video/toaplan2.c9
-rw-r--r--src/mame/video/tp84.c9
-rw-r--r--src/mame/video/tunhunt.c2
-rw-r--r--src/mame/video/ultratnk.c2
-rw-r--r--src/mame/video/vigilant.c2
-rw-r--r--src/mame/video/wecleman.c5
-rw-r--r--src/mame/video/welltris.c5
-rw-r--r--src/mame/video/williams.c2
-rw-r--r--src/mame/video/xexex.c2
-rw-r--r--src/mame/video/xmen.c9
-rw-r--r--src/mame/video/ygv608.c16
-rw-r--r--src/mame/video/yunsun16.c5
-rw-r--r--src/mame/video/zac2650.c28
119 files changed, 643 insertions, 695 deletions
diff --git a/src/emu/inptport.h b/src/emu/inptport.h
index 2250586d985..bc5edc0de36 100644
--- a/src/emu/inptport.h
+++ b/src/emu/inptport.h
@@ -907,7 +907,6 @@ struct _ext_inp_header
***************************************************************************/
void input_port_init(running_machine *machine, const input_port_token *ipt);
-void input_port_post_init(running_machine *machine);
const char *input_port_string_from_token(const input_port_token token);
input_port_entry *input_port_initialize(input_port_init_params *params, UINT32 type, const char *tag, UINT32 mask, UINT32 defval);
diff --git a/src/emu/render.c b/src/emu/render.c
index 0018b2fc073..f7175b2c03f 100644
--- a/src/emu/render.c
+++ b/src/emu/render.c
@@ -1416,7 +1416,8 @@ void render_target_get_minimum_size(render_target *target, INT32 *minwidth, INT3
for (item = target->curview->itemlist[layer]; item != NULL; item = item->next)
if (item->element == NULL)
{
- const screen_config *scrconfig = device_list_find_by_index(Machine->config->devicelist, VIDEO_SCREEN, item->index)->inline_config;
+ const device_config *screen = device_list_find_by_index(Machine->config->devicelist, VIDEO_SCREEN, item->index);
+ const screen_config *scrconfig = screen->inline_config;
const rectangle vectorvis = { 0, 639, 0, 479 };
const rectangle *visarea = NULL;
render_container *container = get_screen_container_by_index(item->index);
@@ -1426,8 +1427,8 @@ void render_target_get_minimum_size(render_target *target, INT32 *minwidth, INT3
/* we may be called very early, before Machine->visible_area is initialized; handle that case */
if (scrconfig->type == SCREEN_TYPE_VECTOR)
visarea = &vectorvis;
- else if (Machine->screen[item->index].visarea.max_x > Machine->screen[item->index].visarea.min_x)
- visarea = &Machine->screen[item->index].visarea;
+ else if (screen->token != NULL)
+ visarea = video_screen_get_visible_area(screen);
else
visarea = &scrconfig->visarea;
diff --git a/src/emu/video.c b/src/emu/video.c
index 5e9ef67d0da..5af7b4d2b1c 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -48,6 +48,9 @@
typedef struct _internal_screen_state internal_screen_state;
struct _internal_screen_state
{
+ /* screen attributes */
+ rectangle visarea; /* current visible area (HBLANK end/start, VBLANK end/start) */
+
/* textures and bitmaps */
render_texture * texture[2]; /* 2x textures for the screen bitmap */
bitmap_t * bitmap[2]; /* 2x bitmaps for rendering */
@@ -279,6 +282,11 @@ void video_init(running_machine *machine)
const device_config *screen;
const char *filename;
+ /* validate */
+ assert(machine != NULL);
+ assert(machine->config != NULL);
+ assert(machine->config->devicelist != NULL);
+
/* request a callback upon exiting */
add_exit_callback(machine, video_exit);
@@ -322,7 +330,6 @@ void video_init(running_machine *machine)
internal_state->scanline0_timer = timer_alloc(scanline0_callback, (void *)screen);
/* configure the screen with the default parameters */
- state->format = config->format;
video_screen_configure(screen, config->width, config->height, &config->visarea, config->refresh);
/* configure the default cliparea */
@@ -373,6 +380,14 @@ void video_init(running_machine *machine)
/* reset video statics and get out of here */
pdrawgfx_shadow_lowpri = 0;
+ /* create a render target for snapshots */
+ if (machine->primary_screen != NULL)
+ {
+ global.snap_target = render_target_alloc(layout_snap, RENDER_CREATE_SINGLE_FILE | RENDER_CREATE_HIDDEN);
+ assert(global.snap_target != NULL);
+ render_target_set_layer_config(global.snap_target, 0);
+ }
+
/* start recording movie if specified */
filename = options_get_string(mame_options(), OPTION_MNGWRITE);
if ((filename[0] != 0) && (machine->primary_screen != NULL))
@@ -389,6 +404,10 @@ static void video_exit(running_machine *machine)
const device_config *screen;
int i;
+ /* validate */
+ assert(machine != NULL);
+ assert(machine->config != NULL);
+
/* stop recording any movie */
if (machine->primary_screen != NULL)
video_movie_end_recording(machine->primary_screen);
@@ -682,7 +701,7 @@ void video_screen_configure(const device_config *screen, int width, int height,
/* if we're too small to contain this width/height, reallocate our bitmaps and textures */
if (width > curwidth || height > curheight)
{
- bitmap_format screen_format = state->format;
+ bitmap_format screen_format = config->format;
/* free what we have currently */
if (internal_state->texture[0] != NULL)
@@ -724,7 +743,7 @@ void video_screen_configure(const device_config *screen, int width, int height,
/* now fill in the new parameters */
state->width = width;
state->height = height;
- state->visarea = *visarea;
+ internal_state->visarea = *visarea;
/* compute timing parameters */
internal_state->frame_period = frame_period;
@@ -777,6 +796,12 @@ void video_screen_set_visarea(const device_config *screen, int min_x, int max_x,
internal_screen_state *internal_state = (internal_screen_state *)state->private_data;
rectangle visarea;
+ /* validate arguments */
+ assert(min_x >= 0);
+ assert(min_y >= 0);
+ assert(min_x < max_x);
+ assert(min_y < max_y);
+
visarea.min_x = min_x;
visarea.max_x = max_x;
visarea.min_y = min_y;
@@ -796,7 +821,10 @@ void video_screen_update_partial(const device_config *screen, int scanline)
{
screen_state *state = get_safe_token(screen);
internal_screen_state *internal_state = (internal_screen_state *)state->private_data;
- rectangle clip = state->visarea;
+ rectangle clip = internal_state->visarea;
+
+ /* validate arguments */
+ assert(scanline >= 0);
LOG_PARTIAL_UPDATES(("Partial: video_screen_update_partial(%s, %d): ", screen->tag, scanline));
@@ -900,7 +928,7 @@ int video_screen_get_vpos(const device_config *screen)
vpos = delta / internal_state->scantime;
/* adjust for the fact that VBLANK starts at the bottom of the visible area */
- return (state->visarea.max_y + 1 + vpos) % state->height;
+ return (internal_state->visarea.max_y + 1 + vpos) % state->height;
}
@@ -940,8 +968,9 @@ int video_screen_get_hpos(const device_config *screen)
int video_screen_get_vblank(const device_config *screen)
{
screen_state *state = get_safe_token(screen);
+ internal_screen_state *internal_state = (internal_screen_state *)state->private_data;
int vpos = video_screen_get_vpos(screen);
- return (vpos < state->visarea.min_y || vpos > state->visarea.max_y);
+ return (vpos < internal_state->visarea.min_y || vpos > internal_state->visarea.max_y);
}
@@ -953,8 +982,9 @@ int video_screen_get_vblank(const device_config *screen)
int video_screen_get_hblank(const device_config *screen)
{
screen_state *state = get_safe_token(screen);
+ internal_screen_state *internal_state = (internal_screen_state *)state->private_data;
int hpos = video_screen_get_hpos(screen);
- return (hpos < state->visarea.min_x || hpos > state->visarea.max_x);
+ return (hpos < internal_state->visarea.min_x || hpos > internal_state->visarea.max_x);
}
@@ -987,7 +1017,8 @@ int video_screen_get_height(const device_config *screen)
const rectangle *video_screen_get_visible_area(const device_config *screen)
{
screen_state *state = get_safe_token(screen);
- return &state->visarea;
+ internal_screen_state *internal_state = (internal_screen_state *)state->private_data;
+ return &internal_state->visarea;
}
@@ -1004,8 +1035,12 @@ attotime video_screen_get_time_until_pos(const device_config *screen, int vpos,
attoseconds_t curdelta = attotime_to_attoseconds(attotime_sub(timer_get_time(), internal_state->vblank_start_time));
attoseconds_t targetdelta;
+ /* validate arguments */
+ assert(vpos >= 0);
+ assert(hpos >= 0);
+
/* since we measure time relative to VBLANK, compute the scanline offset from VBLANK */
- vpos += state->height - (state->visarea.max_y + 1);
+ vpos += state->height - (internal_state->visarea.max_y + 1);
vpos %= state->height;
/* compute the delta for the given X,Y position */
@@ -1196,8 +1231,8 @@ void video_screen_register_global_vbl_cb(vblank_state_changed_global_func vbl_cb
static DEVICE_START( video_screen )
{
- int scrindex = device_list_index(device->machine->config->devicelist, VIDEO_SCREEN, device->tag);
- return &device->machine->screen[scrindex];
+ int scrnum = device_list_index(device->machine->config->devicelist, VIDEO_SCREEN, device->tag);
+ return &device->machine->screen[scrnum];
}
@@ -1355,8 +1390,8 @@ static TIMER_CALLBACK( scanline_update_callback )
/* compute the next visible scanline */
scanline++;
- if (scanline > state->visarea.max_y)
- scanline = state->visarea.min_y;
+ if (scanline > internal_state->visarea.max_y)
+ scanline = internal_state->visarea.min_y;
timer_adjust_oneshot(internal_state->scanline_timer, video_screen_get_time_until_pos(screen, scanline, 0), scanline);
}
@@ -1373,6 +1408,10 @@ void video_frame_update(running_machine *machine, int debug)
int skipped_it = global.skipping_this_frame;
int phase = mame_get_phase(machine);
+ /* validate */
+ assert(machine != NULL);
+ assert(machine->config != NULL);
+
/* only render sound and video if we're in the running phase */
if (phase == MAME_PHASE_RUNNING && (!mame_is_paused(machine) || global.update_in_pause))
{
@@ -1545,6 +1584,9 @@ const char *video_get_speed_text(running_machine *machine)
static char buffer[1024];
char *dest = buffer;
+ /* validate */
+ assert(machine != NULL);
+
/* if we're paused, just display Paused */
if (paused)
dest += sprintf(dest, "paused");
@@ -2018,6 +2060,10 @@ void video_screen_save_snapshot(const device_config *screen, mame_file *fp)
png_error error;
char text[256];
+ /* validate */
+ assert(screen != NULL);
+ assert(fp != NULL);
+
/* create the bitmap to pass in */
create_snapshot_bitmap(screen);
@@ -2046,6 +2092,10 @@ void video_save_active_screen_snapshots(running_machine *machine)
mame_file *fp;
const device_config *screen;
+ /* validate */
+ assert(machine != NULL);
+ assert(machine->config != NULL);
+
/* write one snapshot per visible screen */
for (screen = video_screen_first(machine->config); screen != NULL; screen = video_screen_next(screen))
if (render_is_live_screen(screen))
@@ -2072,16 +2122,9 @@ static void create_snapshot_bitmap(const device_config *screen)
INT32 width, height;
int view_index;
- /* lazy create snap target */
- if (global.snap_target == NULL)
- {
- global.snap_target = render_target_alloc(layout_snap, RENDER_CREATE_SINGLE_FILE | RENDER_CREATE_HIDDEN);
- assert(global.snap_target != NULL);
- render_target_set_layer_config(global.snap_target, 0);
- }
-
/* select the appropriate view in our dummy target */
view_index = device_list_index(screen->machine->config->devicelist, VIDEO_SCREEN, screen->tag);
+ assert(view_index != -1);
render_target_set_view(global.snap_target, view_index);
/* get the minimum width/height and set it on the target */
diff --git a/src/emu/video.h b/src/emu/video.h
index d073bf88d6a..21ab170f2ab 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -71,8 +71,6 @@ typedef struct _screen_state screen_state;
struct _screen_state
{
int width, height; /* current total width/height (HTOTAL, VTOTAL) */
- rectangle visarea; /* current visible area (HBLANK end/start, VBLANK end/start) */
- bitmap_format format; /* bitmap format (a copy of screen_config) */
void * private_data; /* pointer to the private data structure */
};
diff --git a/src/mame/machine/amiga.c b/src/mame/machine/amiga.c
index e69413fd980..ec076ee351a 100644
--- a/src/mame/machine/amiga.c
+++ b/src/mame/machine/amiga.c
@@ -386,7 +386,7 @@ static TIMER_CALLBACK( scanline_callback )
cia_clock_tod(1);
/* render up to this scanline */
- if (scanline < machine->screen[0].visarea.min_y)
+ if (scanline < video_screen_get_visible_area(machine->primary_screen)->min_y)
amiga_render_scanline(machine, NULL, scanline);
else
video_screen_update_partial(machine->primary_screen, scanline);
diff --git a/src/mame/machine/konamigx.c b/src/mame/machine/konamigx.c
index 6fe0451b0a7..48587c93daa 100644
--- a/src/mame/machine/konamigx.c
+++ b/src/mame/machine/konamigx.c
@@ -1119,17 +1119,16 @@ int K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and
return(emx);
}
-static void gx_wipezbuf(int noshadow)
+static void gx_wipezbuf(running_machine *machine, int noshadow)
{
- UINT8 *zptr;
- int w, h;
- register int ecx;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- w = Machine->screen[0].visarea.max_x - Machine->screen[0].visarea.min_x + 1;
- h = Machine->screen[0].visarea.max_y - Machine->screen[0].visarea.min_y + 1;
+ int w = visarea->max_x - visarea->min_x + 1;
+ int h = visarea->max_y - visarea->min_y + 1;
+
+ UINT8 *zptr = gx_objzbuf;
+ int ecx = h;
- zptr = gx_objzbuf;
- ecx = h;
do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
if (!noshadow)
@@ -1265,7 +1264,7 @@ void konamigx_mixer(running_machine *machine, bitmap_t *bitmap, const rectangle
if (mixerflags & GXMIX_NOZBUF)
mixerflags |= GXMIX_NOSHADOW;
else
- gx_wipezbuf(mixerflags & GXMIX_NOSHADOW);
+ gx_wipezbuf(machine, mixerflags & GXMIX_NOSHADOW);
// cache global parameters
konamigx_precache_registers();
diff --git a/src/mame/machine/n64.c b/src/mame/machine/n64.c
index 23c7f82eb0a..24aede9b075 100644
--- a/src/mame/machine/n64.c
+++ b/src/mame/machine/n64.c
@@ -629,10 +629,12 @@ WRITE32_HANDLER( n64_vi_reg_w )
case 0x00/4: // VI_CONTROL_REG
if ((n64_vi_control & 0x40) != (data & 0x40))
{
- screen_state *state = &Machine->screen[0];
- rectangle visarea = state->visarea;
+ int width = video_screen_get_width(machine->primary_screen);
+ rectangle visarea = *video_screen_get_visible_area(machine->primary_screen);
+ attoseconds_t period = video_screen_get_frame_period(machine->primary_screen).attoseconds;
+
visarea.max_y = (data & 0x40) ? 479 : 239;
- video_screen_configure(machine->primary_screen, state->width, visarea.max_y + 1, &visarea, video_screen_get_frame_period(machine->primary_screen).attoseconds);
+ video_screen_configure(machine->primary_screen, width, visarea.max_y + 1, &visarea, period);
}
n64_vi_control = data;
break;
@@ -644,10 +646,12 @@ WRITE32_HANDLER( n64_vi_reg_w )
case 0x08/4: // VI_WIDTH_REG
if (n64_vi_width != data && data > 0)
{
- screen_state *state = &Machine->screen[0];
- rectangle visarea = state->visarea;
+ int height = video_screen_get_height(machine->primary_screen);
+ rectangle visarea = *video_screen_get_visible_area(machine->primary_screen);
+ attoseconds_t period = video_screen_get_frame_period(machine->primary_screen).attoseconds;
+
visarea.max_x = data-1;
- video_screen_configure(machine->primary_screen, visarea.max_x + 1, state->height, &visarea, video_screen_get_frame_period(machine->primary_screen).attoseconds);
+ video_screen_configure(machine->primary_screen, visarea.max_x + 1, height, &visarea, period);
}
n64_vi_width = data;
fb_width = data;
diff --git a/src/mame/machine/snes.c b/src/mame/machine/snes.c
index ed0326ebe11..0279d55221e 100644
--- a/src/mame/machine/snes.c
+++ b/src/mame/machine/snes.c
@@ -1085,8 +1085,7 @@ WRITE8_HANDLER( snes_w_io )
case BGMODE: /* BG mode and character size settings */
snes_ppu.mode = data & 0x7;
{
- screen_state *state = &Machine->screen[0];
- rectangle visarea = state->visarea;
+ rectangle visarea = *video_screen_get_visible_area(machine->primary_screen);
visarea.min_x = visarea.min_y = 0;
visarea.max_y = snes_ppu.beam.last_visible_line - 1;
diff --git a/src/mame/video/angelkds.c b/src/mame/video/angelkds.c
index 9634ae50e03..584dda252e3 100644
--- a/src/mame/video/angelkds.c
+++ b/src/mame/video/angelkds.c
@@ -278,6 +278,7 @@ VIDEO_START( angelkds )
VIDEO_UPDATE( angelkds )
{
+ const rectangle *visarea = video_screen_get_visible_area(screen);
rectangle clip;
fillbitmap(bitmap,0x3f,cliprect); /* is there a register controling the colour?, we currently use the last colour of the tx palette */
@@ -285,8 +286,8 @@ VIDEO_UPDATE( angelkds )
/* draw top of screen */
clip.min_x = 8*0;
clip.max_x = 8*16-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;
if ((angelkds_layer_ctrl & 0x80) == 0x00) tilemap_draw(bitmap,&clip,bgtop_tilemap,0,0);
draw_sprites(screen->machine, bitmap,&clip, 0x80);
if ((angelkds_layer_ctrl & 0x20) == 0x00) tilemap_draw(bitmap,&clip,tx_tilemap,0,0);
@@ -294,8 +295,8 @@ VIDEO_UPDATE( angelkds )
/* draw bottom of screen */
clip.min_x = 8*16;
clip.max_x = 8*32-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;
if ((angelkds_layer_ctrl & 0x40) == 0x00) tilemap_draw(bitmap,&clip,bgbot_tilemap,0,0);
draw_sprites(screen->machine, bitmap,&clip, 0x40);
if ((angelkds_layer_ctrl & 0x20) == 0x00) tilemap_draw(bitmap,&clip,tx_tilemap,0,0);
diff --git a/src/mame/video/atarimo.c b/src/mame/video/atarimo.c
index 4082d444bcb..87790a6af5d 100644
--- a/src/mame/video/atarimo.c
+++ b/src/mame/video/atarimo.c
@@ -321,7 +321,7 @@ static TIMER_CALLBACK( force_update )
video_screen_update_partial(machine->primary_screen, scanline - 1);
scanline += 64;
- if (scanline >= machine->screen[0].visarea.max_y)
+ if (scanline >= video_screen_get_visible_area(machine->primary_screen)->max_y)
scanline = 0;
timer_adjust_oneshot(force_update_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
}
@@ -696,7 +696,7 @@ bitmap_t *atarimo_render(running_machine *machine, int map, const rectangle *cli
/* compute minimum Y and wrap around if necessary */
bandclip.min_y = ((band << mo->slipshift) - mo->yscroll + mo->slipoffset) & mo->bitmapymask;
- if (bandclip.min_y > machine->screen[0].visarea.max_y)
+ if (bandclip.min_y > video_screen_get_visible_area(machine->primary_screen)->max_y)
bandclip.min_y -= mo->bitmapheight;
/* maximum Y is based on the minimum */
@@ -815,8 +815,8 @@ if ((temp & 0xff00) == 0xc800)
/* adjust the final coordinates */
xpos &= mo->bitmapxmask;
ypos &= mo->bitmapymask;
- if (xpos > machine->screen[0].visarea.max_x) xpos -= mo->bitmapwidth;
- if (ypos > machine->screen[0].visarea.max_y) ypos -= mo->bitmapheight;
+ if (xpos > video_screen_get_visible_area(machine->primary_screen)->max_x) xpos -= mo->bitmapwidth;
+ if (ypos > video_screen_get_visible_area(machine->primary_screen)->max_y) ypos -= mo->bitmapheight;
/* is this one special? */
if (mo->specialmask.mask != 0 && EXTRACT_DATA(entry, mo->specialmask) == mo->specialvalue)
diff --git a/src/mame/video/atarirle.c b/src/mame/video/atarirle.c
index b556f7451d8..139d0cbe813 100644
--- a/src/mame/video/atarirle.c
+++ b/src/mame/video/atarirle.c
@@ -308,7 +308,7 @@ void atarirle_init(int map, const atarirle_desc *desc)
mo->romlength = memory_region_length(desc->region);
mo->objectcount = count_objects(base, mo->romlength);
- mo->cliprect = Machine->screen[0].visarea;
+ mo->cliprect = *video_screen_get_visible_area(Machine->primary_screen);
if (desc->rightclip)
{
mo->cliprect.min_x = desc->leftclip;
@@ -840,6 +840,7 @@ if (hilite)
do
{
+ const rectangle *visarea = video_screen_get_visible_area(Machine->primary_screen);
int scaled_width = (scale * info->width + 0x7fff) >> 12;
int scaled_height = (scale * info->height + 0x7fff) >> 12;
int dx, dy, ex, ey, sx = x, sy = y, tx, ty;
@@ -855,27 +856,27 @@ if (hilite)
ey = sy + scaled_height - 1;
/* left edge clip */
- if (sx < Machine->screen[0].visarea.min_x)
- sx = Machine->screen[0].visarea.min_x;
- if (sx > Machine->screen[0].visarea.max_x)
+ if (sx < visarea->min_x)
+ sx = visarea->min_x;
+ if (sx > visarea->max_x)
break;
/* right edge clip */
- if (ex > Machine->screen[0].visarea.max_x)
- ex = Machine->screen[0].visarea.max_x;
- else if (ex < Machine->screen[0].visarea.min_x)
+ if (ex > visarea->max_x)
+ ex = visarea->max_x;
+ else if (ex < visarea->min_x)
break;
/* top edge clip */
- if (sy < Machine->screen[0].visarea.min_y)
- sy = Machine->screen[0].visarea.min_y;
- else if (sy > Machine->screen[0].visarea.max_y)
+ if (sy < visarea->min_y)
+ sy = visarea->min_y;
+ else if (sy > visarea->max_y)
break;
/* bottom edge clip */
- if (ey > Machine->screen[0].visarea.max_y)
- ey = Machine->screen[0].visarea.max_y;
- else if (ey < Machine->screen[0].visarea.min_y)
+ if (ey > visarea->max_y)
+ ey = visarea->max_y;
+ else if (ey < visarea->min_y)
break;
for (ty = sy; ty <= ey; ty++)
@@ -917,7 +918,7 @@ void draw_rle(atarirle_data *mo, bitmap_t *bitmap, int code, int color, int hfli
if (hflip)
scaled_xoffs = ((xscale * info->width) >> 12) - scaled_xoffs;
-//if (clip->min_y == Machine->screen[0].visarea.min_y)
+//if (clip->min_y == video_screen_get_visible_area(Machine->primary_screen)->min_y)
//logerror(" Sprite: c=%04X l=%04X h=%d X=%4d (o=%4d w=%3d) Y=%4d (o=%4d h=%d) s=%04X\n",
// code, color, hflip,
// x, -scaled_xoffs, (xscale * info->width) >> 12,
diff --git a/src/mame/video/atarisy1.c b/src/mame/video/atarisy1.c
index cb51bbe8519..610cc3f33c1 100644
--- a/src/mame/video/atarisy1.c
+++ b/src/mame/video/atarisy1.c
@@ -345,7 +345,7 @@ WRITE16_HANDLER( atarisy1_yscroll_w )
/* because this latches a new value into the scroll base,
we need to adjust for the scanline */
adjusted_scroll = newscroll;
- if (scanline <= Machine->screen[0].visarea.max_y)
+ if (scanline <= video_screen_get_visible_area(machine->primary_screen)->max_y)
adjusted_scroll -= (scanline + 1);
tilemap_set_scrolly(atarigen_playfield_tilemap, 0, adjusted_scroll);
diff --git a/src/mame/video/avgdvg.c b/src/mame/video/avgdvg.c
index cb5cfbb6822..a5c4bfedc0c 100644
--- a/src/mame/video/avgdvg.c
+++ b/src/mame/video/avgdvg.c
@@ -1445,10 +1445,12 @@ static void register_state (void)
static VIDEO_START( avg_common )
{
- xmin = machine->screen[0].visarea.min_x;
- ymin = machine->screen[0].visarea.min_y;
- xmax = machine->screen[0].visarea.max_x;
- ymax = machine->screen[0].visarea.max_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
+ xmin = visarea->min_x;
+ ymin = visarea->min_y;
+ xmax = visarea->max_x;
+ ymax = visarea->max_y;
xcenter = ((xmax - xmin) / 2) << 16;
ycenter = ((ymax - ymin) / 2) << 16;
@@ -1472,11 +1474,13 @@ static VIDEO_START( avg_common )
VIDEO_START( dvg )
{
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
vgc = &dvg_default;
vg = &vgd;
- xmin = machine->screen[0].visarea.min_x;
- ymin = machine->screen[0].visarea.min_y;
+ xmin = visarea->min_x;
+ ymin = visarea->min_y;
vg_halt_timer = timer_alloc(vg_set_halt_callback, NULL);
vg_run_timer = timer_alloc(run_state_machine, NULL);
diff --git a/src/mame/video/aztarac.c b/src/mame/video/aztarac.c
index d0fba29985f..3974a55f916 100644
--- a/src/mame/video/aztarac.c
+++ b/src/mame/video/aztarac.c
@@ -83,10 +83,12 @@ WRITE16_HANDLER( aztarac_ubr_w )
VIDEO_START( aztarac )
{
- int xmin = machine->screen[0].visarea.min_x;
- int ymin = machine->screen[0].visarea.min_y;
- int xmax = machine->screen[0].visarea.max_x;
- int ymax = machine->screen[0].visarea.max_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
+ int xmin = visarea->min_x;
+ int ymin = visarea->min_y;
+ int xmax = visarea->max_x;
+ int ymax = visarea->max_y;
xcenter=((xmax + xmin) / 2) << 16;
ycenter=((ymax + ymin) / 2) << 16;
diff --git a/src/mame/video/blockout.c b/src/mame/video/blockout.c
index aa60deb7069..d62c69e8fa8 100644
--- a/src/mame/video/blockout.c
+++ b/src/mame/video/blockout.c
@@ -67,16 +67,13 @@ VIDEO_START( blockout )
-static void updatepixels(int x,int y)
+static void update_pixels(const device_config *screen, int x, int y)
{
UINT16 front,back;
int color;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
-
- if (x < Machine->screen[0].visarea.min_x ||
- x > Machine->screen[0].visarea.max_x ||
- y < Machine->screen[0].visarea.min_y ||
- y > Machine->screen[0].visarea.max_y)
+ if (x < visarea->min_x || x > visarea->max_x || y < visarea->min_y || y > visarea->max_y)
return;
front = blockout_videoram[y*256+x/2];
@@ -99,9 +96,7 @@ WRITE16_HANDLER( blockout_videoram_w )
COMBINE_DATA(&blockout_videoram[offset]);
if (oldword != blockout_videoram[offset])
- {
- updatepixels((offset % 256)*2,(offset / 256) % 256);
- }
+ update_pixels(machine->primary_screen, (offset % 256)*2, (offset / 256) % 256);
}
diff --git a/src/mame/video/bosco.c b/src/mame/video/bosco.c
index 69924d6c262..2f306f07a61 100644
--- a/src/mame/video/bosco.c
+++ b/src/mame/video/bosco.c
@@ -257,7 +257,7 @@ static void draw_bullets(running_machine *machine, bitmap_t *bitmap, const recta
}
-static void draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
+static void draw_stars(bitmap_t *bitmap, const rectangle *cliprect)
{
if (1)
{
@@ -282,7 +282,7 @@ static void draw_stars(running_machine *machine, bitmap_t *bitmap, const rectang
{
if (flip_screen_get()) x += 64;
- if (y >= machine->screen[0].visarea.min_y && y <= machine->screen[0].visarea.max_y)
+ if (y >= cliprect->min_y && y <= cliprect->max_y)
*BITMAP_ADDR16(bitmap, y, x) = STARS_COLOR_BASE + star_seed_tab[star_cntr].col;
}
}
@@ -309,7 +309,7 @@ VIDEO_UPDATE( bosco )
}
fillbitmap(bitmap,get_black_pen(screen->machine),cliprect);
- draw_stars(screen->machine, bitmap,cliprect);
+ draw_stars(bitmap,cliprect);
tilemap_draw(bitmap,&bg_clip,bg_tilemap,0,0);
tilemap_draw(bitmap,&fg_clip,fg_tilemap,0,0);
diff --git a/src/mame/video/cave.c b/src/mame/video/cave.c
index 4f938565733..469d7cef92d 100644
--- a/src/mame/video/cave.c
+++ b/src/mame/video/cave.c
@@ -780,7 +780,7 @@ static void sprite_init_cave(running_machine *machine)
}
-static void cave_sprite_check(running_machine *machine, const rectangle *clip )
+static void cave_sprite_check(const device_config *screen, const rectangle *clip )
{
{ /* set clip */
int left = clip->min_x;
@@ -800,6 +800,8 @@ static void cave_sprite_check(running_machine *machine, const rectangle *clip )
int i[4]={0,0,0,0};
int priority_check = 0;
int spritetype = cave_spritetype2;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+
while( sprite<finish )
{
if( sprite->x + sprite->total_width > blit.clip_left && sprite->x < blit.clip_right &&
@@ -831,19 +833,19 @@ static void cave_sprite_check(running_machine *machine, const rectangle *clip )
case CAVE_SPRITETYPE_ZOOM | CAVE_SPRITETYPE_ZBUF:
cave_sprite_draw = sprite_draw_cave_zbuf;
- if (clip->min_y == machine->screen[0].visarea.min_y)
+ if (clip->min_y == visarea->min_y)
{
if(!(sprite_zbuf_baseval += MAX_SPRITE_NUM))
- fillbitmap(sprite_zbuf,0,&machine->screen[0].visarea);
+ fillbitmap(sprite_zbuf,0,visarea);
}
break;
case CAVE_SPRITETYPE_ZBUF:
cave_sprite_draw = sprite_draw_donpachi_zbuf;
- if (clip->min_y == machine->screen[0].visarea.min_y)
+ if (clip->min_y == visarea->min_y)
{
if(!(sprite_zbuf_baseval += MAX_SPRITE_NUM))
- fillbitmap(sprite_zbuf,0,&machine->screen[0].visarea);
+ fillbitmap(sprite_zbuf,0,visarea);
}
break;
@@ -1523,7 +1525,7 @@ VIDEO_UPDATE( cave )
}
#endif
- cave_sprite_check(screen->machine, cliprect);
+ cave_sprite_check(screen, cliprect);
fillbitmap(bitmap,background_color,cliprect);
diff --git a/src/mame/video/cchasm.c b/src/mame/video/cchasm.c
index 2dfb58522f8..158d601c999 100644
--- a/src/mame/video/cchasm.c
+++ b/src/mame/video/cchasm.c
@@ -123,15 +123,10 @@ WRITE16_HANDLER( cchasm_refresh_control_w )
VIDEO_START( cchasm )
{
- int xmin, xmax, ymin, ymax;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- xmin=machine->screen[0].visarea.min_x;
- ymin=machine->screen[0].visarea.min_y;
- xmax=machine->screen[0].visarea.max_x;
- ymax=machine->screen[0].visarea.max_y;
-
- xcenter=((xmax+xmin)/2) << 16;
- ycenter=((ymax+ymin)/2) << 16;
+ xcenter=((visarea->max_x + visarea->min_x)/2) << 16;
+ ycenter=((visarea->max_y + visarea->min_y)/2) << 16;
VIDEO_START_CALL(vector);
}
diff --git a/src/mame/video/cinemat.c b/src/mame/video/cinemat.c
index 388edd8d9c6..5e6bc0da5c1 100644
--- a/src/mame/video/cinemat.c
+++ b/src/mame/video/cinemat.c
@@ -49,13 +49,14 @@ static UINT8 last_control;
void cinemat_vector_callback(INT16 sx, INT16 sy, INT16 ex, INT16 ey, UINT8 shift)
{
+ const rectangle *visarea = video_screen_get_visible_area(Machine->primary_screen);
int intensity = 0xff;
/* adjust for slop */
- sx = sx - Machine->screen[0].visarea.min_x;
- ex = ex - Machine->screen[0].visarea.min_x;
- sy = sy - Machine->screen[0].visarea.min_y;
- ey = ey - Machine->screen[0].visarea.min_y;
+ sx = sx - visarea->min_x;
+ ex = ex - visarea->min_x;
+ sy = sy - visarea->min_y;
+ ey = ey - visarea->min_y;
/* point intensity is determined by the shift value */
if (sx == ex && sy == ey)
diff --git a/src/mame/video/contra.c b/src/mame/video/contra.c
index 1d266a5c836..6cd99b8e8b1 100644
--- a/src/mame/video/contra.c
+++ b/src/mame/video/contra.c
@@ -165,12 +165,12 @@ VIDEO_START( contra )
private_spriteram = auto_malloc(0x800);
private_spriteram_2 = auto_malloc(0x800);
- bg_clip = machine->screen[0].visarea;
+ bg_clip = *video_screen_get_visible_area(machine->primary_screen);
bg_clip.min_x += 40;
fg_clip = bg_clip;
- tx_clip = machine->screen[0].visarea;
+ tx_clip = *video_screen_get_visible_area(machine->primary_screen);
tx_clip.max_x = 39;
tx_clip.min_x = 0;
diff --git a/src/mame/video/copsnrob.c b/src/mame/video/copsnrob.c
index d408fb9e7ef..a697fd2d74d 100644
--- a/src/mame/video/copsnrob.c
+++ b/src/mame/video/copsnrob.c
@@ -134,7 +134,7 @@ VIDEO_UPDATE( copsnrob )
{
if (val & mask1)
{
- for (y = 0; y <= screen->machine->screen[0].visarea.max_y; y++)
+ for (y = cliprect->min_y; y <= cliprect->max_y; y++)
if (copsnrob_bulletsram[y] & mask2)
*BITMAP_ADDR16(bitmap, y, 256-x) = 1;
}
diff --git a/src/mame/video/cvs.c b/src/mame/video/cvs.c
index 6de325c03c7..3011789fae6 100644
--- a/src/mame/video/cvs.c
+++ b/src/mame/video/cvs.c
@@ -357,20 +357,17 @@ VIDEO_UPDATE( cvs )
UINT8 x = (stars[offs].x + stars_scroll) >> 1;
UINT8 y = stars[offs].y + ((stars_scroll + stars[offs].x) >> 9);
- if (y >= screen->machine->screen[0].visarea.min_y &&
- y <= screen->machine->screen[0].visarea.max_y)
+ if ((y & 1) ^ ((x >> 4) & 1))
{
- if ((y & 1) ^ ((x >> 4) & 1))
- {
- if (flip_screen_x_get())
- x = ~x;
+ if (flip_screen_x_get())
+ x = ~x;
- if (flip_screen_y_get())
- y = ~y;
+ if (flip_screen_y_get())
+ y = ~y;
- if (colortable_entry_get_value(screen->machine->colortable, *BITMAP_ADDR16(bitmap, y, x)) == 0)
- *BITMAP_ADDR16(bitmap, y, x) = BULLET_STAR_PEN;
- }
+ if ((y >= cliprect->min_y) && (y <= cliprect->max_y) &&
+ (colortable_entry_get_value(screen->machine->colortable, *BITMAP_ADDR16(bitmap, y, x)) == 0))
+ *BITMAP_ADDR16(bitmap, y, x) = BULLET_STAR_PEN;
}
}
}
diff --git a/src/mame/video/decocass.c b/src/mame/video/decocass.c
index 4da3281f140..40c998c75aa 100644
--- a/src/mame/video/decocass.c
+++ b/src/mame/video/decocass.c
@@ -592,11 +592,11 @@ VIDEO_START( decocass )
tilemap_set_transparent_pen( bg_tilemap_r, 0 );
tilemap_set_transparent_pen( fg_tilemap, 0 );
- bg_tilemap_l_clip = machine->screen[0].visarea;
- bg_tilemap_l_clip.max_y = machine->screen[0].height / 2;
+ bg_tilemap_l_clip = *video_screen_get_visible_area(machine->primary_screen);
+ bg_tilemap_l_clip.max_y = video_screen_get_height(machine->primary_screen) / 2;
- bg_tilemap_r_clip = machine->screen[0].visarea;
- bg_tilemap_r_clip.min_y = machine->screen[0].height / 2;
+ bg_tilemap_r_clip = *video_screen_get_visible_area(machine->primary_screen);
+ bg_tilemap_r_clip.min_y = video_screen_get_height(machine->primary_screen) / 2;
/* background videroam bits D0-D3 are shared with the tileram */
decocass_bgvideoram = decocass_tileram;
diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c
index 97a2bd608ec..7091e73b4a5 100644
--- a/src/mame/video/dkong.c
+++ b/src/mame/video/dkong.c
@@ -761,9 +761,8 @@ static void radarscp_step(running_machine *machine, int line_cnt)
}
-static void radarscp_draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
+static void radarscp_draw_background(dkong_state *state, bitmap_t *bitmap, const rectangle *cliprect)
{
- dkong_state *state = machine->driver_data;
const UINT8 *htable = NULL;
int x,y;
UINT8 draw_ok;
@@ -772,11 +771,11 @@ static void radarscp_draw_background(running_machine *machine, bitmap_t *bitmap,
if (state->hardware_type == HARDWARE_TRS01)
htable = memory_region(REGION_GFX4);
- y = machine->screen[0].visarea.min_y;
- while (y <= machine->screen[0].visarea.max_y)
+ y = cliprect->min_y;
+ while (y <= cliprect->max_y)
{
- x = machine->screen[0].visarea.min_x;
- while (x <= machine->screen[0].visarea.max_x)
+ x = cliprect->min_x;
+ while (x <= cliprect->max_x)
{
pixel = BITMAP_ADDR16(bitmap, y, x);
draw_ok = !(*pixel & 0x01) && !(*pixel & 0x02);
@@ -800,10 +799,11 @@ static TIMER_CALLBACK( scanline_callback )
UINT16 *pixel;
static int counter=0;
int scanline = param;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
y = scanline;
radarscp_step(machine, y);
- if (y <= machine->screen[0].visarea.min_y || y > machine->screen[0].visarea.max_y)
+ if (y <= visarea->min_y || y > visarea->max_y)
counter = 0;
offset = (state->flip ^ state->rflip_sig) ? 0x000 : 0x400;
x = 0;
@@ -937,7 +937,7 @@ VIDEO_UPDATE( dkong )
case HARDWARE_TRS02:
tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
draw_sprites(screen->machine, bitmap, cliprect, 0x40, 1);
- radarscp_draw_background(screen->machine, bitmap, cliprect);
+ radarscp_draw_background(state, bitmap, cliprect);
break;
default:
fatalerror("Invalid hardware type in dkong_video_update");
diff --git a/src/mame/video/equites.c b/src/mame/video/equites.c
index e268ddfc8c2..97803458fe1 100644
--- a/src/mame/video/equites.c
+++ b/src/mame/video/equites.c
@@ -46,10 +46,11 @@ UINT16 *splndrbt_scrollx, *splndrbt_scrolly;
static void video_init_common(running_machine *machine)
{
int i;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
// set defaults
maskwidth = 8;
- maskheight = machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y + 1;
+ maskheight = visarea->max_y - visarea->min_y + 1;
maskcolor = get_black_pen(machine);
scrollx = scrolly = 0;
for (i=0; i<4; i++) bgcolor[i] = 0;
@@ -226,7 +227,7 @@ VIDEO_START( splndrbt )
assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_INDEXED16);
- halfclip = machine->screen[0].visarea;
+ halfclip = *video_screen_get_visible_area(machine->primary_screen);
i = halfclip.max_y - halfclip.min_y + 1;
halfclip.max_y = halfclip.min_y + (i >> 1) - 1;
@@ -250,7 +251,7 @@ VIDEO_START( splndrbt )
memset(dirtybuf, 1, 0x800);
prestep = auto_malloc(i * sizeof(struct PRESTEP_TYPE));
- splndrbt_prestep(prestep, &machine->screen[0].visarea, BMW, 434, 96, 480);
+ splndrbt_prestep(prestep, video_screen_get_visible_area(machine->primary_screen), BMW, 434, 96, 480);
defcharram = videoram16 + videoram_size / 2;
diff --git a/src/mame/video/fantland.c b/src/mame/video/fantland.c
index c0b5904a50d..bc29d70b938 100644
--- a/src/mame/video/fantland.c
+++ b/src/mame/video/fantland.c
@@ -68,7 +68,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
*ram2 = indx_ram; // current sprite pointer in indx_ram
// wheelrun is the only game with a smaller visible area
- int special = (machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y + 1) < 0x100;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ int special = (visarea->max_y - visarea->min_y + 1) < 0x100;
for ( ; ram < indx_ram; ram += 8,ram2++)
{
diff --git a/src/mame/video/fastlane.c b/src/mame/video/fastlane.c
index fbfe4b21f1b..67ec45dde9f 100644
--- a/src/mame/video/fastlane.c
+++ b/src/mame/video/fastlane.c
@@ -111,10 +111,10 @@ VIDEO_START( fastlane )
tilemap_set_scroll_rows( layer0, 32 );
- clip0 = machine->screen[0].visarea;
+ clip0 = *video_screen_get_visible_area(machine->primary_screen);
clip0.min_x += 40;
- clip1 = machine->screen[0].visarea;
+ clip1 = *video_screen_get_visible_area(machine->primary_screen);
clip1.max_x = 39;
clip1.min_x = 0;
}
diff --git a/src/mame/video/flkatck.c b/src/mame/video/flkatck.c
index f4ab092e659..4f628b6d8f5 100644
--- a/src/mame/video/flkatck.c
+++ b/src/mame/video/flkatck.c
@@ -132,6 +132,7 @@ WRITE8_HANDLER( flkatck_k007121_regs_w )
VIDEO_UPDATE( flkatck )
{
rectangle final_clip[2];
+ const rectangle *visarea = video_screen_get_visible_area(screen);
#if 0
popmessage("%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x %02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x",
@@ -140,10 +141,10 @@ popmessage("%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x %02x-%02x-%02x-%02x-%02x-%0
#endif
if (k007121_flip_screen)
{
- k007121_clip[0] = screen->machine->screen[0].visarea;
+ k007121_clip[0] = *visarea;
k007121_clip[0].max_x -= 40;
- k007121_clip[1] = screen->machine->screen[0].visarea;
+ k007121_clip[1] = *visarea;
k007121_clip[1].min_x = k007121_clip[1].max_x-40;
tilemap_set_scrollx(k007121_tilemap[0],0,K007121_ctrlram[0][0x00] - 56 );
@@ -152,10 +153,10 @@ popmessage("%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x %02x-%02x-%02x-%02x-%02x-%0
}
else
{
- k007121_clip[0] = screen->machine->screen[0].visarea;
+ k007121_clip[0] = *visarea;
k007121_clip[0].min_x += 40;
- k007121_clip[1] = screen->machine->screen[0].visarea;
+ k007121_clip[1] = *visarea;
k007121_clip[1].max_x = 39;
k007121_clip[1].min_x = 0;
diff --git a/src/mame/video/flyball.c b/src/mame/video/flyball.c
index f458ac8c55d..f8847a4d8af 100644
--- a/src/mame/video/flyball.c
+++ b/src/mame/video/flyball.c
@@ -80,10 +80,10 @@ VIDEO_UPDATE( flyball )
for (y = bally; y < bally + 2; y++)
for (x = ballx; x < ballx + 2; x++)
- if (x >= screen->machine->screen[0].visarea.min_x &&
- x <= screen->machine->screen[0].visarea.max_x &&
- y >= screen->machine->screen[0].visarea.min_y &&
- y <= screen->machine->screen[0].visarea.max_y)
+ if (x >= cliprect->min_x &&
+ x <= cliprect->max_x &&
+ y >= cliprect->min_y &&
+ y <= cliprect->max_y)
*BITMAP_ADDR16(bitmap, y, x) = 1;
return 0;
}
diff --git a/src/mame/video/fromance.c b/src/mame/video/fromance.c
index 07645909219..bf198e602c9 100644
--- a/src/mame/video/fromance.c
+++ b/src/mame/video/fromance.c
@@ -307,7 +307,7 @@ WRITE8_HANDLER( fromance_crtc_data_w )
{
/* only register we know about.... */
case 0x0b:
- timer_adjust_oneshot(crtc_timer, video_screen_get_time_until_pos(machine->primary_screen, Machine->screen[0].visarea.max_y + 1, 0), (data > 0x80) ? 2 : 1);
+ timer_adjust_oneshot(crtc_timer, video_screen_get_time_until_vblank_start(machine->primary_screen), (data > 0x80) ? 2 : 1);
break;
default:
@@ -330,9 +330,10 @@ WRITE8_HANDLER( fromance_crtc_register_w )
*
*************************************/
-static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int draw_priority)
+static void draw_sprites(const device_config *screen, bitmap_t *bitmap, const rectangle *cliprect, int draw_priority)
{
static const UINT8 zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
+ const rectangle *visarea = video_screen_get_visible_area(screen);
int offs;
/* draw the sprites */
@@ -365,14 +366,14 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
yzoom = 16 - zoomtable[yzoom] / 8;
/* wrap around */
- if (x > machine->screen[0].visarea.max_x) x -= 0x200;
- if (y > machine->screen[0].visarea.max_y) y -= 0x200;
+ if (x > visarea->max_x) x -= 0x200;
+ if (y > visarea->max_y) y -= 0x200;
/* flip ? */
if (flipscreen)
{
- y = machine->screen[0].visarea.max_y - y - 16 * ytiles - 4;
- x = machine->screen[0].visarea.max_x - x - 16 * xtiles - 24;
+ y = visarea->max_y - y - 16 * ytiles - 4;
+ x = visarea->max_x - x - 16 * xtiles - 24;
xflip=!xflip;
yflip=!yflip;
}
@@ -383,10 +384,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (yt = 0; yt < ytiles; yt++)
for (xt = 0; xt < xtiles; xt++, code++)
if (!zoomed)
- drawgfx(bitmap, machine->gfx[2], code, color, 0, 0,
+ drawgfx(bitmap, screen->machine->gfx[2], code, color, 0, 0,
x + xt * 16, y + yt * 16, cliprect, TRANSPARENCY_PEN, 15);
else
- drawgfxzoom(bitmap, machine->gfx[2], code, color, 0, 0,
+ drawgfxzoom(bitmap, screen->machine->gfx[2], code, color, 0, 0,
x + xt * xzoom, y + yt * yzoom, cliprect, TRANSPARENCY_PEN, 15,
0x1000 * xzoom, 0x1000 * yzoom);
}
@@ -397,10 +398,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (yt = 0; yt < ytiles; yt++)
for (xt = 0; xt < xtiles; xt++, code++)
if (!zoomed)
- drawgfx(bitmap, machine->gfx[2], code, color, 1, 0,
+ drawgfx(bitmap, screen->machine->gfx[2], code, color, 1, 0,
x + (xtiles - 1 - xt) * 16, y + yt * 16, cliprect, TRANSPARENCY_PEN, 15);
else
- drawgfxzoom(bitmap, machine->gfx[2], code, color, 1, 0,
+ drawgfxzoom(bitmap, screen->machine->gfx[2], code, color, 1, 0,
x + (xtiles - 1 - xt) * xzoom, y + yt * yzoom, cliprect, TRANSPARENCY_PEN, 15,
0x1000 * xzoom, 0x1000 * yzoom);
}
@@ -411,10 +412,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (yt = 0; yt < ytiles; yt++)
for (xt = 0; xt < xtiles; xt++, code++)
if (!zoomed)
- drawgfx(bitmap, machine->gfx[2], code, color, 0, 1,
+ drawgfx(bitmap, screen->machine->gfx[2], code, color, 0, 1,
x + xt * 16, y + (ytiles - 1 - yt) * 16, cliprect, TRANSPARENCY_PEN, 15);
else
- drawgfxzoom(bitmap, machine->gfx[2], code, color, 0, 1,
+ drawgfxzoom(bitmap, screen->machine->gfx[2], code, color, 0, 1,
x + xt * xzoom, y + (ytiles - 1 - yt) * yzoom, cliprect, TRANSPARENCY_PEN, 15,
0x1000 * xzoom, 0x1000 * yzoom);
}
@@ -425,10 +426,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (yt = 0; yt < ytiles; yt++)
for (xt = 0; xt < xtiles; xt++, code++)
if (!zoomed)
- drawgfx(bitmap, machine->gfx[2], code, color, 1, 1,
+ drawgfx(bitmap, screen->machine->gfx[2], code, color, 1, 1,
x + (xtiles - 1 - xt) * 16, y + (ytiles - 1 - yt) * 16, cliprect, TRANSPARENCY_PEN, 15);
else
- drawgfxzoom(bitmap, machine->gfx[2], code, color, 1, 1,
+ drawgfxzoom(bitmap, screen->machine->gfx[2], code, color, 1, 1,
x + (xtiles - 1 - xt) * xzoom, y + (ytiles - 1 - yt) * yzoom, cliprect, TRANSPARENCY_PEN, 15,
0x1000 * xzoom, 0x1000 * yzoom);
}
@@ -466,7 +467,7 @@ VIDEO_UPDATE( pipedrm )
tilemap_draw(bitmap,cliprect, bg_tilemap, 0, 0);
tilemap_draw(bitmap,cliprect, fg_tilemap, 0, 0);
- draw_sprites(screen->machine,bitmap,cliprect, 0);
- draw_sprites(screen->machine,bitmap,cliprect, 1);
+ draw_sprites(screen,bitmap,cliprect, 0);
+ draw_sprites(screen,bitmap,cliprect, 1);
return 0;
}
diff --git a/src/mame/video/fuukifg2.c b/src/mame/video/fuukifg2.c
index d157d3e2356..b947c1220e6 100644
--- a/src/mame/video/fuukifg2.c
+++ b/src/mame/video/fuukifg2.c
@@ -144,12 +144,13 @@ VIDEO_START( fuuki16 )
***************************************************************************/
-static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
+static void draw_sprites(const device_config *screen, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
- int max_x = machine->screen[0].visarea.max_x+1;
- int max_y = machine->screen[0].visarea.max_y+1;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+ int max_x = visarea->max_x+1;
+ int max_y = visarea->max_y+1;
/* Draw them backwards, for pdrawgfx */
for ( offs = (spriteram_size-8)/2; offs >=0; offs -= 8/2 )
@@ -201,7 +202,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (x = xstart; x != xend; x += xinc)
{
if (xzoom == (16*8) && yzoom == (16*8))
- pdrawgfx( bitmap,machine->gfx[0],
+ pdrawgfx( bitmap,screen->machine->gfx[0],
code++,
attr & 0x3f,
flipx, flipy,
@@ -209,7 +210,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
cliprect,TRANSPARENCY_PEN,15,
pri_mask );
else
- pdrawgfxzoom( bitmap,machine->gfx[0],
+ pdrawgfxzoom( bitmap,screen->machine->gfx[0],
code++,
attr & 0x3f,
flipx, flipy,
@@ -347,7 +348,7 @@ VIDEO_UPDATE( fuuki16 )
fuuki16_draw_layer(bitmap,cliprect, tm_middle, 0, 2);
fuuki16_draw_layer(bitmap,cliprect, tm_front, 0, 4);
- draw_sprites(screen->machine, bitmap, cliprect);
+ draw_sprites(screen, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/fuukifg3.c b/src/mame/video/fuukifg3.c
index db292251924..b2886bc6850 100644
--- a/src/mame/video/fuukifg3.c
+++ b/src/mame/video/fuukifg3.c
@@ -159,12 +159,13 @@ VIDEO_START( fuuki32 )
***************************************************************************/
-static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
+static void draw_sprites(const device_config *screen, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
- int max_x = machine->screen[0].visarea.max_x+1;
- int max_y = machine->screen[0].visarea.max_y+1;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+ int max_x = visarea->max_x+1;
+ int max_y = visarea->max_y+1;
UINT32 *src = buffered_spriteram32_2; /* Use spriteram buffered by 2 frames, need palette buffered by one frame? */
@@ -233,7 +234,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
for (x = xstart; x != xend; x += xinc)
{
if (xzoom == (16*8) && yzoom == (16*8))
- pdrawgfx( bitmap,machine->gfx[0],
+ pdrawgfx( bitmap,screen->machine->gfx[0],
code++,
attr & 0x3f,
flipx, flipy,
@@ -241,7 +242,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
cliprect,TRANSPARENCY_PEN,15,
pri_mask );
else
- pdrawgfxzoom( bitmap,machine->gfx[0],
+ pdrawgfxzoom( bitmap,screen->machine->gfx[0],
code++,
attr & 0x3f,
flipx, flipy,
@@ -373,7 +374,7 @@ VIDEO_UPDATE( fuuki32 )
fuuki32_draw_layer(bitmap,cliprect, tm_middle, 0, 2);
fuuki32_draw_layer(bitmap,cliprect, tm_front, 0, 4);
- draw_sprites(screen->machine,bitmap,cliprect);
+ draw_sprites(screen,bitmap,cliprect);
return 0;
}
diff --git a/src/mame/video/gaelco2.c b/src/mame/video/gaelco2.c
index 3670bd34d01..de046d53ab2 100644
--- a/src/mame/video/gaelco2.c
+++ b/src/mame/video/gaelco2.c
@@ -339,17 +339,17 @@ VIDEO_START( gaelco2_dual )
***************************************************************************/
-static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int mask, int xoffs)
+static void draw_sprites(const device_config *screen, bitmap_t *bitmap, const rectangle *cliprect, int mask, int xoffs)
{
int j, x, y, ex, ey, px, py;
- const gfx_element *gfx = machine->gfx[0];
+ const gfx_element *gfx = screen->machine->gfx[0];
/* get sprite ram start and end offsets */
int start_offset = (gaelco2_vregs[1] & 0x10)*0x100;
int end_offset = start_offset + 0x1000;
/* sprite offset is based on the visible area */
- int spr_x_adjust = (machine->screen[0].visarea.max_x - 320 + 1) - (511 - 320 - 1) - ((gaelco2_vregs[0] >> 4) & 0x01) + xoffs;
+ int spr_x_adjust = (video_screen_get_visible_area(screen)->max_x - 320 + 1) - (511 - 320 - 1) - ((gaelco2_vregs[0] >> 4) & 0x01) + xoffs;
for (j = start_offset; j < end_offset; j += 8){
int data = buffered_spriteram16[(j/2) + 0];
@@ -460,7 +460,7 @@ VIDEO_UPDATE( gaelco2 )
tilemap_draw(bitmap, cliprect, pant[1], 0, 0);
tilemap_draw(bitmap, cliprect, pant[0], 0, 0);
- draw_sprites(screen->machine, bitmap, cliprect, 0, 0);
+ draw_sprites(screen, bitmap, cliprect, 0, 0);
return 0;
}
@@ -494,13 +494,13 @@ VIDEO_UPDATE( gaelco2_dual )
{
/* monitor 2 output */
tilemap_draw(bitmap,cliprect,pant[1], 0, 0);
- draw_sprites(screen->machine,bitmap,cliprect, 0x8000, 0);
+ draw_sprites(screen,bitmap,cliprect, 0x8000, 0);
}
else if (screen == left_screen)
{
/* monitor 1 output */
tilemap_draw(bitmap,cliprect,pant[0], 0, 0);
- draw_sprites(screen->machine,bitmap,cliprect, 0x0000, 0);
+ draw_sprites(screen,bitmap,cliprect, 0x0000, 0);
}
return 0;
diff --git a/src/mame/video/gaelco3d.c b/src/mame/video/gaelco3d.c
index 61409eced15..0642cb73bbf 100644
--- a/src/mame/video/gaelco3d.c
+++ b/src/mame/video/gaelco3d.c
@@ -127,10 +127,10 @@ VIDEO_START( gaelco3d )
(repeat these two for each additional point in the fan)
*/
-static void render_poly(UINT32 *polydata)
+static void render_poly(const device_config *screen, UINT32 *polydata)
{
- float midx = Machine->screen[0].width / 2;
- float midy = Machine->screen[0].height / 2;
+ float midx = video_screen_get_width(screen) / 2;
+ float midy = video_screen_get_height(screen) / 2;
float z0 = convert_tms3203x_fp_to_float(polydata[0]);
float voz_dy = convert_tms3203x_fp_to_float(polydata[1]) * 256.0f;
float voz_dx = convert_tms3203x_fp_to_float(polydata[2]) * 256.0f;
@@ -198,17 +198,19 @@ static void render_poly(UINT32 *polydata)
/* if we have a valid number of verts, render them */
if (vertnum >= 3)
{
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+
/* special case: no Z buffering and no perspective correction */
if (color != 0x7f00 && z0 < 0 && ooz_dx == 0 && ooz_dy == 0)
- poly_render_triangle_fan(poly, screenbits, &Machine->screen[0].visarea, render_noz_noperspective, 0, vertnum, &vert[0]);
+ poly_render_triangle_fan(poly, screenbits, visarea, render_noz_noperspective, 0, vertnum, &vert[0]);
/* general case: non-alpha blended */
else if (color != 0x7f00)
- poly_render_triangle_fan(poly, screenbits, &Machine->screen[0].visarea, render_normal, 0, vertnum, &vert[0]);
+ poly_render_triangle_fan(poly, screenbits, visarea, render_normal, 0, vertnum, &vert[0]);
/* color 0x7f seems to be hard-coded as a 50% alpha blend */
else
- poly_render_triangle_fan(poly, screenbits, &Machine->screen[0].visarea, render_alphablend, 0, vertnum, &vert[0]);
+ poly_render_triangle_fan(poly, screenbits, visarea, render_alphablend, 0, vertnum, &vert[0]);
polygons += vertnum - 2;
}
@@ -375,7 +377,7 @@ void gaelco3d_render(void)
#if DISPLAY_STATS
{
int scan = video_screen_get_vpos(machine->primary_screen);
- popmessage("Polys = %4d Timeleft = %3d", polygons, (lastscan < scan) ? (scan - lastscan) : (scan + (lastscan - Machine->screen[0].visarea.max_y)));
+ popmessage("Polys = %4d Timeleft = %3d", polygons, (lastscan < scan) ? (scan - lastscan) : (scan + (lastscan - video_screen_get_visible_area(Machine->primary_screen)->max_y)));
}
#endif
@@ -404,7 +406,7 @@ WRITE32_HANDLER( gaelco3d_render_w )
{
if (polydata_count >= 18 && (polydata_count % 2) == 1 && IS_POLYEND(polydata_buffer[polydata_count - 2]))
{
- render_poly(&polydata_buffer[0]);
+ render_poly(machine->primary_screen, &polydata_buffer[0]);
polydata_count = 0;
}
video_changed = TRUE;
diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c
index e97ed1051aa..e9fa40940ec 100644
--- a/src/mame/video/galaga.c
+++ b/src/mame/video/galaga.c
@@ -542,7 +542,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
}
-static void draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
+static void draw_stars(bitmap_t *bitmap, const rectangle *cliprect )
{
/* draw the stars */
@@ -566,14 +566,11 @@ static void draw_stars(running_machine *machine, bitmap_t *bitmap, const rectang
if ( (set_a == star_seed_tab[star_cntr].set) || ( set_b == star_seed_tab[star_cntr].set) )
{
-
x = (star_seed_tab[star_cntr].x + stars_scrollx) % 256 + 16;
y = (112 + star_seed_tab[star_cntr].y + stars_scrolly) % 256;
/* 112 is a tweak to get alignment about perfect */
-
-
- if (y >= machine->screen[0].visarea.min_y && y <= machine->screen[0].visarea.max_y)
+ if (y >= cliprect->min_y && y <= cliprect->max_y)
*BITMAP_ADDR16(bitmap, y, x) = STARS_COLOR_BASE + star_seed_tab[ star_cntr ].col;
}
@@ -584,7 +581,7 @@ static void draw_stars(running_machine *machine, bitmap_t *bitmap, const rectang
VIDEO_UPDATE( galaga )
{
fillbitmap(bitmap,get_black_pen(screen->machine),cliprect);
- draw_stars(screen->machine,bitmap,cliprect);
+ draw_stars(bitmap,cliprect);
draw_sprites(screen->machine,bitmap,cliprect);
tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
return 0;
diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c
index 8da42e0d065..63cd7c66373 100644
--- a/src/mame/video/galaxian.c
+++ b/src/mame/video/galaxian.c
@@ -106,39 +106,39 @@ static emu_timer *stars_blink_timer;
static emu_timer *stars_scroll_timer;
static UINT8 timer_adjusted;
void galaxian_init_stars(running_machine *machine, int colors_offset);
-static void (*draw_stars)(running_machine *, bitmap_t *); /* function to call to draw the star layer */
-static void noop_draw_stars(running_machine *machine, bitmap_t *bitmap);
- void galaxian_draw_stars(running_machine *machine, bitmap_t *bitmap);
-static void scramble_draw_stars(running_machine *machine, bitmap_t *bitmap);
-static void rescue_draw_stars(running_machine *machine, bitmap_t *bitmap);
-static void mariner_draw_stars(running_machine *machine, bitmap_t *bitmap);
-static void jumpbug_draw_stars(running_machine *machine, bitmap_t *bitmap);
+static void (*draw_stars)(running_machine *machine, bitmap_t *, const rectangle *); /* function to call to draw the star layer */
+static void noop_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
+ void galaxian_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
+static void scramble_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
+static void rescue_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
+static void mariner_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
+static void jumpbug_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect);
static void start_stars_blink_timer(double ra, double rb, double c);
static void start_stars_scroll_timer(running_machine *machine);
/* bullets circuit */
static UINT8 darkplnt_bullet_color;
-static void (*draw_bullets)(running_machine *, bitmap_t *,int,int,int); /* function to call to draw a bullet */
-static void galaxian_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
-static void gteikob2_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
-static void scramble_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
-static void theend_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
-static void darkplnt_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
-static void dambustr_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y);
+static void (*draw_bullets)(bitmap_t *,int,int,int,const rectangle *); /* function to call to draw a bullet */
+static void galaxian_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
+static void gteikob2_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
+static void scramble_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
+static void theend_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
+static void darkplnt_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
+static void dambustr_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect);
/* background circuit */
static UINT8 background_enable;
static UINT8 background_red, background_green, background_blue;
-static void (*draw_background)(running_machine *, bitmap_t *); /* function to call to draw the background */
-static void galaxian_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void scramble_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void turtles_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void mariner_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void frogger_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void stratgyx_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void minefld_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void rescue_draw_background(running_machine *machine, bitmap_t *bitmap);
-static void dambustr_draw_background(running_machine *machine, bitmap_t *bitmap);
+static void (*draw_background)(bitmap_t *, const rectangle *cliprect); /* function to call to draw the background */
+static void galaxian_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void scramble_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void turtles_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void mariner_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void frogger_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void stratgyx_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void minefld_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void rescue_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
+static void dambustr_draw_background(bitmap_t *bitmap, const rectangle *cliprect);
static UINT16 rockclim_v;
static UINT16 rockclim_h;
@@ -805,9 +805,9 @@ VIDEO_START( scorpion )
modify_spritecode = batman2_modify_spritecode;
}
-static void rockclim_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void rockclim_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
- tilemap_draw(bitmap,0,rockclim_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect,rockclim_tilemap, 0,0);
}
static void rockclim_modify_spritecode(UINT8 *spriteram,int *code,int *flipx,int *flipy,int offs)
@@ -1403,7 +1403,7 @@ static void frogger_modify_ypos(UINT8 *sy)
/* bullet drawing functions */
-static void galaxian_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void galaxian_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
int i;
@@ -1412,8 +1412,7 @@ static void galaxian_draw_bullets(running_machine *machine, bitmap_t *bitmap, in
{
x--;
- if (x >= machine->screen[0].visarea.min_x &&
- x <= machine->screen[0].visarea.max_x)
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
{
int color;
@@ -1426,39 +1425,33 @@ static void galaxian_draw_bullets(running_machine *machine, bitmap_t *bitmap, in
}
}
-static void gteikob2_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void gteikob2_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
- galaxian_draw_bullets(machine, bitmap, offs, 260 - x, y);
+ galaxian_draw_bullets(bitmap, offs, 260 - x, y, cliprect);
}
-static void scramble_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void scramble_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
if (flipscreen_x) x++;
x = x - 6;
- if (x >= machine->screen[0].visarea.min_x &&
- x <= machine->screen[0].visarea.max_x)
- {
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
/* yellow bullets */
*BITMAP_ADDR16(bitmap, y, x) = BULLETS_COLOR_BASE;
- }
}
-static void darkplnt_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void darkplnt_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
if (flipscreen_x) x++;
x = x - 6;
- if (x >= machine->screen[0].visarea.min_x &&
- x <= machine->screen[0].visarea.max_x)
- {
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
*BITMAP_ADDR16(bitmap, y, x) = 32 + darkplnt_bullet_color;
- }
}
-static void theend_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void theend_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
int i;
@@ -1468,15 +1461,12 @@ static void theend_draw_bullets(running_machine *machine, bitmap_t *bitmap, int
{
x--;
- if (x >= machine->screen[0].visarea.min_x &&
- x <= machine->screen[0].visarea.max_x)
- {
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
*BITMAP_ADDR16(bitmap, y, x) = BULLETS_COLOR_BASE;
- }
}
}
-static void dambustr_draw_bullets(running_machine *machine, bitmap_t *bitmap, int offs, int x, int y)
+static void dambustr_draw_bullets(bitmap_t *bitmap, int offs, int x, int y, const rectangle *cliprect)
{
int i, color;
@@ -1497,11 +1487,8 @@ static void dambustr_draw_bullets(running_machine *machine, bitmap_t *bitmap, in
x--;
}
- if (x >= machine->screen[0].visarea.min_x &&
- x <= machine->screen[0].visarea.max_x)
- {
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
*BITMAP_ADDR16(bitmap, y, x) = color;
- }
}
}
@@ -1509,28 +1496,28 @@ static void dambustr_draw_bullets(running_machine *machine, bitmap_t *bitmap, in
/* background drawing functions */
-static void galaxian_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void galaxian_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
/* plain black background */
- fillbitmap(bitmap,0,&machine->screen[0].visarea);
+ fillbitmap(bitmap,0,cliprect);
}
-static void scramble_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void scramble_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
if (background_enable)
- fillbitmap(bitmap,BACKGROUND_COLOR_BASE,&machine->screen[0].visarea);
+ fillbitmap(bitmap,BACKGROUND_COLOR_BASE,cliprect);
else
- fillbitmap(bitmap,0,&machine->screen[0].visarea);
+ fillbitmap(bitmap,0,cliprect);
}
-static void turtles_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void turtles_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
int color = (background_blue << 2) | (background_green << 1) | background_red;
- fillbitmap(bitmap,BACKGROUND_COLOR_BASE + color,&machine->screen[0].visarea);
+ fillbitmap(bitmap,BACKGROUND_COLOR_BASE + color,cliprect);
}
-static void frogger_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void frogger_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
/* color split point verified on real machine */
if (flipscreen_x)
@@ -1545,7 +1532,7 @@ static void frogger_draw_background(running_machine *machine, bitmap_t *bitmap)
}
}
-static void stratgyx_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void stratgyx_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
UINT8 x;
UINT8 *prom;
@@ -1580,7 +1567,7 @@ static void stratgyx_draw_background(running_machine *machine, bitmap_t *bitmap)
}
}
-static void minefld_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void minefld_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
if (background_enable)
{
@@ -1596,10 +1583,10 @@ static void minefld_draw_background(running_machine *machine, bitmap_t *bitmap)
plot_box(bitmap, 248, 0, 16, 256, BACKGROUND_COLOR_BASE);
}
else
- fillbitmap(bitmap,0,&machine->screen[0].visarea);
+ fillbitmap(bitmap,0,cliprect);
}
-static void rescue_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void rescue_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
if (background_enable)
{
@@ -1614,10 +1601,10 @@ static void rescue_draw_background(running_machine *machine, bitmap_t *bitmap)
plot_box(bitmap, 248, 0, 16, 256, BACKGROUND_COLOR_BASE);
}
else
- fillbitmap(bitmap,0,&machine->screen[0].visarea);
+ fillbitmap(bitmap,0,cliprect);
}
-static void mariner_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void mariner_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
UINT8 x;
UINT8 *prom;
@@ -1659,7 +1646,7 @@ static void mariner_draw_background(running_machine *machine, bitmap_t *bitmap)
}
}
-static void dambustr_draw_background(running_machine *machine, bitmap_t *bitmap)
+static void dambustr_draw_background(bitmap_t *bitmap, const rectangle *cliprect)
{
int col1 = BACKGROUND_COLOR_BASE + dambustr_bg_color_1;
int col2 = BACKGROUND_COLOR_BASE + dambustr_bg_color_2;
@@ -1677,7 +1664,7 @@ static void dambustr_draw_background(running_machine *machine, bitmap_t *bitmap)
}
-static void dambustr_draw_upper_background(bitmap_t *bitmap)
+static void dambustr_draw_upper_background(bitmap_t *bitmap, const rectangle *cliprect)
{
static rectangle clip = { 0, 0, 0, 0 };
@@ -1774,29 +1761,23 @@ void galaxian_init_stars(running_machine *machine, int colors_offset)
}
}
-static void plot_star(running_machine *machine, bitmap_t *bitmap, int x, int y, int color)
+static void plot_star(bitmap_t *bitmap, int x, int y, int color, const rectangle *cliprect)
{
- if (y < machine->screen[0].visarea.min_y ||
- y > machine->screen[0].visarea.max_y ||
- x < machine->screen[0].visarea.min_x ||
- x > machine->screen[0].visarea.max_x)
- return;
-
-
if (flipscreen_x)
x = 255 - x;
if (flipscreen_y)
y = 255 - y;
- *BITMAP_ADDR16(bitmap, y, x) = stars_colors_start + color;
+ if ((x >= cliprect->min_x) && (x <= cliprect->max_x) && (y >= cliprect->min_y) && (y <= cliprect->max_y))
+ *BITMAP_ADDR16(bitmap, y, x) = stars_colors_start + color;
}
-static void noop_draw_stars(running_machine *machine, bitmap_t *bitmap)
+static void noop_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
}
-void galaxian_draw_stars(running_machine *machine, bitmap_t *bitmap)
+void galaxian_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
@@ -1818,12 +1799,12 @@ void galaxian_draw_stars(running_machine *machine, bitmap_t *bitmap)
if ((y & 0x01) ^ ((x >> 3) & 0x01))
{
- plot_star(machine, bitmap, x, y, stars[offs].color);
+ plot_star(bitmap, x, y, stars[offs].color, cliprect);
}
}
}
-static void scramble_draw_stars(running_machine *machine, bitmap_t *bitmap)
+static void scramble_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
@@ -1862,12 +1843,12 @@ static void scramble_draw_stars(running_machine *machine, bitmap_t *bitmap)
break;
}
- plot_star(machine, bitmap, x, y, stars[offs].color);
+ plot_star(bitmap, x, y, stars[offs].color, cliprect);
}
}
}
-static void rescue_draw_stars(running_machine *machine, bitmap_t *bitmap)
+static void rescue_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
@@ -1908,12 +1889,12 @@ static void rescue_draw_stars(running_machine *machine, bitmap_t *bitmap)
break;
}
- plot_star(machine, bitmap, x, y, stars[offs].color);
+ plot_star(bitmap, x, y, stars[offs].color, cliprect);
}
}
}
-static void mariner_draw_stars(running_machine *machine, bitmap_t *bitmap)
+static void mariner_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
UINT8 *prom;
@@ -1942,13 +1923,13 @@ static void mariner_draw_stars(running_machine *machine, bitmap_t *bitmap)
{
if (prom[(x/8 + 1) & 0x1f] & 0x04)
{
- plot_star(machine, bitmap, x, y, stars[offs].color);
+ plot_star(bitmap, x, y, stars[offs].color, cliprect);
}
}
}
}
-static void jumpbug_draw_stars(running_machine *machine, bitmap_t *bitmap)
+static void jumpbug_draw_stars(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
@@ -1994,7 +1975,7 @@ static void jumpbug_draw_stars(running_machine *machine, bitmap_t *bitmap)
/* no stars in the status area */
if (x >= 240) continue;
- plot_star(machine, bitmap, x, y, stars[offs].color);
+ plot_star(bitmap, x, y, stars[offs].color, cliprect);
}
}
}
@@ -2056,7 +2037,7 @@ static TILE_GET_INFO( rockclim_get_tile_info )
SET_TILE_INFO(2, code, 0, 0);
}
-static void draw_bullets_common(running_machine *machine, bitmap_t *bitmap)
+static void draw_bullets_common(bitmap_t *bitmap, const rectangle *cliprect)
{
int offs;
@@ -2068,13 +2049,9 @@ static void draw_bullets_common(running_machine *machine, bitmap_t *bitmap)
sy = 255 - galaxian_bulletsram[offs + 1];
sx = 255 - galaxian_bulletsram[offs + 3];
- if (sy < machine->screen[0].visarea.min_y ||
- sy > machine->screen[0].visarea.max_y)
- continue;
-
if (flipscreen_y) sy = 255 - sy;
- draw_bullets(machine, bitmap, offs, sx, sy);
+ draw_bullets(bitmap, offs, sx, sy, cliprect);
}
}
@@ -2147,12 +2124,12 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, UINT8 *spri
VIDEO_UPDATE( galaxian )
{
- draw_background(screen->machine, bitmap);
+ draw_background(bitmap, cliprect);
if (galaxian_stars_on)
{
- draw_stars(screen->machine, bitmap);
+ draw_stars(screen->machine, bitmap, cliprect);
}
@@ -2161,7 +2138,7 @@ VIDEO_UPDATE( galaxian )
if (draw_bullets)
{
- draw_bullets_common(screen->machine, bitmap);
+ draw_bullets_common(bitmap, cliprect);
}
@@ -2180,21 +2157,21 @@ VIDEO_UPDATE( dambustr )
int i, j;
UINT8 color;
- draw_background(screen->machine, bitmap);
+ draw_background(bitmap, cliprect);
if (galaxian_stars_on)
{
- draw_stars(screen->machine, bitmap);
+ draw_stars(screen->machine, bitmap, cliprect);
}
/* save the background for drawing it again later, if background has priority over characters */
- copybitmap(dambustr_tmpbitmap, bitmap, 0, 0, 0, 0, &screen->machine->screen[0].visarea);
+ copybitmap(dambustr_tmpbitmap, bitmap, 0, 0, 0, 0, NULL);
tilemap_draw(bitmap, 0, bg_tilemap, 0, 0);
if (draw_bullets)
{
- draw_bullets_common(screen->machine, bitmap);
+ draw_bullets_common(bitmap, cliprect);
}
draw_sprites(screen->machine, bitmap, galaxian_spriteram, galaxian_spriteram_size);
@@ -2202,7 +2179,7 @@ VIDEO_UPDATE( dambustr )
if (dambustr_bg_priority)
{
/* draw the upper part of the background, as it has priority */
- dambustr_draw_upper_background(bitmap);
+ dambustr_draw_upper_background(bitmap, cliprect);
/* only rows with color code > 3 are stronger than the background */
memset(dambustr_videoram2, 0x20, 0x0400);
diff --git a/src/mame/video/grchamp.c b/src/mame/video/grchamp.c
index af9ec1107c7..32c21a9416c 100644
--- a/src/mame/video/grchamp.c
+++ b/src/mame/video/grchamp.c
@@ -122,7 +122,7 @@ static int collision_check(running_machine *machine, grchamp_state *state, bitma
{
int bgcolor = machine->pens[0];
int sprite_transp = machine->pens[0x24];
- const rectangle *clip = &machine->screen[0].visarea;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
int y0 = 240 - state->cpu0_out[3];
int x0 = 256 - state->cpu0_out[2];
int x,y,sx,sy;
@@ -150,8 +150,8 @@ static int collision_check(running_machine *machine, grchamp_state *state, bitma
if( pixel != sprite_transp ){
sx = x+x0;
sy = y+y0;
- if( (sx >= clip->min_x) && (sx <= clip->max_x) &&
- (sy >= clip->min_y) && (sy <= clip->max_y) )
+ if( (sx >= visarea->min_x) && (sx <= visarea->max_x) &&
+ (sy >= visarea->min_y) && (sy <= visarea->max_y) )
{
// Collision check uses only 16 pens!
pixel = *BITMAP_ADDR16(bitmap, sy, sx) % 16;
diff --git a/src/mame/video/gstriker.c b/src/mame/video/gstriker.c
index c81b0781656..e0de5cc7d3a 100644
--- a/src/mame/video/gstriker.c
+++ b/src/mame/video/gstriker.c
@@ -248,13 +248,8 @@ static void MB60553_draw(running_machine *machine, int numchip, bitmap_t* screen
rectangle clip;
MB60553_cur_chip = &MB60553[numchip];
-
-
-
- clip.min_x = machine->screen[0].visarea.min_x;
- clip.max_x = machine->screen[0].visarea.max_x;
- clip.min_y = machine->screen[0].visarea.min_y;
- clip.max_y = machine->screen[0].visarea.max_y;
+ clip.min_x = video_screen_get_visible_area(machine->primary_screen)->min_x;
+ clip.max_x = video_screen_get_visible_area(machine->primary_screen)->max_x;
for (line = 0; line < 224;line++)
{
diff --git a/src/mame/video/gticlub.c b/src/mame/video/gticlub.c
index 87bf9895e87..9a0fcc6baac 100644
--- a/src/mame/video/gticlub.c
+++ b/src/mame/video/gticlub.c
@@ -519,6 +519,7 @@ static int prev_poly_type;
static void render_polygons(void)
{
int i, j;
+ const rectangle *visarea = video_screen_get_visible_area(Machine->primary_screen);
// mame_printf_debug("K001005_fifo_ptr = %08X\n", K001005_3d_fifo_ptr);
@@ -559,9 +560,9 @@ static void render_polygons(void)
++index;
extra->color = color;
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[0], &v[2], &v[3]);
-// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, 4, v);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[0], &v[2], &v[3]);
+// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, 4, v);
i = index - 1;
}
@@ -666,13 +667,13 @@ static void render_polygons(void)
if (num_verts < 3)
{
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &prev_v[2], &v[0], &v[1]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &prev_v[2], &v[0], &v[1]);
if (prev_poly_type)
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &prev_v[2], &prev_v[3], &v[0]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &prev_v[2], &prev_v[3], &v[0]);
// if (prev_poly_type)
-// poly_render_quad(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &prev_v[2], &prev_v[3], &v[0], &v[1]);
+// poly_render_quad(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &prev_v[2], &prev_v[3], &v[0], &v[1]);
// else
-// poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &prev_v[2], &v[0], &v[1]);
+// poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &prev_v[2], &v[0], &v[1]);
memcpy(&prev_v[0], &prev_v[2], sizeof(poly_vertex));
memcpy(&prev_v[1], &prev_v[3], sizeof(poly_vertex));
@@ -681,10 +682,10 @@ static void render_polygons(void)
}
else
{
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &v[0], &v[1], &v[2]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &v[0], &v[1], &v[2]);
if (num_verts > 3)
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &v[2], &v[3], &v[0]);
-// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, num_verts, v);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &v[2], &v[3], &v[0]);
+// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, num_verts, v);
memcpy(prev_v, v, sizeof(poly_vertex) * 4);
}
@@ -765,10 +766,10 @@ static void render_polygons(void)
extra->color = color;
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &v[0], &v[1], &v[2]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &v[0], &v[1], &v[2]);
if (new_verts > 1)
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, &v[2], &v[3], &v[0]);
-// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline_tex, 4, new_verts + 2, v);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, &v[2], &v[3], &v[0]);
+// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline_tex, 4, new_verts + 2, v);
memcpy(prev_v, v, sizeof(poly_vertex) * 4);
};
@@ -824,10 +825,10 @@ static void render_polygons(void)
extra->color = color;
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
if (num_verts > 3)
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[2], &v[3], &v[0]);
-// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, num_verts, v);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[2], &v[3], &v[0]);
+// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, num_verts, v);
memcpy(prev_v, v, sizeof(poly_vertex) * 4);
@@ -883,10 +884,10 @@ static void render_polygons(void)
extra->color = color;
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[0], &v[1], &v[2]);
if (new_verts > 1)
- poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, &v[0], &v[2], &v[3]);
-// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], &Machine->screen[0].visarea, draw_scanline, 1, new_verts + 2, v);
+ poly_render_triangle(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, &v[0], &v[2], &v[3]);
+// poly_render_polygon(poly, K001005_bitmap[K001005_bitmap_page], visarea, draw_scanline, 1, new_verts + 2, v);
memcpy(prev_v, v, sizeof(poly_vertex) * 4);
};
diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c
index 2f5d2eee2c1..faece8968d1 100644
--- a/src/mame/video/hng64.c
+++ b/src/mame/video/hng64.c
@@ -225,7 +225,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
* Or maybe it switches from fading by scaling to fading using absolute addition and subtraction...
* Or maybe they set transition type (there seems to be a cute scaling-squares transition in there somewhere)...
*/
-static void transition_control(running_machine *machine, bitmap_t *bitmap)
+static void transition_control(bitmap_t *bitmap, const rectangle *cliprect)
{
int i, j ;
@@ -247,9 +247,9 @@ static void transition_control(running_machine *machine, bitmap_t *bitmap)
brigG = (INT32)((hng64_tcram[0x0000000a] >> 8) & 0xff) ;
brigB = (INT32)((hng64_tcram[0x0000000a] >> 16) & 0xff) ;
- for (i = machine->screen[0].visarea.min_x; i < machine->screen[0].visarea.max_x; i++)
+ for (i = cliprect->min_x; i < cliprect->max_x; i++)
{
- for (j = machine->screen[0].visarea.min_y; j < machine->screen[0].visarea.max_y; j++)
+ for (j = cliprect->min_y; j < cliprect->max_y; j++)
{
UINT32* thePixel = BITMAP_ADDR32(bitmap, j, i);
@@ -374,6 +374,7 @@ static void draw3d(running_machine *machine, bitmap_t *bitmap, const rectangle *
UINT32 numPolys = 0 ;
struct polygon lastPoly = { 0 } ;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
// Set some matrices to the identity...
SetIdentity(projectionMatrix) ;
@@ -860,11 +861,11 @@ static void draw3d(running_machine *machine, bitmap_t *bitmap, const rectangle *
ndCoords[3] = polys[numPolys].vert[m].clipCoords[3] ;
// Final pixel values are garnered here :
- windowCoords[0] = (ndCoords[0]+1.0f) * ((float)(machine->screen[0].visarea.max_x) / 2.0f) + 0.0f ;
- windowCoords[1] = (ndCoords[1]+1.0f) * ((float)(machine->screen[0].visarea.max_y) / 2.0f) + 0.0f ;
+ windowCoords[0] = (ndCoords[0]+1.0f) * ((float)(visarea->max_x) / 2.0f) + 0.0f ;
+ windowCoords[1] = (ndCoords[1]+1.0f) * ((float)(visarea->max_y) / 2.0f) + 0.0f ;
windowCoords[2] = (ndCoords[2]+1.0f) * 0.5f ;
- windowCoords[1] = (float)machine->screen[0].visarea.max_y - windowCoords[1] ; // Flip Y
+ windowCoords[1] = (float)visarea->max_y - windowCoords[1] ; // Flip Y
// Store the points in a list for later use...
polys[numPolys].vert[m].clipCoords[0] = windowCoords[0] ;
@@ -913,7 +914,7 @@ static void draw3d(running_machine *machine, bitmap_t *bitmap, const rectangle *
/////////////////////////////////////////////////
// Reset the depth buffer...
- for (i = 0; i < (machine->screen[0].visarea.max_x)*(machine->screen[0].visarea.max_y); i++)
+ for (i = 0; i < (visarea->max_x)*(visarea->max_y); i++)
depthBuffer[i] = 100.0f ;
for (i = 0; i < numPolys; i++)
@@ -1058,6 +1059,8 @@ static void plotTilemap3Line(running_machine *machine,
float pixStride, pixOffset ;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
// mame_printf_debug("(%d,%d) (%d,%d)\n", startX, startY, endX, endY) ;
// CLAMP - BUT I'M PRETTY SURE THIS ISN'T QUITE RIGHT !!! ???
@@ -1068,7 +1071,7 @@ static void plotTilemap3Line(running_machine *machine,
numPix = gatherPixelsForLine(tilemapBitmap, startX, startY, endX, endY, penList) ;
- pixStride = (float)numPix / (float)(machine->screen[0].visarea.max_x-1) ;
+ pixStride = (float)numPix / (float)(visarea->max_x-1) ;
pixOffset = 0 ;
if (numPix == 0)
@@ -1077,7 +1080,7 @@ static void plotTilemap3Line(running_machine *machine,
// mame_printf_debug("numpix %d ps %f po %f s(%d,%d) e(%d,%d)\n", numPix, pixStride, pixOffset, startX, startY, endX, endY) ;
// Draw out the screen's line...
- for (i = machine->screen[0].visarea.min_x; i < machine->screen[0].visarea.max_x; i++)
+ for (i = visarea->min_x; i < visarea->max_x; i++)
{
// Nearest-neighbor interpolation for now (but i doubt it does linear)
UINT16 tmPen = penList[(int)pixOffset] ;
@@ -1093,10 +1096,11 @@ static void hng64_drawtilemap3(running_machine *machine, bitmap_t *bitmap, const
int i ;
bitmap_t *srcbitmap = tilemap_get_pixmap( hng64_tilemap3 );
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
// usrintf_showmessage("%d", hng64_hackTm3Count) ;
- if (hng64_hackTm3Count/4 < machine->screen[0].visarea.max_y)
+ if (hng64_hackTm3Count/4 < visarea->max_y)
{
for (i = 0; i < hng64_hackTm3Count/4; i++)
{
@@ -1113,7 +1117,7 @@ static void hng64_drawtilemap3(running_machine *machine, bitmap_t *bitmap, const
(INT16)((hng64_videoram[address+0x2]&0xffff0000) >> 16),
(INT16)((hng64_videoram[address+0x1]&0xffff0000) >> 16),
(INT16)((hng64_videoram[address+0x3]&0xffff0000) >> 16),
- (machine->screen[0].visarea.max_y-1)-i,
+ (visarea->max_y-1)-i,
bitmap) ;
}
}
@@ -1285,7 +1289,7 @@ VIDEO_UPDATE( hng64 )
/* AJG */
// if(input_code_pressed(KEYCODE_D))
- transition_control(screen->machine, bitmap) ;
+ transition_control(bitmap, cliprect) ;
// mame_printf_debug("FRAME DONE %d\n", frameCount) ;
frameCount++ ;
@@ -1296,6 +1300,8 @@ VIDEO_UPDATE( hng64 )
VIDEO_START( hng64 )
{
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
hng64_tilemap0 = tilemap_create(get_hng64_tile0_info, tilemap_scan_rows, 8, 8, 128,128); /* 128x128x4 = 0x10000 */
hng64_tilemap1 = tilemap_create(get_hng64_tile1_info, tilemap_scan_rows, 16, 16, 128,128); /* 128x128x4 = 0x10000 */
hng64_tilemap2 = tilemap_create(get_hng64_tile2_info, tilemap_scan_rows, 16, 16, 128,128); /* 128x128x4 = 0x10000 */
@@ -1306,7 +1312,7 @@ VIDEO_START( hng64 )
tilemap_set_transparent_pen(hng64_tilemap3,0);
// 3d Buffer Allocation
- depthBuffer = (float*)auto_malloc((machine->screen[0].visarea.max_x)*(machine->screen[0].visarea.max_y)*sizeof(float)) ;
+ depthBuffer = (float*)auto_malloc((visarea->max_x)*(visarea->max_y)*sizeof(float)) ;
// The general display list of polygons in the scene...
// !! This really should be a dynamic array !!
@@ -1708,7 +1714,7 @@ INLINE void FillSmoothTexPCHorizontalLine(running_machine *machine, bitmap_t *Co
float g_start, float g_delta, float b_start, float b_delta,
float s_start, float s_delta, float t_start, float t_delta)
{
- float *dp = &(depthBuffer[y*machine->screen[0].visarea.max_x+x_start]);
+ float *dp = &(depthBuffer[y*video_screen_get_visible_area(machine->primary_screen)->max_x+x_start]);
const UINT8 *gfx = memory_region(REGION_GFX3);
const UINT8 *textureOffset ;
diff --git a/src/mame/video/jaguar.c b/src/mame/video/jaguar.c
index ac94b570354..306cb9ef3de 100644
--- a/src/mame/video/jaguar.c
+++ b/src/mame/video/jaguar.c
@@ -237,10 +237,12 @@ static void blitter_x1800x01_xxxxxx_xxxxxx(UINT32 command, UINT32 a1flags, UINT3
INLINE void get_crosshair_xy(running_machine *machine, int player, int *x, int *y)
{
- int width = machine->screen[0].visarea.max_x + 1 - machine->screen[0].visarea.min_x;
- int height = machine->screen[0].visarea.max_y + 1 - machine->screen[0].visarea.min_y;
- *x = machine->screen[0].visarea.min_x + (((readinputport(3 + player * 2) & 0xff) * width) >> 8);
- *y = machine->screen[0].visarea.min_y + (((readinputport(4 + player * 2) & 0xff) * height) >> 8);
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
+ int width = visarea->max_x + 1 - visarea->min_x;
+ int height = visarea->max_y + 1 - visarea->min_y;
+ *x = visarea->min_x + (((readinputport(3 + player * 2) & 0xff) * width) >> 8);
+ *y = visarea->min_y + (((readinputport(4 + player * 2) & 0xff) * height) >> 8);
}
@@ -756,12 +758,13 @@ static TIMER_CALLBACK( cojag_scanline_update )
{
int vc = param & 0xffff;
int hdb = param >> 16;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* only run if video is enabled and we are past the "display begin" */
if ((gpu_regs[VMODE] & 1) && vc >= (gpu_regs[VDB] & 0x7ff))
{
UINT32 *dest = BITMAP_ADDR32(screen_bitmap, vc / 2, 0);
- int maxx = machine->screen[0].visarea.max_x;
+ int maxx = visarea->max_x;
int hde = effective_hvalue(gpu_regs[HDE]) / 2;
UINT16 scanline[360];
int x;
@@ -770,7 +773,7 @@ static TIMER_CALLBACK( cojag_scanline_update )
if (ENABLE_BORDERS && vc % 2 == 0)
{
rgb_t border = MAKE_RGB(gpu_regs[BORD1] & 0xff, gpu_regs[BORD1] >> 8, gpu_regs[BORD2] & 0xff);
- for (x = machine->screen[0].visarea.min_x; x <= machine->screen[0].visarea.max_x; x++)
+ for (x = visarea->min_x; x <= visarea->max_x; x++)
dest[x] = border;
}
diff --git a/src/mame/video/kan_pand.c b/src/mame/video/kan_pand.c
index 3d023882308..b7db6f77b15 100644
--- a/src/mame/video/kan_pand.c
+++ b/src/mame/video/kan_pand.c
@@ -148,30 +148,18 @@ static void pandora_draw(running_machine *machine, bitmap_t *bitmap, const recta
(tilecolour & 0xf0) >> 4,
flipx, flipy,
sx,sy,
- &machine->screen[0].visarea,TRANSPARENCY_PEN,0);
+ cliprect,TRANSPARENCY_PEN,0);
}
}
void pandora_eof(running_machine *machine)
{
- rectangle clip;
-
- /* draw top of screen */
- clip.min_x = machine->screen[0].visarea.min_x;
- clip.max_x = machine->screen[0].visarea.max_x;
- clip.min_y = machine->screen[0].visarea.min_y;
- clip.max_y = machine->screen[0].visarea.max_y;
-
- if (!pandora_spriteram)
- {
- printf("ERROR: pandora_eof with no pandora_spriteram\n");
- return;
- }
+ assert(pandora_spriteram != NULL);
// the games can disable the clearing of the sprite bitmap, to leave sprite trails
- if (pandora_clear_bitmap) fillbitmap(pandora_sprites_bitmap,0,&clip);
+ if (pandora_clear_bitmap) fillbitmap(pandora_sprites_bitmap,0,video_screen_get_visible_area(machine->primary_screen));
- pandora_draw(machine, pandora_sprites_bitmap, &clip);
+ pandora_draw(machine, pandora_sprites_bitmap, video_screen_get_visible_area(machine->primary_screen));
}
void pandora_start(UINT8 region, int x, int y)
diff --git a/src/mame/video/kaneko16.c b/src/mame/video/kaneko16.c
index 21d094b131c..d903ee9d204 100644
--- a/src/mame/video/kaneko16.c
+++ b/src/mame/video/kaneko16.c
@@ -153,7 +153,7 @@ VIDEO_START( kaneko16_1xVIEW2 )
case 256: dx = 0x5b; break;
default: dx = 0;
}
- switch (machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y + 1)
+ switch (video_screen_get_visible_area(machine->primary_screen)->max_y - video_screen_get_visible_area(machine->primary_screen)->min_y + 1)
{
case 240- 8: dy = +0x08; break; /* blazeon */
case 240-16: dy = -0x08; break; /* berlwall, bakubrk */
@@ -193,7 +193,7 @@ VIDEO_START( kaneko16_2xVIEW2 )
case 256: dx = 0x5b; break;
default: dx = 0;
}
- switch (machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y + 1)
+ switch (video_screen_get_visible_area(machine->primary_screen)->max_y - video_screen_get_visible_area(machine->primary_screen)->min_y + 1)
{
case 240- 8: dy = +0x08; break;
case 240-16: dy = -0x08; break;
@@ -377,12 +377,12 @@ static int kaneko16_parse_sprite_type012(running_machine *machine, int i, struct
if (kaneko16_sprite_flipy)
{
s->yoffs -= kaneko16_sprites_regs[0x2/2];
- s->yoffs -= machine->screen[0].visarea.min_y<<6;
+ s->yoffs -= video_screen_get_visible_area(machine->primary_screen)->min_y<<6;
}
else
{
s->yoffs -= kaneko16_sprites_regs[0x2/2];
- s->yoffs += machine->screen[0].visarea.min_y<<6;
+ s->yoffs += video_screen_get_visible_area(machine->primary_screen)->min_y<<6;
}
return ( (attr & 0x2000) ? USE_LATCHED_XY : 0 ) |
diff --git a/src/mame/video/kncljoe.c b/src/mame/video/kncljoe.c
index 6655d2ad78f..bcc02e33c45 100644
--- a/src/mame/video/kncljoe.c
+++ b/src/mame/video/kncljoe.c
@@ -187,17 +187,18 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
const gfx_element *gfx = machine->gfx[1 + sprite_bank];
int i, j;
static const int pribase[4]={0x0180, 0x0080, 0x0100, 0x0000};
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* score covers sprites */
if (flipscreen)
{
- if (clip.max_y > machine->screen[0].visarea.max_y - 64)
- clip.max_y = machine->screen[0].visarea.max_y - 64;
+ if (clip.max_y > visarea->max_y - 64)
+ clip.max_y = visarea->max_y - 64;
}
else
{
- if (clip.min_y < machine->screen[0].visarea.min_y + 64)
- clip.min_y = machine->screen[0].visarea.min_y + 64;
+ if (clip.min_y < visarea->min_y + 64)
+ clip.min_y = visarea->min_y + 64;
}
for (i=0; i<4; i++)
diff --git a/src/mame/video/konamiic.c b/src/mame/video/konamiic.c
index 33561a61485..5e7f2784115 100644
--- a/src/mame/video/konamiic.c
+++ b/src/mame/video/konamiic.c
@@ -3782,7 +3782,7 @@ void K053247_vh_start(running_machine *machine, int gfx_memory_region, int dx, i
if (VERBOSE)
{
- if (machine->screen[0].format == BITMAP_FORMAT_RGB32)
+ if (video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_RGB32)
{
if ((machine->config->video_attributes & (VIDEO_HAS_SHADOWS|VIDEO_HAS_HIGHLIGHTS)) != VIDEO_HAS_SHADOWS+VIDEO_HAS_HIGHLIGHTS)
popmessage("driver missing SHADOWS or HIGHLIGHTS flag");
@@ -7295,12 +7295,13 @@ void K054338_fill_backcolor(running_machine *machine, bitmap_t *bitmap, int mode
int clipx, clipy, clipw, cliph, i, dst_pitch;
int BGC_CBLK, BGC_SET;
UINT32 *dst_ptr, *pal_ptr;
- register int bgcolor;
+ int bgcolor;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- clipx = machine->screen[0].visarea.min_x & ~3;
- clipy = machine->screen[0].visarea.min_y;
- clipw = (machine->screen[0].visarea.max_x - clipx + 4) & ~3;
- cliph = machine->screen[0].visarea.max_y - clipy + 1;
+ clipx = visarea->min_x & ~3;
+ clipy = visarea->min_y;
+ clipw = (visarea->max_x - clipx + 4) & ~3;
+ cliph = visarea->max_y - clipy + 1;
dst_ptr = BITMAP_ADDR32(bitmap, clipy, 0);
dst_pitch = bitmap->rowpixels;
@@ -7769,7 +7770,7 @@ void K053250_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *c
static int pmode[2] = {-1,-1};
static int kc=-1, kk=0, kxx=-105, kyy=0;
- const rectangle area = machine->screen[0].visarea;
+ const rectangle area = *video_screen_get_visible_area(machine->primary_screen);
UINT16 *line;
int delta, dim1, dim1_max, dim2_max;
UINT32 mask1, mask2;
diff --git a/src/mame/video/labyrunr.c b/src/mame/video/labyrunr.c
index 71574e59776..fe456eef825 100644
--- a/src/mame/video/labyrunr.c
+++ b/src/mame/video/labyrunr.c
@@ -131,10 +131,10 @@ VIDEO_START( labyrunr )
tilemap_set_transparent_pen(layer0,0);
tilemap_set_transparent_pen(layer1,0);
- clip0 = machine->screen[0].visarea;
+ clip0 = *video_screen_get_visible_area(machine->primary_screen);
clip0.min_x += 40;
- clip1 = machine->screen[0].visarea;
+ clip1 = *video_screen_get_visible_area(machine->primary_screen);
clip1.max_x = 39;
clip1.min_x = 0;
diff --git a/src/mame/video/lemmings.c b/src/mame/video/lemmings.c
index 70e195e6ef9..6dae54e6b73 100644
--- a/src/mame/video/lemmings.c
+++ b/src/mame/video/lemmings.c
@@ -93,7 +93,7 @@ static TILE_GET_INFO( get_tile_info )
VIDEO_START( lemmings )
{
- bitmap0 = auto_bitmap_alloc(2048,256,machine->screen[0].format);
+ bitmap0 = auto_bitmap_alloc(2048,256,video_screen_get_format(machine->primary_screen));
vram_tilemap = tilemap_create(get_tile_info,tilemap_scan_cols,8,8,64,32);
vram_buffer = (UINT8*)auto_malloc(2048*64); /* 64 bytes per VRAM character */
diff --git a/src/mame/video/lethalj.c b/src/mame/video/lethalj.c
index 7629b3f1c74..4965f01de38 100644
--- a/src/mame/video/lethalj.c
+++ b/src/mame/video/lethalj.c
@@ -36,8 +36,10 @@ static UINT8 blank_palette;
INLINE void get_crosshair_xy(running_machine *machine, int player, int *x, int *y)
{
- int width = machine->screen[0].visarea.max_x + 1 - machine->screen[0].visarea.min_x;
- int height = machine->screen[0].visarea.max_y + 1 - machine->screen[0].visarea.min_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ int width = visarea->max_x + 1 - visarea->min_x;
+ int height = visarea->max_y + 1 - visarea->min_y;
+
*x = ((readinputport(2 + player * 2) & 0xff) * width) / 255;
*y = ((readinputport(3 + player * 2) & 0xff) * height) / 255;
}
diff --git a/src/mame/video/lordgun.c b/src/mame/video/lordgun.c
index 2831bb12247..8a251f1629b 100644
--- a/src/mame/video/lordgun.c
+++ b/src/mame/video/lordgun.c
@@ -199,15 +199,17 @@ static void lorddgun_calc_gun_scr(int i)
void lordgun_update_gun(int i)
{
+ const rectangle *visarea = video_screen_get_visible_area(Machine->primary_screen);
+
lordgun_gun[i].hw_x = readinputport(5+i);
lordgun_gun[i].hw_y = readinputport(7+i);
lorddgun_calc_gun_scr(i);
- if ( (lordgun_gun[i].scr_x < Machine->screen[0].visarea.min_x) ||
- (lordgun_gun[i].scr_x > Machine->screen[0].visarea.max_x) ||
- (lordgun_gun[i].scr_y < Machine->screen[0].visarea.min_y) ||
- (lordgun_gun[i].scr_y > Machine->screen[0].visarea.max_y) )
+ if ( (lordgun_gun[i].scr_x < visarea->min_x) ||
+ (lordgun_gun[i].scr_x > visarea->max_x) ||
+ (lordgun_gun[i].scr_y < visarea->min_y) ||
+ (lordgun_gun[i].scr_y > visarea->max_y) )
lordgun_gun[i].hw_x = lordgun_gun[i].hw_y = 0;
}
diff --git a/src/mame/video/m52.c b/src/mame/video/m52.c
index c14204bdca7..0b3c8c7a7b0 100644
--- a/src/mame/video/m52.c
+++ b/src/mame/video/m52.c
@@ -301,6 +301,7 @@ WRITE8_HANDLER( alpha1v_flipscreen_w )
static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int xpos, int ypos, int image)
{
rectangle rect;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
if (flip_screen_get())
{
@@ -331,8 +332,8 @@ static void draw_background(running_machine *machine, bitmap_t *bitmap, const re
cliprect,
TRANSPARENCY_PEN, 0);
- rect.min_x = machine->screen[0].visarea.min_x;
- rect.max_x = machine->screen[0].visarea.max_x;
+ rect.min_x = visarea->min_x;
+ rect.max_x = visarea->max_x;
if (flip_screen_get())
{
diff --git a/src/mame/video/m58.c b/src/mame/video/m58.c
index 08d7d905e9e..14852fa289e 100644
--- a/src/mame/video/m58.c
+++ b/src/mame/video/m58.c
@@ -180,11 +180,16 @@ static UINT32 yard_tilemap_scan_rows( UINT32 col, UINT32 row, UINT32 num_cols, U
VIDEO_START( yard )
{
+ int width = video_screen_get_width(machine->primary_screen);
+ int height = video_screen_get_height(machine->primary_screen);
+ bitmap_format format = video_screen_get_format(machine->primary_screen);
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+
bg_tilemap = tilemap_create(yard_get_bg_tile_info, yard_tilemap_scan_rows, 8, 8, 64, 32);
- tilemap_set_scrolldx(bg_tilemap, machine->screen[0].visarea.min_x, machine->screen[0].width - (machine->screen[0].visarea.max_x + 1));
- tilemap_set_scrolldy(bg_tilemap, machine->screen[0].visarea.min_y - 8, machine->screen[0].height + 16 - (machine->screen[0].visarea.max_y + 1));
+ tilemap_set_scrolldx(bg_tilemap, visarea->min_x, width - (visarea->max_x + 1));
+ tilemap_set_scrolldy(bg_tilemap, visarea->min_y - 8, height + 16 - (visarea->max_y + 1));
- scroll_panel_bitmap = auto_bitmap_alloc(SCROLL_PANEL_WIDTH, machine->screen[0].height, machine->screen[0].format);
+ scroll_panel_bitmap = auto_bitmap_alloc(SCROLL_PANEL_WIDTH, height, format);
}
@@ -217,6 +222,7 @@ WRITE8_HANDLER( yard_flipscreen_w )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
int offs;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
for (offs = spriteram_size - 4; offs >= 0; offs -= 4)
{
@@ -254,8 +260,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
sy2 = sy1 + 0x10;
}
- DRAW_SPRITE(code1 + 256 * bank, machine->screen[0].visarea.min_y + sy1)
- DRAW_SPRITE(code2 + 256 * bank, machine->screen[0].visarea.min_y + sy2)
+ DRAW_SPRITE(code1 + 256 * bank, visarea->min_y + sy1)
+ DRAW_SPRITE(code2 + 256 * bank, visarea->min_y + sy2)
}
}
@@ -282,14 +288,15 @@ static void draw_panel( running_machine *machine, bitmap_t *bitmap, const rectan
1*8, 31*8-1
};
rectangle clip = flip_screen_get() ? clippanelflip : clippanel;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
int sx = flip_screen_get() ? cliprect->min_x - 8 : cliprect->max_x + 1 - SCROLL_PANEL_WIDTH;
int yoffs = flip_screen_get() ? -40 : -16;
- clip.min_y += machine->screen[0].visarea.min_y + yoffs;
- clip.max_y += machine->screen[0].visarea.max_y + yoffs;
+ clip.min_y += visarea->min_y + yoffs;
+ clip.max_y += visarea->max_y + yoffs;
copybitmap(bitmap, scroll_panel_bitmap, flip_screen_get(), flip_screen_get(),
- sx, machine->screen[0].visarea.min_y + yoffs, &clip);
+ sx, visarea->min_y + yoffs, &clip);
}
}
diff --git a/src/mame/video/magmax.c b/src/mame/video/magmax.c
index ca03e079fc1..fc3e733cc98 100644
--- a/src/mame/video/magmax.c
+++ b/src/mame/video/magmax.c
@@ -78,7 +78,7 @@ VIDEO_START( magmax )
prom_tab = auto_malloc(256 * sizeof(UINT32));
/* Allocate temporary bitmap */
- tmpbitmap = auto_bitmap_alloc(256,256,machine->screen[0].format);
+ tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
for (i=0; i<256; i++)
{
@@ -107,7 +107,7 @@ VIDEO_UPDATE( magmax )
UINT32 scroll_v = (*magmax_scroll_y) & 0xff;
/*clear background-over-sprites bitmap*/
- fillbitmap(tmpbitmap, 0, &screen->machine->screen[0].visarea);
+ fillbitmap(tmpbitmap, 0, NULL);
for (v = 2*8; v < 30*8; v++) /*only for visible area*/
{
diff --git a/src/mame/video/marvins.c b/src/mame/video/marvins.c
index 68efb04cb9b..a226b0c8da0 100644
--- a/src/mame/video/marvins.c
+++ b/src/mame/video/marvins.c
@@ -166,7 +166,7 @@ VIDEO_START( marvins )
tx_tilemap = tilemap_create(get_tx_tilemap_info,tilemap_scan_cols,8,8,32,32);
{
- tilemap_clip = machine->screen[0].visarea;
+ tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
if (snk_gamegroup != 1) // not Mad Crasher
{
tilemap_clip.max_x-=16;
diff --git a/src/mame/video/matmania.c b/src/mame/video/matmania.c
index 22200db1be1..8a37ce6a54d 100644
--- a/src/mame/video/matmania.c
+++ b/src/mame/video/matmania.c
@@ -125,11 +125,13 @@ WRITE8_HANDLER( matmania_paletteram_w )
***************************************************************************/
VIDEO_START( matmania )
{
- /* Mat Mania has a virtual screen twice as large as the visible screen */
- tmpbitmap = auto_bitmap_alloc(machine->screen[0].width,2* machine->screen[0].height,machine->screen[0].format);
+ int width = video_screen_get_width(machine->primary_screen);
+ int height = video_screen_get_height(machine->primary_screen);
+ bitmap_format format = video_screen_get_format(machine->primary_screen);
/* Mat Mania has a virtual screen twice as large as the visible screen */
- tmpbitmap2 = auto_bitmap_alloc(machine->screen[0].width,2 * machine->screen[0].height,machine->screen[0].format);
+ tmpbitmap = auto_bitmap_alloc(width, 2*height, format);
+ tmpbitmap2 = auto_bitmap_alloc(width, 2*height, format);
}
diff --git a/src/mame/video/mcr68.c b/src/mame/video/mcr68.c
index f60d124785a..249a1331812 100644
--- a/src/mame/video/mcr68.c
+++ b/src/mame/video/mcr68.c
@@ -188,7 +188,7 @@ WRITE16_HANDLER( zwackery_spriteram_w )
static void mcr68_update_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
{
- rectangle sprite_clip = machine->screen[0].visarea;
+ rectangle sprite_clip = *video_screen_get_visible_area(machine->primary_screen);
int offs;
/* adjust for clipping */
diff --git a/src/mame/video/megazone.c b/src/mame/video/megazone.c
index 30f83df4bfb..ab3ec46de8d 100644
--- a/src/mame/video/megazone.c
+++ b/src/mame/video/megazone.c
@@ -109,7 +109,7 @@ WRITE8_HANDLER( megazone_flipscreen_w )
VIDEO_START( megazone )
{
- tmpbitmap = auto_bitmap_alloc(256,256,machine->screen[0].format);
+ tmpbitmap = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c
index 99ca3a40f68..a1de0ef2ef7 100644
--- a/src/mame/video/metro.c
+++ b/src/mame/video/metro.c
@@ -737,6 +737,7 @@ static void draw_tilemap(running_machine *machine, bitmap_t *bitmap, const recta
tilemap_draw(bitmap,cliprect,tmap, flags, priority);
#else
int x,y,i;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* sub tile placement */
// sx = sx - (wx & ~7) + (wx & 7);
@@ -765,17 +766,17 @@ static void draw_tilemap(running_machine *machine, bitmap_t *bitmap, const recta
clip.max_x = clip.min_x + (WIN_NX-1)*8 - 1;
clip.max_y = clip.min_y + (WIN_NY-1)*8 - 1;
- if (clip.min_x > machine->screen[0].visarea.max_x) continue;
- if (clip.min_y > machine->screen[0].visarea.max_y) continue;
+ if (clip.min_x > visarea->max_x) continue;
+ if (clip.min_y > visarea->max_y) continue;
- if (clip.max_x < machine->screen[0].visarea.min_x) continue;
- if (clip.max_y < machine->screen[0].visarea.min_y) continue;
+ if (clip.max_x < visarea->min_x) continue;
+ if (clip.max_y < visarea->min_y) continue;
- if (clip.min_x < machine->screen[0].visarea.min_x) clip.min_x = machine->screen[0].visarea.min_x;
- if (clip.max_x > machine->screen[0].visarea.max_x) clip.max_x = machine->screen[0].visarea.max_x;
+ if (clip.min_x < visarea->min_x) clip.min_x = visarea->min_x;
+ if (clip.max_x > visarea->max_x) clip.max_x = visarea->max_x;
- if (clip.min_y < machine->screen[0].visarea.min_y) clip.min_y = machine->screen[0].visarea.min_y;
- if (clip.max_y > machine->screen[0].visarea.max_y) clip.max_y = machine->screen[0].visarea.max_y;
+ if (clip.min_y < visarea->min_y) clip.min_y = visarea->min_y;
+ if (clip.max_y > visarea->max_y) clip.max_y = visarea->max_y;
/* The clip region's width must be a multiple of 8!
This fact renderes the function useless, as far as
diff --git a/src/mame/video/mexico86.c b/src/mame/video/mexico86.c
index 74aca943e5f..b1e2b4487f3 100644
--- a/src/mame/video/mexico86.c
+++ b/src/mame/video/mexico86.c
@@ -98,87 +98,6 @@ if (offs >= mexico86_objectram_size+0x1c0) continue;
}
return 0;
}
-//AT
-#if 0 // old code
-VIDEO_UPDATE( kikikai )
-{
- int offs;
- int sx,sy,xc,yc;
- int gfx_num,gfx_attr,gfx_offs;
-
-
- /* Bubble Bobble doesn't have a real video RAM. All graphics (characters */
- /* and sprites) are stored in the same memory region, and information on */
- /* the background character columns is stored inthe area dd00-dd3f */
-
- /* This clears & redraws the entire screen each pass */
- fillbitmap(bitmap,255,&machine->screen[0].visarea);
-
- sx = 0;
-/* the score display seems to be outside of the main objectram. */
- for (offs = 0;offs < mexico86_objectram_size+0x200;offs += 4)
- {
- int height;
-
-if (offs >= mexico86_objectram_size && offs < mexico86_objectram_size+0x180) continue;
-if (offs >= mexico86_objectram_size+0x1c0) continue;
-
- /* skip empty sprites */
- /* this is dword aligned so the UINT32 * cast shouldn't give problems */
- /* on any architecture */
- if (*(UINT32 *)(&mexico86_objectram[offs]) == 0)
- continue;
-
- gfx_num = mexico86_objectram[offs + 1];
- gfx_attr = mexico86_objectram[offs + 3];
-
- if ((gfx_num & 0x80) == 0) /* 16x16 sprites */
- {
- gfx_offs = ((gfx_num & 0x1f) * 0x80) + ((gfx_num & 0x60) >> 1) + 12;
- height = 2;
- }
- else /* tilemaps (each sprite is a 16x256 column) */
- {
- gfx_offs = ((gfx_num & 0x3f) * 0x80);
- height = 32;
- }
-
- if ((gfx_num & 0xc0) == 0xc0) /* next column */
- sx += 16;
- else
- {
- sx = mexico86_objectram[offs + 2];
-// if (gfx_attr & 0x40) sx -= 256;
- }
- sy = 256 - height*8 - (mexico86_objectram[offs + 0]);
-
- for (xc = 0;xc < 2;xc++)
- {
- for (yc = 0;yc < height;yc++)
- {
- int goffs,code,color,flipx,flipy,x,y;
-
- goffs = gfx_offs + xc * 0x40 + yc * 0x02;
- code = mexico86_videoram[goffs] + ((mexico86_videoram[goffs + 1] & 0x1f) << 8);
- color = (mexico86_videoram[goffs + 1] & 0xe0) >> 5;
- flipx = 0;
- flipy = 0;
-// x = sx + xc * 8;
- x = (sx + xc * 8) & 0xff;
- y = (sy + yc * 8) & 0xff;
-
- drawgfx(bitmap,machine->gfx[0],
- code,
- color,
- flipx,flipy,
- x,y,
- &machine->screen[0].visarea,TRANSPARENCY_PEN,15);
- }
- }
- }
- return 0;
-}
-#endif
VIDEO_UPDATE( kikikai )
{
@@ -245,4 +164,3 @@ VIDEO_UPDATE( kikikai )
}
return 0;
}
-//ZT
diff --git a/src/mame/video/midvunit.c b/src/mame/video/midvunit.c
index d9966f6a86f..5bdbafc24b6 100644
--- a/src/mame/video/midvunit.c
+++ b/src/mame/video/midvunit.c
@@ -366,7 +366,7 @@ static void process_dma_queue(running_machine *machine)
extra->dither = ((dma_data[0] & 0x2000) != 0);
/* render as a quad */
- poly_render_quad(poly, dest, &machine->screen[0].visarea, callback, textured ? 2 : 0, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(poly, dest, video_screen_get_visible_area(machine->primary_screen), callback, textured ? 2 : 0, &vert[0], &vert[1], &vert[2], &vert[3]);
}
@@ -572,7 +572,7 @@ VIDEO_UPDATE( midvunit )
/* adjust the offset */
offset += xoffs;
- offset += 512 * (cliprect->min_y - screen->machine->screen[0].visarea.min_y);
+ offset += 512 * (cliprect->min_y - video_screen_get_visible_area(screen)->min_y);
/* loop over rows */
for (y = cliprect->min_y; y <= cliprect->max_y; y++)
diff --git a/src/mame/video/mjsister.c b/src/mame/video/mjsister.c
index d7fa915852d..7a35cba8154 100644
--- a/src/mame/video/mjsister.c
+++ b/src/mame/video/mjsister.c
@@ -23,8 +23,8 @@ static UINT8 *mjsister_videoram0, *mjsister_videoram1;
VIDEO_START( mjsister )
{
- mjsister_tmpbitmap0 = auto_bitmap_alloc(256,256,machine->screen[0].format);
- mjsister_tmpbitmap1 = auto_bitmap_alloc(256,256,machine->screen[0].format);
+ mjsister_tmpbitmap0 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
+ mjsister_tmpbitmap1 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
mjsister_videoram0 = auto_malloc(0x8000);
mjsister_videoram1 = auto_malloc(0x8000);
}
diff --git a/src/mame/video/model2.c b/src/mame/video/model2.c
index 06993fb6280..431da7f7845 100644
--- a/src/mame/video/model2.c
+++ b/src/mame/video/model2.c
@@ -2703,8 +2703,9 @@ static void model2_exit(running_machine *machine)
VIDEO_START(model2)
{
- int width = machine->screen[0].visarea.max_x - machine->screen[0].visarea.min_x;
- int height = machine->screen[0].visarea.max_y - machine->screen[0].visarea.min_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ int width = visarea->max_x - visarea->min_x;
+ int height = visarea->max_y - visarea->min_y;
sys24_tile_vh_start(machine, 0x3fff);
sys24_bitmap = bitmap_alloc(width, height+4, BITMAP_FORMAT_INDEXED16);
diff --git a/src/mame/video/moo.c b/src/mame/video/moo.c
index 7ad95da632d..0120ffef146 100644
--- a/src/mame/video/moo.c
+++ b/src/mame/video/moo.c
@@ -43,7 +43,7 @@ VIDEO_START(moo)
{
int offsx, offsy;
- assert(machine->screen[0].format == BITMAP_FORMAT_RGB32);
+ assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_RGB32);
alpha_enabled = 0;
diff --git a/src/mame/video/mrflea.c b/src/mame/video/mrflea.c
index d9e68e5e212..e46502c3980 100644
--- a/src/mame/video/mrflea.c
+++ b/src/mame/video/mrflea.c
@@ -39,7 +39,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
const gfx_element *gfx = machine->gfx[0];
const UINT8 *source = spriteram;
const UINT8 *finish = source+0x100;
- rectangle clip = machine->screen[0].visarea;
+ rectangle clip = *video_screen_get_visible_area(machine->primary_screen);
clip.max_x -= 24;
clip.min_x += 16;
while( source<finish ){
diff --git a/src/mame/video/munchmo.c b/src/mame/video/munchmo.c
index b93e76f7a7c..9d25f4b1a90 100644
--- a/src/mame/video/munchmo.c
+++ b/src/mame/video/munchmo.c
@@ -59,7 +59,7 @@ WRITE8_HANDLER( mnchmobl_sprite_tile_w ){ mnchmobl_sprite_tile[offset] = data; }
VIDEO_START( mnchmobl )
{
- tmpbitmap = auto_bitmap_alloc(512,512,machine->screen[0].format);
+ tmpbitmap = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
}
static void draw_status(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
diff --git a/src/mame/video/mustache.c b/src/mame/video/mustache.c
index bdf02706810..071dc0d631c 100644
--- a/src/mame/video/mustache.c
+++ b/src/mame/video/mustache.c
@@ -98,6 +98,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
{
rectangle clip = *cliprect;
const gfx_element *gfx = machine->gfx[1];
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
int offs;
for (offs = 0;offs < spriteram_size;offs += 4)
@@ -113,12 +114,12 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
code+=(attr&0x0c)<<6;
if ((control_byte & 0xa))
- clip.max_y = machine->screen[0].visarea.max_y;
+ clip.max_y = visarea->max_y;
else
if (flip_screen_get())
- clip.min_y = machine->screen[0].visarea.min_y + 56;
+ clip.min_y = visarea->min_y + 56;
else
- clip.max_y = machine->screen[0].visarea.max_y - 56;
+ clip.max_y = visarea->max_y - 56;
if (flip_screen_get())
{
diff --git a/src/mame/video/naughtyb.c b/src/mame/video/naughtyb.c
index d0d70e574d7..572e7c4cd53 100644
--- a/src/mame/video/naughtyb.c
+++ b/src/mame/video/naughtyb.c
@@ -116,7 +116,7 @@ VIDEO_START( naughtyb )
palreg = bankreg = 0;
/* Naughty Boy has a virtual screen twice as large as the visible screen */
- tmpbitmap = auto_bitmap_alloc(68*8,28*8,machine->screen[0].format);
+ tmpbitmap = auto_bitmap_alloc(68*8,28*8,video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/video/nbmj8688.c b/src/mame/video/nbmj8688.c
index 222523f6a52..ea673d329f1 100644
--- a/src/mame/video/nbmj8688.c
+++ b/src/mame/video/nbmj8688.c
@@ -555,7 +555,7 @@ static void mbmj8688_gfxdraw(int gfxtype)
static void common_video_start(running_machine *machine)
{
- mjsikaku_tmpbitmap = auto_bitmap_alloc(512, 256, machine->screen[0].format);
+ mjsikaku_tmpbitmap = auto_bitmap_alloc(512, 256, video_screen_get_format(machine->primary_screen));
mjsikaku_videoram = auto_malloc(512 * 256 * sizeof(UINT16));
nbmj8688_clut = auto_malloc(0x20 * sizeof(UINT8));
memset(mjsikaku_videoram, 0, (512 * 256 * sizeof(UINT16)));
diff --git a/src/mame/video/nmk16.c b/src/mame/video/nmk16.c
index 045c64807d2..37704e5dba4 100644
--- a/src/mame/video/nmk16.c
+++ b/src/mame/video/nmk16.c
@@ -103,7 +103,7 @@ VIDEO_START( bioship )
tx_tilemap = tilemap_create(macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
spriteram_old = auto_malloc(0x1000);
spriteram_old2 = auto_malloc(0x1000);
- background_bitmap = auto_bitmap_alloc(8192,512,machine->screen[0].format);
+ background_bitmap = auto_bitmap_alloc(8192,512,video_screen_get_format(machine->primary_screen));
tilemap_set_transparent_pen(bg_tilemap,15);
tilemap_set_transparent_pen(tx_tilemap,15);
diff --git a/src/mame/video/pitnrun.c b/src/mame/video/pitnrun.c
index 80e113d15f5..4d3f77c019b 100644
--- a/src/mame/video/pitnrun.c
+++ b/src/mame/video/pitnrun.c
@@ -180,10 +180,10 @@ VIDEO_START(pitnrun)
fg = tilemap_create( get_tile_info1,tilemap_scan_rows,8,8,32,32 );
bg = tilemap_create( get_tile_info2,tilemap_scan_rows,8,8,32*4,32 );
tilemap_set_transparent_pen( fg, 0 );
- tmp_bitmap[0] = auto_bitmap_alloc(128,128,machine->screen[0].format);
- tmp_bitmap[1] = auto_bitmap_alloc(128,128,machine->screen[0].format);
- tmp_bitmap[2] = auto_bitmap_alloc(128,128,machine->screen[0].format);
- tmp_bitmap[3] = auto_bitmap_alloc(128,128,machine->screen[0].format);
+ tmp_bitmap[0] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
+ tmp_bitmap[1] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
+ tmp_bitmap[2] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
+ tmp_bitmap[3] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
pitnrun_spotlights();
}
diff --git a/src/mame/video/playch10.c b/src/mame/video/playch10.c
index 3ba1bfa450d..2a8d0de02f1 100644
--- a/src/mame/video/playch10.c
+++ b/src/mame/video/playch10.c
@@ -143,7 +143,7 @@ VIDEO_UPDATE( playch10 )
}
else /* Single Monitor version */
{
- rectangle top_monitor = screen->machine->screen[0].visarea;
+ rectangle top_monitor = *video_screen_get_visible_area(screen);
top_monitor.max_y = ( top_monitor.max_y - top_monitor.min_y ) / 2;
diff --git a/src/mame/video/popeye.c b/src/mame/video/popeye.c
index b7eaa50119d..c4a385bf217 100644
--- a/src/mame/video/popeye.c
+++ b/src/mame/video/popeye.c
@@ -247,28 +247,22 @@ static TILE_GET_INFO( get_fg_tile_info )
VIDEO_START( skyskipr )
{
popeye_bitmapram = auto_malloc(popeye_bitmapram_size);
-
- tmpbitmap2 = auto_bitmap_alloc(1024,1024,machine->screen[0].format); /* actually 1024x512 but not rolling over vertically? */
+ tmpbitmap2 = auto_bitmap_alloc(1024,1024,video_screen_get_format(machine->primary_screen)); /* actually 1024x512 but not rolling over vertically? */
bitmap_type = TYPE_SKYSKIPR;
- fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_rows,
- 16, 16, 32, 32);
-
+ fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
tilemap_set_transparent_pen(fg_tilemap, 0);
}
VIDEO_START( popeye )
{
popeye_bitmapram = auto_malloc(popeye_bitmapram_size);
-
- tmpbitmap2 = auto_bitmap_alloc(512,512,machine->screen[0].format);
+ tmpbitmap2 = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
bitmap_type = TYPE_POPEYE;
- fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_rows,
- 16, 16, 32, 32);
-
+ fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_rows, 16, 16, 32, 32);
tilemap_set_transparent_pen(fg_tilemap, 0);
}
diff --git a/src/mame/video/popper.c b/src/mame/video/popper.c
index 47ee48b01bf..5aaa915d3aa 100644
--- a/src/mame/video/popper.c
+++ b/src/mame/video/popper.c
@@ -72,7 +72,7 @@ WRITE8_HANDLER( popper_flipscreen_w )
popper_flipscreen = data;
tilemap_set_flip( ALL_TILEMAPS,popper_flipscreen?(TILEMAP_FLIPX|TILEMAP_FLIPY):0 );
- tilemap_clip = Machine->screen[0].visarea;
+ tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
if (popper_flipscreen)
tilemap_clip.min_x=tilemap_clip.max_x-15;
@@ -170,7 +170,7 @@ VIDEO_START( popper )
tilemap_set_transmask(popper_ol_p0_tilemap, 0,0x0f,0x0e);
tilemap_set_transmask(popper_ol_p0_tilemap, 1,0x0e,0x0f);
- tilemap_clip = machine->screen[0].visarea;
+ tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
state_save_register_global(popper_flipscreen);
// state_save_register_global(popper_e002);
diff --git a/src/mame/video/ppu2c0x.c b/src/mame/video/ppu2c0x.c
index cd1915e066d..f0eb339f843 100644
--- a/src/mame/video/ppu2c0x.c
+++ b/src/mame/video/ppu2c0x.c
@@ -303,7 +303,7 @@ void ppu2c0x_init(running_machine *machine, const ppu2c0x_interface *interface )
chips[i].scan_scale = 1;
/* allocate a screen bitmap, videoram and spriteram, a dirtychar array and the monochromatic colortable */
- chips[i].bitmap = auto_bitmap_alloc( VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT, machine->screen[0].format );
+ chips[i].bitmap = auto_bitmap_alloc( VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
chips[i].videoram = auto_malloc( VIDEORAM_SIZE );
chips[i].spriteram = auto_malloc( SPRITERAM_SIZE );
chips[i].dirtychar = auto_malloc( CHARGEN_NUM_CHARS );
diff --git a/src/mame/video/psikyo4.c b/src/mame/video/psikyo4.c
index eba0ec6aaf3..c95599e37e6 100644
--- a/src/mame/video/psikyo4.c
+++ b/src/mame/video/psikyo4.c
@@ -98,7 +98,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
if((!scr && flipscreen1) || (scr && flipscreen2))
{
- ypos = machine->screen[0].visarea.max_y+1 - ypos - high*16; /* Screen Height depends on game */
+ ypos = video_screen_get_visible_area(machine->primary_screen)->max_y+1 - ypos - high*16; /* Screen Height depends on game */
xpos = 40*8 - xpos - wide*16;
flipx = !flipx;
flipy = !flipy;
diff --git a/src/mame/video/psikyosh.c b/src/mame/video/psikyosh.c
index 033cd4c955a..d530e5d8e31 100644
--- a/src/mame/video/psikyosh.c
+++ b/src/mame/video/psikyosh.c
@@ -1034,7 +1034,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
sprintf(buf, "%X",xdim/16); /* Display Zoom in 16.16 */
if (machine->gamedrv->flags & ORIENTATION_SWAP_XY) {
x = ypos;
- y = machine->screen[0].visarea.max_x - xpos; /* ORIENTATION_FLIP_Y */
+ y = video_screen_get_visible_area(machine->primary_screen)->max_x - xpos; /* ORIENTATION_FLIP_Y */
}
else {
x = xpos;
diff --git a/src/mame/video/rallyx.c b/src/mame/video/rallyx.c
index 6681abf7807..e1754a936b3 100644
--- a/src/mame/video/rallyx.c
+++ b/src/mame/video/rallyx.c
@@ -551,7 +551,7 @@ static void locomotn_draw_sprites(running_machine *machine, bitmap_t *bitmap, co
int flip = spriteram[offs] & 2;
/* handle reduced visible area in some games */
- if (flip_screen_get() && machine->screen[0].visarea.max_x == 32*8-1) sx += 32;
+ if (flip_screen_get() && (video_screen_get_visible_area(machine->primary_screen)->max_x == 32*8-1)) sx += 32;
pdrawgfx(bitmap,machine->gfx[1],
((spriteram[offs] & 0x7c) >> 2) + 0x20*(spriteram[offs] & 0x01) + ((spriteram[offs] & 0x80) >> 1),
@@ -625,7 +625,7 @@ static void locomotn_draw_bullets(running_machine *machine, bitmap_t *bitmap, co
y = 252 - rallyx_radary[offs];
/* handle reduced visible area in some games */
- if (flip_screen_get() && machine->screen[0].visarea.max_x == 32*8-1) x += 32;
+ if (flip_screen_get() && (video_screen_get_visible_area(machine->primary_screen)->max_x == 32*8-1)) x += 32;
drawgfx(bitmap,machine->gfx[2],
(rallyx_radarattr[offs & 0x0f] & 0x07) ^ 0x07,
diff --git a/src/mame/video/realbrk.c b/src/mame/video/realbrk.c
index e628af6b5b7..e9ff7a09201 100644
--- a/src/mame/video/realbrk.c
+++ b/src/mame/video/realbrk.c
@@ -154,33 +154,18 @@ WRITE16_HANDLER( realbrk_vram_2_w )
VIDEO_START(realbrk)
{
/* Backgrounds */
- tilemap_0 = tilemap_create( get_tile_info_0, tilemap_scan_rows,
-
- 16,16,
- 0x40, 0x20);
-
- tilemap_1 = tilemap_create( get_tile_info_1, tilemap_scan_rows,
-
- 16,16,
- 0x40, 0x20);
+ tilemap_0 = tilemap_create(get_tile_info_0, tilemap_scan_rows, 16, 16, 0x40, 0x20);
+ tilemap_1 = tilemap_create(get_tile_info_1, tilemap_scan_rows, 16, 16, 0x40, 0x20);
/* Text */
- tilemap_2 = tilemap_create( get_tile_info_2, tilemap_scan_rows,
-
- 8,8,
- 0x40, 0x20);
+ tilemap_2 = tilemap_create(get_tile_info_2, tilemap_scan_rows, 8, 8, 0x40, 0x20);
tilemap_set_transparent_pen(tilemap_0,0);
tilemap_set_transparent_pen(tilemap_1,0);
tilemap_set_transparent_pen(tilemap_2,0);
- tmpbitmap0 = auto_bitmap_alloc( 32,
- 32,
- machine->screen[0].format);
-
- tmpbitmap1 = auto_bitmap_alloc( 32,
- 32,
- machine->screen[0].format);
+ tmpbitmap0 = auto_bitmap_alloc(32,32, video_screen_get_format(machine->primary_screen));
+ tmpbitmap1 = auto_bitmap_alloc(32,32, video_screen_get_format(machine->primary_screen));
}
/***************************************************************************
diff --git a/src/mame/video/rohga.c b/src/mame/video/rohga.c
index ae05dc27ee8..de7b5d61316 100644
--- a/src/mame/video/rohga.c
+++ b/src/mame/video/rohga.c
@@ -500,7 +500,7 @@ VIDEO_UPDATE( wizdfire )
deco16_pf34_update(deco16_pf3_rowscroll,deco16_pf4_rowscroll);
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
- fillbitmap(bitmap,screen->machine->pens[512],&screen->machine->screen[0].visarea);
+ fillbitmap(bitmap,screen->machine->pens[512],cliprect);
deco16_tilemap_4_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE,0);
wizdfire_draw_sprites(screen->machine,bitmap,cliprect,buffered_spriteram16,4,3);
@@ -529,7 +529,7 @@ VIDEO_UPDATE( nitrobal )
deco16_pf34_update(deco16_pf3_rowscroll,deco16_pf4_rowscroll);
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
- fillbitmap(bitmap,screen->machine->pens[512],&screen->machine->screen[0].visarea);
+ fillbitmap(bitmap,screen->machine->pens[512],cliprect);
fillbitmap(priority_bitmap,0,NULL);
deco16_clear_sprite_priority_bitmap();
diff --git a/src/mame/video/rpunch.c b/src/mame/video/rpunch.c
index 2dcf9c2769e..d124540a2de 100644
--- a/src/mame/video/rpunch.c
+++ b/src/mame/video/rpunch.c
@@ -165,7 +165,7 @@ WRITE16_HANDLER( rpunch_crtc_data_w )
{
/* only register we know about.... */
case 0x0b:
- timer_adjust_oneshot(crtc_timer, video_screen_get_time_until_pos(machine->primary_screen, machine->screen[0].visarea.max_y + 1, 0), (data == 0xc0) ? 2 : 1);
+ timer_adjust_oneshot(crtc_timer, video_screen_get_time_until_vblank_start(machine->primary_screen), (data == 0xc0) ? 2 : 1);
break;
default:
diff --git a/src/mame/video/segag80v.c b/src/mame/video/segag80v.c
index 35f3a60dac3..27825052f2a 100644
--- a/src/mame/video/segag80v.c
+++ b/src/mame/video/segag80v.c
@@ -328,8 +328,8 @@ VIDEO_START( sega )
{
assert_always(vectorram_size != 0, "vectorram==0");
- min_x =machine->screen[0].visarea.min_x;
- min_y =machine->screen[0].visarea.min_y;
+ min_x =video_screen_get_visible_area(machine->primary_screen)->min_x;
+ min_y =video_screen_get_visible_area(machine->primary_screen)->min_y;
VIDEO_START_CALL(vector);
}
diff --git a/src/mame/video/segas32.c b/src/mame/video/segas32.c
index 397cfad06f8..e57e48e9c39 100644
--- a/src/mame/video/segas32.c
+++ b/src/mame/video/segas32.c
@@ -2606,7 +2606,7 @@ for (showclip = 0; showclip < 4; showclip++)
rect.min_x = (visarea->max_x + 1) - ((system32_videoram[0x1ff64/2 + i * 4] & 0x1ff) + 1);
rect.min_y = (visarea->max_y + 1) - ((system32_videoram[0x1ff66/2 + i * 4] & 0x0ff) + 1);
}
- sect_rect(&rect, &screen->machine->screen[screen].visarea);
+ sect_rect(&rect, video_screen_get_visible_area(screen));
if (rect.min_y <= rect.max_y && rect.min_x <= rect.max_x)
{
diff --git a/src/mame/video/seta.c b/src/mame/video/seta.c
index d60235291b4..26f0be9d750 100644
--- a/src/mame/video/seta.c
+++ b/src/mame/video/seta.c
@@ -903,7 +903,8 @@ static VIDEO_UPDATE( seta_layers )
int order = 0;
int flip = (spriteram16[ 0x600/2 ] & 0x40) >> 6;
- int vis_dimy = screen->machine->screen[0].visarea.max_y - screen->machine->screen[0].visarea.min_y + 1;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+ int vis_dimy = visarea->max_y - visarea->min_y + 1;
flip ^= tilemaps_flip;
diff --git a/src/mame/video/skullxbo.c b/src/mame/video/skullxbo.c
index 9ea2e55b5eb..f3b7123e488 100644
--- a/src/mame/video/skullxbo.c
+++ b/src/mame/video/skullxbo.c
@@ -136,7 +136,7 @@ WRITE16_HANDLER( skullxbo_yscroll_w )
video_screen_update_partial(machine->primary_screen, scanline);
/* adjust the effective scroll for the current scanline */
- if (scanline > Machine->screen[0].visarea.max_y)
+ if (scanline > video_screen_get_visible_area(machine->primary_screen)->max_y)
scanline = 0;
effscroll = (newscroll >> 7) - scanline;
diff --git a/src/mame/video/skyraid.c b/src/mame/video/skyraid.c
index 410738a967c..1cc462b232c 100644
--- a/src/mame/video/skyraid.c
+++ b/src/mame/video/skyraid.c
@@ -17,7 +17,7 @@ static bitmap_t *helper;
VIDEO_START( skyraid )
{
- helper = auto_bitmap_alloc(128, 240, machine->screen[0].format);
+ helper = auto_bitmap_alloc(128, 240, video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/video/snk.c b/src/mame/video/snk.c
index 4a887ce87ff..160db1e0e58 100644
--- a/src/mame/video/snk.c
+++ b/src/mame/video/snk.c
@@ -67,7 +67,7 @@ VIDEO_START( snk )
{
snk_blink_parity = 0;
- tmpbitmap = auto_bitmap_alloc( 512, 512, machine->screen[0].format );
+ tmpbitmap = auto_bitmap_alloc(512, 512, video_screen_get_format(machine->primary_screen));
}
/**************************************************************************************/
@@ -241,7 +241,7 @@ VIDEO_UPDATE( tnk3 )
VIDEO_START( sgladiat )
{
- tmpbitmap = auto_bitmap_alloc( 512, 256, machine->screen[0].format );
+ tmpbitmap = auto_bitmap_alloc(512, 256, video_screen_get_format(machine->primary_screen));
}
static void sgladiat_draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int scrollx, int scrolly )
diff --git a/src/mame/video/sprint2.c b/src/mame/video/sprint2.c
index 4fe2db8e1c5..4bd3fe74a88 100644
--- a/src/mame/video/sprint2.c
+++ b/src/mame/video/sprint2.c
@@ -147,6 +147,7 @@ VIDEO_EOF( sprint2 )
{
int i;
int j;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/*
* Collisions are detected for both player cars:
@@ -165,14 +166,14 @@ VIDEO_EOF( sprint2 )
rect.max_x = get_sprite_x(i) + machine->gfx[1]->width - 1;
rect.max_y = get_sprite_y(i) + machine->gfx[1]->height - 1;
- if (rect.min_x < machine->screen[0].visarea.min_x)
- rect.min_x = machine->screen[0].visarea.min_x;
- if (rect.min_y < machine->screen[0].visarea.min_y)
- rect.min_y = machine->screen[0].visarea.min_y;
- if (rect.max_x > machine->screen[0].visarea.max_x)
- rect.max_x = machine->screen[0].visarea.max_x;
- if (rect.max_y > machine->screen[0].visarea.max_y)
- rect.max_y = machine->screen[0].visarea.max_y;
+ if (rect.min_x < visarea->min_x)
+ rect.min_x = visarea->min_x;
+ if (rect.min_y < visarea->min_y)
+ rect.min_y = visarea->min_y;
+ if (rect.max_x > visarea->max_x)
+ rect.max_x = visarea->max_x;
+ if (rect.max_y > visarea->max_y)
+ rect.max_y = visarea->max_y;
/* check for sprite-tilemap collisions */
diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c
index 212a32dc504..d6eda66c23f 100644
--- a/src/mame/video/sprint4.c
+++ b/src/mame/video/sprint4.c
@@ -113,7 +113,7 @@ VIDEO_EOF( sprint4 )
rect.max_x = horz - 15 + machine->gfx[1]->width - 1;
rect.max_y = vert - 15 + machine->gfx[1]->height - 1;
- sect_rect(&rect, &machine->screen[0].visarea);
+ sect_rect(&rect, video_screen_get_visible_area(machine->primary_screen));
tilemap_draw(helper, &rect, playfield, 0, 0);
diff --git a/src/mame/video/sprint8.c b/src/mame/video/sprint8.c
index e0646d8fbd6..e3a0522dc85 100644
--- a/src/mame/video/sprint8.c
+++ b/src/mame/video/sprint8.c
@@ -179,19 +179,20 @@ VIDEO_EOF( sprint8 )
{
int x;
int y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- tilemap_draw(helper2, &machine->screen[0].visarea, tilemap2, 0, 0);
+ tilemap_draw(helper2, visarea, tilemap2, 0, 0);
- fillbitmap(helper1, 0x20, &machine->screen[0].visarea);
+ fillbitmap(helper1, 0x20, visarea);
- draw_sprites(machine, helper1, &machine->screen[0].visarea);
+ draw_sprites(machine, helper1, visarea);
- for (y = machine->screen[0].visarea.min_y; y <= machine->screen[0].visarea.max_y; y++)
+ for (y = visarea->min_y; y <= visarea->max_y; y++)
{
const UINT16* p1 = BITMAP_ADDR16(helper1, y, 0);
const UINT16* p2 = BITMAP_ADDR16(helper2, y, 0);
- for (x = machine->screen[0].visarea.min_x; x <= machine->screen[0].visarea.max_x; x++)
+ for (x = visarea->min_x; x <= visarea->max_x; x++)
if (p1[x] != 0x20 && p2[x] == 0x23)
timer_set(video_screen_get_time_until_pos(machine->primary_screen, y + 24, x), NULL,
colortable_entry_get_value(machine->colortable, p1[x]),
diff --git a/src/mame/video/srmp2.c b/src/mame/video/srmp2.c
index a9717a9fc57..2aa19c8af9f 100644
--- a/src/mame/video/srmp2.c
+++ b/src/mame/video/srmp2.c
@@ -159,7 +159,7 @@ static void srmp3_draw_sprites_map(running_machine *machine, bitmap_t *bitmap, c
int sx = x + xoffs + (offs & 1) * 16;
int sy = -(y + yoffs) + (offs / 2) * 16 -
- (machine->screen[0].height-(machine->screen[0].visarea.max_y + 1));
+ (video_screen_get_height(machine->primary_screen) - (video_screen_get_visible_area(machine->primary_screen)->max_y + 1));
if (upper & (1 << col)) sx += 256;
@@ -322,7 +322,7 @@ static void mjyuugi_draw_sprites_map(running_machine *machine, bitmap_t *bitmap,
int sx = x + xoffs + (offs & 1) * 16;
int sy = -(y + yoffs) + (offs / 2) * 16 -
- (machine->screen[0].height-(machine->screen[0].visarea.max_y + 1));
+ (video_screen_get_height(machine->primary_screen) - (video_screen_get_visible_area(machine->primary_screen)->max_y + 1));
if (upper & (1 << col)) sx += 256;
@@ -416,7 +416,7 @@ static void mjyuugi_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
if (flip)
{
y = max_y - y
- +(machine->screen[0].height-(machine->screen[0].visarea.max_y + 1));
+ +(video_screen_get_height(machine->primary_screen) - (video_screen_get_visible_area(machine->primary_screen)->max_y + 1));
flipx = !flipx;
flipy = !flipy;
}
diff --git a/src/mame/video/ssv.c b/src/mame/video/ssv.c
index c50ca58b1cf..9e16b65f556 100644
--- a/src/mame/video/ssv.c
+++ b/src/mame/video/ssv.c
@@ -719,7 +719,7 @@ static void draw_row(running_machine *machine, bitmap_t *bitmap, const rectangle
static void draw_layer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int nr)
{
int sy;
- for ( sy = 0; sy <= machine->screen[0].visarea.max_y; sy += 0x40 )
+ for ( sy = 0; sy <= video_screen_get_visible_area(machine->primary_screen)->max_y; sy += 0x40 )
draw_row(machine, bitmap, cliprect, 0, sy, nr);
}
diff --git a/src/mame/video/st0016.c b/src/mame/video/st0016.c
index f85552445aa..5c800874cea 100644
--- a/src/mame/video/st0016.c
+++ b/src/mame/video/st0016.c
@@ -635,7 +635,7 @@ VIDEO_UPDATE( st0016 )
//super eagle shot
int x,y,dy;
- fillbitmap(speglsht_bitmap,0,&screen->machine->screen[0].visarea);
+ fillbitmap(speglsht_bitmap,0,NULL);
dy=(speglsht_videoreg&0x20)?(256*512):0; //visible frame
for(y=0;y<256;y++)
diff --git a/src/mame/video/starcrus.c b/src/mame/video/starcrus.c
index a2cd9e32a16..bed44516029 100644
--- a/src/mame/video/starcrus.c
+++ b/src/mame/video/starcrus.c
@@ -55,11 +55,11 @@ WRITE8_HANDLER( starcrus_p2_y_w ) { p2_y = data^0xff; }
VIDEO_START( starcrus )
{
- ship1_vid = auto_bitmap_alloc(16,16,machine->screen[0].format);
- ship2_vid = auto_bitmap_alloc(16,16,machine->screen[0].format);
+ ship1_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
+ ship2_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
- proj1_vid = auto_bitmap_alloc(16,16,machine->screen[0].format);
- proj2_vid = auto_bitmap_alloc(16,16,machine->screen[0].format);
+ proj1_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
+ proj2_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
}
WRITE8_HANDLER( starcrus_ship_parm_1_w )
diff --git a/src/mame/video/starshp1.c b/src/mame/video/starshp1.c
index cc7706d93b3..eba123c3915 100644
--- a/src/mame/video/starshp1.c
+++ b/src/mame/video/starshp1.c
@@ -334,7 +334,7 @@ static void draw_circle(bitmap_t* bitmap)
}
-static int spaceship_collision(bitmap_t *bitmap, rectangle *rect)
+static int spaceship_collision(bitmap_t *bitmap, const rectangle *rect)
{
int x;
int y;
@@ -361,7 +361,7 @@ static int point_in_circle(int x, int y, int center_x, int center_y, int r)
}
-static int circle_collision(rectangle *rect)
+static int circle_collision(const rectangle *rect)
{
int center_x = get_circle_hpos();
int center_y = get_circle_vpos();
@@ -407,6 +407,7 @@ VIDEO_UPDATE( starshp1 )
VIDEO_EOF( starshp1 )
{
rectangle rect;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
rect.min_x = get_sprite_hpos(13);
rect.min_y = get_sprite_vpos(13);
@@ -422,12 +423,12 @@ VIDEO_EOF( starshp1 )
if (rect.max_y > helper->height - 1)
rect.max_y = helper->height - 1;
- fillbitmap(helper, 0, &machine->screen[0].visarea);
+ fillbitmap(helper, 0, visarea);
if (starshp1_attract == 0)
- draw_spaceship(machine, helper, &machine->screen[0].visarea);
+ draw_spaceship(machine, helper, visarea);
- if (circle_collision(&machine->screen[0].visarea))
+ if (circle_collision(visarea))
starshp1_collision_latch |= 1;
if (circle_collision(&rect))
@@ -436,6 +437,6 @@ VIDEO_EOF( starshp1 )
if (spaceship_collision(helper, &rect))
starshp1_collision_latch |= 4;
- if (spaceship_collision(helper, &machine->screen[0].visarea))
+ if (spaceship_collision(helper, visarea))
starshp1_collision_latch |= 8;
}
diff --git a/src/mame/video/stvvdp2.c b/src/mame/video/stvvdp2.c
index 6f4aa46b73d..54535ff202b 100644
--- a/src/mame/video/stvvdp2.c
+++ b/src/mame/video/stvvdp2.c
@@ -4819,9 +4819,7 @@ static void stv_vdp2_draw_rotation_screen(running_machine *machine, bitmap_t *bi
else
{
if ( stv_vdp2_roz_bitmap[iRP-1] == NULL )
- {
- stv_vdp2_roz_bitmap[iRP-1] = auto_bitmap_alloc( 4096, 4096, machine->screen[0].format );
- }
+ stv_vdp2_roz_bitmap[iRP-1] = auto_bitmap_alloc(4096, 4096, video_screen_get_format(machine->primary_screen));
roz_clip_rect.min_x = roz_clip_rect.min_y = 0;
if ( (iRP == 1 && STV_VDP2_RAOVR == 3) ||
@@ -5232,7 +5230,7 @@ READ32_HANDLER ( stv_vdp2_regs_r )
case 0x8/4:
/*H/V Counter Register*/
/*H-Counter V-Counter */
- stv_vdp2_regs[offset] = (((Machine->screen[0].visarea.max_x - 1)<<16)&0x3ff0000)|(((Machine->screen[0].visarea.max_y - 1)<<0)& ((STV_VDP2_LSMD == 3) ? 0x7ff : 0x3ff));
+ stv_vdp2_regs[offset] = (((video_screen_get_visible_area(machine->primary_screen)->max_x - 1)<<16)&0x3ff0000)|(((video_screen_get_visible_area(machine->primary_screen)->max_y - 1)<<0)& ((STV_VDP2_LSMD == 3) ? 0x7ff : 0x3ff));
if(LOG_VDP2) logerror("CPU #%d PC(%08x) = VDP2: H/V counter read : %08x\n",cpu_getactivecpu(),activecpu_get_pc(),stv_vdp2_regs[offset]);
stv_vdp2_regs[offset] = 0;
break;
diff --git a/src/mame/video/superqix.c b/src/mame/video/superqix.c
index 501af229a77..c75b9f3e4ea 100644
--- a/src/mame/video/superqix.c
+++ b/src/mame/video/superqix.c
@@ -60,8 +60,8 @@ VIDEO_START( pbillian )
VIDEO_START( superqix )
{
- fg_bitmap[0] = auto_bitmap_alloc(256, 256, machine->screen[0].format);
- fg_bitmap[1] = auto_bitmap_alloc(256, 256, machine->screen[0].format);
+ fg_bitmap[0] = auto_bitmap_alloc(256, 256, video_screen_get_format(machine->primary_screen));
+ fg_bitmap[1] = auto_bitmap_alloc(256, 256, video_screen_get_format(machine->primary_screen));
bg_tilemap = tilemap_create(sqix_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
tilemap_set_transmask(bg_tilemap,0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
diff --git a/src/mame/video/suprnova.c b/src/mame/video/suprnova.c
index 31a611df641..9acef0b61b8 100644
--- a/src/mame/video/suprnova.c
+++ b/src/mame/video/suprnova.c
@@ -550,12 +550,12 @@ void skns_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectang
if (sprite_flip&2)
{
xflip ^= 1;
- sx = machine->screen[0].visarea.max_x+1 - sx;
+ sx = video_screen_get_visible_area(machine->primary_screen)->max_x+1 - sx;
}
if (sprite_flip&1)
{
yflip ^= 1;
- sy = machine->screen[0].visarea.max_y+1 - sy;
+ sy = video_screen_get_visible_area(machine->primary_screen)->max_y+1 - sy;
}
/* Palette linking */
diff --git a/src/mame/video/suprridr.c b/src/mame/video/suprridr.c
index 8f78d6de4d2..1e72a9f8759 100644
--- a/src/mame/video/suprridr.c
+++ b/src/mame/video/suprridr.c
@@ -169,21 +169,22 @@ VIDEO_UPDATE( suprridr )
{
rectangle subclip;
int i;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
/* render left 4 columns with no scroll */
- subclip = screen->machine->screen[0].visarea;
+ subclip = *visarea;;
subclip.max_x = subclip.min_x + (flipx ? 1*8 : 4*8) - 1;
sect_rect(&subclip, cliprect);
tilemap_draw(bitmap, &subclip, bg_tilemap_noscroll, 0, 0);
/* render right 1 column with no scroll */
- subclip = screen->machine->screen[0].visarea;
+ subclip = *visarea;;
subclip.min_x = subclip.max_x - (flipx ? 4*8 : 1*8) + 1;
sect_rect(&subclip, cliprect);
tilemap_draw(bitmap, &subclip, bg_tilemap_noscroll, 0, 0);
/* render the middle columns normally */
- subclip = screen->machine->screen[0].visarea;
+ subclip = *visarea;;
subclip.min_x += flipx ? 1*8 : 4*8;
subclip.max_x -= flipx ? 4*8 : 1*8;
sect_rect(&subclip, cliprect);
diff --git a/src/mame/video/system1.c b/src/mame/video/system1.c
index a6c4233f974..c75a8831ce7 100644
--- a/src/mame/video/system1.c
+++ b/src/mame/video/system1.c
@@ -186,13 +186,13 @@ INLINE int get_sprite_bottom_y(int spr_number)
}
#endif
-INLINE void draw_pixel(bitmap_t *bitmap,
+INLINE void draw_pixel(running_machine *machine, bitmap_t *bitmap,
int x,int y,int x_flipped,int y_flipped,
int spr_number,int color)
{
int xr,yr;
int sprite_onscreen;
-
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
if (x < 0 || x >= Machine->screen[0].width ||
y < 0 || y >= Machine->screen[0].height)
@@ -206,10 +206,10 @@ INLINE void draw_pixel(bitmap_t *bitmap,
sprite_onscreen_map[256*y+x] = spr_number;
- if (x_flipped >= Machine->screen[0].visarea.min_x ||
- x_flipped <= Machine->screen[0].visarea.max_x ||
- y_flipped >= Machine->screen[0].visarea.min_y ||
- y_flipped <= Machine->screen[0].visarea.max_y)
+ if (x_flipped >= visarea->min_x ||
+ x_flipped <= visarea->max_x ||
+ y_flipped >= visarea->min_y ||
+ y_flipped <= visarea->max_y)
{
*BITMAP_ADDR16(bitmap, y_flipped, x_flipped) = color;
}
@@ -254,7 +254,7 @@ WRITE8_HANDLER( system1_sprites_collisionram_w )
system1_sprites_collisionram[offset] = 0x7e;
}
-static void draw_sprite(bitmap_t *bitmap,int spr_number)
+static void draw_sprite(running_machine *machine, bitmap_t *bitmap,int spr_number)
{
int sy,row,height,src,bank;
UINT8 *sprite_base;
@@ -322,13 +322,13 @@ static void draw_sprite(bitmap_t *bitmap,int spr_number)
if (color1 == 15) break;
if (color1)
- draw_pixel(bitmap,x,y,x_flipped,y_flipped,spr_number,sprite_palette_base+color1);
+ draw_pixel(machine,bitmap,x,y,x_flipped,y_flipped,spr_number,sprite_palette_base+color1);
x++;
x_flipped += flip_screen_get() ? -1 : 1;
if (color2 == 15) break;
if (color2)
- draw_pixel(bitmap,x,y,x_flipped,y_flipped,spr_number,sprite_palette_base+color2);
+ draw_pixel(machine,bitmap,x,y,x_flipped,y_flipped,spr_number,sprite_palette_base+color2);
x++;
x_flipped += flip_screen_get() ? -1 : 1;
}
@@ -336,7 +336,7 @@ static void draw_sprite(bitmap_t *bitmap,int spr_number)
}
-static void draw_sprites(bitmap_t *bitmap)
+static void draw_sprites(running_machine *machine, bitmap_t *bitmap)
{
int spr_number,sprite_bottom_y,sprite_top_y;
UINT8 *sprite_base;
@@ -350,7 +350,7 @@ static void draw_sprites(bitmap_t *bitmap)
sprite_top_y = sprite_base[SPR_Y_TOP];
sprite_bottom_y = sprite_base[SPR_Y_BOTTOM];
if (sprite_bottom_y && (sprite_bottom_y-sprite_top_y > 0))
- draw_sprite(bitmap,spr_number);
+ draw_sprite(machine, bitmap,spr_number);
}
}
@@ -531,7 +531,7 @@ VIDEO_UPDATE( system1 )
drawn = system1_draw_fg(screen->machine, bitmap, cliprect, 0);
/* redraw low priority bg tiles if necessary */
if (drawn) system1_draw_bg(screen->machine, bitmap, cliprect, 0);
- draw_sprites(bitmap);
+ draw_sprites(screen->machine, bitmap);
system1_draw_bg(screen->machine, bitmap, cliprect, 1);
system1_draw_fg(screen->machine, bitmap, cliprect, 1);
@@ -672,7 +672,7 @@ VIDEO_UPDATE( choplifter )
drawn = system1_draw_fg(screen->machine, bitmap, cliprect, 0);
/* redraw low priority bg tiles if necessary */
if (drawn) chplft_draw_bg(screen->machine, bitmap, cliprect, 0);
- draw_sprites(bitmap);
+ draw_sprites(screen->machine, bitmap);
chplft_draw_bg(screen->machine, bitmap, cliprect, 1);
system1_draw_fg(screen->machine, bitmap, cliprect, 1);
@@ -803,7 +803,7 @@ static void wbml_draw_fg(running_machine *machine, bitmap_t *bitmap, const recta
VIDEO_UPDATE( wbml )
{
wbml_draw_bg(screen->machine, bitmap, cliprect, 0);
- draw_sprites(bitmap);
+ draw_sprites(screen->machine, bitmap);
wbml_draw_bg(screen->machine, bitmap, cliprect, 1);
wbml_draw_fg(screen->machine, bitmap, cliprect);
@@ -873,7 +873,7 @@ static void ufosensi_draw_bg(running_machine *machine, bitmap_t *bitmap, const r
VIDEO_UPDATE( ufosensi )
{
ufosensi_draw_bg(screen->machine, bitmap, cliprect, 0);
- draw_sprites(bitmap);
+ draw_sprites(screen->machine, bitmap);
ufosensi_draw_bg(screen->machine, bitmap, cliprect, 1);
wbml_draw_fg(screen->machine, bitmap, cliprect);
@@ -894,7 +894,7 @@ VIDEO_UPDATE( blockgal )
drawn = system1_draw_fg(screen->machine, bitmap, cliprect, 0);
/* redraw low priority bg tiles if necessary */
if (drawn) system1_draw_bg(screen->machine, bitmap, cliprect, 0);
- draw_sprites(bitmap);
+ draw_sprites(screen->machine, bitmap);
system1_draw_bg(screen->machine, bitmap, cliprect, 1);
system1_draw_fg(screen->machine, bitmap, cliprect, 1);
diff --git a/src/mame/video/taito_b.c b/src/mame/video/taito_b.c
index 838c0e4cc90..1fee8a726cf 100644
--- a/src/mame/video/taito_b.c
+++ b/src/mame/video/taito_b.c
@@ -203,8 +203,8 @@ static TILE_GET_INFO( get_tx_tile_info )
static VIDEO_START( taitob_core )
{
- framebuffer[0] = auto_bitmap_alloc(512,256,machine->screen[0].format);
- framebuffer[1] = auto_bitmap_alloc(512,256,machine->screen[0].format);
+ framebuffer[0] = auto_bitmap_alloc(512,256, video_screen_get_format(machine->primary_screen));
+ framebuffer[1] = auto_bitmap_alloc(512,256, video_screen_get_format(machine->primary_screen));
pixel_bitmap = NULL; /* only hitice needs this */
bg_tilemap = tilemap_create(get_bg_tile_info,tilemap_scan_rows, 16,16,64,64);
@@ -277,7 +277,7 @@ VIDEO_START( hitice )
{
VIDEO_START_CALL(taitob_color_order0);
- pixel_bitmap = auto_bitmap_alloc(1024,512,machine->screen[0].format);
+ pixel_bitmap = auto_bitmap_alloc(1024,512,video_screen_get_format(machine->primary_screen));
state_save_register_global_bitmap(pixel_bitmap);
}
@@ -625,11 +625,11 @@ VIDEO_UPDATE( taitob )
VIDEO_EOF( taitob )
{
if (~video_control & 0x01)
- fillbitmap(framebuffer[framebuffer_page],0,&machine->screen[0].visarea);
+ fillbitmap(framebuffer[framebuffer_page],0,video_screen_get_visible_area(machine->primary_screen));
if (~video_control & 0x80)
framebuffer_page ^= 1;
- draw_sprites(machine, framebuffer[framebuffer_page],&machine->screen[0].visarea);
+ draw_sprites(machine, framebuffer[framebuffer_page],video_screen_get_visible_area(machine->primary_screen));
}
diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c
index 26bc0c17d25..a92d1e72692 100644
--- a/src/mame/video/taito_f3.c
+++ b/src/mame/video/taito_f3.c
@@ -2937,8 +2937,9 @@ INLINE void f3_drawgfxzoom(bitmap_t *dest_bmp,const gfx_element *gfx,
static void get_sprite_info(running_machine *machine, const UINT32 *spriteram32_ptr)
{
- const int min_x=machine->screen[0].visarea.min_x,max_x=machine->screen[0].visarea.max_x;
- const int min_y=machine->screen[0].visarea.min_y,max_y=machine->screen[0].visarea.max_y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+ const int min_x=visarea->min_x,max_x=visarea->max_x;
+ const int min_y=visarea->min_y,max_y=visarea->max_y;
int offs,spritecont,flipx,flipy,old_x,old_y,color,x,y;
int sprite,global_x=0,global_y=0,subglobal_x=0,subglobal_y=0;
int block_x=0, block_y=0;
diff --git a/src/mame/video/taitoic.c b/src/mame/video/taitoic.c
index ce377f24ba3..6bb19a86061 100644
--- a/src/mame/video/taitoic.c
+++ b/src/mame/video/taitoic.c
@@ -1985,7 +1985,7 @@ static void TC0080VCO_bg1_tilemap_draw(running_machine *machine, bitmap_t *bitma
sx, sy,
zx, 0, 0, zy,
0, /* why no wraparound ?? */
- &machine->screen[0].visarea,
+ cliprect,
TRANSPARENCY_PEN, 0, priority);
}
}
@@ -2289,10 +2289,14 @@ void TC0100SCN_vh_start(running_machine *machine, int chips,int gfxnum,int x_off
for (i = 0;i < chips;i++)
{
- int has_separate_screen = (device_list_find_by_index(machine->config->devicelist, VIDEO_SCREEN, i) != NULL);
+ const device_config *screen;
int xd,yd;
TC0100SCN_dblwidth[i]=0;
+ screen = device_list_find_by_index(machine->config->devicelist, VIDEO_SCREEN, i);
+ if (screen == NULL)
+ screen = machine->primary_screen;
+
/* Single width versions */
TC0100SCN_tilemap[i][0][0] = tilemap_create(TC0100SCN_get_tile_info[i][0],tilemap_scan_rows,8,8,64,64);
TC0100SCN_tilemap[i][1][0] = tilemap_create(TC0100SCN_get_tile_info[i][1],tilemap_scan_rows,8,8,64,64);
@@ -2308,7 +2312,7 @@ void TC0100SCN_vh_start(running_machine *machine, int chips,int gfxnum,int x_off
Thundfox is the only one of those with two chips, and
we're safe as it uses single width tilemaps. */
- myclip = machine->screen[has_separate_screen ? i : 0].visarea;
+ myclip = *video_screen_get_visible_area(screen);
TC0100SCN_cliprect[i] = myclip;
diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c
index a23797a27e1..bed2aaf6195 100644
--- a/src/mame/video/taitojc.c
+++ b/src/mame/video/taitojc.c
@@ -492,7 +492,7 @@ void taitojc_render_polygons(UINT16 *polygon_fifo, int length)
if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
{
- poly_render_triangle(poly, framebuffer, &Machine->screen[0].visarea, render_texture_scan, 4, &vert[0], &vert[1], &vert[2]);
+ poly_render_triangle(poly, framebuffer, video_screen_get_visible_area(Machine->primary_screen), render_texture_scan, 4, &vert[0], &vert[1], &vert[2]);
}
break;
}
@@ -540,11 +540,11 @@ void taitojc_render_polygons(UINT16 *polygon_fifo, int length)
vert[2].p[1] == vert[3].p[1])
{
// optimization: all colours the same -> render solid
- poly_render_quad(poly, framebuffer, &Machine->screen[0].visarea, render_solid_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(poly, framebuffer, video_screen_get_visible_area(Machine->primary_screen), render_solid_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
}
else
{
- poly_render_quad(poly, framebuffer, &Machine->screen[0].visarea, render_shade_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(poly, framebuffer, video_screen_get_visible_area(Machine->primary_screen), render_shade_scan, 2, &vert[0], &vert[1], &vert[2], &vert[3]);
}
}
break;
@@ -610,7 +610,7 @@ void taitojc_render_polygons(UINT16 *polygon_fifo, int length)
if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
{
- poly_render_quad(poly, framebuffer, &Machine->screen[0].visarea, render_texture_scan, 4, &vert[0], &vert[1], &vert[2], &vert[3]);
+ poly_render_quad(poly, framebuffer, video_screen_get_visible_area(Machine->primary_screen), render_texture_scan, 4, &vert[0], &vert[1], &vert[2], &vert[3]);
}
break;
}
diff --git a/src/mame/video/taitosj.c b/src/mame/video/taitosj.c
index 72f8dd4ed1f..b83a44c14b2 100644
--- a/src/mame/video/taitosj.c
+++ b/src/mame/video/taitosj.c
@@ -203,7 +203,7 @@ VIDEO_START( taitosj )
{
int i;
- sprite_layer_collbitmap1 = auto_bitmap_alloc(16,16,machine->screen[0].format);
+ sprite_layer_collbitmap1 = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
for (i = 0; i < 3; i++)
{
@@ -211,8 +211,8 @@ VIDEO_START( taitosj )
sprite_layer_collbitmap2[i] = video_screen_auto_bitmap_alloc(machine->primary_screen);
}
- sprite_sprite_collbitmap1 = auto_bitmap_alloc(32,32,machine->screen[0].format);
- sprite_sprite_collbitmap2 = auto_bitmap_alloc(32,32,machine->screen[0].format);
+ sprite_sprite_collbitmap1 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
+ sprite_sprite_collbitmap2 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
memset(dirtycharacter1, 1, sizeof(dirtycharacter1));
memset(dirtycharacter2, 1, sizeof(dirtycharacter2));
diff --git a/src/mame/video/tank8.c b/src/mame/video/tank8.c
index 97de080cd97..0a1c7f764f5 100644
--- a/src/mame/video/tank8.c
+++ b/src/mame/video/tank8.c
@@ -213,20 +213,19 @@ VIDEO_UPDATE( tank8 )
VIDEO_EOF( tank8 )
{
- const rectangle *clip = &machine->screen[0].visarea;
-
int x;
int y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- tilemap_draw(helper1, clip, tank8_tilemap, 0, 0);
+ tilemap_draw(helper1, visarea, tank8_tilemap, 0, 0);
- fillbitmap(helper2, 8, clip);
- fillbitmap(helper3, 8, clip);
+ fillbitmap(helper2, 8, visarea);
+ fillbitmap(helper3, 8, visarea);
- draw_sprites(machine, helper2, clip);
- draw_bullets(helper3, clip);
+ draw_sprites(machine, helper2, visarea);
+ draw_bullets(helper3, visarea);
- for (y = clip->min_y; y <= clip->max_y; y++)
+ for (y = visarea->min_y; y <= visarea->max_y; y++)
{
int state = 0;
@@ -237,7 +236,7 @@ VIDEO_EOF( tank8 )
if (y % 2 != video_screen_get_frame_number(machine->primary_screen) % 2)
continue; /* video display is interlaced */
- for (x = clip->min_x; x <= clip->max_x; x++)
+ for (x = visarea->min_x; x <= visarea->max_x; x++)
{
UINT8 index;
diff --git a/src/mame/video/taotaido.c b/src/mame/video/taotaido.c
index b25f045a6ae..68c00b2f824 100644
--- a/src/mame/video/taotaido.c
+++ b/src/mame/video/taotaido.c
@@ -210,10 +210,11 @@ VIDEO_UPDATE(taotaido)
int line;
rectangle clip;
- clip.min_x = screen->machine->screen[0].visarea.min_x;
- clip.max_x = screen->machine->screen[0].visarea.max_x;
- clip.min_y = screen->machine->screen[0].visarea.min_y;
- clip.max_y = screen->machine->screen[0].visarea.max_y;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
+ clip.min_x = visarea->min_x;
+ clip.max_x = visarea->max_x;
+ clip.min_y = visarea->min_y;
+ clip.max_y = visarea->max_y;
for (line = 0; line < 224;line++)
{
diff --git a/src/mame/video/tia.c b/src/mame/video/tia.c
index bd0b59f5b82..6d03a63fb2e 100644
--- a/src/mame/video/tia.c
+++ b/src/mame/video/tia.c
@@ -275,9 +275,9 @@ VIDEO_START( tia )
int cx = machine->screen[0].width;
screen_height = machine->screen[0].height;
- helper[0] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, machine->screen[0].format);
- helper[1] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, machine->screen[0].format);
- helper[2] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, machine->screen[0].format);
+ helper[0] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
+ helper[1] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
+ helper[2] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/video/toaplan2.c b/src/mame/video/toaplan2.c
index 05b6e21e789..d6af718907d 100644
--- a/src/mame/video/toaplan2.c
+++ b/src/mame/video/toaplan2.c
@@ -1529,6 +1529,7 @@ VIDEO_UPDATE( batrider_0 )
int line;
rectangle clip;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
#ifdef MAME_DEBUG
toaplan2_log_vram();
@@ -1557,10 +1558,10 @@ VIDEO_UPDATE( batrider_0 )
draw_sprites(bitmap,cliprect,0,priority,1); /* consider bank select */
}
- clip.min_x = screen->machine->screen[0].visarea.min_x;
- clip.max_x = screen->machine->screen[0].visarea.max_x;
- clip.min_y = screen->machine->screen[0].visarea.min_y;
- clip.max_y = screen->machine->screen[0].visarea.max_y;
+ clip.min_x = visarea->min_x;
+ clip.max_x = visarea->max_x;
+ clip.min_y = visarea->min_y;
+ clip.max_y = visarea->max_y;
/* used for 'for use in' and '8ing' screen on bbakraid, raizing on batrider */
for (line = 0; line < 256;line++)
diff --git a/src/mame/video/tp84.c b/src/mame/video/tp84.c
index e228de442af..912bdaa9b9c 100644
--- a/src/mame/video/tp84.c
+++ b/src/mame/video/tp84.c
@@ -183,6 +183,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
VIDEO_UPDATE( tp84 )
{
rectangle clip = *cliprect;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
if (cliprect->min_y == video_screen_get_visible_area(screen)->min_y)
{
@@ -199,13 +200,13 @@ VIDEO_UPDATE( tp84 )
draw_sprites(screen->machine, bitmap, cliprect);
/* draw top status region */
- clip.min_x = screen->machine->screen[0].visarea.min_x;
- clip.max_x = screen->machine->screen[0].visarea.min_x + 15;
+ clip.min_x = visarea->min_x;
+ clip.max_x = visarea->min_x + 15;
tilemap_draw(bitmap, &clip, fg_tilemap, 0, 0);
/* draw bottom status region */
- clip.min_x = screen->machine->screen[0].visarea.max_x - 15;
- clip.max_x = screen->machine->screen[0].visarea.max_x;
+ clip.min_x = visarea->max_x - 15;
+ clip.max_x = visarea->max_x;
tilemap_draw(bitmap, &clip, fg_tilemap, 0, 0);
return 0;
diff --git a/src/mame/video/tunhunt.c b/src/mame/video/tunhunt.c
index e552b0dcffd..a6386dd41ab 100644
--- a/src/mame/video/tunhunt.c
+++ b/src/mame/video/tunhunt.c
@@ -72,7 +72,7 @@ VIDEO_START( tunhunt )
We keep track of dirty lines and cache the expanded bitmap.
With max RLE expansion, bitmap size is 256x64.
*/
- tmpbitmap = auto_bitmap_alloc( 256, 64, machine->screen[0].format );
+ tmpbitmap = auto_bitmap_alloc(256, 64, video_screen_get_format(machine->primary_screen));
fg_tilemap = tilemap_create(get_fg_tile_info, tilemap_scan_cols, 8, 8, 32, 32);
diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c
index e23b39cd7ad..c9822621a2c 100644
--- a/src/mame/video/ultratnk.c
+++ b/src/mame/video/ultratnk.c
@@ -117,7 +117,7 @@ VIDEO_EOF( ultratnk )
rect.max_x = horz - 15 + machine->gfx[1]->width - 1;
rect.max_y = vert - 15 + machine->gfx[1]->height - 1;
- sect_rect(&rect, &machine->screen[0].visarea);
+ sect_rect(&rect, video_screen_get_visible_area(machine->primary_screen));
tilemap_draw(helper, &rect, playfield, 0, 0);
diff --git a/src/mame/video/vigilant.c b/src/mame/video/vigilant.c
index d1764c02ae3..ec8ec472adc 100644
--- a/src/mame/video/vigilant.c
+++ b/src/mame/video/vigilant.c
@@ -41,7 +41,7 @@ static bitmap_t *bg_bitmap;
VIDEO_START( vigilant )
{
- bg_bitmap = auto_bitmap_alloc(512*4,256,machine->screen[0].format);
+ bg_bitmap = auto_bitmap_alloc(512*4,256,video_screen_get_format(machine->primary_screen));
}
diff --git a/src/mame/video/wecleman.c b/src/mame/video/wecleman.c
index 244802f35e1..3a0b15dd0f4 100644
--- a/src/mame/video/wecleman.c
+++ b/src/mame/video/wecleman.c
@@ -787,9 +787,10 @@ static void hotchase_draw_road(running_machine *machine, bitmap_t *bitmap, const
#define YSIZE 512
int sx, sy;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* Let's draw from the top to the bottom of the visible screen */
- for (sy = machine->screen[0].visarea.min_y;sy <= machine->screen[0].visarea.max_y;sy++)
+ for (sy = visarea->min_y;sy <= visarea->max_y;sy++)
{
int code = wecleman_roadram[sy*4/2+2/2] + (wecleman_roadram[sy*4/2+0/2] << 16);
int color = ((code & 0x00f00000) >> 20) + 0x70;
@@ -887,7 +888,7 @@ VIDEO_START( wecleman )
UINT8 *buffer;
int i, j;
- assert(machine->screen[0].format == BITMAP_FORMAT_RGB15);
+ assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_RGB15);
buffer = auto_malloc(0x12c00); // working buffer for sprite operations
gameid = 0;
diff --git a/src/mame/video/welltris.c b/src/mame/video/welltris.c
index 3f09e240a79..d8d40c9ab7e 100644
--- a/src/mame/video/welltris.c
+++ b/src/mame/video/welltris.c
@@ -44,6 +44,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
{
static const UINT8 zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
int offs;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* draw the sprites */
for (offs = 0; offs < 0x200 - 4; offs += 4) {
@@ -71,8 +72,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
yzoom = 16 - zoomtable[yzoom] / 8;
/* wrap around */
- if (x > machine->screen[0].visarea.max_x) x -= 0x200;
- if (y > machine->screen[0].visarea.max_y) y -= 0x200;
+ if (x > visarea->max_x) x -= 0x200;
+ if (y > visarea->max_y) y -= 0x200;
/* normal case */
if (!xflip && !yflip) {
diff --git a/src/mame/video/williams.c b/src/mame/video/williams.c
index 42317789958..b0ade745c98 100644
--- a/src/mame/video/williams.c
+++ b/src/mame/video/williams.c
@@ -258,7 +258,7 @@ VIDEO_UPDATE( blaster )
pens[x] = palette_lookup[paletteram[x]];
/* if we're blitting from the top, start with a 0 for color 0 */
- if (cliprect->min_y == screen->machine->screen[0].visarea.min_y || !(blaster_video_control & 1))
+ if (cliprect->min_y == video_screen_get_visible_area(screen)->min_y || !(blaster_video_control & 1))
blaster_color0 = pens[0];
/* loop over rows */
diff --git a/src/mame/video/xexex.c b/src/mame/video/xexex.c
index f65e6937c51..b6ad569560e 100644
--- a/src/mame/video/xexex.c
+++ b/src/mame/video/xexex.c
@@ -36,7 +36,7 @@ VIDEO_START( xexex )
{
int region = REGION_GFX3;
- assert(machine->screen[0].format == BITMAP_FORMAT_RGB32);
+ assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_RGB32);
cur_alpha = 0;
diff --git a/src/mame/video/xmen.c b/src/mame/video/xmen.c
index 65084ae8ef8..531d8bef7e5 100644
--- a/src/mame/video/xmen.c
+++ b/src/mame/video/xmen.c
@@ -176,10 +176,11 @@ VIDEO_EOF( xmen6p )
xmen_current_frame ^=0x8000;
-// cliprect.min_x = machine->screen[0].visarea.min_x;
-// cliprect.max_x = machine->screen[0].visarea.max_x;
-// cliprect.min_y = machine->screen[0].visarea.min_y;
-// cliprect.max_y = machine->screen[0].visarea.max_y;
+// const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
+// cliprect.min_x = visarea->min_x;
+// cliprect.max_x = visarea->max_x;
+// cliprect.min_y = visarea->min_y;
+// cliprect.max_y = visarea->max_y;
cliprect.min_x = 0;
cliprect.max_x = 64*8-1;
diff --git a/src/mame/video/ygv608.c b/src/mame/video/ygv608.c
index 05c186714b4..3d37210af06 100644
--- a/src/mame/video/ygv608.c
+++ b/src/mame/video/ygv608.c
@@ -743,6 +743,7 @@ VIDEO_UPDATE( ygv608 )
double r, alpha, sin_theta, cos_theta;
#endif
rectangle finalclip;
+ const rectangle *visarea = video_screen_get_visible_area(screen);
// clip to the current bitmap
finalclip.min_x = 0;
@@ -770,8 +771,7 @@ VIDEO_UPDATE( ygv608 )
if( work_bitmap )
bitmap_free( work_bitmap );
- work_bitmap = bitmap_alloc( screen->machine->screen[0].width,
- screen->machine->screen[0].height, screen->machine->screen[0].format );
+ work_bitmap = bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen));
// reset resize flag
ygv608.screen_resize = 0;
@@ -863,7 +863,7 @@ VIDEO_UPDATE( ygv608 )
{
// If the background tilemap is disabled, we need to clear the bitmap to black
fillbitmap (work_bitmap,0,cliprect);
-// fillbitmap (work_bitmap,1,&machine->screen[0].visarea);
+// fillbitmap (work_bitmap,1,visarea);
}
else
#endif
@@ -884,10 +884,10 @@ VIDEO_UPDATE( ygv608 )
if( ygv608.regs.s.zron )
copyrozbitmap( bitmap, work_bitmap,
- ( screen->machine->screen[0].visarea.min_x << 16 ) +
+ ( visarea->min_x << 16 ) +
ygv608.ax + 0x10000 * r *
( -sin( alpha ) * cos_theta + cos( alpha ) * sin_theta ),
- ( screen->machine->screen[0].visarea.min_y << 16 ) +
+ ( visarea->min_y << 16 ) +
ygv608.ay + 0x10000 * r *
( cos( alpha ) * cos_theta + sin( alpha ) * sin_theta ),
ygv608.dx, ygv608.dxy, ygv608.dyx, ygv608.dy, 0,
@@ -900,7 +900,7 @@ VIDEO_UPDATE( ygv608 )
// for some reason we can't use an opaque tilemap_A
// so use a transparent but clear the work bitmap first
// - look at why this is the case?!?
- fillbitmap( work_bitmap,0,&screen->machine->screen[0].visarea );
+ fillbitmap( work_bitmap,0,visarea );
if ((ygv608.regs.s.r11 & r11_prm) == PRM_ASBDEX ||
(ygv608.regs.s.r11 & r11_prm) == PRM_ASEBDX )
@@ -911,8 +911,8 @@ VIDEO_UPDATE( ygv608 )
#ifdef _ENABLE_ROTATE_ZOOM
if( ygv608.regs.s.zron )
copyrozbitmap( bitmap, work_bitmap,
- ygv608.ax, // + ( machine->screen[0].visarea.min_x << 16 ),
- ygv608.ay, // + ( machine->screen[0].visarea.min_y << 16 ),
+ ygv608.ax, // + ( visarea->min_x << 16 ),
+ ygv608.ay, // + ( visarea->min_y << 16 ),
ygv608.dx, ygv608.dxy, ygv608.dyx, ygv608.dy, 0,
cliprect,
TRANSPARENCY_PEN, 0, 0 );
diff --git a/src/mame/video/yunsun16.c b/src/mame/video/yunsun16.c
index 98efd68a5d3..3c0db3ab159 100644
--- a/src/mame/video/yunsun16.c
+++ b/src/mame/video/yunsun16.c
@@ -147,9 +147,10 @@ VIDEO_START( yunsun16 )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
{
int offs;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- int max_x = machine->screen[0].visarea.max_x+1;
- int max_y = machine->screen[0].visarea.max_y+1;
+ int max_x = visarea->max_x+1;
+ int max_y = visarea->max_y+1;
int pri = *yunsun16_priority & 3;
int pri_mask;
diff --git a/src/mame/video/zac2650.c b/src/mame/video/zac2650.c
index 0cc9999a602..513bb10c9f3 100644
--- a/src/mame/video/zac2650.c
+++ b/src/mame/video/zac2650.c
@@ -48,6 +48,7 @@ static int SpriteCollision(running_machine *machine, int first,int second)
{
int Checksum=0;
int x,y;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
if((zac2650_s2636_0_ram[first * 0x10 + 10] < 0xf0) && (zac2650_s2636_0_ram[second * 0x10 + 10] < 0xf0))
{
@@ -70,10 +71,10 @@ static int SpriteCollision(running_machine *machine, int first,int second)
{
for (y = fy; y < fy + machine->gfx[expand]->height; y++)
{
- if ((x < machine->screen[0].visarea.min_x) ||
- (x > machine->screen[0].visarea.max_x) ||
- (y < machine->screen[0].visarea.min_y) ||
- (y > machine->screen[0].visarea.max_y))
+ if ((x < visarea->min_x) ||
+ (x > visarea->max_x) ||
+ (y < visarea->min_y) ||
+ (y > visarea->max_y))
{
continue;
}
@@ -97,10 +98,10 @@ static int SpriteCollision(running_machine *machine, int first,int second)
{
for (y = fy; y < fy + machine->gfx[expand]->height; y++)
{
- if ((x < machine->screen[0].visarea.min_x) ||
- (x > machine->screen[0].visarea.max_x) ||
- (y < machine->screen[0].visarea.min_y) ||
- (y > machine->screen[0].visarea.max_y))
+ if ((x < visarea->min_x) ||
+ (x > visarea->max_x) ||
+ (y < visarea->min_y) ||
+ (y > visarea->max_y))
{
continue;
}
@@ -141,6 +142,7 @@ VIDEO_START( tinvader )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap)
{
int offs;
+ const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
/* -------------------------------------------------------------- */
/* There seems to be a strange setup with this board, in that it */
@@ -156,7 +158,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap)
CollisionBackground = 0; /* Read from 0x1e80 bit 7 */
// for collision detection checking
- copybitmap(tmpbitmap,bitmap,0,0,0,0,&machine->screen[0].visarea);
+ copybitmap(tmpbitmap,bitmap,0,0,0,0,visarea);
for(offs=0;offs<0x50;offs+=0x10)
{
@@ -186,10 +188,10 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap)
{
for (y = by; y < by + machine->gfx[expand]->height; y++)
{
- if ((x < machine->screen[0].visarea.min_x) ||
- (x > machine->screen[0].visarea.max_x) ||
- (y < machine->screen[0].visarea.min_y) ||
- (y > machine->screen[0].visarea.max_y))
+ if ((x < visarea->min_x) ||
+ (x > visarea->max_x) ||
+ (y < visarea->min_y) ||
+ (y > visarea->max_y))
{
continue;
}