mirror of
https://github.com/holub/mame
synced 2025-06-06 21:03:47 +03:00
[MC6845] Refactored to use devcb and added cursor callback (for MESS).
This commit is contained in:
parent
7239f70508
commit
47a829e307
@ -64,6 +64,11 @@ static const int supports_transparent[NUM_TYPES] = { FALSE, FALSE,
|
|||||||
typedef struct _mc6845_t mc6845_t;
|
typedef struct _mc6845_t mc6845_t;
|
||||||
struct _mc6845_t
|
struct _mc6845_t
|
||||||
{
|
{
|
||||||
|
devcb_resolved_write_line out_de_func;
|
||||||
|
devcb_resolved_write_line out_cur_func;
|
||||||
|
devcb_resolved_write_line out_hsync_func;
|
||||||
|
devcb_resolved_write_line out_vsync_func;
|
||||||
|
|
||||||
int device_type;
|
int device_type;
|
||||||
const mc6845_interface *intf;
|
const mc6845_interface *intf;
|
||||||
const device_config *screen;
|
const device_config *screen;
|
||||||
@ -95,6 +100,8 @@ struct _mc6845_t
|
|||||||
|
|
||||||
/* timers */
|
/* timers */
|
||||||
emu_timer *de_changed_timer;
|
emu_timer *de_changed_timer;
|
||||||
|
emu_timer *cur_on_timer;
|
||||||
|
emu_timer *cur_off_timer;
|
||||||
emu_timer *hsync_on_timer;
|
emu_timer *hsync_on_timer;
|
||||||
emu_timer *hsync_off_timer;
|
emu_timer *hsync_off_timer;
|
||||||
emu_timer *vsync_on_timer;
|
emu_timer *vsync_on_timer;
|
||||||
@ -119,6 +126,7 @@ struct _mc6845_t
|
|||||||
static STATE_POSTLOAD( mc6845_state_save_postload );
|
static STATE_POSTLOAD( mc6845_state_save_postload );
|
||||||
static void recompute_parameters(mc6845_t *mc6845, int postload);
|
static void recompute_parameters(mc6845_t *mc6845, int postload);
|
||||||
static void update_de_changed_timer(mc6845_t *mc6845);
|
static void update_de_changed_timer(mc6845_t *mc6845);
|
||||||
|
static void update_cur_changed_timers(mc6845_t *mc6845);
|
||||||
static void update_hsync_changed_timers(mc6845_t *mc6845);
|
static void update_hsync_changed_timers(mc6845_t *mc6845);
|
||||||
static void update_vsync_changed_timers(mc6845_t *mc6845);
|
static void update_vsync_changed_timers(mc6845_t *mc6845);
|
||||||
|
|
||||||
@ -365,6 +373,7 @@ static void recompute_parameters(mc6845_t *mc6845, int postload)
|
|||||||
mc6845->vsync_off_pos = vsync_off_pos;
|
mc6845->vsync_off_pos = vsync_off_pos;
|
||||||
|
|
||||||
update_de_changed_timer(mc6845);
|
update_de_changed_timer(mc6845);
|
||||||
|
update_cur_changed_timers(mc6845);
|
||||||
update_hsync_changed_timers(mc6845);
|
update_hsync_changed_timers(mc6845);
|
||||||
update_vsync_changed_timers(mc6845);
|
update_vsync_changed_timers(mc6845);
|
||||||
}
|
}
|
||||||
@ -427,6 +436,27 @@ static void update_de_changed_timer(mc6845_t *mc6845)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void update_cur_changed_timers(mc6845_t *mc6845)
|
||||||
|
{
|
||||||
|
if (mc6845->has_valid_parameters && (mc6845->cur_on_timer != NULL))
|
||||||
|
{
|
||||||
|
UINT16 cur_on_row = ((mc6845->cursor_addr - mc6845->disp_start_addr) / mc6845->horiz_disp) * (mc6845->max_ras_addr + 1);
|
||||||
|
UINT16 cur_on_y = cur_on_row + mc6845->cursor_start_ras;
|
||||||
|
UINT16 cur_off_y = cur_on_row + mc6845->cursor_end_ras;
|
||||||
|
UINT16 cur_on_pos = ((mc6845->cursor_addr - mc6845->disp_start_addr) % mc6845->horiz_disp) * mc6845->intf->hpixels_per_column;
|
||||||
|
UINT16 cur_off_pos = cur_on_pos + mc6845->intf->hpixels_per_column;
|
||||||
|
UINT16 next_y;
|
||||||
|
UINT16 y = video_screen_get_vpos(mc6845->screen);
|
||||||
|
|
||||||
|
if ((y >= cur_on_y) && (y < cur_off_y))
|
||||||
|
next_y = y + 1;
|
||||||
|
else
|
||||||
|
next_y = cur_on_y;
|
||||||
|
|
||||||
|
timer_adjust_oneshot(mc6845->cur_on_timer, video_screen_get_time_until_pos(mc6845->screen, next_y, cur_on_pos) , 0);
|
||||||
|
timer_adjust_oneshot(mc6845->cur_off_timer, video_screen_get_time_until_pos(mc6845->screen, next_y, cur_off_pos), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void update_hsync_changed_timers(mc6845_t *mc6845)
|
static void update_hsync_changed_timers(mc6845_t *mc6845)
|
||||||
{
|
{
|
||||||
@ -464,19 +494,41 @@ static TIMER_CALLBACK( de_changed_timer_cb )
|
|||||||
mc6845_t *mc6845 = get_safe_token(device);
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
/* call the callback function -- we know it exists */
|
/* call the callback function -- we know it exists */
|
||||||
mc6845->intf->on_de_changed(device, is_display_enabled(mc6845));
|
devcb_call_write_line(&mc6845->out_de_func, is_display_enabled(mc6845));
|
||||||
|
|
||||||
update_de_changed_timer(mc6845);
|
update_de_changed_timer(mc6845);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static TIMER_CALLBACK( cur_on_timer_cb )
|
||||||
|
{
|
||||||
|
const device_config *device = (const device_config *)ptr;
|
||||||
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
|
/* call the callback function -- we know it exists */
|
||||||
|
devcb_call_write_line(&mc6845->out_cur_func, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static TIMER_CALLBACK( cur_off_timer_cb )
|
||||||
|
{
|
||||||
|
const device_config *device = (const device_config *)ptr;
|
||||||
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
|
/* call the callback function -- we know it exists */
|
||||||
|
devcb_call_write_line(&mc6845->out_cur_func, FALSE);
|
||||||
|
|
||||||
|
update_cur_changed_timers(mc6845);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static TIMER_CALLBACK( vsync_on_timer_cb )
|
static TIMER_CALLBACK( vsync_on_timer_cb )
|
||||||
{
|
{
|
||||||
const device_config *device = (const device_config *)ptr;
|
const device_config *device = (const device_config *)ptr;
|
||||||
mc6845_t *mc6845 = get_safe_token(device);
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
/* call the callback function -- we know it exists */
|
/* call the callback function -- we know it exists */
|
||||||
mc6845->intf->on_vsync_changed(device, TRUE);
|
devcb_call_write_line(&mc6845->out_vsync_func, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -486,7 +538,7 @@ static TIMER_CALLBACK( vsync_off_timer_cb )
|
|||||||
mc6845_t *mc6845 = get_safe_token(device);
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
/* call the callback function -- we know it exists */
|
/* call the callback function -- we know it exists */
|
||||||
mc6845->intf->on_vsync_changed(device, FALSE);
|
devcb_call_write_line(&mc6845->out_vsync_func, FALSE);
|
||||||
|
|
||||||
update_vsync_changed_timers(mc6845);
|
update_vsync_changed_timers(mc6845);
|
||||||
}
|
}
|
||||||
@ -498,7 +550,7 @@ static TIMER_CALLBACK( hsync_on_timer_cb )
|
|||||||
mc6845_t *mc6845 = get_safe_token(device);
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
/* call the callback function -- we know it exists */
|
/* call the callback function -- we know it exists */
|
||||||
mc6845->intf->on_hsync_changed(device, TRUE);
|
devcb_call_write_line(&mc6845->out_hsync_func, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -508,7 +560,7 @@ static TIMER_CALLBACK( hsync_off_timer_cb )
|
|||||||
mc6845_t *mc6845 = get_safe_token(device);
|
mc6845_t *mc6845 = get_safe_token(device);
|
||||||
|
|
||||||
/* call the callback function -- we know it exists */
|
/* call the callback function -- we know it exists */
|
||||||
mc6845->intf->on_hsync_changed(device, FALSE);
|
devcb_call_write_line(&mc6845->out_hsync_func, FALSE);
|
||||||
|
|
||||||
update_hsync_changed_timers(mc6845);
|
update_hsync_changed_timers(mc6845);
|
||||||
}
|
}
|
||||||
@ -751,6 +803,12 @@ static void common_start(const device_config *device, int device_type)
|
|||||||
assert(device->clock > 0);
|
assert(device->clock > 0);
|
||||||
assert(mc6845->intf->hpixels_per_column > 0);
|
assert(mc6845->intf->hpixels_per_column > 0);
|
||||||
|
|
||||||
|
/* resolve callbacks */
|
||||||
|
devcb_resolve_write_line(&mc6845->out_de_func, &mc6845->intf->out_de_func, device);
|
||||||
|
devcb_resolve_write_line(&mc6845->out_cur_func, &mc6845->intf->out_cur_func, device);
|
||||||
|
devcb_resolve_write_line(&mc6845->out_hsync_func, &mc6845->intf->out_hsync_func, device);
|
||||||
|
devcb_resolve_write_line(&mc6845->out_vsync_func, &mc6845->intf->out_vsync_func, device);
|
||||||
|
|
||||||
/* copy the initial parameters */
|
/* copy the initial parameters */
|
||||||
mc6845->clock = device->clock;
|
mc6845->clock = device->clock;
|
||||||
mc6845->hpixels_per_column = mc6845->intf->hpixels_per_column;
|
mc6845->hpixels_per_column = mc6845->intf->hpixels_per_column;
|
||||||
@ -760,16 +818,24 @@ static void common_start(const device_config *device, int device_type)
|
|||||||
assert(mc6845->screen != NULL);
|
assert(mc6845->screen != NULL);
|
||||||
|
|
||||||
/* create the timers */
|
/* create the timers */
|
||||||
if (mc6845->intf->on_de_changed != NULL)
|
if (mc6845->out_de_func.target != NULL)
|
||||||
|
{
|
||||||
mc6845->de_changed_timer = timer_alloc(device->machine, de_changed_timer_cb, (void *)device);
|
mc6845->de_changed_timer = timer_alloc(device->machine, de_changed_timer_cb, (void *)device);
|
||||||
|
}
|
||||||
|
|
||||||
if (mc6845->intf->on_hsync_changed != NULL)
|
if (mc6845->out_cur_func.target != NULL)
|
||||||
|
{
|
||||||
|
mc6845->cur_on_timer = timer_alloc(device->machine, cur_on_timer_cb, (void *)device);
|
||||||
|
mc6845->cur_off_timer = timer_alloc(device->machine, cur_off_timer_cb, (void *)device);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mc6845->out_hsync_func.target != NULL)
|
||||||
{
|
{
|
||||||
mc6845->hsync_on_timer = timer_alloc(device->machine, hsync_on_timer_cb, (void *)device);
|
mc6845->hsync_on_timer = timer_alloc(device->machine, hsync_on_timer_cb, (void *)device);
|
||||||
mc6845->hsync_off_timer = timer_alloc(device->machine, hsync_off_timer_cb, (void *)device);
|
mc6845->hsync_off_timer = timer_alloc(device->machine, hsync_off_timer_cb, (void *)device);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mc6845->intf->on_vsync_changed != NULL)
|
if (mc6845->out_vsync_func.target != NULL)
|
||||||
{
|
{
|
||||||
mc6845->vsync_on_timer = timer_alloc(device->machine, vsync_on_timer_cb, (void *)device);
|
mc6845->vsync_on_timer = timer_alloc(device->machine, vsync_on_timer_cb, (void *)device);
|
||||||
mc6845->vsync_off_timer = timer_alloc(device->machine, vsync_off_timer_cb, (void *)device);
|
mc6845->vsync_off_timer = timer_alloc(device->machine, vsync_off_timer_cb, (void *)device);
|
||||||
@ -848,14 +914,14 @@ static DEVICE_RESET( mc6845 )
|
|||||||
/* internal registers other than status remain unchanged, all outputs go low */
|
/* internal registers other than status remain unchanged, all outputs go low */
|
||||||
if (mc6845->intf != NULL)
|
if (mc6845->intf != NULL)
|
||||||
{
|
{
|
||||||
if (mc6845->intf->on_de_changed != NULL)
|
if (mc6845->out_de_func.target != NULL)
|
||||||
mc6845->intf->on_de_changed(device, FALSE);
|
devcb_call_write_line(&mc6845->out_de_func, FALSE);
|
||||||
|
|
||||||
if (mc6845->intf->on_hsync_changed != NULL)
|
if (mc6845->out_hsync_func.target != NULL)
|
||||||
mc6845->intf->on_hsync_changed(device, FALSE);
|
devcb_call_write_line(&mc6845->out_hsync_func, FALSE);
|
||||||
|
|
||||||
if (mc6845->intf->on_vsync_changed != NULL)
|
if (mc6845->out_vsync_func.target != NULL)
|
||||||
mc6845->intf->on_vsync_changed(device, FALSE);
|
devcb_call_write_line(&mc6845->out_vsync_func, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
mc6845->light_pen_latched = FALSE;
|
mc6845->light_pen_latched = FALSE;
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#ifndef __MC6845__
|
#ifndef __MC6845__
|
||||||
#define __MC6845__
|
#define __MC6845__
|
||||||
|
|
||||||
|
#include "devcb.h"
|
||||||
|
|
||||||
#define MC6845 DEVICE_GET_INFO_NAME(mc6845)
|
#define MC6845 DEVICE_GET_INFO_NAME(mc6845)
|
||||||
#define MC6845_1 DEVICE_GET_INFO_NAME(mc6845_1)
|
#define MC6845_1 DEVICE_GET_INFO_NAME(mc6845_1)
|
||||||
@ -25,7 +26,6 @@
|
|||||||
MDRV_DEVICE_CONFIG(_config)
|
MDRV_DEVICE_CONFIG(_config)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* callback definitions */
|
/* callback definitions */
|
||||||
typedef void * (*mc6845_begin_update_func)(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect);
|
typedef void * (*mc6845_begin_update_func)(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect);
|
||||||
#define MC6845_BEGIN_UPDATE(name) void *name(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect)
|
#define MC6845_BEGIN_UPDATE(name) void *name(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect)
|
||||||
@ -34,21 +34,12 @@ typedef void (*mc6845_update_row_func)(const device_config *device, bitmap_t *bi
|
|||||||
const rectangle *cliprect, UINT16 ma, UINT8 ra,
|
const rectangle *cliprect, UINT16 ma, UINT8 ra,
|
||||||
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param);
|
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param);
|
||||||
#define MC6845_UPDATE_ROW(name) void name(const device_config *device, bitmap_t *bitmap, \
|
#define MC6845_UPDATE_ROW(name) void name(const device_config *device, bitmap_t *bitmap, \
|
||||||
const rectangle *cliprect, UINT16 ma, UINT8 ra, \
|
const rectangle *cliprect, UINT16 ma, UINT8 ra, \
|
||||||
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param)
|
UINT16 y, UINT8 x_count, INT8 cursor_x, void *param)
|
||||||
|
|
||||||
typedef void (*mc6845_end_update_func)(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, void *param);
|
typedef void (*mc6845_end_update_func)(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, void *param);
|
||||||
#define MC6845_END_UPDATE(name) void name(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, void *param)
|
#define MC6845_END_UPDATE(name) void name(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, void *param)
|
||||||
|
|
||||||
typedef void (*mc6845_on_de_changed_func)(const device_config *device, int display_enabled);
|
|
||||||
#define MC6845_ON_DE_CHANGED(name) void name(const device_config *device, int display_enabled)
|
|
||||||
|
|
||||||
typedef void (*mc6845_on_hsync_changed_func)(const device_config *device, int hsync);
|
|
||||||
#define MC6845_ON_HSYNC_CHANGED(name) void name(const device_config *device, int hsync)
|
|
||||||
|
|
||||||
typedef void (*mc6845_on_vsync_changed_func)(const device_config *device, int vsync);
|
|
||||||
#define MC6845_ON_VSYNC_CHANGED(name) void name(const device_config *device, int vsync)
|
|
||||||
|
|
||||||
typedef void (*mc6845_on_update_addr_changed_func)(const device_config *device, int address, int strobe);
|
typedef void (*mc6845_on_update_addr_changed_func)(const device_config *device, int address, int strobe);
|
||||||
#define MC6845_ON_UPDATE_ADDR_CHANGED(name) void name(const device_config *device, int address, int strobe)
|
#define MC6845_ON_UPDATE_ADDR_CHANGED(name) void name(const device_config *device, int address, int strobe)
|
||||||
|
|
||||||
@ -74,13 +65,16 @@ struct _mc6845_interface
|
|||||||
mc6845_end_update_func end_update;
|
mc6845_end_update_func end_update;
|
||||||
|
|
||||||
/* if specified, this gets called for every change of the disply enable pin (pin 18) */
|
/* if specified, this gets called for every change of the disply enable pin (pin 18) */
|
||||||
mc6845_on_de_changed_func on_de_changed;
|
devcb_write_line out_de_func;
|
||||||
|
|
||||||
|
/* if specified, this gets called for every change of the cursor pin (pin 19) */
|
||||||
|
devcb_write_line out_cur_func;
|
||||||
|
|
||||||
/* if specified, this gets called for every change of the HSYNC pin (pin 39) */
|
/* if specified, this gets called for every change of the HSYNC pin (pin 39) */
|
||||||
mc6845_on_hsync_changed_func on_hsync_changed;
|
devcb_write_line out_hsync_func;
|
||||||
|
|
||||||
/* if specified, this gets called for every change of the VSYNC pin (pin 40) */
|
/* if specified, this gets called for every change of the VSYNC pin (pin 40) */
|
||||||
mc6845_on_vsync_changed_func on_vsync_changed;
|
devcb_write_line out_vsync_func;
|
||||||
|
|
||||||
/* Called whenenever the update address changes
|
/* Called whenenever the update address changes
|
||||||
* For vblank/hblank timing strobe indicates the physical update.
|
* For vblank/hblank timing strobe indicates the physical update.
|
||||||
@ -133,5 +127,4 @@ void mc6845_set_hpixels_per_column(const device_config *device, int hpixels_per_
|
|||||||
updating is complete, end_update() */
|
updating is complete, end_update() */
|
||||||
void mc6845_update(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect);
|
void mc6845_update(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -364,9 +364,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -316,14 +316,16 @@ static const mc6845_interface mc6845_intf =
|
|||||||
/* in fact is a mc6845 driving 4 pixels by memory address.
|
/* in fact is a mc6845 driving 4 pixels by memory address.
|
||||||
that's why the big horizontal parameters */
|
that's why the big horizontal parameters */
|
||||||
|
|
||||||
"screen",/* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
4, /* number of pixels per video memory address */
|
4, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* same as Aristocrat Mark-IV HW color offset 7 */
|
/* same as Aristocrat Mark-IV HW color offset 7 */
|
||||||
|
@ -419,14 +419,16 @@ static const mc6845_interface mc6845_intf =
|
|||||||
/* in fact is a mc6845 driving 4 pixels by memory address.
|
/* in fact is a mc6845 driving 4 pixels by memory address.
|
||||||
that's why the big horizontal parameters */
|
that's why the big horizontal parameters */
|
||||||
|
|
||||||
"screen",/* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
4, /* number of pixels per video memory address */
|
4, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1906,9 +1906,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -304,9 +304,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -972,9 +972,11 @@ static const mc6845_interface h46505_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2000,9 +2000,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2154,9 +2154,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -351,9 +351,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -631,9 +631,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
|
@ -741,9 +741,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -240,27 +240,29 @@ static MC6845_UPDATE_ROW( update_row )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_HSYNC_CHANGED(hsync_changed)
|
static WRITE_LINE_DEVICE_HANDLER(hsync_changed)
|
||||||
{
|
{
|
||||||
/* update any video up to the current scanline */
|
/* update any video up to the current scanline */
|
||||||
video_screen_update_now(device->machine->primary_screen);
|
video_screen_update_now(device->machine->primary_screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MC6845_ON_VSYNC_CHANGED(vsync_changed)
|
static WRITE_LINE_DEVICE_HANDLER(vsync_changed)
|
||||||
{
|
{
|
||||||
cputag_set_input_line(device->machine, "maincpu", 0, vsync ? ASSERT_LINE : CLEAR_LINE);
|
cputag_set_input_line(device->machine, "maincpu", 0, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
0, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
0, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
hsync_changed, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
vsync_changed /* VSYNC callback */
|
DEVCB_LINE(hsync_changed), /* HSYNC callback */
|
||||||
|
DEVCB_LINE(vsync_changed), /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
static WRITE8_DEVICE_HANDLER( led1_w )
|
static WRITE8_DEVICE_HANDLER( led1_w )
|
||||||
|
@ -259,9 +259,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1633,9 +1633,9 @@ static VIDEO_UPDATE(dealem)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_VSYNC_CHANGED( dealem_vsync_changed )
|
static WRITE_LINE_DEVICE_HANDLER( dealem_vsync_changed )
|
||||||
{
|
{
|
||||||
cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, vsync);
|
cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
@ -1646,14 +1646,16 @@ static MC6845_ON_VSYNC_CHANGED( dealem_vsync_changed )
|
|||||||
|
|
||||||
static const mc6845_interface hd6845_intf =
|
static const mc6845_interface hd6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
dealem_vsync_changed /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_LINE(dealem_vsync_changed), /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -199,9 +199,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -397,9 +397,9 @@ static MC6845_END_UPDATE( end_update )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_DE_CHANGED( display_enable_changed )
|
static WRITE_LINE_DEVICE_HANDLER( display_enable_changed )
|
||||||
{
|
{
|
||||||
ttl74123_a_w(devtag_get_device(device->machine, "ic48_1"), 0, display_enabled);
|
ttl74123_a_w(devtag_get_device(device->machine, "ic48_1"), 0, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -410,9 +410,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
end_update, /* after pixel update callback */
|
end_update, /* after pixel update callback */
|
||||||
display_enable_changed, /* callback for display state changes */
|
DEVCB_LINE(display_enable_changed), /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@ static int sda_dir = 0;
|
|||||||
#define eeprom_NVRAM_SIZE 0x200 // 4k Bit
|
#define eeprom_NVRAM_SIZE 0x200 // 4k Bit
|
||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static MC6845_ON_VSYNC_CHANGED(crtc_vsync);
|
static WRITE_LINE_DEVICE_HANDLER(crtc_vsync);
|
||||||
static MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
|
static MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
|
||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
@ -228,9 +228,10 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
crtc_vsync, /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_LINE(crtc_vsync), /* VSYNC callback */
|
||||||
crtc_addr /* update address callback */
|
crtc_addr /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -344,9 +345,9 @@ static void handle_lightpen( const device_config *device )
|
|||||||
timer_set(device->machine, video_screen_get_time_until_pos(device->machine->primary_screen, yt, xt), (void *) device, 0, assert_lp_cb);
|
timer_set(device->machine, video_screen_get_time_until_pos(device->machine->primary_screen, yt, xt), (void *) device, 0, assert_lp_cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MC6845_ON_VSYNC_CHANGED(crtc_vsync)
|
static WRITE_LINE_DEVICE_HANDLER(crtc_vsync)
|
||||||
{
|
{
|
||||||
cputag_set_input_line(device->machine, "maincpu", 0, vsync ? ASSERT_LINE : CLEAR_LINE);
|
cputag_set_input_line(device->machine, "maincpu", 0, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
handle_lightpen(device);
|
handle_lightpen(device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,14 +355,17 @@ static INTERRUPT_GEN( progolf_interrupt )
|
|||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen",/* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static PALETTE_INIT( progolf )
|
static PALETTE_INIT( progolf )
|
||||||
|
@ -360,9 +360,9 @@ static MC6845_UPDATE_ROW( update_row )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_DE_CHANGED( display_enable_changed )
|
static WRITE_LINE_DEVICE_HANDLER( display_enable_changed )
|
||||||
{
|
{
|
||||||
ttl74123_a_w(devtag_get_device(device->machine, "74123"), 0, display_enabled);
|
ttl74123_a_w(devtag_get_device(device->machine, "74123"), 0, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -372,10 +372,12 @@ static const mc6845_interface mc6845_intf =
|
|||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
0, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
display_enable_changed, /* callback for display state changes */
|
DEVCB_LINE(display_enable_changed), /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -768,9 +768,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,27 +137,29 @@ static MC6845_UPDATE_ROW( update_row )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_HSYNC_CHANGED(hsync_changed)
|
static WRITE_LINE_DEVICE_HANDLER(hsync_changed)
|
||||||
{
|
{
|
||||||
/* update any video up to the current scanline */
|
/* update any video up to the current scanline */
|
||||||
video_screen_update_now(device->machine->primary_screen);
|
video_screen_update_now(device->machine->primary_screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MC6845_ON_VSYNC_CHANGED(vsync_changed)
|
static WRITE_LINE_DEVICE_HANDLER(vsync_changed)
|
||||||
{
|
{
|
||||||
cputag_set_input_line(device->machine, "maincpu", 0, vsync ? ASSERT_LINE : CLEAR_LINE);
|
cputag_set_input_line(device->machine, "maincpu", 0, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
0, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
0, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
hsync_changed, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
vsync_changed /* VSYNC callback */
|
DEVCB_LINE(hsync_changed), /* HSYNC callback */
|
||||||
|
DEVCB_LINE(vsync_changed), /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -507,9 +507,9 @@ static MC6845_UPDATE_ROW( update_row )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_DE_CHANGED( display_enable_changed )
|
static WRITE_LINE_DEVICE_HANDLER( display_enable_changed )
|
||||||
{
|
{
|
||||||
ttl74123_a_w(devtag_get_device(device->machine, "ic60"), 0, display_enabled);
|
ttl74123_a_w(devtag_get_device(device->machine, "ic60"), 0, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -519,10 +519,12 @@ static const mc6845_interface mc6845_intf =
|
|||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
0, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
display_enable_changed, /* callback for display state changes */
|
DEVCB_LINE(display_enable_changed), /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,14 +86,16 @@ static MC6845_UPDATE_ROW( update_row )
|
|||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen",
|
"screen",
|
||||||
8,
|
8,
|
||||||
NULL,
|
NULL, /* before pixel update callback */
|
||||||
update_row,
|
update_row, /* row update callback */
|
||||||
NULL,
|
NULL, /* after pixel update callback */
|
||||||
NULL,
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL,
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
static WRITE8_HANDLER(ssingles_videoram_w)
|
static WRITE8_HANDLER(ssingles_videoram_w)
|
||||||
|
@ -229,9 +229,11 @@ static const mc6845_interface mc6845_intf =
|
|||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -528,22 +528,24 @@ static INPUT_PORTS_START( shadfgtr )
|
|||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static MC6845_ON_HSYNC_CHANGED(sound_update)
|
static WRITE_LINE_DEVICE_HANDLER(sound_update)
|
||||||
{
|
{
|
||||||
/* Seems reasonable */
|
/* Seems reasonable */
|
||||||
cpu_set_input_line(cputag_get_cpu(device->machine, "soundcpu"), M68K_IRQ_1, hsync ? ASSERT_LINE : CLEAR_LINE);
|
cpu_set_input_line(cputag_get_cpu(device->machine, "soundcpu"), M68K_IRQ_1, state ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
16, /* number of pixels per video memory address */
|
16, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
sound_update, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_LINE(sound_update), /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ WRITE8_HANDLER( qix_68705_portC_w );
|
|||||||
|
|
||||||
WRITE8_DEVICE_HANDLER( qix_pia_w );
|
WRITE8_DEVICE_HANDLER( qix_pia_w );
|
||||||
|
|
||||||
MC6845_ON_VSYNC_CHANGED( qix_vsync_changed );
|
WRITE_LINE_DEVICE_HANDLER( qix_vsync_changed );
|
||||||
|
|
||||||
|
|
||||||
/*----------- defined in video/qix.c -----------*/
|
/*----------- defined in video/qix.c -----------*/
|
||||||
|
@ -250,10 +250,10 @@ MACHINE_START( qixmcu )
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
MC6845_ON_VSYNC_CHANGED( qix_vsync_changed )
|
WRITE_LINE_DEVICE_HANDLER( qix_vsync_changed )
|
||||||
{
|
{
|
||||||
const device_config *pia = devtag_get_device(device->machine, "sndpia0");
|
const device_config *pia = devtag_get_device(device->machine, "sndpia0");
|
||||||
pia6821_cb1_w(pia, 0, vsync);
|
pia6821_cb1_w(pia, 0, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -387,14 +387,16 @@ GFXDECODE_END
|
|||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
NULL, /* before pixel update callback */
|
NULL, /* before pixel update callback */
|
||||||
NULL, /* row update callback */
|
NULL, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
NULL, /* callback for display state changes */
|
DEVCB_NULL, /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
NULL /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_NULL, /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
static MC6845_BEGIN_UPDATE( begin_update );
|
static MC6845_BEGIN_UPDATE( begin_update );
|
||||||
static MC6845_UPDATE_ROW( update_row );
|
static MC6845_UPDATE_ROW( update_row );
|
||||||
static MC6845_ON_DE_CHANGED( display_enable_changed );
|
static WRITE_LINE_DEVICE_HANDLER( display_enable_changed );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -63,18 +63,18 @@ static VIDEO_START( qix )
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static MC6845_ON_DE_CHANGED( display_enable_changed )
|
static WRITE_LINE_DEVICE_HANDLER( display_enable_changed )
|
||||||
{
|
{
|
||||||
qix_state *state = (qix_state *)device->machine->driver_data;
|
qix_state *driver_state = (qix_state *)device->machine->driver_data;
|
||||||
|
|
||||||
/* on the rising edge, latch the scanline */
|
/* on the rising edge, latch the scanline */
|
||||||
if (display_enabled)
|
if (state)
|
||||||
{
|
{
|
||||||
UINT16 ma = mc6845_get_ma(device);
|
UINT16 ma = mc6845_get_ma(device);
|
||||||
UINT8 ra = mc6845_get_ra(device);
|
UINT8 ra = mc6845_get_ra(device);
|
||||||
|
|
||||||
/* RA0-RA2 goes to D0-D2 and MA5-MA9 goes to D3-D7 */
|
/* RA0-RA2 goes to D0-D2 and MA5-MA9 goes to D3-D7 */
|
||||||
*state->scanline_latch = ((ma >> 2) & 0xf8) | (ra & 0x07);
|
*driver_state->scanline_latch = ((ma >> 2) & 0xf8) | (ra & 0x07);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,14 +427,16 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static const mc6845_interface mc6845_intf =
|
static const mc6845_interface mc6845_intf =
|
||||||
{
|
{
|
||||||
"screen", /* screen we are acting on */
|
"screen", /* screen we are acting on */
|
||||||
8, /* number of pixels per video memory address */
|
8, /* number of pixels per video memory address */
|
||||||
begin_update, /* before pixel update callback */
|
begin_update, /* before pixel update callback */
|
||||||
update_row, /* row update callback */
|
update_row, /* row update callback */
|
||||||
NULL, /* after pixel update callback */
|
NULL, /* after pixel update callback */
|
||||||
display_enable_changed, /* callback for display state changes */
|
DEVCB_LINE(display_enable_changed), /* callback for display state changes */
|
||||||
NULL, /* HSYNC callback */
|
DEVCB_NULL, /* callback for cursor state changes */
|
||||||
qix_vsync_changed /* VSYNC callback */
|
DEVCB_NULL, /* HSYNC callback */
|
||||||
|
DEVCB_LINE(qix_vsync_changed), /* VSYNC callback */
|
||||||
|
NULL /* update address callback */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user