mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
toaplan2.cpp: Generate (and acknowledge) video interrupts within VDP
This commit is contained in:
parent
20ac866d56
commit
97303de706
@ -386,8 +386,6 @@ To reset the NVRAM in Othello Derby, hold P1 Button 1 down while booting.
|
||||
|
||||
void toaplan2_state::machine_start()
|
||||
{
|
||||
m_raise_irq_timer = timer_alloc(TIMER_RAISE_IRQ);
|
||||
|
||||
save_item(NAME(m_mcu_data));
|
||||
save_item(NAME(m_old_p1_paddle_h));
|
||||
save_item(NAME(m_old_p2_paddle_h));
|
||||
@ -498,28 +496,18 @@ DRIVER_INIT_MEMBER(toaplan2_state,enmadaio)
|
||||
Toaplan games
|
||||
***************************************************************************/
|
||||
|
||||
void toaplan2_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
IRQ_CALLBACK_MEMBER(toaplan2_state::fixeightbl_irq_ack)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_RAISE_IRQ:
|
||||
m_maincpu->set_input_line(param, HOLD_LINE);
|
||||
break;
|
||||
default:
|
||||
assert_always(false, "Unknown id in toaplan2_state::device_timer");
|
||||
}
|
||||
m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE);
|
||||
return M68K_INT_ACK_AUTOVECTOR;
|
||||
}
|
||||
|
||||
void toaplan2_state::toaplan2_vblank_irq(int irq_line)
|
||||
IRQ_CALLBACK_MEMBER(toaplan2_state::pipibibsbl_irq_ack)
|
||||
{
|
||||
// the IRQ appears to fire at line 0xe6
|
||||
m_raise_irq_timer->adjust(m_screen->time_until_pos(0xe6), irq_line);
|
||||
m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE);
|
||||
return M68K_INT_ACK_AUTOVECTOR;
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_state::toaplan2_vblank_irq1){ toaplan2_vblank_irq(1); }
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_state::toaplan2_vblank_irq2){ toaplan2_vblank_irq(2); }
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_state::toaplan2_vblank_irq4){ toaplan2_vblank_irq(4); }
|
||||
|
||||
|
||||
READ16_MEMBER(toaplan2_state::video_count_r)
|
||||
{
|
||||
@ -3322,7 +3310,6 @@ static MACHINE_CONFIG_START( tekipaki )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(tekipaki_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3340,8 +3327,9 @@ static MACHINE_CONFIG_START( tekipaki )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3374,7 +3362,6 @@ static MACHINE_CONFIG_START( ghox )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(ghox_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
#ifdef USE_HD64x180
|
||||
MCFG_CPU_ADD("audiocpu", Z180, XTAL_10MHz) /* HD647180 CPU actually */
|
||||
@ -3399,6 +3386,7 @@ static MACHINE_CONFIG_START( ghox )
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3464,7 +3452,6 @@ static MACHINE_CONFIG_START( dogyuun )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_25MHz/2) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(dogyuun_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", V25, XTAL_25MHz/2) /* NEC V25 type Toaplan marked CPU ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(v25_mem)
|
||||
@ -3485,10 +3472,11 @@ static MACHINE_CONFIG_START( dogyuun )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001_1", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001_1", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
@ -3509,7 +3497,6 @@ static MACHINE_CONFIG_START( kbash )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(kbash_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
/* ROM based v25 */
|
||||
MCFG_CPU_ADD("audiocpu", V25, XTAL_16MHz) /* NEC V25 type Toaplan marked CPU ??? */
|
||||
@ -3534,8 +3521,9 @@ static MACHINE_CONFIG_START( kbash )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3555,7 +3543,6 @@ static MACHINE_CONFIG_START( kbash2 )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(kbash2_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -3571,8 +3558,9 @@ static MACHINE_CONFIG_START( kbash2 )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3592,7 +3580,6 @@ static MACHINE_CONFIG_START( truxton2 )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(truxton2_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq2)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -3606,8 +3593,9 @@ static MACHINE_CONFIG_START( truxton2 )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
|
||||
|
||||
@ -3639,7 +3627,6 @@ static MACHINE_CONFIG_START( pipibibs )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(pipibibs_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_27MHz/8) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(pipibibs_sound_z80_mem)
|
||||
@ -3662,8 +3649,9 @@ static MACHINE_CONFIG_START( pipibibs )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3681,7 +3669,7 @@ static MACHINE_CONFIG_START( pipibibsbl )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(pipibibi_bootleg_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(toaplan2_state, pipibibsbl_irq_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_27MHz/8) /* ??? 3.37MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(pipibibs_sound_z80_mem)
|
||||
@ -3704,8 +3692,9 @@ static MACHINE_CONFIG_START( pipibibsbl )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(ASSERTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3760,7 +3749,6 @@ static MACHINE_CONFIG_START( fixeight )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(fixeight_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", V25, XTAL_16MHz) /* NEC V25 type Toaplan marked CPU ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(fixeight_v25_mem)
|
||||
@ -3782,8 +3770,9 @@ static MACHINE_CONFIG_START( fixeight )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
|
||||
|
||||
@ -3803,7 +3792,7 @@ static MACHINE_CONFIG_START( fixeightbl )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(fixeightbl_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq2)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(toaplan2_state, fixeightbl_irq_ack)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -3820,8 +3809,9 @@ static MACHINE_CONFIG_START( fixeightbl )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(ASSERTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,fixeightbl)
|
||||
|
||||
@ -3839,7 +3829,6 @@ static MACHINE_CONFIG_START( vfive )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(vfive_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", V25, XTAL_20MHz/2) /* Verified on pcb, NEC V25 type Toaplan mark scratched out */
|
||||
MCFG_CPU_PROGRAM_MAP(vfive_v25_mem)
|
||||
@ -3860,8 +3849,9 @@ static MACHINE_CONFIG_START( vfive )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3878,7 +3868,6 @@ static MACHINE_CONFIG_START( batsugun )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(batsugun_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", V25, XTAL_32MHz/2) /* NEC V25 type Toaplan marked CPU ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(v25_mem)
|
||||
@ -3901,10 +3890,11 @@ static MACHINE_CONFIG_START( batsugun )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001_1", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001_1", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
@ -3924,7 +3914,6 @@ static MACHINE_CONFIG_START( pwrkick )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(pwrkick_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_UPD4992_ADD("rtc")
|
||||
|
||||
@ -3943,8 +3932,9 @@ static MACHINE_CONFIG_START( pwrkick )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3959,7 +3949,6 @@ static MACHINE_CONFIG_START( othldrby )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(othldrby_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_UPD4992_ADD("rtc")
|
||||
|
||||
@ -3976,8 +3965,9 @@ static MACHINE_CONFIG_START( othldrby )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -3993,7 +3983,6 @@ static MACHINE_CONFIG_START( enmadaio )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(enmadaio_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -4006,8 +3995,9 @@ static MACHINE_CONFIG_START( enmadaio )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -4027,7 +4017,6 @@ static MACHINE_CONFIG_START( snowbro2 )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(snowbro2_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -4043,8 +4032,9 @@ static MACHINE_CONFIG_START( snowbro2 )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
@ -4064,7 +4054,6 @@ static MACHINE_CONFIG_START( mahoudai )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(mahoudai_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(raizing_sound_z80_mem)
|
||||
@ -4088,8 +4077,9 @@ static MACHINE_CONFIG_START( mahoudai )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
|
||||
|
||||
@ -4109,7 +4099,6 @@ static MACHINE_CONFIG_START( shippumd )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(shippumd_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(raizing_sound_z80_mem)
|
||||
@ -4133,8 +4122,9 @@ static MACHINE_CONFIG_START( shippumd )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
|
||||
|
||||
@ -4153,7 +4143,6 @@ static MACHINE_CONFIG_START( bgaregga )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(bgaregga_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(bgaregga_sound_z80_mem)
|
||||
@ -4177,8 +4166,9 @@ static MACHINE_CONFIG_START( bgaregga )
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_4))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
|
||||
|
||||
@ -4210,7 +4200,6 @@ static MACHINE_CONFIG_START( batrider )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(batrider_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq2)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(batrider_sound_z80_mem)
|
||||
@ -4228,14 +4217,16 @@ static MACHINE_CONFIG_START( batrider )
|
||||
//MCFG_SCREEN_SIZE(432, 262)
|
||||
//MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2))
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", batrider)
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_2))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
|
||||
|
||||
@ -4267,7 +4258,6 @@ static MACHINE_CONFIG_START( bbakraid )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(bbakraid_68k_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq1)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/6) /* 5.3333MHz , 32MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(bbakraid_sound_z80_mem)
|
||||
@ -4288,14 +4278,16 @@ static MACHINE_CONFIG_START( bbakraid )
|
||||
//MCFG_SCREEN_SIZE(432, 262)
|
||||
//MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2))
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", batrider)
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, 0)
|
||||
MCFG_DEVICE_ADD("gp9001", GP9001_VDP, XTAL_27MHz)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_GP9001_VINT_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_1))
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
|
||||
|
||||
|
@ -21,11 +21,6 @@
|
||||
class toaplan2_state : public driver_device
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
TIMER_RAISE_IRQ
|
||||
};
|
||||
|
||||
toaplan2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_shared_ram(*this, "shared_ram"),
|
||||
@ -87,8 +82,6 @@ public:
|
||||
bitmap_ind8 m_custom_priority_bitmap;
|
||||
bitmap_ind16 m_secondary_render_bitmap;
|
||||
|
||||
emu_timer * m_raise_irq_timer;
|
||||
|
||||
tilemap_t *m_tx_tilemap; /* Tilemap for extra-text-layer */
|
||||
DECLARE_READ16_MEMBER(video_count_r);
|
||||
DECLARE_WRITE8_MEMBER(toaplan2_coin_w);
|
||||
@ -166,18 +159,14 @@ public:
|
||||
uint32_t screen_update_truxton2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan2);
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq1);
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq2);
|
||||
INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq4);
|
||||
IRQ_CALLBACK_MEMBER(fixeightbl_irq_ack);
|
||||
IRQ_CALLBACK_MEMBER(pipibibsbl_irq_ack);
|
||||
INTERRUPT_GEN_MEMBER(bbakraid_snd_interrupt);
|
||||
void truxton2_postload();
|
||||
void create_tx_tilemap(int dx = 0, int dx_flipped = 0);
|
||||
void toaplan2_vblank_irq(int irq_line);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(pwrkick_coin_w);
|
||||
DECLARE_WRITE8_MEMBER(pwrkick_coin_lockout_w);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(toaplan2_reset);
|
||||
protected:
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
};
|
||||
|
@ -223,7 +223,8 @@ gp9001vdp_device::gp9001vdp_device(const machine_config &mconfig, const char *ta
|
||||
m_vram_bg(*this, "vram_bg"),
|
||||
m_vram_fg(*this, "vram_fg"),
|
||||
m_vram_top(*this, "vram_top"),
|
||||
m_spriteram(*this, "spriteram")
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_vint_out_cb(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -297,6 +298,10 @@ void gp9001vdp_device::device_start()
|
||||
|
||||
create_tilemaps();
|
||||
|
||||
m_vint_out_cb.resolve();
|
||||
|
||||
m_raise_irq_timer = timer_alloc(TIMER_RAISE_IRQ);
|
||||
|
||||
save_pointer(NAME(sp.vram16_buffer.get()), SPRITERAM_SIZE/2);
|
||||
|
||||
save_item(NAME(gp9001_scroll_reg));
|
||||
@ -357,6 +362,10 @@ void gp9001vdp_device::device_reset()
|
||||
sp.flip = 0;
|
||||
|
||||
init_scroll_regs();
|
||||
|
||||
if (!m_vint_out_cb.isnull())
|
||||
m_vint_out_cb(0);
|
||||
m_raise_irq_timer->adjust(attotime::never);
|
||||
}
|
||||
|
||||
|
||||
@ -503,7 +512,7 @@ void gp9001vdp_device::gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask
|
||||
|
||||
case 0x0e: /******* Initialise video controller register ? *******/
|
||||
|
||||
case 0x0f: break;
|
||||
case 0x0f: if (!m_vint_out_cb.isnull()) m_vint_out_cb(0); break;
|
||||
|
||||
|
||||
default: logerror("Hmmm, writing %08x to unknown video control register (%08x) !!!\n",data,gp9001_scroll_reg);
|
||||
@ -922,4 +931,21 @@ void gp9001vdp_device::gp9001_screen_eof(void)
|
||||
{
|
||||
/** Shift sprite RAM buffers *** Used to fix sprite lag **/
|
||||
if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer.get(),m_spriteram,SPRITERAM_SIZE);
|
||||
|
||||
// the IRQ appears to fire at line 0xe6
|
||||
if (!m_vint_out_cb.isnull())
|
||||
m_raise_irq_timer->adjust(screen().time_until_pos(0xe6));
|
||||
}
|
||||
|
||||
|
||||
void gp9001vdp_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_RAISE_IRQ:
|
||||
m_vint_out_cb(1);
|
||||
break;
|
||||
default:
|
||||
assert_always(false, "Unknown id in gp9001vdp_device::device_timer");
|
||||
}
|
||||
}
|
||||
|
@ -6,14 +6,23 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MCFG_GP9001_VINT_CALLBACK(_devcb) \
|
||||
devcb = &gp9001vdp_device::set_vint_out_cb(*device, DEVCB_##_devcb);
|
||||
|
||||
class gp9001vdp_device : public device_t,
|
||||
public device_gfx_interface,
|
||||
public device_video_interface,
|
||||
public device_memory_interface
|
||||
{
|
||||
enum
|
||||
{
|
||||
TIMER_RAISE_IRQ
|
||||
};
|
||||
|
||||
public:
|
||||
gp9001vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
template<class Object> static devcb_base &set_vint_out_cb(device_t &device, Object &&obj) { return downcast<gp9001vdp_device &>(device).m_vint_out_cb.set_callback(std::forward<Object>(obj)); }
|
||||
|
||||
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t* primap );
|
||||
void gp9001_draw_custom_tilemap( bitmap_ind16 &bitmap, tilemap_t* tilemap, const uint8_t* priremap, const uint8_t* pri_enable );
|
||||
@ -65,6 +74,7 @@ public:
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
|
||||
|
||||
@ -159,6 +169,9 @@ private:
|
||||
required_shared_ptr<uint16_t> m_vram_fg;
|
||||
required_shared_ptr<uint16_t> m_vram_top;
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
|
||||
devcb_write_line m_vint_out_cb;
|
||||
emu_timer *m_raise_irq_timer;
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(GP9001_VDP, gp9001vdp_device)
|
||||
|
Loading…
Reference in New Issue
Block a user