mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
Using new TMS9980/95 implementation. [Michael Zapf]
This commit is contained in:
parent
28805e5c88
commit
bfb64b0421
@ -528,8 +528,7 @@ INPUT_PORTS_END
|
||||
|
||||
INPUT_CHANGED_MEMBER(cosmic_state::cosmicg_coin_inserted)
|
||||
{
|
||||
m_ic_state = 6;
|
||||
m_maincpu->set_input_line(0, newval? ASSERT_LINE : CLEAR_LINE);
|
||||
m_maincpu->set_input_line(INT_9980A_LEVEL4, newval? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( cosmicg )
|
||||
@ -988,11 +987,8 @@ MACHINE_RESET_MEMBER(cosmic_state,cosmicg)
|
||||
m_color_registers[0] = 0;
|
||||
m_color_registers[1] = 0;
|
||||
m_color_registers[2] = 0;
|
||||
|
||||
// For TMS 9980
|
||||
m_ic_state = 0; // RESET
|
||||
m_maincpu->set_input_line(0, ASSERT_LINE);
|
||||
m_ic_state = 7; // CLEAR
|
||||
m_maincpu->set_input_line(INT_9980A_RESET, ASSERT_LINE);
|
||||
m_maincpu->set_input_line(INT_9980A_RESET, CLEAR_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( cosmic, cosmic_state )
|
||||
@ -1073,22 +1069,12 @@ static MACHINE_CONFIG_DERIVED( cosmica, cosmic )
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
Will be called back from the CPU when triggering an interrupt.
|
||||
*/
|
||||
READ8_MEMBER( cosmic_state::interrupt_level )
|
||||
static TMS9980A_CONFIG( cpuconf )
|
||||
{
|
||||
return m_ic_state;
|
||||
}
|
||||
|
||||
static TMS99xx_CONFIG( cpuconf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(cosmic_state, interrupt_level),
|
||||
DEVCB_NULL, // External operation
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // Clock out
|
||||
DEVCB_NULL, // wait
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL // DBIN
|
||||
};
|
||||
|
||||
@ -1599,8 +1585,8 @@ DRIVER_INIT_MEMBER(cosmic_state,panic)
|
||||
}
|
||||
|
||||
|
||||
GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL /*| GAME_SUPPORTS_SAVE */)
|
||||
GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL /*| GAME_SUPPORTS_SAVE */)
|
||||
GAME( 1979, cosmica, 0, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (early version II?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
@ -17,7 +17,7 @@
|
||||
**********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/tms9900/tms9900l.h"
|
||||
#include "cpu/tms9900/tms9980a.h"
|
||||
|
||||
class jpmsru_state : public driver_device
|
||||
{
|
||||
@ -33,6 +33,7 @@ protected:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
public:
|
||||
DECLARE_DRIVER_INIT(jpmsru);
|
||||
DECLARE_READ8_MEMBER( interrupt_level );
|
||||
};
|
||||
|
||||
// blind guess
|
||||
@ -60,18 +61,21 @@ ADDRESS_MAP_END
|
||||
static INPUT_PORTS_START( jpmsru )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( jpmsru, jpmsru_state )
|
||||
MCFG_CPU_ADD("maincpu", TMS9980L, MAIN_CLOCK)
|
||||
static TMS9980A_CONFIG( cpuconf )
|
||||
{
|
||||
DEVCB_NULL, // External operation
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // Clock out
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL // DBIN
|
||||
};
|
||||
|
||||
MCFG_CPU_PROGRAM_MAP(jpmsru_map)
|
||||
MCFG_CPU_IO_MAP(jpmsru_io)
|
||||
static MACHINE_CONFIG_START( jpmsru, jpmsru_state )
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, MAIN_CLOCK, jpmsru_map, jpmsru_io, cpuconf)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( jpmsru_4, jpmsru_state )
|
||||
MCFG_CPU_ADD("maincpu", TMS9980L, MAIN_CLOCK)
|
||||
|
||||
MCFG_CPU_PROGRAM_MAP(jpmsru_4_map)
|
||||
MCFG_CPU_IO_MAP(jpmsru_io)
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, MAIN_CLOCK, jpmsru_4_map, jpmsru_io, cpuconf)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
DRIVER_INIT_MEMBER(jpmsru_state,jpmsru)
|
||||
|
@ -86,7 +86,7 @@
|
||||
#define MASTER_CLOCK XTAL_8MHz /* guess */
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/tms9900/tms9900l.h"
|
||||
#include "cpu/tms9900/tms9980a.h"
|
||||
#include "video/mc6845.h"
|
||||
|
||||
|
||||
@ -157,7 +157,8 @@ void jubilee_state::palette_init()
|
||||
INTERRUPT_GEN_MEMBER(jubilee_state::jubileep_interrupt)
|
||||
{
|
||||
/* doesn't seems to work properly. need to set level1 interrupts */
|
||||
device.execute().set_input_line_and_vector(0, ASSERT_LINE, 3);//2=nmi 3,4,5,6
|
||||
m_maincpu->set_input_line(INT_9980A_LEVEL1, ASSERT_LINE);
|
||||
m_maincpu->set_input_line(INT_9980A_LEVEL1, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -409,6 +410,15 @@ static MC6845_INTERFACE( mc6845_intf )
|
||||
};
|
||||
|
||||
|
||||
static TMS9980A_CONFIG( cpuconf )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // Clock out
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL // DBIN
|
||||
};
|
||||
|
||||
/*************************
|
||||
* Machine Drivers *
|
||||
*************************/
|
||||
@ -416,9 +426,7 @@ static MC6845_INTERFACE( mc6845_intf )
|
||||
static MACHINE_CONFIG_START( jubileep, jubilee_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS9980L, MASTER_CLOCK/2) /* guess */
|
||||
MCFG_CPU_PROGRAM_MAP(jubileep_map)
|
||||
MCFG_CPU_IO_MAP(jubileep_cru_map)
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, MASTER_CLOCK/2, jubileep_map, jubileep_cru_map, cpuconf)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", jubilee_state, jubileep_interrupt)
|
||||
|
||||
/* video hardware */
|
||||
|
@ -5,7 +5,7 @@ JVH : Escape, and Movie Masters
|
||||
|
||||
********************************************************************************/
|
||||
#include "emu.h"
|
||||
#include "cpu/tms9900/tms9900l.h"
|
||||
#include "cpu/tms9900/tms9980a.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
|
||||
class jvh_state : public driver_device
|
||||
@ -100,25 +100,35 @@ void jvh_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
static TMS9980A_CONFIG( cpuconf )
|
||||
{
|
||||
DEVCB_NULL, // External operation
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // Clock out
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL // DBIN
|
||||
};
|
||||
|
||||
DRIVER_INIT_MEMBER(jvh_state,jvh)
|
||||
{
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( jvh, jvh_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS9980L, 1000000)
|
||||
MCFG_CPU_PROGRAM_MAP(jvh_map)
|
||||
MCFG_CPU_IO_MAP(escape_io)
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, escape_io, cpuconf)
|
||||
MCFG_CPU_ADD("cpu2", M6800, 1000000)
|
||||
MCFG_CPU_PROGRAM_MAP(jvh_sub_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( jvh2, jvh )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_IO_MAP(movmastr_io)
|
||||
static MACHINE_CONFIG_START( jvh2, jvh_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, movmastr_io, cpuconf)
|
||||
MCFG_CPU_ADD("cpu2", M6800, 1000000)
|
||||
MCFG_CPU_PROGRAM_MAP(jvh_sub_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
/ Escape
|
||||
/-------------------------------------------------------------------*/
|
||||
|
@ -53,7 +53,8 @@ L056-6 9A " " VLI-8-4 7A "
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/tms9900/tms9900l.h"
|
||||
#include "cpu/tms9900/tms9995.h"
|
||||
#include "cpu/tms9900/tms9980a.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/tms5220.h"
|
||||
@ -119,6 +120,7 @@ public:
|
||||
UINT8 m_sound[8];
|
||||
|
||||
int m_last;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(flip_screen_x_w);
|
||||
DECLARE_WRITE8_MEMBER(flip_screen_y_w);
|
||||
DECLARE_WRITE8_MEMBER(looping_videoram_w);
|
||||
@ -341,26 +343,28 @@ void looping_state::machine_start()
|
||||
|
||||
INTERRUPT_GEN_MEMBER(looping_state::looping_interrupt)
|
||||
{
|
||||
device.execute().set_input_line_and_vector(0, ASSERT_LINE, 4);
|
||||
m_maincpu->set_input_line(INT_9995_INT1, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(looping_state::level2_irq_set)
|
||||
{
|
||||
logerror("Level 2 int = %d\n", data);
|
||||
if (!(data & 1))
|
||||
m_maincpu->set_input_line_and_vector(0, ASSERT_LINE, 4);
|
||||
m_maincpu->set_input_line(INT_9995_INT1, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(looping_state::main_irq_ack_w)
|
||||
{
|
||||
if (data == 0)
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
m_maincpu->set_input_line(INT_9995_INT1, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(looping_state::looping_souint_clr)
|
||||
{
|
||||
logerror("Soundint clr = %d\n", data);
|
||||
if (data == 0)
|
||||
m_audiocpu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
@ -368,18 +372,17 @@ WRITE8_MEMBER(looping_state::looping_souint_clr)
|
||||
|
||||
WRITE_LINE_MEMBER(looping_state::looping_spcint)
|
||||
{
|
||||
m_audiocpu->set_input_line_and_vector(0, !state, 6);
|
||||
logerror("Speech /int = %d\n", state==ASSERT_LINE? 1:0);
|
||||
m_audiocpu->set_input_line(INT_9980A_LEVEL4, state==ASSERT_LINE? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(looping_state::looping_soundlatch_w)
|
||||
{
|
||||
soundlatch_byte_w(space, offset, data);
|
||||
m_audiocpu->set_input_line_and_vector(0, ASSERT_LINE, 4);
|
||||
m_audiocpu->set_input_line(INT_9980A_LEVEL2, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Custom DAC handling
|
||||
@ -622,6 +625,31 @@ static const ay8910_interface ay8910_config =
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* CPU configs
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static TMS9980A_CONFIG( cpuconf80 )
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // Clock out
|
||||
DEVCB_NULL, // Hold acknowledge
|
||||
DEVCB_NULL // DBIN
|
||||
};
|
||||
|
||||
static TMS9995_CONFIG( cpuconf95 )
|
||||
{
|
||||
DEVCB_NULL, // external op
|
||||
DEVCB_NULL, // Instruction acquisition
|
||||
DEVCB_NULL, // clock out
|
||||
DEVCB_NULL, // HOLDA
|
||||
DEVCB_NULL, // DBIN
|
||||
INTERNAL_RAM, // use internal RAM
|
||||
NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt
|
||||
};
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -632,14 +660,10 @@ static const ay8910_interface ay8910_config =
|
||||
static MACHINE_CONFIG_START( looping, looping_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS9995L, MAIN_CPU_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(looping_map)
|
||||
MCFG_CPU_IO_MAP(looping_io_map)
|
||||
MCFG_TMS99xx_ADD("maincpu", TMS9995, MAIN_CPU_CLOCK, looping_map, looping_io_map, cpuconf95)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", looping_state, looping_interrupt)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", TMS9980L, SOUND_CLOCK/4)
|
||||
MCFG_CPU_PROGRAM_MAP(looping_sound_map)
|
||||
MCFG_CPU_IO_MAP(looping_sound_io_map)
|
||||
MCFG_TMS99xx_ADD("audiocpu", TMS9980A, SOUND_CLOCK/4, looping_sound_map, looping_sound_io_map, cpuconf80)
|
||||
|
||||
MCFG_CPU_ADD("mcu", COP420, COP_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(looping_cop_map)
|
||||
@ -647,7 +671,6 @@ static MACHINE_CONFIG_START( looping, looping_state )
|
||||
MCFG_CPU_IO_MAP(looping_cop_io_map)
|
||||
MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, COP400_MICROBUS_DISABLED )
|
||||
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||
@ -919,7 +942,7 @@ DRIVER_INIT_MEMBER(looping_state,looping)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAME( 1982, looping, 0, looping, looping, looping_state, looping, ROT90, "Video Games GmbH", "Looping", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, loopingv, looping, looping, looping, looping_state, looping, ROT90, "Video Games GmbH (Venture Line license)", "Looping (Venture Line license, set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, loopingva, looping, looping, looping, looping_state, looping, ROT90, "Video Games GmbH (Venture Line license)", "Looping (Venture Line license, set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, skybump, 0, looping, skybump, looping_state, looping, ROT90, "Venture Line", "Sky Bumper", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, looping, 0, looping, looping, looping_state, looping, ROT90, "Video Games GmbH", "Looping", GAME_IMPERFECT_SOUND /*| GAME_SUPPORTS_SAVE */)
|
||||
GAME( 1982, loopingv, looping, looping, looping, looping_state, looping, ROT90, "Video Games GmbH (Venture Line license)", "Looping (Venture Line license, set 1)", GAME_IMPERFECT_SOUND /* | GAME_SUPPORTS_SAVE */)
|
||||
GAME( 1982, loopingva, looping, looping, looping, looping_state, looping, ROT90, "Video Games GmbH (Venture Line license)", "Looping (Venture Line license, set 2)", GAME_IMPERFECT_SOUND /* | GAME_SUPPORTS_SAVE */ )
|
||||
GAME( 1982, skybump, 0, looping, skybump, looping_state, looping, ROT90, "Venture Line", "Sky Bumper", GAME_IMPERFECT_SOUND /* | GAME_SUPPORTS_SAVE */)
|
||||
|
Loading…
Reference in New Issue
Block a user