deprecat.h

This commit is contained in:
Angelo Salese 2011-12-05 16:22:54 +00:00
parent 31dbaa81fa
commit 948fe579e5
2 changed files with 106 additions and 85 deletions

View File

@ -97,7 +97,6 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "deprecat.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
@ -7889,20 +7888,22 @@ MACHINE_CONFIG_END
0xee is vblank
0xfc is from the 6242RTC
*/
static INTERRUPT_GEN( quizchq_irq )
static TIMER_DEVICE_CALLBACK( quizchq_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfc);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee);
if(scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xee);
if(scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xfc);
}
#ifdef UNUSED_FUNCTION
@ -7918,7 +7919,7 @@ static MACHINE_CONFIG_START( quizchq, dynax_state )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(quizchq_map)
MCFG_CPU_IO_MAP(quizchq_portmap)
MCFG_CPU_VBLANK_INT("screen", quizchq_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", quizchq_irq, "screen", 0, 1)
MCFG_MACHINE_START(rongrong)
MCFG_MACHINE_RESET(ddenlovr)
@ -7928,7 +7929,7 @@ static MACHINE_CONFIG_START( quizchq, dynax_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE(ddenlovr)
@ -7970,20 +7971,23 @@ MACHINE_CONFIG_END
RST 18 is from the blitter
RST 20 is from the 6242RTC
*/
static INTERRUPT_GEN( mmpanic_irq )
static TIMER_DEVICE_CALLBACK( mmpanic_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise the game would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe7); // RST 20, clock
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf); // RST 08, vblank
if(scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xcf); // RST 08, vblank
if(scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xe7); // RST 20, clock
}
static MACHINE_CONFIG_START( mmpanic, dynax_state )
@ -7992,7 +7996,7 @@ static MACHINE_CONFIG_START( mmpanic, dynax_state )
MCFG_CPU_ADD("maincpu", Z80, 8000000)
MCFG_CPU_PROGRAM_MAP(mmpanic_map)
MCFG_CPU_IO_MAP(mmpanic_portmap)
MCFG_CPU_VBLANK_INT("screen", mmpanic_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", mmpanic_irq, "screen", 0, 1)
MCFG_CPU_ADD("soundcpu", Z80, 3579545)
MCFG_CPU_PROGRAM_MAP(mmpanic_sound_map)
@ -8007,7 +8011,7 @@ static MACHINE_CONFIG_START( mmpanic, dynax_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE(ddenlovr)
@ -8044,29 +8048,33 @@ MACHINE_CONFIG_END
0xe0 is vblank
0xe2 is from the 6242RTC
*/
static INTERRUPT_GEN( hanakanz_irq )
static TIMER_DEVICE_CALLBACK( hanakanz_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe2);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe0);
if(scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xe0);
if(scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xe2);
}
static MACHINE_CONFIG_START( hanakanz, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(hanakanz_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", hanakanz_irq, "screen", 0, 1)
MCFG_MACHINE_START(hanakanz)
MCFG_MACHINE_RESET(ddenlovr)
@ -8076,7 +8084,7 @@ static MACHINE_CONFIG_START( hanakanz, dynax_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
MCFG_SCREEN_UPDATE(ddenlovr)
@ -8122,29 +8130,31 @@ MACHINE_CONFIG_END
0xf8 is vblank
0xfa is from the 6242RTC
*/
static INTERRUPT_GEN( mjchuuka_irq )
static TIMER_DEVICE_CALLBACK( mjchuuka_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8);
}
if(scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xf8);
if(scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xfa);
}
static MACHINE_CONFIG_DERIVED( mjchuuka, hanakanz )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjchuuka_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjchuuka_irq)
MCFG_SOUND_ADD("aysnd", AY8910, 1789772)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -8155,7 +8165,8 @@ static MACHINE_CONFIG_DERIVED( funkyfig, mmpanic )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(funkyfig_map)
MCFG_CPU_IO_MAP(funkyfig_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjchuuka_irq)
MCFG_MACHINE_START(funkyfig)
@ -8182,24 +8193,26 @@ MACHINE_CONFIG_END
blitter interrupt I guess (nested blitter irqs?). Hence the hack
to trigger the blitter irq every frame.
*/
static INTERRUPT_GEN( mjmyster_irq )
static TIMER_DEVICE_CALLBACK( mjmyster_irq )
{
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
switch (cpu_getiloops(device))
{
case 0: device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); break;
case 1: device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa); break;
}
}
if(scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xf8);
static INTERRUPT_GEN( rtc_nmi_irq )
{
device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
if(scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xfa);
if(scanline == 256)
device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, PULSE_LINE);
}
static const ay8910_interface mjmyster_ay8910_interface =
@ -8218,8 +8231,8 @@ static MACHINE_CONFIG_DERIVED( mjmyster, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjmyster_irq)
MCFG_MACHINE_START(mjmyster)
@ -8238,20 +8251,22 @@ MACHINE_CONFIG_END
0xfa and/or 0xfc are from the blitter (almost identical)
0xee triggered by the RTC
*/
static INTERRUPT_GEN( hginga_irq )
static TIMER_DEVICE_CALLBACK( hginga_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise hginga would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
if (downcast<cpu_device *>(state->m_maincpu)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8);
if (scanline == 245)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xf8);
if (scanline == 0)
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, 0xee);
}
static const ay8910_interface hginga_ay8910_interface =
@ -8269,7 +8284,8 @@ static MACHINE_CONFIG_DERIVED( hginga, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hginga_map)
MCFG_CPU_IO_MAP(hginga_portmap)
MCFG_CPU_VBLANK_INT("screen", hginga_irq)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(hginga_irq)
MCFG_MACHINE_START(mjmyster)
@ -8284,7 +8300,8 @@ static MACHINE_CONFIG_DERIVED( hgokou, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hgokou_map)
MCFG_CPU_IO_MAP(hgokou_portmap)
MCFG_CPU_VBLANK_INT("screen", hginga_irq)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(hginga_irq)
MCFG_MACHINE_START(mjmyster)
@ -8315,8 +8332,8 @@ static MACHINE_CONFIG_DERIVED( mjmyuniv, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjmyster_irq)
MCFG_MACHINE_START(mjmyster)
@ -8330,8 +8347,8 @@ static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjmyster_irq)
MCFG_MACHINE_START(mjmyster)
@ -8340,32 +8357,34 @@ static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
static INTERRUPT_GEN( mjflove_irq )
static TIMER_DEVICE_CALLBACK( mjflove_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
dynax_state *state = timer.machine().driver_data<dynax_state>();
int scanline = param;
state->m_mjflove_irq_cause = 1 | (1 << 1);
switch (cpu_getiloops(device))
if(scanline == 245)
{
case 0:
state->m_mjflove_irq_cause &= 1;
device_set_input_line(device, 0, HOLD_LINE);
break;
case 1:
state->m_mjflove_irq_cause &= 1 << 1;
device_set_input_line(device, 0, HOLD_LINE);
break;
state->m_mjflove_irq_cause = 1;
device_set_input_line(state->m_maincpu, 0, HOLD_LINE);
}
if(scanline == 0)
{
state->m_mjflove_irq_cause = 2;
device_set_input_line(state->m_maincpu, 0, HOLD_LINE);
}
}
static MACHINE_CONFIG_DERIVED( mjflove, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(rongrong_map)
MCFG_CPU_IO_MAP(mjflove_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjflove_irq, 2)
MCFG_TIMER_MODIFY("scantimer")
MCFG_TIMER_CALLBACK(mjflove_irq)
MCFG_MACHINE_START(mjflove)
@ -8388,6 +8407,7 @@ static MACHINE_CONFIG_DERIVED( hparadis, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hparadis_map)
MCFG_CPU_IO_MAP(hparadis_portmap)
MCFG_DEVICE_REMOVE("scantimer")
MCFG_CPU_VBLANK_INT("screen", hparadis_irq)
MCFG_MACHINE_START(hparadis)
@ -8399,7 +8419,7 @@ static MACHINE_CONFIG_START( jongtei, dynax_state )
MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // ?
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(jongtei_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", hanakanz_irq, "screen", 0, 1)
MCFG_MACHINE_START(hanakanz)
MCFG_MACHINE_RESET(ddenlovr)
@ -8441,7 +8461,7 @@ static MACHINE_CONFIG_START( sryudens, dynax_state )
MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) // ?
MCFG_CPU_PROGRAM_MAP(sryudens_map)
MCFG_CPU_IO_MAP(sryudens_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", mjchuuka_irq, "screen", 0, 1)
MCFG_MACHINE_START(sryudens)
MCFG_MACHINE_RESET(ddenlovr)
@ -8451,7 +8471,7 @@ static MACHINE_CONFIG_START( sryudens, dynax_state )
MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
MCFG_SCREEN_UPDATE(ddenlovr)
@ -8486,7 +8506,7 @@ static MACHINE_CONFIG_START( daimyojn, dynax_state )
MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2)
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(daimyojn_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_TIMER_ADD_SCANLINE("scantimer", hanakanz_irq, "screen", 0, 1)
MCFG_MACHINE_START(mjflove)
MCFG_MACHINE_RESET(ddenlovr)
@ -8496,7 +8516,7 @@ static MACHINE_CONFIG_START( daimyojn, dynax_state )
MCFG_SCREEN_REFRESH_RATE(59.7922) // HSync 15.4248kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
MCFG_SCREEN_UPDATE(ddenlovr)

View File

@ -10,7 +10,8 @@ class dynax_state : public driver_device
{
public:
dynax_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) { }
: driver_device(mconfig, type, tag)
{ }
// up to 8 layers, 2 images per layer (interleaved on screen)
UINT8 * m_pixmap[8][2];