voodoo converted to devcb2, Aaron ignore this one :) (nw)

This commit is contained in:
Miodrag Milanovic 2014-05-13 09:16:33 +00:00
parent 8e291797f2
commit c1b7ad0ae5
13 changed files with 209 additions and 262 deletions

View File

@ -1447,7 +1447,6 @@ struct pci_state
fifo_state fifo; /* PCI FIFO */
UINT32 init_enable; /* initEnable value */
UINT8 stall_state; /* state of the system if we're stalled */
devcb_resolved_write_line stall_callback; /* callback for stalling/unstalling */
UINT8 op_pending; /* true if an operation is pending */
attotime op_end_time; /* time when the pending operation ends */
emu_timer * continue_timer; /* timer to use to continue processing */
@ -1563,7 +1562,6 @@ struct fbi_state
UINT8 vblank_swap_pending; /* a swap is pending, waiting for a vblank */
UINT8 vblank_swap; /* swap when we hit this count */
UINT8 vblank_dont_swap; /* don't actually swap when we hit this point */
devcb_resolved_write_line vblank_client; /* client callback */
/* triangle setup info */
UINT8 cheating_allowed; /* allow cheating? */
@ -1692,7 +1690,7 @@ struct banshee_info
struct voodoo_state
{
UINT8 index; /* index of board */
device_t *device; /* pointer to our containing device */
voodoo_device *device; /* pointer to our containing device */
screen_device *screen; /* the screen we are acting on */
device_t *cpu; /* the CPU we interact with */
UINT8 type; /* type of system */

View File

@ -977,15 +977,15 @@ static TIMER_CALLBACK( vblank_off_callback )
{
v->reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active
if (!v->fbi.vblank_client.isnull())
v->fbi.vblank_client(FALSE);
if (!v->device->m_vblank.isnull())
v->device->m_vblank(FALSE);
}
}
else
{
if (!v->fbi.vblank_client.isnull())
v->fbi.vblank_client(FALSE);
if (!v->device->m_vblank.isnull())
v->device->m_vblank(FALSE);
}
/* go to the end of the next frame */
@ -1033,14 +1033,14 @@ static TIMER_CALLBACK( vblank_callback )
{
v->reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active
if (!v->fbi.vblank_client.isnull())
v->fbi.vblank_client(TRUE);
if (!v->device->m_vblank.isnull())
v->device->m_vblank(TRUE);
}
}
else
{
if (!v->fbi.vblank_client.isnull())
v->fbi.vblank_client(TRUE);
if (!v->device->m_vblank.isnull())
v->device->m_vblank(TRUE);
}
}
@ -2148,8 +2148,8 @@ static void check_stalled_cpu(voodoo_state *v, attotime current_time)
v->pci.stall_state = NOT_STALLED;
/* either call the callback, or trigger the trigger */
if (!v->pci.stall_callback.isnull())
v->pci.stall_callback(FALSE);
if (!v->device->m_stall.isnull())
v->device->m_stall(FALSE);
else
v->device->machine().scheduler().trigger(v->trigger);
}
@ -2172,8 +2172,8 @@ static void stall_cpu(voodoo_state *v, int state, attotime current_time)
v->stats.stalls++;
/* either call the callback, or spin the CPU */
if (!v->pci.stall_callback.isnull())
v->pci.stall_callback(TRUE);
if (!v->device->m_stall.isnull())
v->device->m_stall(TRUE);
else
v->cpu->execute().spin_until_trigger(v->trigger);
@ -2530,8 +2530,8 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
v->reg[intrCtrl].u &= ~0x80000000;
// TODO: rename vblank_client for less confusion?
if (!v->fbi.vblank_client.isnull())
v->fbi.vblank_client(TRUE);
if (!v->device->m_vblank.isnull())
v->device->m_vblank(TRUE);
break;
/* gamma table access -- Voodoo/Voodoo2 only */
@ -4858,10 +4858,9 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_io_w )
device start callback
-------------------------------------------------*/
static void common_start_voodoo(device_t *device, UINT8 type)
void voodoo_device::common_start_voodoo(UINT8 type)
{
const voodoo_config *config = (const voodoo_config *)device->static_config();
voodoo_state *v = get_safe_token(device);
voodoo_state *v = get_safe_token(this);
const raster_info *info;
void *fbmem, *tmumem[2];
UINT32 tmumem0;
@ -4873,17 +4872,17 @@ static void common_start_voodoo(device_t *device, UINT8 type)
assert(config->fbmem > 0);
/* store a pointer back to the device */
v->device = device;
v->device = this;
v->type = type;
/* copy config data */
v->freq = device->clock();
v->fbi.vblank_client.resolve(config->vblank,*device);
v->pci.stall_callback.resolve(config->stall,*device);
v->freq = clock();
v->device->m_vblank.resolve();
v->device->m_stall.resolve();
/* create a multiprocessor work queue */
v->poly = poly_alloc(device->machine(), 64, sizeof(poly_extra_data), 0);
v->thread_stats = auto_alloc_array(device->machine(), stats_block, WORK_MAX_THREADS);
v->poly = poly_alloc(machine(), 64, sizeof(poly_extra_data), 0);
v->thread_stats = auto_alloc_array(machine(), stats_block, WORK_MAX_THREADS);
/* create a table of precomputed 1/n and log2(n) values */
/* n ranges from 1.0000 to 2.0000 */
@ -4951,18 +4950,18 @@ static void common_start_voodoo(device_t *device, UINT8 type)
}
/* set the type, and initialize the chip mask */
device_iterator iter(device->machine().root_device());
device_iterator iter(machine().root_device());
v->index = 0;
for (device_t *scan = iter.first(); scan != NULL; scan = iter.next())
if (scan->type() == device->type())
if (scan->type() == this->type())
{
if (scan == device)
if (scan == this)
break;
v->index++;
}
v->screen = downcast<screen_device *>(device->machine().device(config->screen));
v->screen = downcast<screen_device *>(machine().device(m_screen));
assert_always(v->screen != NULL, "Unable to find screen attached to voodoo");
v->cpu = device->machine().device(config->cputag);
v->cpu = machine().device(m_cputag);
assert_always(v->cpu != NULL, "Unable to find CPU attached to voodoo");
v->chipmask = 0x01;
v->attoseconds_per_cycle = ATTOSECONDS_PER_SECOND / v->freq;
@ -4977,26 +4976,26 @@ static void common_start_voodoo(device_t *device, UINT8 type)
v->pci.fifo.size = 64*2;
v->pci.fifo.in = v->pci.fifo.out = 0;
v->pci.stall_state = NOT_STALLED;
v->pci.continue_timer = v->device->machine().scheduler().timer_alloc(FUNC(stall_cpu_callback), v);
v->pci.continue_timer = machine().scheduler().timer_alloc(FUNC(stall_cpu_callback), v);
/* allocate memory */
tmumem0 = config->tmumem0;
tmumem0 = m_tmumem0;
if (v->type <= TYPE_VOODOO_2)
{
/* separate FB/TMU memory */
fbmem = auto_alloc_array(device->machine(), UINT8, config->fbmem << 20);
tmumem[0] = auto_alloc_array(device->machine(), UINT8, config->tmumem0 << 20);
tmumem[1] = (config->tmumem1 != 0) ? auto_alloc_array(device->machine(), UINT8, config->tmumem1 << 20) : NULL;
fbmem = auto_alloc_array(machine(), UINT8, m_fbmem << 20);
tmumem[0] = auto_alloc_array(machine(), UINT8, m_tmumem0 << 20);
tmumem[1] = (m_tmumem1 != 0) ? auto_alloc_array(machine(), UINT8, m_tmumem1 << 20) : NULL;
}
else
{
/* shared memory */
tmumem[0] = tmumem[1] = fbmem = auto_alloc_array(device->machine(), UINT8, config->fbmem << 20);
tmumem0 = config->fbmem;
tmumem[0] = tmumem[1] = fbmem = auto_alloc_array(machine(), UINT8, m_fbmem << 20);
tmumem0 = m_fbmem;
}
/* set up frame buffer */
init_fbi(v, &v->fbi, fbmem, config->fbmem << 20);
init_fbi(v, &v->fbi, fbmem, m_fbmem << 20);
/* build shared TMU tables */
init_tmu_shared(&v->tmushare);
@ -5004,9 +5003,9 @@ static void common_start_voodoo(device_t *device, UINT8 type)
/* set up the TMUs */
init_tmu(v, &v->tmu[0], &v->reg[0x100], tmumem[0], tmumem0 << 20);
v->chipmask |= 0x02;
if (config->tmumem1 != 0 || v->type == TYPE_VOODOO_3)
if (m_tmumem1 != 0 || v->type == TYPE_VOODOO_3)
{
init_tmu(v, &v->tmu[1], &v->reg[0x200], tmumem[1], config->tmumem1 << 20);
init_tmu(v, &v->tmu[1], &v->reg[0x200], tmumem[1], m_tmumem1 << 20);
v->chipmask |= 0x04;
}
@ -5033,7 +5032,7 @@ static void common_start_voodoo(device_t *device, UINT8 type)
soft_reset(v);
/* register for save states */
init_save_state(device);
init_save_state(this);
}
@ -5666,7 +5665,14 @@ static void dump_rasterizer_stats(voodoo_state *v)
}
voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
m_fbmem(0),
m_tmumem0(0),
m_tmumem1(0),
m_screen(NULL),
m_cputag(NULL),
m_vblank(*this),
m_stall(*this)
{
m_token = global_alloc_clear(voodoo_state);
}
@ -5723,7 +5729,7 @@ voodoo_1_device::voodoo_1_device(const machine_config &mconfig, const char *tag,
void voodoo_1_device::device_start()
{
common_start_voodoo(this, TYPE_VOODOO_1);
common_start_voodoo(TYPE_VOODOO_1);
}
@ -5740,7 +5746,7 @@ voodoo_2_device::voodoo_2_device(const machine_config &mconfig, const char *tag,
void voodoo_2_device::device_start()
{
common_start_voodoo(this, TYPE_VOODOO_2);
common_start_voodoo(TYPE_VOODOO_2);
}
@ -5762,7 +5768,7 @@ voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, devi
void voodoo_banshee_device::device_start()
{
common_start_voodoo(this, TYPE_VOODOO_BANSHEE);
common_start_voodoo(TYPE_VOODOO_BANSHEE);
}
@ -5779,7 +5785,7 @@ voodoo_3_device::voodoo_3_device(const machine_config &mconfig, const char *tag,
void voodoo_3_device::device_start()
{
common_start_voodoo(this, TYPE_VOODOO_3);
common_start_voodoo(TYPE_VOODOO_3);
}

View File

@ -39,13 +39,13 @@ enum
struct voodoo_config
{
UINT8 fbmem;
UINT8 tmumem0;
UINT8 tmumem1;
const char * screen;
const char * cputag;
devcb_write_line vblank;
devcb_write_line stall;
UINT8 l_fbmem;
UINT8 l_tmumem0;
UINT8 l_tmumem1;
const char * l_screen;
const char * l_cputag;
devcb_write_line l_vblank;
devcb_write_line l_stall;
};
@ -54,21 +54,24 @@ struct voodoo_config
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_3DFX_VOODOO_1_ADD(_tag, _clock, _config) \
MCFG_DEVICE_ADD(_tag, VOODOO_1, _clock) \
MCFG_DEVICE_CONFIG(_config)
#define MCFG_VOODOO_FBMEM(_value) \
voodoo_device::static_set_fbmem(*device, _value);
#define MCFG_3DFX_VOODOO_2_ADD(_tag, _clock, _config) \
MCFG_DEVICE_ADD(_tag, VOODOO_2, _clock) \
MCFG_DEVICE_CONFIG(_config)
#define MCFG_VOODOO_TMUMEM(_value1, _value2) \
voodoo_device::static_set_tmumem(*device, _value1, _value2);
#define MCFG_3DFX_VOODOO_BANSHEE_ADD(_tag, _clock, _config) \
MCFG_DEVICE_ADD(_tag, VOODOO_BANSHEE, _clock) \
MCFG_DEVICE_CONFIG(_config)
#define MCFG_VOODOO_SCREEN_TAG(_tag) \
voodoo_device::static_set_screen_tag(*device, _tag);
#define MCFG_3DFX_VOODOO_3_ADD(_tag, _clock, _config) \
MCFG_DEVICE_ADD(_tag, VOODOO_3, _clock) \
MCFG_DEVICE_CONFIG(_config)
#define MCFG_VOODOO_CPU_TAG(_tag) \
voodoo_device::static_set_cpu_tag(*device, _tag);
#define MCFG_VOODOO_VBLANK_CB(_devcb) \
devcb = &voodoo_device::static_set_vblank_callback(*device, DEVCB2_##_devcb);
#define MCFG_VOODOO_STALL_CB(_devcb) \
devcb = &voodoo_device::static_set_stall_callback(*device, DEVCB2_##_devcb);
/***************************************************************************
FUNCTION PROTOTYPES
@ -87,11 +90,29 @@ public:
voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
~voodoo_device();
static void static_set_fbmem(device_t &device, int value) { downcast<voodoo_device &>(device).m_fbmem = value; }
static void static_set_tmumem(device_t &device, int value1, int value2) { downcast<voodoo_device &>(device).m_tmumem0 = value1; downcast<voodoo_device &>(device).m_tmumem1 = value2; }
static void static_set_screen_tag(device_t &device, const char *tag) { downcast<voodoo_device &>(device).m_screen = tag; }
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<voodoo_device &>(device).m_cputag = tag; }
template<class _Object> static devcb2_base &static_set_vblank_callback(device_t &device, _Object object) { return downcast<voodoo_device &>(device).m_vblank.set_callback(object); }
template<class _Object> static devcb2_base &static_set_stall_callback(device_t &device, _Object object) { return downcast<voodoo_device &>(device).m_stall.set_callback(object); }
DECLARE_READ32_MEMBER( voodoo_r );
DECLARE_WRITE32_MEMBER( voodoo_w );
// access to legacy token
struct voodoo_state *token() const { assert(m_token != NULL); return m_token; }
void common_start_voodoo(UINT8 type);
UINT8 m_fbmem;
UINT8 m_tmumem0;
UINT8 m_tmumem1;
const char * m_screen;
const char * m_cputag;
devcb2_write_line m_vblank;
devcb2_write_line m_stall;
protected:
// device-level overrides
virtual void device_config_complete();

View File

@ -847,17 +847,6 @@ UINT32 funkball_state::screen_update_funkball(screen_device &screen, bitmap_rgb3
return 0;
}
static const voodoo_config voodoo_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_NULL,// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( funkball, funkball_state )
MCFG_CPU_ADD("maincpu", MEDIAGX, 66666666*3.5) // 66,6 MHz x 3.5
MCFG_CPU_PROGRAM_MAP(funkball_map)
@ -874,7 +863,11 @@ static MACHINE_CONFIG_START( funkball, funkball_state )
MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w))
/* video hardware */
MCFG_3DFX_VOODOO_1_ADD("voodoo_0", STD_VOODOO_1_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo_0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)

View File

@ -1038,28 +1038,6 @@ MACHINE_RESET_MEMBER(gticlub_state,hangplt)
m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
static const voodoo_config voodoo_l_intf =
{
2, // fbmem;
2,// tmumem0;
2,// tmumem1;
"lscreen",// screen;
"dsp",// cputag;
DEVCB_DRIVER_LINE_MEMBER(gticlub_state,voodoo_vblank_0),// vblank;
DEVCB_NULL// stall;
};
static const voodoo_config voodoo_r_intf =
{
2, // fbmem;
2,// tmumem0;
2,// tmumem1;
"rscreen",// screen;
"dsp2",// cputag;
DEVCB_DRIVER_LINE_MEMBER(gticlub_state,voodoo_vblank_1),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( hangplt, gticlub_state )
/* basic machine hardware */
@ -1090,8 +1068,19 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state )
MCFG_DEVICE_ADD("k056230", K056230, 0)
MCFG_K056230_CPU("maincpu")
MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, voodoo_l_intf)
MCFG_3DFX_VOODOO_1_ADD("voodoo1", STD_VOODOO_1_CLOCK, voodoo_r_intf)
MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(2,2)
MCFG_VOODOO_SCREEN_TAG("lscreen")
MCFG_VOODOO_CPU_TAG("dsp")
MCFG_VOODOO_VBLANK_CB(WRITELINE(gticlub_state,voodoo_vblank_0))
MCFG_DEVICE_ADD("voodoo1", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(2,2)
MCFG_VOODOO_SCREEN_TAG("rscreen")
MCFG_VOODOO_CPU_TAG("dsp2")
MCFG_VOODOO_VBLANK_CB(WRITELINE(gticlub_state,voodoo_vblank_1))
MCFG_DEVICE_ADD("k033906_1", K033906, 0)
MCFG_K033906_VOODOO("voodoo0")

View File

@ -960,17 +960,6 @@ ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback)
return (double)(value) / 2047.0;
}
static const voodoo_config hornet_voodoo_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"screen",// screen;
"dsp",// cputag;
DEVCB_DRIVER_LINE_MEMBER(hornet_state,voodoo_vblank_0),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( hornet, hornet_state )
/* basic machine hardware */
@ -990,7 +979,12 @@ static MACHINE_CONFIG_START( hornet, hornet_state )
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, hornet_voodoo_intf)
MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("dsp")
MCFG_VOODOO_VBLANK_CB(WRITELINE(hornet_state,voodoo_vblank_0))
MCFG_DEVICE_ADD("k033906_1", K033906, 0)
MCFG_K033906_VOODOO("voodoo0")
@ -1050,28 +1044,6 @@ MACHINE_RESET_MEMBER(hornet_state,hornet_2board)
}
}
static const voodoo_config voodoo_l_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"lscreen",// screen;
"dsp",// cputag;
DEVCB_DRIVER_LINE_MEMBER(hornet_state,voodoo_vblank_0),// vblank;
DEVCB_NULL// stall;
};
static const voodoo_config voodoo_r_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"rscreen",// screen;
"dsp2",// cputag;
DEVCB_DRIVER_LINE_MEMBER(hornet_state,voodoo_vblank_1),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_CPU_ADD("dsp2", ADSP21062, XTAL_36MHz)
@ -1091,8 +1063,20 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_K037122_PALETTE("palette")
MCFG_DEVICE_REMOVE("voodoo0")
MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, voodoo_l_intf)
MCFG_3DFX_VOODOO_1_ADD("voodoo1", STD_VOODOO_1_CLOCK, voodoo_r_intf)
MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("lscreen")
MCFG_VOODOO_CPU_TAG("dsp")
MCFG_VOODOO_VBLANK_CB(WRITELINE(hornet_state,voodoo_vblank_0))
MCFG_DEVICE_ADD("voodoo1", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("rscreen")
MCFG_VOODOO_CPU_TAG("dsp2")
MCFG_VOODOO_VBLANK_CB(WRITELINE(hornet_state,voodoo_vblank_1))
MCFG_DEVICE_ADD("k033906_2", K033906, 0)
MCFG_K033906_VOODOO("voodoo1")
@ -1128,12 +1112,21 @@ static MACHINE_CONFIG_DERIVED( terabrst, hornet_2board )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hornet_2board_v2, hornet_2board )
MCFG_DEVICE_REMOVE("voodoo0")
MCFG_3DFX_VOODOO_2_ADD("voodoo0", STD_VOODOO_2_CLOCK, voodoo_l_intf)
MCFG_DEVICE_ADD("voodoo0", VOODOO_2, STD_VOODOO_2_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("lscreen")
MCFG_VOODOO_CPU_TAG("dsp")
MCFG_VOODOO_VBLANK_CB(WRITELINE(hornet_state,voodoo_vblank_0))
MCFG_DEVICE_REMOVE("voodoo1")
MCFG_3DFX_VOODOO_2_ADD("voodoo1", STD_VOODOO_2_CLOCK, voodoo_r_intf)
MCFG_DEVICE_ADD("voodoo1", VOODOO_2, STD_VOODOO_2_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("rscreen")
MCFG_VOODOO_CPU_TAG("dsp2")
MCFG_VOODOO_VBLANK_CB(WRITELINE(hornet_state,voodoo_vblank_1))
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sscope2, hornet_2board_v2)

View File

@ -181,17 +181,6 @@ INPUT_PORTS_END
*
*************************************/
static const voodoo_config iteagle_voodoo_intf =
{
16, // fbmem;
0,// tmumem0;
0,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(iteagle_state,vblank_assert),// vblank;
DEVCB_NULL// stall;
};
static const mips3_config r4310_config =
{
16384, /* code cache size */
@ -217,7 +206,11 @@ static MACHINE_CONFIG_START( gtfore, iteagle_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(iteagle_state, screen_update_iteagle)
MCFG_3DFX_VOODOO_BANSHEE_ADD("voodoo", STD_VOODOO_BANSHEE_CLOCK, iteagle_voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_BANSHEE, STD_VOODOO_BANSHEE_CLOCK)
MCFG_VOODOO_FBMEM(16)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(iteagle_state,vblank_assert))
MACHINE_CONFIG_END

View File

@ -888,27 +888,6 @@ static const mips3_config config =
};
#endif
static const voodoo_config voodoo_1_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"screen",// screen;
"mips",// cputag;
DEVCB_NULL,// vblank;
DEVCB_NULL// stall;
};
static const voodoo_config voodoo_2_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"screen",// screen;
"mips",// cputag;
DEVCB_NULL,//vblank_assert vblank;
DEVCB_NULL// voodoo_stall stall;
};
/*************************************
*
* Machine driver
@ -942,9 +921,17 @@ static MACHINE_CONFIG_START( magictg, magictg_state )
#endif
MCFG_PCI_BUS_LEGACY_DEVICE(9, "zr36120", zr36120_pci_r, zr36120_pci_w)
MCFG_3DFX_VOODOO_1_ADD("voodoo_0", STD_VOODOO_1_CLOCK, voodoo_1_intf)
MCFG_DEVICE_ADD("voodoo_0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("mips")
MCFG_3DFX_VOODOO_1_ADD("voodoo_1", STD_VOODOO_1_CLOCK, voodoo_2_intf)
MCFG_DEVICE_ADD("voodoo_1", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("mips")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)

View File

@ -721,17 +721,6 @@ void nwktr_state::machine_reset()
m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
static const voodoo_config voodoo_intf =
{
2, // fbmem;
2,// tmumem0;
2,// tmumem1;
"screen",// screen;
"dsp",// cputag;
DEVCB_DRIVER_LINE_MEMBER(nwktr_state,voodoo_vblank_0),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( nwktr, nwktr_state )
/* basic machine hardware */
@ -756,7 +745,12 @@ static MACHINE_CONFIG_START( nwktr, nwktr_state )
MCFG_K033906_VOODOO("voodoo0")
/* video hardware */
MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(2,2)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("dsp")
MCFG_VOODOO_VBLANK_CB(WRITELINE(nwktr_state,voodoo_vblank_0))
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)

View File

@ -659,17 +659,6 @@ WRITE_LINE_MEMBER(savquest_state::vblank_assert)
{
}
static const voodoo_config voodoo_intf =
{
2, // fbmem;
4,// tmumem0;
4,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(savquest_state,vblank_assert),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( savquest, savquest_state )
MCFG_CPU_ADD("maincpu", PENTIUM2, 450000000) // actually Pentium II 450
MCFG_CPU_PROGRAM_MAP(savquest_map)
@ -691,7 +680,12 @@ static MACHINE_CONFIG_START( savquest, savquest_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_s3_vga )
MCFG_3DFX_VOODOO_2_ADD("voodoo", STD_VOODOO_2_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_2, STD_VOODOO_2_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,4)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(savquest_state,vblank_assert))
MACHINE_CONFIG_END
ROM_START( savquest )

View File

@ -2513,17 +2513,6 @@ static const mips3_config r5000_config =
SYSTEM_CLOCK /* system clock rate */
};
static const voodoo_config voodoo_intf =
{
2, // fbmem;
4,// tmumem0;
0,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(seattle_state,vblank_assert),// vblank;
DEVCB_DRIVER_LINE_MEMBER(seattle_state,voodoo_stall)// stall;
};
static MACHINE_CONFIG_START( seattle_common, seattle_state )
/* basic machine hardware */
@ -2537,7 +2526,13 @@ static MACHINE_CONFIG_START( seattle_common, seattle_state )
MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(seattle_state, ide_interrupt))
MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM)
MCFG_3DFX_VOODOO_1_ADD("voodoo", STD_VOODOO_1_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,0)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(seattle_state,vblank_assert))
MCFG_VOODOO_STALL_CB(WRITELINE(seattle_state,voodoo_stall))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -2581,17 +2576,6 @@ static MACHINE_CONFIG_DERIVED( seattle200_widget, seattle200 )
MCFG_SMC91C94_IRQ_CALLBACK(WRITELINE(seattle_state, ethernet_interrupt))
MACHINE_CONFIG_END
static const voodoo_config voodoo_2_intf =
{
2, // fbmem;
4,// tmumem0;
4,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(seattle_state,vblank_assert),// vblank;
DEVCB_DRIVER_LINE_MEMBER(seattle_state,voodoo_stall)// stall;
};
static MACHINE_CONFIG_DERIVED( flagstaff, seattle_common )
MCFG_CPU_REPLACE("maincpu", R5000LE, SYSTEM_CLOCK*4)
MCFG_CPU_CONFIG(r5000_config)
@ -2601,7 +2585,13 @@ static MACHINE_CONFIG_DERIVED( flagstaff, seattle_common )
MCFG_SMC91C94_IRQ_CALLBACK(WRITELINE(seattle_state, ethernet_interrupt))
MCFG_DEVICE_REMOVE("voodoo")
MCFG_3DFX_VOODOO_1_ADD("voodoo", STD_VOODOO_1_CLOCK, voodoo_2_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_1, STD_VOODOO_1_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,4)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(seattle_state,vblank_assert))
MCFG_VOODOO_STALL_CB(WRITELINE(seattle_state,voodoo_stall))
MACHINE_CONFIG_END
// Per game configurations

View File

@ -2213,17 +2213,6 @@ static const mips3_config r5000_config =
SYSTEM_CLOCK /* system clock rate */
};
static const voodoo_config voodoo_intf =
{
2, // fbmem;
4,// tmumem0;
4,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(vegas_state,vblank_assert),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( vegascore, vegas_state )
/* basic machine hardware */
@ -2240,7 +2229,12 @@ static MACHINE_CONFIG_START( vegascore, vegas_state )
MCFG_SMC91C94_ADD("ethernet")
MCFG_SMC91C94_IRQ_CALLBACK(WRITELINE(vegas_state, ethernet_interrupt))
MCFG_3DFX_VOODOO_2_ADD("voodoo", STD_VOODOO_2_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_2, STD_VOODOO_2_CLOCK)
MCFG_VOODOO_FBMEM(2)
MCFG_VOODOO_TMUMEM(4,4)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -2267,22 +2261,16 @@ static MACHINE_CONFIG_DERIVED( vegas32m, vegascore )
MACHINE_CONFIG_END
static const voodoo_config vegasban_voodoo_intf =
{
16, // fbmem;
0,// tmumem0;
0,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(vegas_state,vblank_assert),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_DERIVED( vegasban, vegascore )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(vegas_map_32mb)
MCFG_DEVICE_REMOVE("voodoo")
MCFG_3DFX_VOODOO_BANSHEE_ADD("voodoo", STD_VOODOO_BANSHEE_CLOCK, vegasban_voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_BANSHEE, STD_VOODOO_BANSHEE_CLOCK)
MCFG_VOODOO_FBMEM(16)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert))
MACHINE_CONFIG_END
@ -2292,7 +2280,11 @@ static MACHINE_CONFIG_DERIVED( vegasv3, vegas32m )
MCFG_CPU_PROGRAM_MAP(vegas_map_8mb)
MCFG_DEVICE_REMOVE("voodoo")
MCFG_3DFX_VOODOO_3_ADD("voodoo", STD_VOODOO_3_CLOCK, vegasban_voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_3, STD_VOODOO_3_CLOCK)
MCFG_VOODOO_FBMEM(16)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert))
MACHINE_CONFIG_END
@ -2302,7 +2294,11 @@ static MACHINE_CONFIG_DERIVED( denver, vegascore )
MCFG_CPU_PROGRAM_MAP(vegas_map_32mb)
MCFG_DEVICE_REMOVE("voodoo")
MCFG_3DFX_VOODOO_3_ADD("voodoo", STD_VOODOO_3_CLOCK, vegasban_voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_3, STD_VOODOO_3_CLOCK)
MCFG_VOODOO_FBMEM(16)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert))
MACHINE_CONFIG_END
// Per driver configs

View File

@ -2029,17 +2029,6 @@ void viper_state::machine_reset()
identify_device[67] = 0x00f0; /* 67: minimum PIO transfer cycle time without flow control */
}
static const voodoo_config voodoo_intf =
{
8, // fbmem;
0,// tmumem0;
0,// tmumem1;
"screen",// screen;
"maincpu",// cputag;
DEVCB_DRIVER_LINE_MEMBER(viper_state,voodoo_vblank),// vblank;
DEVCB_NULL// stall;
};
static MACHINE_CONFIG_START( viper, viper_state )
/* basic machine hardware */
@ -2054,7 +2043,11 @@ static MACHINE_CONFIG_START( viper, viper_state )
MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", NULL, true)
MCFG_3DFX_VOODOO_3_ADD("voodoo", STD_VOODOO_3_CLOCK, voodoo_intf)
MCFG_DEVICE_ADD("voodoo", VOODOO_3, STD_VOODOO_3_CLOCK)
MCFG_VOODOO_FBMEM(8)
MCFG_VOODOO_SCREEN_TAG("screen")
MCFG_VOODOO_CPU_TAG("maincpu")
MCFG_VOODOO_VBLANK_CB(WRITELINE(viper_state,voodoo_vblank))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)